X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=usermap.c;h=9b8cb62b7423b5b34b4cfd936e7c4cb103827889;hb=cd4f92d6945a7611e1221958450c734d7b939784;hp=e2fa5bdcecb9ff421cc9881d1cc29351ee757adb;hpb=add7ee4770c7868dbe8a14a08be565be5db20617;p=cascardo%2Frnetproxy.git diff --git a/usermap.c b/usermap.c index e2fa5bd..9b8cb62 100644 --- a/usermap.c +++ b/usermap.c @@ -19,47 +19,38 @@ */ #include -#include +#include #include "usermap.h" +int ACCESS_DEFAULT = ACCESS_DENY; + int usermap_perm (char *user) { - DEPOT* allow_dp = NULL; - DEPOT* deny_dp = NULL; - char* allow = NULL; - char* deny = NULL; - 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 = dpget (allow_dp, user, -1, 0, -1, NULL); - allow_users = dprnum (allow_dp); - dpclose (allow_dp); - } - if (deny_dp) + 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); + 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) { - deny = dpget (deny_dp, user, -1, 0, -1, NULL); - dpclose (deny_dp); + allow = gdbm_exists (allow_db, key); + gdbm_close (allow_db); } - if (allow && deny) + if (deny_db) { - 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; - } - if (allow_users == 0) + return ACCESS_DENY; + if (allow) return ACCESS_ALLOW; - return ACCESS_DENY; + return ACCESS_DEFAULT; }