1
0

acltest.cpp 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757
  1. /** BEGIN COPYRIGHT BLOCK
  2. * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
  3. * Copyright (C) 2005 Red Hat, Inc.
  4. * All rights reserved.
  5. * END COPYRIGHT BLOCK **/
  6. #include <stdio.h>
  7. #include <netsite.h>
  8. #include <base/systhr.h>
  9. #include <libaccess/nserror.h>
  10. #include <libaccess/acl.h>
  11. #include "../aclpriv.h"
  12. #include <libaccess/aclproto.h>
  13. #include "../aclcache.h"
  14. #include <libaccess/las.h>
  15. extern ACLListHandle_t *ACL_ParseFile(NSErr_t *errp, char *filename);
  16. int
  17. TestEvalFunc(NSErr_t *errp, char *attr, CmpOp_t comparator,
  18. char *attr_pattern, ACLCachable_t *cachable,
  19. void **las_cookie, PList_t subject, PList_t resource,
  20. PList_t auth_info, PList_t global_auth)
  21. {
  22. return 0;
  23. }
  24. void
  25. TestFlushFunc(void **cookie)
  26. {
  27. return;
  28. }
  29. static int parse_dburl (NSErr_t *errp, ACLDbType_t dbtype,
  30. const char *dbname, const char *url,
  31. PList_t plist, void **db)
  32. {
  33. *db = strdup(url);
  34. return 0;
  35. }
  36. int main(int argc, char **argv)
  37. {
  38. ACLListHandle_t *acl_list;
  39. int result;
  40. ACLCachable_t cachable = 0;
  41. void *las_cookie=NULL;
  42. ACLEvalHandle_t eval;
  43. char *rights[3];
  44. char filename[20];
  45. char newfilename[25];
  46. int i;
  47. char *map_generic[7];
  48. LASEvalFunc_t Eval_funcp;
  49. LASFlushFunc_t Flush_funcp;
  50. char *bong;
  51. char *bong_type;
  52. char *acl_tag;
  53. int expr_num;
  54. int ii;
  55. char **name_list;
  56. ACLMethod_t method=NULL;
  57. ACLDbType_t dbtype=NULL;
  58. int rv;
  59. ACLAttrGetterList_t aglist;
  60. ACLAttrGetter_t *agptr;
  61. char **names;
  62. int cnt;
  63. systhread_init("acl_utest");
  64. char *acl_file_list[3] = {"aclfile6", "aclfile7", NULL};
  65. char *new_filename = "merge6_7";
  66. char *acl_name_list[3] = {"aclfile6", "aclfile7", NULL};
  67. char *new_aclname = "merge6_7";
  68. char *bad_acl_file_list[3] = {"bad_aclfile6", "bad_aclfile7", NULL};
  69. if ( ACL_FileMergeFile(NULL, new_filename, bad_acl_file_list, 0) < 0 ) {
  70. printf("Failed ACL_FileMergeFile() test.\n");
  71. }
  72. if ( ACL_FileMergeFile(NULL, new_filename, acl_file_list, 0) < 0 ) {
  73. printf("Failed ACL_FileMergeFile() test.\n");
  74. }
  75. if ( ACL_FileMergeAcl(NULL, new_filename, acl_name_list, new_aclname, 0) < 0 ) {
  76. printf("Failed ACL_FileMergeAcl() test.\n");
  77. }
  78. /* LAS Registration Unit Tests */
  79. ACL_Init();
  80. rv = ACL_MethodRegister(NULL, "one", &method);
  81. printf("Method one is #%d, rv=%d\n", (int)method, rv);
  82. rv = ACL_MethodRegister(NULL, "two", &method);
  83. printf("Method two is #%d, rv=%d\n", (int)method, rv);
  84. rv = ACL_MethodRegister(NULL, "one", &method);
  85. printf("Method one repeated is #%d, rv=%d\n", (int)method, rv);
  86. rv = ACL_MethodRegister(NULL, "three", &method);
  87. printf("Method three is #%d, rv=%d\n", (int)method, rv);
  88. rv = ACL_MethodNamesGet(NULL, &names, &cnt);
  89. for(i = 0; i < cnt; i++) {
  90. printf("\tMethod[%d] = \"%s\"\n", i, names[i]);
  91. }
  92. ACL_MethodNamesFree(NULL, names, cnt);
  93. if (!ACL_MethodIsEqual(NULL, method, method)) {
  94. printf("Error comparing methods");
  95. }
  96. if (!ACL_MethodNameIsEqual(NULL, method, "three")) {
  97. printf("Error comparing method by name");
  98. }
  99. /* Since LDAP is already registered by ACL_Init, the first number
  100. * we'll get is actually 2.
  101. */
  102. rv = ACL_DbTypeRegister(NULL, "two", parse_dburl, &dbtype);
  103. printf("DbType two is #%d, rv=%d\n", (int)dbtype, rv);
  104. rv = ACL_DbTypeRegister(NULL, "three", parse_dburl, &dbtype);
  105. printf("DbType three is #%d, rv=%d\n", (int)dbtype, rv);
  106. rv = ACL_DbTypeRegister(NULL, "two", parse_dburl, &dbtype);
  107. printf("DbType two repeated is #%d, rv=%d\n", (int)dbtype, rv);
  108. rv = ACL_DbTypeRegister(NULL, "four", parse_dburl, &dbtype);
  109. printf("DbType four is #%d, rv=%d\n", (int)dbtype, rv);
  110. if (!ACL_DbTypeIsEqual(NULL, dbtype, dbtype)) {
  111. printf("Error comparing dbtypes\n");
  112. }
  113. if (!ACL_DbTypeNameIsEqual(NULL, dbtype, "four")) {
  114. printf("Error comparing dbtype by name\n");
  115. }
  116. rv = ACL_DatabaseRegister(NULL, dbtype, "db1", "url for db1", NULL);
  117. if (rv < 0) {
  118. printf("ACL_DatabaseRegister failed for db1\n");
  119. }
  120. rv = ACL_DatabaseRegister(NULL, dbtype, "db2", "url for db2", NULL);
  121. if (rv < 0) {
  122. printf("ACL_DatabaseRegister failed for db2\n");
  123. }
  124. rv = ACL_DatabaseRegister(NULL, dbtype, "db3", "url for db3", NULL);
  125. if (rv < 0) {
  126. printf("ACL_DatabaseRegister failed for db3\n");
  127. }
  128. rv = ACL_DatabaseNamesGet(NULL, &names, &cnt);
  129. for(i = 0; i < cnt; i++) {
  130. printf("\tDatabase[%d] = \"%s\"\n", i, names[i]);
  131. }
  132. if (ACL_AttrGetterRegister(NULL, "attr", (ACLAttrGetterFn_t)2, (ACLMethod_t)10, (ACLDbType_t)20, ACL_AT_FRONT, NULL)) {
  133. printf("Error registering attr getter\n");
  134. }
  135. if (ACL_AttrGetterRegister(NULL, "attr", (ACLAttrGetterFn_t)3, (ACLMethod_t)10, (ACLDbType_t)20, ACL_AT_END, NULL)) {
  136. printf("Error registering attr getter\n");
  137. }
  138. if (ACL_AttrGetterRegister(NULL, "attr", (ACLAttrGetterFn_t)1, (ACLMethod_t)10, (ACLDbType_t)20, ACL_AT_FRONT, NULL)) {
  139. printf("Error registering attr getter\n");
  140. }
  141. if (ACL_AttrGetterRegister(NULL, "attr", (ACLAttrGetterFn_t)4, (ACLMethod_t)10, (ACLDbType_t)20, ACL_AT_END, NULL)) {
  142. printf("Error registering attr getter\n");
  143. }
  144. if (ACL_AttrGetterFind(NULL, "attr", &aglist)) {
  145. printf("Error finding attr getter\n");
  146. }
  147. for (i = 0, agptr = ACL_AttrGetterFirst(&aglist);
  148. i < 4;
  149. i++, agptr = ACL_AttrGetterNext(&aglist, agptr)) {
  150. if (agptr) {
  151. printf("position %d\n", (int)(agptr->fn));
  152. }
  153. else {
  154. printf("***Error: missing getter ***\n");
  155. }
  156. }
  157. #ifndef XP_WIN32
  158. if (ACL_LasRegister(NULL, "test_attr", TestEvalFunc, TestFlushFunc)) {
  159. printf("Error registering Test LAS functions\n");
  160. }
  161. ACL_LasFindEval(NULL, "test_attr", &Eval_funcp);
  162. if (Eval_funcp != TestEvalFunc) {
  163. printf("Error finding Eval function - expecting %x, got %x\n",
  164. TestEvalFunc, Eval_funcp);
  165. }
  166. ACL_LasFindFlush(NULL, "test_attr", &Flush_funcp);
  167. if (Flush_funcp != TestFlushFunc) {
  168. printf("Error finding Flush function - expecting %x, got %x\n",
  169. TestFlushFunc, Flush_funcp);
  170. }
  171. ACL_LasFindEval(NULL, "wrong_attr", &Eval_funcp);
  172. if (Eval_funcp != NULL) {
  173. printf("Error finding Eval function - expecting NULL, got %x\n",
  174. Eval_funcp);
  175. }
  176. ACL_LasFindFlush(NULL, "wrong_attr", &Flush_funcp);
  177. if (Flush_funcp != NULL) {
  178. printf("Error finding Flush function - expecting NULL, got %x\n",
  179. Flush_funcp);
  180. }
  181. #endif /* !XP_WIN32 */
  182. /* ACL Eval Unit Tests
  183. */
  184. rights[0] = "http_get";
  185. rights[1] = "http_post";
  186. rights[2] = NULL;
  187. eval.subject = NULL;
  188. eval.resource = NULL;
  189. eval.default_result = ACL_RES_DENY;
  190. for (i=0; i<10; i++) {
  191. sprintf(filename, "aclfile%d", i);
  192. eval.acllist = ACL_ParseFile((NSErr_t *)NULL, filename);
  193. if ( eval.acllist == NULL ) {
  194. printf("Couldn't parse.\n");
  195. continue;
  196. }
  197. sprintf(newfilename, "%s.v30", filename);
  198. if ( ACL_WriteFile(NULL, newfilename, eval.acllist) < 0) {
  199. printf("Couldn't write %s.\n", newfilename);
  200. }
  201. result = ACL_EvalTestRights(NULL, &eval, &rights[0],
  202. http_generic, &bong, &bong_type, &acl_tag, &expr_num);
  203. ACL_ListDestroy(NULL, eval.acllist);
  204. printf("%s = %d\n\n", filename, result);
  205. }
  206. /********************************************************************
  207. TEST #1
  208. TEST ACL_ParseString()
  209. TEST ACL_WriteFile()
  210. TEST ACL_ParseFile()
  211. TEST ACL_ListFind()
  212. *********************************************************************/
  213. acl_list = ACL_ParseString((NSErr_t *)NULL,
  214. "version 3.0; acl > franco;");
  215. if ( acl_list != NULL ) {
  216. ACL_ListDestroy(NULL, acl_list);
  217. printf("Test #1a fails parsed invalid ACL\n");
  218. goto skip_test;
  219. }
  220. acl_list = ACL_ParseString((NSErr_t *)NULL,
  221. "version 3.0; acl franco; \nallow (read) user=franco;");
  222. if ( acl_list == NULL ) {
  223. printf("Test #1b fails couldn't parse valid ACL\n");
  224. goto skip_test;
  225. } else {
  226. if ( ACL_WriteFile(NULL, "buffer", acl_list) < 0) {
  227. printf("Test #1b, couldn't write %s.\n", "buffer");
  228. }
  229. ACL_ListDestroy(NULL, acl_list);
  230. }
  231. acl_list = ACL_ParseString((NSErr_t *)NULL,
  232. "version 3.0; acl franco; \njunk (read) user=franco;");
  233. if ( acl_list != NULL ) {
  234. printf("Test #1c failed missed syntax error\n");
  235. ACL_ListDestroy(NULL, acl_list);
  236. goto skip_test;
  237. }
  238. acl_list = ACL_ParseString((NSErr_t *)NULL,
  239. "version 3.0; acl franco; \nallow (read) user=franco;");
  240. if ( acl_list == NULL ) {
  241. printf("Test #1d couldn't parse valid ACL\n");
  242. } else {
  243. ACL_ListDestroy(NULL, acl_list);
  244. goto skip_test;
  245. }
  246. acl_list= ACL_ParseFile((NSErr_t *)NULL, "buffer");
  247. if ( acl_list == NULL ) {
  248. printf("Test #1e, couldn't perform ACL_ParseFile(buffer)\n");
  249. goto skip_test;
  250. } else {
  251. if ( ACL_ListFind(NULL, acl_list, "franco", ACL_CASE_INSENSITIVE) == NULL ) {
  252. printf("Test #1e, couldn't find %s in %s.\n", "franco", "buffer");
  253. }
  254. ACL_ListDestroy(NULL, acl_list);
  255. }
  256. /********************************************************************
  257. TEST #2
  258. TEST ACL_FileDeleteAcl()
  259. TEST ACL_ParseFile()
  260. TEST ACL_ListFind()
  261. *********************************************************************/
  262. if ( ACL_FileDeleteAcl(NULL, "buffer", "franco", ACL_CASE_INSENSITIVE) < 0) {
  263. printf("Test #2, couldn't write %s.\n", "buffer");
  264. }
  265. acl_list= ACL_ParseFile((NSErr_t *)NULL, "buffer");
  266. if ( acl_list == NULL ) {
  267. printf("Test #2, couldn't perform ACL_ParseFile(buffer)\n");
  268. goto skip_test;
  269. } else {
  270. if ( ACL_ListFind(NULL, acl_list, "franco", ACL_CASE_INSENSITIVE) ) {
  271. printf("Couldn't delete %s from %s.\n", "franco", "buffer");
  272. }
  273. ACL_ListDestroy(NULL, acl_list);
  274. }
  275. /********************************************************************
  276. TEST #3
  277. TEST ACL_FileSetAcl()
  278. TEST ACL_ParseFile()
  279. TEST ACL_ListFind()
  280. *********************************************************************/
  281. if ( ACL_FileSetAcl(NULL, "buffer",
  282. "version 3.0; acl FileSetAcl; \nallow (read) user=franco;",
  283. ACL_CASE_INSENSITIVE)< 0) {
  284. printf("Test #3, couldn't ACL_FileSetACL(%s).\n", "FileSetAcl");
  285. }
  286. if ( ACL_FileSetAcl(NULL, "buffer",
  287. "version 3.0; acl franco; \nallow (read) user=franco;",
  288. ACL_CASE_INSENSITIVE)< 0) {
  289. printf("Test #3, couldn't ACL_FileSetACL(%s).\n", "franco");
  290. }
  291. acl_list= ACL_ParseFile((NSErr_t *)NULL, "buffer");
  292. if ( acl_list == NULL ) {
  293. printf("Test #3, couldn't perform ACL_ParseFile(buffer)\n");
  294. goto skip_test;
  295. } else {
  296. if ( ACL_ListFind(NULL, acl_list, "franco", ACL_CASE_INSENSITIVE) == NULL) {
  297. printf("Test #3, couldn't set %s in %s.\n", "franco", "buffer");
  298. }
  299. if ( ACL_ListFind(NULL, acl_list, "filesetacl", ACL_CASE_INSENSITIVE) == NULL) {
  300. printf("Test #3, couldn't set %s in %s.\n", "filesetacl", "buffer");
  301. }
  302. ACL_ListDestroy(NULL, acl_list);
  303. }
  304. /********************************************************************
  305. TEST #4
  306. TEST ACL_FileRenameAcl()
  307. TEST ACL_ParseFile()
  308. TEST ACL_ListFind()
  309. *********************************************************************/
  310. if ( ACL_FileRenameAcl(NULL, "buffer", "FileSetAcl", "loser", ACL_CASE_INSENSITIVE)< 0) {
  311. printf("Test #4, fail ACL_FileRenameACL(filesetacl, loser).\n");
  312. }
  313. if ( ACL_FileRenameAcl(NULL, "buffer", "franco", "bigdogs",
  314. ACL_CASE_INSENSITIVE)< 0) {
  315. printf("Test #4, fail ACL_FileRenameACL(franco, bigdogs).\n");
  316. }
  317. acl_list= ACL_ParseFile((NSErr_t *)NULL, "buffer");
  318. if ( acl_list == NULL ) {
  319. printf("Test #3, couldn't perform ACL_ParseFile(buffer)\n");
  320. goto skip_test;
  321. } else {
  322. if ( ACL_ListFind(NULL, acl_list, "loser", ACL_CASE_INSENSITIVE) == NULL) {
  323. printf("Test #4, fail rename %s in %s.\n", "loser", "buffer");
  324. }
  325. if ( ACL_ListFind(NULL, acl_list, "bigdogs", ACL_CASE_INSENSITIVE) == NULL) {
  326. printf("Test #4, fail rename %s in %s.\n", "bigdogs", "buffer");
  327. }
  328. if ( ACL_ListGetNameList(NULL, acl_list, &name_list) < 0 ) {
  329. printf("Test #4, yikes, the GetNameList failed.\n");
  330. } else {
  331. for (ii = 0; name_list[ii]; ii++)
  332. printf("ACL %s\n", name_list[ii]);
  333. ACL_NameListDestroy(NULL, name_list);
  334. }
  335. ACL_ListDestroy(NULL, acl_list);
  336. }
  337. skip_test:
  338. /********************************************************************
  339. END
  340. *********************************************************************/
  341. rights[0] = "html_read";
  342. rights[1] = "html_write";
  343. map_generic[0] = "html_read";
  344. map_generic[1] = "html_write";
  345. map_generic[2] = "N/A";
  346. map_generic[3] = "html_create";
  347. map_generic[4] = "html_delete";
  348. map_generic[5] = "N/A";
  349. map_generic[6] = NULL;
  350. for (i=10; i<20; i++) {
  351. sprintf(filename, "aclfile%d", i);
  352. eval.acllist = ACL_ParseFile((NSErr_t *)NULL, filename);
  353. if ( eval.acllist == NULL ) {
  354. printf("Parse failed.\n");
  355. continue;
  356. }
  357. result = ACL_EvalTestRights(NULL, &eval, &rights[0], map_generic, &bong, &bong_type, &acl_tag, &expr_num);
  358. ACL_ListDestroy(NULL, eval.acllist);
  359. printf("%s = %d\n\n", filename, result);
  360. }
  361. /*
  362. * DNS LAS Unit Tests
  363. */
  364. result = LASDnsEval(NULL, "dnsalias", CMP_OP_EQ, "*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  365. printf("dnsalias = *? %d\n\n", result);
  366. LASDnsFlush(&las_cookie);
  367. result = LASDnsEval(NULL, "dnsalias", CMP_OP_EQ, "aruba.mcom.com brain251.mcom.com", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  368. printf("dnsalias = aruba.mcom.com brain251.mcom.com? %d\n\n", result);
  369. LASDnsFlush(&las_cookie);
  370. result = LASDnsEval(NULL, "dns", CMP_OP_EQ, "*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  371. printf("dns = *? %d\n\n", result);
  372. result = LASDnsEval(NULL, "dns", CMP_OP_NE, "*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  373. printf("dns != *? %d\n\n", result);
  374. LASDnsFlush(&las_cookie);
  375. result = LASDnsEval(NULL, "dns", CMP_OP_EQ, "aruba.mcom.com", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  376. printf("dns = aruba.mcom.com? %d\n\n", result);
  377. LASDnsFlush(&las_cookie);
  378. result = LASDnsEval(NULL, "dns", CMP_OP_EQ, "ai.mit.edu", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  379. printf("dns = ai.mit.edu? %d\n\n", result);
  380. LASDnsFlush(&las_cookie);
  381. result = LASDnsEval(NULL, "dns", CMP_OP_EQ, "*.ai.mit.edu", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  382. printf("dns = *.ai.mit.edu? %d\n\n", result);
  383. LASDnsFlush(&las_cookie);
  384. result = LASDnsEval(NULL, "dns", CMP_OP_EQ, "*.mit.edu", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  385. printf("dns = *.mit.edu? %d\n\n", result);
  386. LASDnsFlush(&las_cookie);
  387. result = LASDnsEval(NULL, "dns", CMP_OP_EQ, "*.edu", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  388. printf("dns = *.edu? %d\n\n", result);
  389. LASDnsFlush(&las_cookie);
  390. result = LASDnsEval(NULL, "dns", CMP_OP_NE, "*.edu", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  391. printf("dns != *.edu? %d\n\n", result);
  392. LASDnsFlush(&las_cookie);
  393. result = LASDnsEval(NULL, "mistake", CMP_OP_NE, "*.edu", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  394. printf("mistake != *.edu? %d\n\n", result);
  395. LASDnsFlush(&las_cookie);
  396. result = LASDnsEval(NULL, "dns", CMP_OP_GT, "*.edu", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  397. printf("dns > *.edu? %d\n\n", result);
  398. LASDnsFlush(&las_cookie);
  399. /*
  400. * IP LAS Unit Tests
  401. */
  402. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  403. printf ("ip = *? %d\n\n", result);
  404. LASIpFlush(&las_cookie);
  405. result = LASIpEval(NULL, "ip", CMP_OP_NE, "*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  406. printf ("ip != *? %d\n\n", result);
  407. LASIpFlush(&las_cookie);
  408. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "*.*.*.*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  409. printf ("ip = *.*.*.*? %d\n\n", result);
  410. LASIpFlush(&las_cookie);
  411. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  412. printf ("ip = 17.*? %d\n\n", result);
  413. LASIpFlush(&las_cookie);
  414. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.*.*.*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  415. printf ("ip = 17.*.*.*? %d\n\n", result);
  416. LASIpFlush(&las_cookie);
  417. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  418. printf ("ip = 17.34.*? %d\n\n", result);
  419. LASIpFlush(&las_cookie);
  420. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.*.*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  421. printf ("ip = 17.34.*.*? %d\n\n", result);
  422. LASIpFlush(&las_cookie);
  423. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.51.*", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  424. printf ("ip = 17.34.51.*? %d\n\n", result);
  425. LASIpFlush(&las_cookie);
  426. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.51.*+255.255.255.255", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  427. printf ("ip = 17.34.51.*+255.255.255.255? %d\n\n", result);
  428. LASIpFlush(&las_cookie);
  429. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.51.69+255.255.255.254, 123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  430. printf ("ip = 17.34.51.69+255.255.255.254, 123.45.67.89? %d\n\n", result);
  431. LASIpFlush(&las_cookie);
  432. result = LASIpEval(NULL, "ip", CMP_OP_NE, "17.34.51.69+255.255.255.254, 123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  433. printf ("ip != 17.34.51.69+255.255.255.254, 123.45.67.89? %d\n\n", result);
  434. LASIpFlush(&las_cookie);
  435. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.51.68, 17.34.51.69", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  436. printf ("ip = 17.34.51.68, 17.34.51.69? %d\n\n", result);
  437. LASIpFlush(&las_cookie);
  438. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.51.68, 17.34.51.69, 123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  439. printf ("ip = 17.34.51.68, 17.34.51.69, 123.45.67.89? %d\n\n", result);
  440. LASIpFlush(&las_cookie);
  441. result = LASIpEval(NULL, "ip", CMP_OP_NE, "17.34.51.68, 17.34.51.69, 123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  442. printf ("ip != 17.34.51.68, 17.34.51.69, 123.45.67.89? %d\n\n", result);
  443. LASIpFlush(&las_cookie);
  444. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.51.68", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  445. printf ("ip = 17.34.51.68? %d\n\n", result);
  446. LASIpFlush(&las_cookie);
  447. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.51.69", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  448. printf ("ip = 17.34.51.69? %d\n\n", result);
  449. LASIpFlush(&las_cookie);
  450. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.51.69+255.255.255.254", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  451. printf ("ip = 17.34.51.69+255.255.255.254? %d\n\n", result);
  452. LASIpFlush(&las_cookie);
  453. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.34.50.69+255.255.254.0", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  454. printf ("ip = 17.34.50.69+255.255.254.0? %d\n\n", result);
  455. LASIpFlush(&las_cookie);
  456. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "17.35.50.69+255.254.0.0", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  457. printf ("ip = 17.35.50.69+255.254.0.0? %d\n\n", result);
  458. LASIpFlush(&las_cookie);
  459. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "16.35.50.69+254.0.0.0", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  460. printf ("ip = 16.35.50.69+254.0.0.0? %d\n\n", result);
  461. LASIpFlush(&las_cookie);
  462. result = LASIpEval(NULL, "ip", CMP_OP_EQ, "123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  463. printf ("ip = 123.45.67.89? %d\n\n", result);
  464. result = LASIpEval(NULL, "ip", CMP_OP_NE, "123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  465. printf ("ip != 123.45.67.89? %d\n\n", result);
  466. result = LASIpEval(NULL, "ip", CMP_OP_GT, "123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  467. printf ("ip > 123.45.67.89? %d\n\n", result);
  468. result = LASIpEval(NULL, "ip", CMP_OP_LT, "123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  469. printf ("ip < 123.45.67.89? %d\n\n", result);
  470. result = LASIpEval(NULL, "ip", CMP_OP_GE, "123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  471. printf ("ip >= 123.45.67.89? %d\n\n", result);
  472. result = LASIpEval(NULL, "ip", CMP_OP_LE, "123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  473. printf ("ip <= 123.45.67.89? %d\n\n", result);
  474. LASIpFlush(&las_cookie);
  475. result = LASIpEval(NULL, "mistake", CMP_OP_LE, "123.45.67.89", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  476. printf ("mistake <= 123.45.67.89? %d\n\n", result);
  477. LASIpFlush(&las_cookie);
  478. /*
  479. * Time of Day unit tests.
  480. */
  481. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_EQ, "2120", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  482. printf("time = 2120? %d\n\n", result);
  483. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_NE, "2120", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  484. printf("time != 2120? %d\n\n", result);
  485. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_EQ, "0700", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  486. printf("time = 0700? %d\n\n", result);
  487. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_NE, "0700", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  488. printf("time != 0700? %d\n\n", result);
  489. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_EQ, "2400", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  490. printf("time = 2400? %d\n\n", result);
  491. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_NE, "2400", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  492. printf("time != 2400? %d\n\n", result);
  493. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_GT, "2120", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  494. printf("time > 2120? %d\n\n", result);
  495. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_LT, "2120", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  496. printf("time < 2120? %d\n\n", result);
  497. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_GT, "0700", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  498. printf("time > 0700? %d\n\n", result);
  499. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_LT, "0700", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  500. printf("time < 0700? %d\n\n", result);
  501. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_GT, "2400", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  502. printf("time > 2400? %d\n\n", result);
  503. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_LT, "2400", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  504. printf("time < 2400? %d\n\n", result);
  505. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_GE, "2120", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  506. printf("time >= 2120? %d\n\n", result);
  507. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_LE, "2120", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  508. printf("time <= 2120? %d\n\n", result);
  509. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_GE, "0700", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  510. printf("time >= 0700? %d\n\n", result);
  511. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_LE, "0700", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  512. printf("time <= 0700? %d\n\n", result);
  513. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_GE, "2400", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  514. printf("time >= 2400? %d\n\n", result);
  515. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_LE, "2400", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  516. printf("time <= 2400? %d\n\n", result);
  517. result = LASTimeOfDayEval(NULL, "mistake", CMP_OP_LE, "2400", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  518. printf("mistake <= 2400? %d\n\n", result);
  519. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_EQ, "0800-2200", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  520. printf("time = 0800-2200? %d\n\n", result);
  521. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_NE, "0800-2200", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  522. printf("time != 0800-2200? %d\n\n", result);
  523. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_EQ, "2200-0800", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  524. printf("time = 2200-0800? %d\n\n", result);
  525. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_NE, "2200-0800", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  526. printf("time != 2200-0800? %d\n\n", result);
  527. result = LASTimeOfDayEval(NULL, "timeofday", CMP_OP_LE, "2200-0800", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  528. printf("time <= 2200-0800? %d\n\n", result);
  529. /*
  530. * Day Of Week Unit Tests
  531. */
  532. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_EQ, "Mon", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  533. printf("= mon? %d\n\n", result);
  534. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_EQ, "tUe", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  535. printf("= tUe? %d\n\n", result);
  536. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_EQ, "weD", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  537. printf("= weD? %d\n\n", result);
  538. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_EQ, "THu", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  539. printf("= THu? %d\n\n", result);
  540. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_EQ, "FrI", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  541. printf("= FrI? %d\n\n", result);
  542. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_EQ, "sAT", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  543. printf("= tUe? %d\n\n", result);
  544. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_EQ, "Sun", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  545. printf("= Sun? %d\n\n", result);
  546. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_EQ, "mon,tuewed,thu,frisatsun", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  547. printf("= mon,tuewed,thu,frisatsun? %d\n\n", result);
  548. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_NE, "mon,tuewed,thu,frisatsun", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  549. printf("!= mon,tuewed,thu,frisatsun? %d\n\n", result);
  550. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_GT, "Sun", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  551. printf("> Sun? %d\n\n", result);
  552. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_LT, "Sun", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  553. printf("< Sun? %d\n\n", result);
  554. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_GE, "Sun", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  555. printf(">= Sun? %d\n\n", result);
  556. result = LASDayOfWeekEval(NULL, "dayofweek", CMP_OP_LE, "Sun", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  557. printf("<= Sun? %d\n\n", result);
  558. result = LASDayOfWeekEval(NULL, "mistake", CMP_OP_LE, "Sun", &cachable, &las_cookie, NULL, NULL, NULL, NULL);
  559. printf("mistake <= Sun? %d\n\n", result);
  560. ACL_Destroy();
  561. exit(0);
  562. }