X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=usermap.c;h=9b8cb62b7423b5b34b4cfd936e7c4cb103827889;hb=d2906090b274ce2698952608ccf737912f7725d5;hp=64c13d07871700a223cc2204650806e5bec61dbe;hpb=afb22f584389e92b343dff248ea94ba436d7ca0f;p=cascardo%2Frnetproxy.git diff --git a/usermap.c b/usermap.c index 64c13d0..9b8cb62 100644 --- a/usermap.c +++ b/usermap.c @@ -19,45 +19,38 @@ */ #include -#include +#include #include "usermap.h" +int ACCESS_DEFAULT = ACCESS_DENY; + int usermap_perm (char *user) { - static DEPOT* allow_dp = NULL; - static DEPOT* deny_dp = NULL; - char* allow = NULL; - char* deny = NULL; - if (allow_dp == NULL) - { - allow_dp = dpopen ("/var/lib/popproxy/allow.db", DP_OREADER, 0); - } - if (deny_dp == 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); + 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_dp = dpopen ("/var/lib/popproxy/allow.db", DP_OREADER, 0); + allow = gdbm_exists (allow_db, key); + gdbm_close (allow_db); } - if (allow_dp) - allow = dpget (allow_dp, user, -1, 0, -1, NULL); - if (deny_dp) - deny = dpget (deny_dp, user, -1, 0, -1, NULL); - 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_dp) + return ACCESS_DENY; + if (allow) return ACCESS_ALLOW; - return ACCESS_DENY; + return ACCESS_DEFAULT; }