preauthmysql.c
上传用户:s81996212
上传日期:2007-01-04
资源大小:722k
文件大小:1k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. /*
  2. ** Copyright 1998 - 1999 Double Precision, Inc.  See COPYING for
  3. ** distribution information.
  4. */
  5. #if HAVE_CONFIG_H
  6. #include "config.h"
  7. #endif
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <errno.h>
  12. #include <pwd.h>
  13. #if HAVE_UNISTD_H
  14. #include <unistd.h>
  15. #endif
  16. #include "auth.h"
  17. #include "authmod.h"
  18. #include "authmysql.h"
  19. static const char rcsid[]="$Id: preauthmysql.c,v 1.5 2000/07/04 00:08:56 mrsam Exp $";
  20. int auth_mysql_pre(const char *user, const char *service,
  21. int (*callback)(struct authinfo *, void *), void *arg)
  22. {
  23. struct authmysqluserinfo *authinfo;
  24. struct authinfo aa;
  25. authinfo=auth_mysql_getuserinfo(user);
  26. if (!authinfo) /* Fatal error - such as MySQL being down */
  27. return (1);
  28. if (!authinfo->home) /* User not found */
  29. return (-1);
  30. memset(&aa, 0, sizeof(aa));
  31. /*aa.sysusername=user;*/
  32. aa.sysuserid= &authinfo->uid;
  33. aa.sysgroupid= authinfo->gid;
  34. aa.homedir=authinfo->home;
  35. aa.maildir=authinfo->maildir && authinfo->maildir[0] ?
  36. authinfo->maildir:0;
  37. aa.address=authinfo->username;
  38. aa.passwd=authinfo->cryptpw;
  39. aa.clearpasswd=authinfo->clearpw;
  40. return ((*callback)(&aa, arg));
  41. }