X-Git-Url: https://git.hcoop.net/hcoop/debian/courier-authlib.git/blobdiff_plain/781cfcb8fd50934c470e0dabf79d32ab333dec68..f77892e671e1261ec26e5133f86b8a52635f3dd2:/preauthsqlite.c diff --git a/preauthsqlite.c b/preauthsqlite.c new file mode 100644 index 0000000..abb5649 --- /dev/null +++ b/preauthsqlite.c @@ -0,0 +1,51 @@ +/* +** Copyright 1998 - 1999 Double Precision, Inc. See COPYING for +** distribution information. +*/ + +#if HAVE_CONFIG_H +#include "courier_auth_config.h" +#endif +#include +#include +#include +#include +#include +#if HAVE_UNISTD_H +#include +#endif + +#include "auth.h" +#include "authsqlite.h" + +int auth_sqlite_pre(const char *user, const char *service, + int (*callback)(struct authinfo *, void *), void *arg) +{ + struct authsqliteuserinfo *authinfo; + struct authinfo aa; + + authinfo=auth_sqlite_getuserinfo(user, service); + + if (!authinfo) /* Fatal error - such as Sqlite being down */ + return (1); + + if (!authinfo->home) /* User not found */ + return (-1); + + memset(&aa, 0, sizeof(aa)); + + /*aa.sysusername=user;*/ + aa.sysuserid= &authinfo->uid; + aa.sysgroupid= authinfo->gid; + aa.homedir=authinfo->home; + aa.maildir=authinfo->maildir && authinfo->maildir[0] ? + authinfo->maildir:0; + aa.address=authinfo->username; + aa.passwd=authinfo->cryptpw; + aa.clearpasswd=authinfo->clearpw; + aa.fullname=authinfo->fullname; + aa.quota=authinfo->quota && authinfo->quota[0] ? + authinfo->quota:0; + aa.options=authinfo->options; + return ((*callback)(&aa, arg)); +}