Skip to content

Commit eebbf0d

Browse files
committed
Examples, tests and structure changes.
1 parent a9e7596 commit eebbf0d

File tree

96 files changed

+1102
-42
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+1102
-42
lines changed

casbin.sln

+10
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.29806.167
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "casbin", "casbin\casbin.vcxproj", "{BEAD4515-CC5D-4E73-BC71-334859913D06}"
77
EndProject
8+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test\test.vcxproj", "{5A6180CB-591D-4DFA-A953-C425868F0708}"
9+
EndProject
810
Global
911
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1012
Debug|x64 = Debug|x64
@@ -21,6 +23,14 @@ Global
2123
{BEAD4515-CC5D-4E73-BC71-334859913D06}.Release|x64.Build.0 = Release|x64
2224
{BEAD4515-CC5D-4E73-BC71-334859913D06}.Release|x86.ActiveCfg = Release|Win32
2325
{BEAD4515-CC5D-4E73-BC71-334859913D06}.Release|x86.Build.0 = Release|Win32
26+
{5A6180CB-591D-4DFA-A953-C425868F0708}.Debug|x64.ActiveCfg = Debug|x64
27+
{5A6180CB-591D-4DFA-A953-C425868F0708}.Debug|x64.Build.0 = Debug|x64
28+
{5A6180CB-591D-4DFA-A953-C425868F0708}.Debug|x86.ActiveCfg = Debug|Win32
29+
{5A6180CB-591D-4DFA-A953-C425868F0708}.Debug|x86.Build.0 = Debug|Win32
30+
{5A6180CB-591D-4DFA-A953-C425868F0708}.Release|x64.ActiveCfg = Release|x64
31+
{5A6180CB-591D-4DFA-A953-C425868F0708}.Release|x64.Build.0 = Release|x64
32+
{5A6180CB-591D-4DFA-A953-C425868F0708}.Release|x86.ActiveCfg = Release|Win32
33+
{5A6180CB-591D-4DFA-A953-C425868F0708}.Release|x86.Build.0 = Release|Win32
2434
EndGlobalSection
2535
GlobalSection(SolutionProperties) = preSolution
2636
HideSolutionNode = FALSE
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Makefile casbin/Makefile

File renamed without changes.

casbin/casbin.vcxproj

+48
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,57 @@
151151
</Link>
152152
</ItemDefinitionGroup>
153153
<ItemGroup>
154+
<ClInclude Include="config\Config.h" />
155+
<ClInclude Include="config\ConfigInterface.h" />
156+
<ClInclude Include="effect\DefaultEffector.h" />
157+
<ClInclude Include="effect\Effect.h" />
158+
<ClInclude Include="effect\Effector.h" />
154159
<ClInclude Include="enforcer.h" />
160+
<ClInclude Include="error\Error.h" />
161+
<ClInclude Include="exception\IllegalArgumentException.h" />
162+
<ClInclude Include="exception\IOException.h" />
163+
<ClInclude Include="exception\MissingRequiredSections.h" />
164+
<ClInclude Include="exception\UnsupportedOperationException.h" />
155165
<ClInclude Include="framework.h" />
166+
<ClInclude Include="IPParser\exceptions\ParseException.h" />
167+
<ClInclude Include="IPParser\parser\allFF.h" />
168+
<ClInclude Include="IPParser\parser\byte.h" />
169+
<ClInclude Include="IPParser\parser\CIDR.h" />
170+
<ClInclude Include="IPParser\parser\CIDRMask.h" />
171+
<ClInclude Include="IPParser\parser\dtoi.h" />
172+
<ClInclude Include="IPParser\parser\equal.h" />
173+
<ClInclude Include="IPParser\parser\IP.h" />
174+
<ClInclude Include="IPParser\parser\IPMask.h" />
175+
<ClInclude Include="IPParser\parser\IPNet.h" />
176+
<ClInclude Include="IPParser\parser\IPv4.h" />
177+
<ClInclude Include="IPParser\parser\parseCIDR.h" />
178+
<ClInclude Include="IPParser\parser\parseIP.h" />
179+
<ClInclude Include="IPParser\parser\parseIPv4.h" />
180+
<ClInclude Include="IPParser\parser\parseIPv6.h" />
181+
<ClInclude Include="IPParser\parser\Print.h" />
182+
<ClInclude Include="IPParser\parser\xtoi.h" />
183+
<ClInclude Include="log\DefaultLogger.h" />
184+
<ClInclude Include="log\Log.h" />
185+
<ClInclude Include="log\Logger.h" />
186+
<ClInclude Include="log\LogUtil.h" />
187+
<ClInclude Include="model\Assertion.h" />
188+
<ClInclude Include="model\Model.h" />
189+
<ClInclude Include="model\Policy.h" />
156190
<ClInclude Include="pch.h" />
191+
<ClInclude Include="persist\Adapter.h" />
192+
<ClInclude Include="rbac\DefaultRoleManager.h" />
193+
<ClInclude Include="rbac\GroupRoleManager.h" />
194+
<ClInclude Include="rbac\RoleManager.h" />
195+
<ClInclude Include="util\arrayEquals.h" />
196+
<ClInclude Include="util\arrayRemoveDuplicates.h" />
197+
<ClInclude Include="util\builtInFunctions.h" />
198+
<ClInclude Include="util\ends_with.h" />
199+
<ClInclude Include="util\escapeAssertion.h" />
200+
<ClInclude Include="util\findAllOccurences.h" />
201+
<ClInclude Include="util\join.h" />
202+
<ClInclude Include="util\removeComments.h" />
203+
<ClInclude Include="util\split.h" />
204+
<ClInclude Include="util\trim.h" />
157205
</ItemGroup>
158206
<ItemGroup>
159207
<ClCompile Include="dllmain.cpp" />

casbin/casbin.vcxproj.filters

+144
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,150 @@
2424
<ClInclude Include="enforcer.h">
2525
<Filter>Header Files</Filter>
2626
</ClInclude>
27+
<ClInclude Include="config\Config.h">
28+
<Filter>Header Files</Filter>
29+
</ClInclude>
30+
<ClInclude Include="config\ConfigInterface.h">
31+
<Filter>Header Files</Filter>
32+
</ClInclude>
33+
<ClInclude Include="effect\DefaultEffector.h">
34+
<Filter>Header Files</Filter>
35+
</ClInclude>
36+
<ClInclude Include="effect\Effect.h">
37+
<Filter>Header Files</Filter>
38+
</ClInclude>
39+
<ClInclude Include="effect\Effector.h">
40+
<Filter>Header Files</Filter>
41+
</ClInclude>
42+
<ClInclude Include="error\Error.h">
43+
<Filter>Header Files</Filter>
44+
</ClInclude>
45+
<ClInclude Include="exception\IllegalArgumentException.h">
46+
<Filter>Header Files</Filter>
47+
</ClInclude>
48+
<ClInclude Include="exception\IOException.h">
49+
<Filter>Header Files</Filter>
50+
</ClInclude>
51+
<ClInclude Include="exception\MissingRequiredSections.h">
52+
<Filter>Header Files</Filter>
53+
</ClInclude>
54+
<ClInclude Include="exception\UnsupportedOperationException.h">
55+
<Filter>Header Files</Filter>
56+
</ClInclude>
57+
<ClInclude Include="IPParser\exceptions\ParseException.h">
58+
<Filter>Header Files</Filter>
59+
</ClInclude>
60+
<ClInclude Include="IPParser\parser\allFF.h">
61+
<Filter>Header Files</Filter>
62+
</ClInclude>
63+
<ClInclude Include="IPParser\parser\byte.h">
64+
<Filter>Header Files</Filter>
65+
</ClInclude>
66+
<ClInclude Include="IPParser\parser\CIDR.h">
67+
<Filter>Header Files</Filter>
68+
</ClInclude>
69+
<ClInclude Include="IPParser\parser\CIDRMask.h">
70+
<Filter>Header Files</Filter>
71+
</ClInclude>
72+
<ClInclude Include="IPParser\parser\dtoi.h">
73+
<Filter>Header Files</Filter>
74+
</ClInclude>
75+
<ClInclude Include="IPParser\parser\equal.h">
76+
<Filter>Header Files</Filter>
77+
</ClInclude>
78+
<ClInclude Include="IPParser\parser\IP.h">
79+
<Filter>Header Files</Filter>
80+
</ClInclude>
81+
<ClInclude Include="IPParser\parser\IPMask.h">
82+
<Filter>Header Files</Filter>
83+
</ClInclude>
84+
<ClInclude Include="IPParser\parser\IPNet.h">
85+
<Filter>Header Files</Filter>
86+
</ClInclude>
87+
<ClInclude Include="IPParser\parser\IPv4.h">
88+
<Filter>Header Files</Filter>
89+
</ClInclude>
90+
<ClInclude Include="IPParser\parser\parseCIDR.h">
91+
<Filter>Header Files</Filter>
92+
</ClInclude>
93+
<ClInclude Include="IPParser\parser\parseIP.h">
94+
<Filter>Header Files</Filter>
95+
</ClInclude>
96+
<ClInclude Include="IPParser\parser\parseIPv4.h">
97+
<Filter>Header Files</Filter>
98+
</ClInclude>
99+
<ClInclude Include="IPParser\parser\parseIPv6.h">
100+
<Filter>Header Files</Filter>
101+
</ClInclude>
102+
<ClInclude Include="IPParser\parser\Print.h">
103+
<Filter>Header Files</Filter>
104+
</ClInclude>
105+
<ClInclude Include="IPParser\parser\xtoi.h">
106+
<Filter>Header Files</Filter>
107+
</ClInclude>
108+
<ClInclude Include="log\DefaultLogger.h">
109+
<Filter>Header Files</Filter>
110+
</ClInclude>
111+
<ClInclude Include="log\Log.h">
112+
<Filter>Header Files</Filter>
113+
</ClInclude>
114+
<ClInclude Include="log\Logger.h">
115+
<Filter>Header Files</Filter>
116+
</ClInclude>
117+
<ClInclude Include="log\LogUtil.h">
118+
<Filter>Header Files</Filter>
119+
</ClInclude>
120+
<ClInclude Include="model\Assertion.h">
121+
<Filter>Header Files</Filter>
122+
</ClInclude>
123+
<ClInclude Include="model\Model.h">
124+
<Filter>Header Files</Filter>
125+
</ClInclude>
126+
<ClInclude Include="model\Policy.h">
127+
<Filter>Header Files</Filter>
128+
</ClInclude>
129+
<ClInclude Include="persist\Adapter.h">
130+
<Filter>Header Files</Filter>
131+
</ClInclude>
132+
<ClInclude Include="rbac\DefaultRoleManager.h">
133+
<Filter>Header Files</Filter>
134+
</ClInclude>
135+
<ClInclude Include="rbac\GroupRoleManager.h">
136+
<Filter>Header Files</Filter>
137+
</ClInclude>
138+
<ClInclude Include="rbac\RoleManager.h">
139+
<Filter>Header Files</Filter>
140+
</ClInclude>
141+
<ClInclude Include="util\arrayEquals.h">
142+
<Filter>Header Files</Filter>
143+
</ClInclude>
144+
<ClInclude Include="util\arrayRemoveDuplicates.h">
145+
<Filter>Header Files</Filter>
146+
</ClInclude>
147+
<ClInclude Include="util\builtInFunctions.h">
148+
<Filter>Header Files</Filter>
149+
</ClInclude>
150+
<ClInclude Include="util\ends_with.h">
151+
<Filter>Header Files</Filter>
152+
</ClInclude>
153+
<ClInclude Include="util\escapeAssertion.h">
154+
<Filter>Header Files</Filter>
155+
</ClInclude>
156+
<ClInclude Include="util\findAllOccurences.h">
157+
<Filter>Header Files</Filter>
158+
</ClInclude>
159+
<ClInclude Include="util\join.h">
160+
<Filter>Header Files</Filter>
161+
</ClInclude>
162+
<ClInclude Include="util\removeComments.h">
163+
<Filter>Header Files</Filter>
164+
</ClInclude>
165+
<ClInclude Include="util\split.h">
166+
<Filter>Header Files</Filter>
167+
</ClInclude>
168+
<ClInclude Include="util\trim.h">
169+
<Filter>Header Files</Filter>
170+
</ClInclude>
27171
</ItemGroup>
28172
<ItemGroup>
29173
<ClCompile Include="dllmain.cpp">

src/config/Config.h casbin/config/Config.h

+15-18
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@
1818

1919
using namespace std;
2020

21-
mutex mtx_lock;
22-
2321
class Config : public ConfigInterface {
2422
private:
2523
static const string DEFAULT_SECTION;
2624
static const string DEFAULT_COMMENT;
2725
static const string DEFAULT_COMMENT_SEM;
26+
static mutex mtx_lock;
27+
2828
unordered_map < string, unordered_map <string, string> > data;
2929

3030
/**
@@ -34,7 +34,6 @@ class Config : public ConfigInterface {
3434
if (!section.compare("")) {
3535
section = DEFAULT_SECTION;
3636
}
37-
3837
bool ok = data[section].find(option) != data[section].end();
3938
data[section][option] = value;
4039
return !ok;
@@ -45,42 +44,41 @@ class Config : public ConfigInterface {
4544
ifstream infile;
4645
try {
4746
infile.open(fname);
48-
parseBuffer(&infile);
49-
} catch (const ifstream::failure &e) {
47+
} catch (const ifstream::failure e) {
5048
mtx_lock.unlock();
5149
IOException exception("Cannot open file.");
5250
throw exception;
5351
}
52+
parseBuffer(&infile);
53+
mtx_lock.unlock();
54+
infile.close();
5455
}
5556

5657
void parseBuffer(istream* buf){
5758
string section = "";
5859
int lineNum = 0;
5960
string line;
60-
6161
while (true) {
6262
lineNum++;
63-
6463
if (getline(*buf, line, '\n')) {
6564
if (!line.compare("")) {
6665
continue;
6766
}
6867
} else {
6968
break;
7069
}
71-
72-
70+
7371
line = trim(line);
7472
if (line.find(DEFAULT_COMMENT)==0) {
7573
continue;
7674
} else if (line.find(DEFAULT_COMMENT_SEM)==0) {
7775
continue;
7876
} else if (line.find("[")==0 && ends_with(line, string("]"))) {
79-
section = line.substr(1, line.length() - 1);
77+
section = line.substr(1, line.length() - 2);
8078
} else {
81-
vector <string> optionVal = split(line, string("="));
79+
vector <string> optionVal = split(line, string("="), 2);
8280
if (optionVal.size() != 2) {
83-
char * error;
81+
char* error = new char;
8482
sprintf(error,"parse the content error : line %d , %s = ? ", lineNum, optionVal[0].c_str());
8583
throw IllegalArgumentException(string(error));
8684
}
@@ -119,15 +117,15 @@ class Config : public ConfigInterface {
119117
}
120118

121119
bool getBool(string key) {
122-
return key.compare("true")==0;
120+
return get(key).compare("true")==0;
123121
}
124122

125123
int getInt(string key) {
126124
return atoi(get(key).c_str());
127125
}
128126

129127
float getFloat(string key) {
130-
return atof(get(key).c_str());
128+
return float(atof(get(key).c_str()));
131129
}
132130

133131
string getString(string key) {
@@ -153,7 +151,7 @@ class Config : public ConfigInterface {
153151
string section = "";
154152
string option;
155153

156-
transform(key.begin(), key.end(), key.begin(), ::toupper);
154+
transform(key.begin(), key.end(), key.begin(), ::tolower);
157155
vector <string> keys = split(key, string("::"));
158156
if (keys.size() >= 2) {
159157
section = keys[0];
@@ -168,8 +166,7 @@ class Config : public ConfigInterface {
168166
string get(string key) {
169167
string section;
170168
string option;
171-
172-
transform(key.begin(), key.end(), key.begin(), ::toupper);
169+
transform(key.begin(), key.end(), key.begin(), ::tolower);
173170
vector <string> keys = split(key, string("::"));
174171
if (keys.size() >= 2) {
175172
section = keys[0];
@@ -178,7 +175,6 @@ class Config : public ConfigInterface {
178175
section = DEFAULT_SECTION;
179176
option = keys[0];
180177
}
181-
182178
bool ok = data.find(section)!=data.end() && data[section].find(option) != data[section].end();
183179
if (ok) {
184180
return data[section][option];
@@ -191,5 +187,6 @@ class Config : public ConfigInterface {
191187
const string Config::DEFAULT_SECTION = "default";
192188
const string Config::DEFAULT_COMMENT = "#";
193189
const string Config::DEFAULT_COMMENT_SEM = ";";
190+
mutex Config::mtx_lock;
194191

195192
#endif
File renamed without changes.

casbin/config/testdata/testini.ini

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# test config
2+
debug = true
3+
url = act.wiki
4+
5+
; redis config
6+
[redis]
7+
redis.key = push1,push2
8+
9+
; mysql config
10+
[mysql]
11+
mysql.dev.host = 127.0.0.1
12+
mysql.dev.user = root
13+
mysql.dev.pass = 123456
14+
mysql.dev.db = test
15+
16+
mysql.master.host = 10.0.0.1
17+
mysql.master.user = root
18+
mysql.master.pass = 89dds)2$#d
19+
mysql.master.db = act
20+
21+
; math config
22+
[math]
23+
math.i64 = 64
24+
math.f64 = 64.1
25+
26+
# multi-line test
27+
[multi1]
28+
name = r.sub==p.sub && r.obj==p.obj
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/log/Log.h casbin/log/Log.h

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)