Hi,
I made a patch so that the external program called by an R:Line is supplied
with the password as a fifth argument. Now I can move my millions of
I:lines into a database :-) Feedback is very welcome, I'm currently writing
a small programm to check against a mysql-db, maybe this would be of
interest for some other users out there.
Tell me what u think
Nikolai Dahlem
-- SNIP -->
diff -urN orig/example.conf rwx/example.conf
--- orig/example.confThu Mar 14 23:16:06 2002
+++ rwx/example.confThu Mar 14 23:14:38 2002
@@ -518,6 +518,9 @@
#
R:csl.bu.edu:/home/hrose/bin.sun3/sun3access:*::
#
+# The external program is called with five arguments
+# <programname> <username> <hostname> <ident> <password>
+# If no ident is found it's set to "unknown"
#
############################
# Q: [DISCOURAGED]. These lines "quarantine" specified servers. Because
diff -urN orig/s_conf.c rwx/s_conf.c
--- orig/s_conf.cThu Mar 14 23:16:50 2002
+++ rwx/s_conf.cThu Mar 14 23:07:57 2002
@@ -1622,7 +1622,7 @@
if (pi[1] != 2 && pi[1] != 1)
(void)close(pi[1]);
(void)execlp(tmp->passwd, tmp->passwd, name, host,
- cptr->username, 0);
+ cptr->username, cptr->passwd, 0);
_exit(-1);
}
default :
diff -urN orig/s_user.c rwx/s_user.c
--- orig/s_user.cThu Mar 14 23:17:08 2002
+++ rwx/s_user.cThu Mar 14 23:07:57 2002
@@ -545,7 +545,8 @@
sendto_one(sptr, err_str(ERR_PASSWDMISMATCH, parv[0]));
return exit_client(cptr, sptr, &me, "Bad Password");
}
-bzero(sptr->passwd, sizeof(sptr->passwd));
+// bzero(sptr->passwd, sizeof(sptr->passwd));
+// moved down for checking passwd in R:Line
/*
* following block for the benefit of time-dependent K:-lines
*/
@@ -582,6 +583,7 @@
return exit_client(cptr, sptr, &me , "R-lined");
}
#endif
+bzero(sptr->passwd, sizeof(sptr->passwd));
if (oldstatus == STAT_MASTER && MyConnect(sptr))
(void)m_oper(&me, sptr, 1, parv);
/**user->tok = '1';
<-- SNIP --