*/
#include <string.h>
-#include <depot.h>
+#include <gdbm.h>
+#include <stdlib.h>
#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;