X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Frnetproxy.git;a=blobdiff_plain;f=usermap.c;h=40e0aabe2bbf6874a3de6c8b71d6f7bd28f67f84;hp=e2fa5bdcecb9ff421cc9881d1cc29351ee757adb;hb=8cd17e22898fb1f13bc5da4507906276feddf64b;hpb=09b4a881253d4703312045b8dc61900725cac3ec diff --git a/usermap.c b/usermap.c index e2fa5bd..40e0aab 100644 --- a/usermap.c +++ b/usermap.c @@ -19,46 +19,46 @@ */ #include -#include +#include +#include #include "usermap.h" int usermap_perm (char *user) { - DEPOT* allow_dp = NULL; - DEPOT* deny_dp = NULL; - char* allow = NULL; - char* deny = NULL; + GDBM_FILE allow_db = NULL; + GDBM_FILE deny_db = NULL; + int allow = 0; + int deny = 0; + datum key; + key.dptr = user; + key.dsize = strlen (user); int allow_users = 0; - allow_dp = dpopen ("/var/lib/popproxy/allow.db", DP_OREADER, 0); - deny_dp = dpopen ("/var/lib/popproxy/deny.db", DP_OREADER, 0); - if (allow_dp) + allow_db = gdbm_open ("/var/lib/popproxy/allow.db", + 0, GDBM_READER, 0, NULL); + deny_db = gdbm_open ("/var/lib/popproxy/deny.db", + 0, GDBM_READER, 0, NULL); + if (allow_db) { - allow = dpget (allow_dp, user, -1, 0, -1, NULL); - allow_users = dprnum (allow_dp); - dpclose (allow_dp); + datum allow_fk; + allow = gdbm_exists (allow_db, key); + allow_fk = gdbm_firstkey (allow_db); + if (allow_fk.dptr) + { + allow_users = 1; + free (allow_fk.dptr); + } + gdbm_close (allow_db); } - if (deny_dp) + if (deny_db) { - deny = dpget (deny_dp, user, -1, 0, -1, NULL); - dpclose (deny_dp); - } - if (allow && deny) - { - free (allow); - free (deny); - return ACCESS_DENY; - } - if (allow) - { - free (allow); - return ACCESS_ALLOW; + deny = gdbm_exists (deny_db, key); + gdbm_close (deny_db); } if (deny) - { - free (deny); - return ACCESS_DENY; - } + return ACCESS_DENY; + if (allow) + return ACCESS_ALLOW; if (allow_users == 0) return ACCESS_ALLOW; return ACCESS_DENY;