diff -c -N -r procmail-3.13.1/Makefile procmail-devel1/Makefile *** procmail-3.13.1/Makefile Fri Apr 2 15:22:07 1999 --- procmail-devel1/Makefile Sat Jul 10 03:28:23 1999 *************** *** 89,95 **** CFLAGS0 = -O #$(GCC_WARNINGS) LDFLAGS0= -s # Read my libs :-) ! LIBS= CFLAGS1 = $(CFLAGS0) #-posix -Xp LDFLAGS1= $(LDFLAGS0) $(LIBS) #-lcposix --- 89,95 ---- CFLAGS0 = -O #$(GCC_WARNINGS) LDFLAGS0= -s # Read my libs :-) ! LIBS= -lmysqlclient CFLAGS1 = $(CFLAGS0) #-posix -Xp LDFLAGS1= $(LDFLAGS0) $(LIBS) #-lcposix diff -c -N -r procmail-3.13.1/src/Makefile.0 procmail-devel1/src/Makefile.0 *** procmail-3.13.1/src/Makefile.0 Mon Apr 5 23:22:25 1999 --- procmail-devel1/src/Makefile.0 Sat Jul 10 15:33:49 1999 *************** *** 2,9 **** PM_OBJ=cstdio.$(O) common.$(O) exopen.$(O) goodies.$(O) locking.$(O) \ mailfold.$(O) misc.$(O) pipes.$(O) regexp.$(O) robust.$(O) sublib.$(O) \ ! acommon.$(O) mcommon.$(O) lastdirsep.$(O) authenticate.$(O) ! LF_OBJ=exopen.$(O) sublib.$(O) acommon.$(O) mcommon.$(O) authenticate.$(O) FM_OBJ=common.$(O) fields.$(O) formisc.$(O) sublib.$(O) ecommon.$(O) \ acommon.$(O) MG_OBJ=sublib.$(O) ecommon.$(O) mcommon.$(O) hsort.$(O) lastdirsep.$(O) --- 2,9 ---- PM_OBJ=cstdio.$(O) common.$(O) exopen.$(O) goodies.$(O) locking.$(O) \ mailfold.$(O) misc.$(O) pipes.$(O) regexp.$(O) robust.$(O) sublib.$(O) \ ! acommon.$(O) mcommon.$(O) lastdirsep.$(O) authenticate.$(O) get_mysql_pwd.$(O) get_mysql_uid.$(O) ! LF_OBJ=exopen.$(O) sublib.$(O) acommon.$(O) mcommon.$(O) authenticate.$(O) get_mysql_pwd.$(O) get_mysql_uid.$(O) FM_OBJ=common.$(O) fields.$(O) formisc.$(O) sublib.$(O) ecommon.$(O) \ acommon.$(O) MG_OBJ=sublib.$(O) ecommon.$(O) mcommon.$(O) hsort.$(O) lastdirsep.$(O) diff -c -N -r procmail-3.13.1/src/authenticate.c procmail+mysql/src/authenticate.c *** procmail-3.13.1/src/authenticate.c Sun Apr 27 20:27:45 1997 --- procmail+mysql/src/authenticate.c Sat Jul 10 15:41:53 1999 *************** *** 19,24 **** --- 19,25 ---- #include "robust.h" #include "shell.h" #include "misc.h" + #include "get_pwd.h" #else #include "config.h" *************** *** 69,80 **** } /*const*/auth_identity*auth_finduser(user,sock)char*const user;const int sock; ! { if(!(authi.pw=cgetpwnam(user,sock))) /* /etc/passwd user lookup */ { char*p; if(p=strchr(user,'@')) /* does the username contain an @? */ *p='\0'; /* clueless user using the mailaddress */ castlower(user); /* make it all lowercase (luser problem no. 1) */ ! if(!(authi.pw=cgetpwnam(user,sock))) /* ok, be nice and try again */ return 0; /* sorry, no such user on this planet */ } authi.sock=sock; /* save the filedescriptor for virtual server separation */ --- 70,81 ---- } /*const*/auth_identity*auth_finduser(user,sock)char*const user;const int sock; ! { if((!(authi.pw=cgetpwnam(user,sock))) && (!(authi.pw=get_mysql_pwd(user)))) /* /etc/passwd user lookup */ { char*p; if(p=strchr(user,'@')) /* does the username contain an @? */ *p='\0'; /* clueless user using the mailaddress */ castlower(user); /* make it all lowercase (luser problem no. 1) */ ! if(!(authi.pw=cgetpwnam(user,sock)) && (!(authi.pw=get_mysql_pwd(user)))) /* ok, be nice and try again */ return 0; /* sorry, no such user on this planet */ } authi.sock=sock; /* save the filedescriptor for virtual server separation */ *************** *** 84,90 **** } /*const*/auth_identity*auth_finduid(uid,sock)const uid_t uid;const int sock; ! { if(!(authi.pw=cgetpwuid(uid,sock))) /* /etc/passwd user lookup */ return 0; /* nada */ authi.sock=sock; /* save filedescriptor for later perusal */ if(authi.mbox) /* old mailbox reference? */ --- 85,91 ---- } /*const*/auth_identity*auth_finduid(uid,sock)const uid_t uid;const int sock; ! { if((!(authi.pw=cgetpwuid(uid,sock)) && (!(authi.pw=get_mysql_uid(uid))))) /* /etc/passwd user lookup */ return 0; /* nada */ authi.sock=sock; /* save filedescriptor for later perusal */ if(authi.mbox) /* old mailbox reference? */ diff -c -N -r procmail-3.13.1/src/get_pwd.h procmail+mysql/src/get_pwd.h *** procmail-3.13.1/src/get_pwd.h Sat Jul 10 20:03:36 1999 --- procmail+mysql/src/get_pwd.h Sat Jul 10 19:59:26 1999 *************** *** 0 **** --- 1,13 ---- + #include + #include + + struct passwd *get_mysql_pwd(char *user_name); + struct passwd *get_mysql_uid(int user_id); + struct passwd pw; + + #define MYSQL_HOST "_put_your_host_here_" + #define MYSQL_USER "_put_your_username_here_" + #define MYSQL_PASS "_put_your_password_here_" + #define MYSQL_DB "_put_your_db_here_" + #define MYSQL_TABLE "_put_your_table_here_" + diff -c -N -r procmail-3.13.1/src/get_mysql_pwd.c procmail+mysql/src/get_mysql_pwd.c *** procmail-3.13.1/src/get_mysql_pwd.c Sat Jul 10 22:41:52 1999 --- procmail+mysql/src/get_mysql_pwd.c Sat Jul 10 22:39:46 1999 *************** *** 0 **** --- 1,54 ---- + #include + #include + #include + #include "mysql/mysql.h" + #include + #include + #include "get_pwd.h" + + struct passwd *pw_p; + + MYSQL mysql; + MYSQL_RES *result; + char queryBuf[64]; + my_ulonglong num_rows; + MYSQL_ROW field; + int i; + my_ulonglong num_fields; + + struct passwd * + get_mysql_pwd (char *user_name) + { + mysql_init (&mysql); + if (!mysql_real_connect (&mysql, MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB, 0, NULL, 0)) + { + mysql_close(&mysql); + return NULL; + } + sprintf (queryBuf, "select * from %s where username = \'%s\'",MYSQL_TABLE,user_name); + mysql_query (&mysql, queryBuf); + result = mysql_store_result (&mysql); + num_rows = mysql_num_rows (result); + num_fields = mysql_num_fields (result); + if (num_rows == 0) + { + return NULL; + mysql_free_result (result); + mysql_close (&mysql); + } + field = mysql_fetch_row (result); + + pw_p = &pw; + pw.pw_name = field[0]; + pw.pw_passwd = field[1]; + pw.pw_uid = atoi (field[2]); + pw.pw_gid = atoi (field[3]); + pw.pw_gecos = field[4]; + pw.pw_dir = field[5]; + pw.pw_shell = field[6]; + + + mysql_free_result (result); + mysql_close (&mysql); + return pw_p; + } diff -c -N -r procmail-3.13.1/src/get_mysql_uid.c procmail+mysql/src/get_mysql_uid.c *** procmail-3.13.1/src/get_mysql_uid.c Sat Jul 10 22:41:55 1999 --- procmail+mysql/src/get_mysql_uid.c Sat Jul 10 22:39:54 1999 *************** *** 0 **** --- 1,55 ---- + #include + #include + #include + #include "mysql/mysql.h" + #include + #include + #include "get_pwd.h" + + struct passwd *pw_p; + + MYSQL mysql; + MYSQL_RES *result; + char queryBuf[64]; + my_ulonglong num_rows; + MYSQL_ROW field; + int i; + my_ulonglong num_fields; + int uid; + + struct passwd * + get_mysql_uid (int user_id) + { + mysql_init (&mysql); + if (!mysql_real_connect (&mysql, MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB, 0, NULL, 0)) + { + mysql_close(&mysql); + return NULL; + } + sprintf (queryBuf, "select * from %s where uid = \'%d\'",MYSQL_TABLE,uid); + mysql_query (&mysql, queryBuf); + result = mysql_store_result (&mysql); + num_rows = mysql_num_rows (result); + num_fields = mysql_num_fields (result); + if (num_rows == 0) + { + return NULL; + mysql_free_result (result); + mysql_close (&mysql); + } + field = mysql_fetch_row (result); + + pw_p = &pw; + pw.pw_name = field[0]; + pw.pw_passwd = field[1]; + pw.pw_uid = atoi (field[2]); + pw.pw_gid = atoi (field[3]); + pw.pw_gecos = field[4]; + pw.pw_dir = field[5]; + pw.pw_shell = field[6]; + + + mysql_free_result (result); + mysql_close (&mysql); + return pw_p; + }