You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(16) |
Aug
(7) |
Sep
(4) |
Oct
(94) |
Nov
(11) |
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
(128) |
Jun
(22) |
Jul
(46) |
Aug
|
Sep
(15) |
Oct
|
Nov
|
Dec
(32) |
2006 |
Jan
(11) |
Feb
(2) |
Mar
(74) |
Apr
(3) |
May
|
Jun
(11) |
Jul
|
Aug
|
Sep
|
Oct
(11) |
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
(23) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Danny M. <the...@us...> - 2004-10-12 17:35:31
|
Update of /cvsroot/solidircd/Solid-dev/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24329/src Modified Files: s_debug.c Log Message: Added cmode +N Index: s_debug.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/s_debug.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** s_debug.c 11 Oct 2004 13:42:47 -0000 1.10 --- s_debug.c 12 Oct 2004 17:35:21 -0000 1.11 *************** *** 94,98 **** *s++ = 'L'; #endif ! s += ircsprintf(s, "mMnOprRst MAXLIST=b:%i", MAXBANS); #ifdef EXEMPT_LISTS s += ircsprintf(s, ",e:%i", MAXEXEMPTLIST); --- 94,98 ---- *s++ = 'L'; #endif ! s += ircsprintf(s, "mMnOprRstN MAXLIST=b:%i", MAXBANS); #ifdef EXEMPT_LISTS s += ircsprintf(s, ",e:%i", MAXEXEMPTLIST); |
From: Danny M. <the...@us...> - 2004-10-12 17:35:14
|
Update of /cvsroot/solidircd/Solid-dev/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24284/src Modified Files: m_nick.c Log Message: Added cmode +N Index: m_nick.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/m_nick.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** m_nick.c 11 Oct 2004 13:42:46 -0000 1.10 --- m_nick.c 12 Oct 2004 17:35:04 -0000 1.11 *************** *** 517,520 **** --- 517,526 ---- return 0; } + if (can_changenick(sptr, lp->value.chptr)) + { + sendto_one(sptr, ":%s NOTICE %s :*** Notice -- Cannot change nickname while +N is set on channel %s", me.name, + sptr->name, lp->value.chptr->chname); + return 0; + } } #ifdef ANTI_NICK_FLOOD |
From: Danny M. <the...@us...> - 2004-10-12 17:34:58
|
Update of /cvsroot/solidircd/Solid-dev/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24181/src Modified Files: channel.c Log Message: Added cmode +N Index: channel.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/channel.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** channel.c 11 Oct 2004 13:42:46 -0000 1.20 --- channel.c 12 Oct 2004 17:34:44 -0000 1.21 *************** *** 982,985 **** --- 982,1008 ---- } + /* Can a user change his nick on this channel? - TheSphere */ + + int can_changenick(aClient *cptr, aChannel *chptr) + { + chanMember *cm; + + if (IsServer(cptr) || IsULine(cptr)) + return 0; + + cm = find_user_member(chptr->members, cptr); + + if (cm) + { + if (!(cm->flags & (CHFL_CHANOP))) + { + if (chptr->mode.mode & MODE_NONICK) + return (MODE_MODERATED); + } + } + + return 0; + } + /* * write the "simple" list of channel modes for channel chptr onto *************** *** 1013,1016 **** --- 1036,1041 ---- if (chptr->mode.mode & MODE_MODREG) *mbuf++ = 'M'; + if (chptr->mode.mode & MODE_NONICK) + *mbuf++ = 'N'; #ifdef USE_CHANMODE_L if (chptr->mode.mode & MODE_LISTED) *************** *** 1376,1380 **** MODE_TOPICLIMIT, 't', MODE_REGONLY, 'R', MODE_INVITEONLY, 'i', MODE_NOCOLOR, 'c', MODE_OPERONLY, 'O', ! MODE_MODREG, 'M', #ifdef USE_CHANMODE_L MODE_LISTED, 'L', --- 1401,1405 ---- MODE_TOPICLIMIT, 't', MODE_REGONLY, 'R', MODE_INVITEONLY, 'i', MODE_NOCOLOR, 'c', MODE_OPERONLY, 'O', ! MODE_MODREG, 'M', MODE_NONICK, 'N', #ifdef USE_CHANMODE_L MODE_LISTED, 'L', *************** *** 4107,4110 **** --- 4132,4136 ---- SJ_MODEADD('c', MODE_NOCOLOR); SJ_MODEADD('O', MODE_OPERONLY); + SJ_MODEADD('N', MODE_NONICK); #ifdef USE_CHANMODE_L SJ_MODEADD('L', MODE_LISTED); *************** *** 4246,4249 **** --- 4272,4276 ---- SJ_MODEPLUS('c', MODE_NOCOLOR); SJ_MODEPLUS('O', MODE_OPERONLY); + SJ_MODEPLUS('N', MODE_NONICK); #ifdef USE_CHANMODE_L SJ_MODEPLUS('L', MODE_LISTED); *************** *** 4261,4264 **** --- 4288,4292 ---- SJ_MODEMINUS('c', MODE_NOCOLOR); SJ_MODEMINUS('O', MODE_OPERONLY); + SJ_MODEMINUS('N', MODE_NONICK); #ifdef USE_CHANMODE_L SJ_MODEMINUS('L', MODE_LISTED); |
From: Danny M. <the...@us...> - 2004-10-12 17:34:37
|
Update of /cvsroot/solidircd/Solid-dev/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24112/include Modified Files: h.h Log Message: Added cmode +N Index: h.h =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/include/h.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** h.h 11 Oct 2004 13:42:44 -0000 1.11 --- h.h 12 Oct 2004 17:34:27 -0000 1.12 *************** *** 116,119 **** --- 116,120 ---- extern void send_user_joins(aClient *, aClient *); extern int can_send(aClient *, aChannel *, char *); + extern int can_changenick(aClient *, aChannel *); extern int is_chan_op(aClient *, aChannel *); extern int has_voice(aClient *, aChannel *); |
From: Danny M. <the...@us...> - 2004-10-12 17:34:10
|
Update of /cvsroot/solidircd/Solid-dev/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23951/include Modified Files: struct.h Log Message: Added cmode +N Index: struct.h =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/include/struct.h,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** struct.h 12 Oct 2004 02:30:15 -0000 1.29 --- struct.h 12 Oct 2004 17:33:57 -0000 1.30 *************** *** 1211,1214 **** --- 1211,1215 ---- #define MODE_LISTED 0x20000 #define MODE_JOINRATE 0x40000 + #define MODE_NONICK 0x80000 /* mode flags which take another parameter (With PARAmeterS) */ |
From: Juan B. <tu...@us...> - 2004-10-12 03:24:56
|
Update of /cvsroot/solidircd/Solid-dev/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14888/src Modified Files: m_shun.c Log Message: Index: m_shun.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/m_shun.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** m_shun.c 12 Oct 2004 02:03:21 -0000 1.5 --- m_shun.c 12 Oct 2004 03:24:40 -0000 1.6 *************** *** 1,4 **** /************************************************************************ ! * Solid IRCd - SOlid Internet Relay Chat Daemon, src/m_shun.c * Copyright (C) 2004 Juan L. Baez * --- 1,4 ---- /************************************************************************ ! * Solid IRCd - Solid Internet Relay Chat Daemon, src/m_shun.c * Copyright (C) 2004 Juan L. Baez * |
From: Juan B. <tu...@us...> - 2004-10-12 02:31:43
|
Update of /cvsroot/solidircd/Solid-dev/zlib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4713/zlib Removed Files: Makefile Log Message: --- Makefile DELETED --- |
From: Juan B. <tu...@us...> - 2004-10-12 02:30:29
|
Update of /cvsroot/solidircd/Solid-dev/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4385/src Modified Files: s_user.c Log Message: Added umode +H - Oper Hiding. Index: s_user.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/s_user.c,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** s_user.c 11 Oct 2004 22:38:37 -0000 1.47 --- s_user.c 12 Oct 2004 02:30:16 -0000 1.48 *************** *** 92,96 **** UMODE_K, 'K', UMODE_I, 'I', ! UMODE_v, 'v', 0, 0 }; --- 92,97 ---- UMODE_K, 'K', UMODE_I, 'I', ! UMODE_v, 'v', ! UMODE_H, 'H', 0, 0 }; *************** *** 431,460 **** void set_hostmask(aClient *sptr) { ! if (!IsUmodev(sptr)) ! { ! strncpyzt(sptr->user->host, sptr->user->realhost, HOSTLEN+1); ! } ! else if (IsAnOper(sptr)) ! { ! if (IsSAdmin(sptr)) ! strncpyzt(sptr->user->host, SAdmin_Host, HOSTLEN+1); ! else if (IsAdmin(sptr)) ! strncpyzt(sptr->user->host, Admin_Host, HOSTLEN+1); ! else if (IsOper(sptr)) ! strncpyzt(sptr->user->host, IRCop_Host, HOSTLEN+1); ! else ! strncpyzt(sptr->user->host, LocOp_Host, HOSTLEN+1); ! } ! /* Looks like we have not made a hostmask this user, do it now. */ ! else if (*sptr->user->maskhost == '\0') ! make_hostmask(sptr); ! /* A hostmasking was already done for this user, ! * since we stored it, we can use it again */ ! else ! strncpyzt(sptr->user->host, sptr->user->maskhost, HOSTLEN+1); ! sendto_serv_butone(NULL, ":%s SVHOST %s %s", me.name, ! sptr->name, sptr->user->host); } --- 432,461 ---- void set_hostmask(aClient *sptr) { ! if (!IsUmodev(sptr) && !IsUmodeH(sptr)) ! { ! strncpyzt(sptr->user->host, sptr->user->realhost, HOSTLEN+1); ! } ! else if (IsAnOper(sptr) && !IsUmodeH(sptr)) ! { ! if (IsSAdmin(sptr)) ! strncpyzt(sptr->user->host, SAdmin_Host, HOSTLEN+1); ! else if (IsAdmin(sptr)) ! strncpyzt(sptr->user->host, Admin_Host, HOSTLEN+1); ! else if (IsOper(sptr)) ! strncpyzt(sptr->user->host, IRCop_Host, HOSTLEN+1); ! else ! strncpyzt(sptr->user->host, LocOp_Host, HOSTLEN+1); ! } ! /* Looks like we have not made a hostmask this user, do it now. */ ! else if (*sptr->user->maskhost == '\0') ! make_hostmask(sptr); ! /* A hostmasking was already done for this user, ! * since we stored it, we can use it again */ ! else ! strncpyzt(sptr->user->host, sptr->user->maskhost, HOSTLEN+1); ! sendto_serv_butone(NULL, ":%s SVHOST %s %s", me.name, ! sptr->name, sptr->user->host); } *************** *** 2042,2046 **** #if (RIDICULOUS_PARANOIA_LEVEL==1) if(MyConnect(acptr) && user->real_oper_host && ! (IsAdmin(sptr) || (sptr == acptr))) sendto_one(sptr, rpl_str(RPL_WHOISACTUALLY), me.name, sptr->name, name, user->real_oper_username, user->real_oper_host, --- 2043,2047 ---- #if (RIDICULOUS_PARANOIA_LEVEL==1) if(MyConnect(acptr) && user->real_oper_host && ! (IsAdmin(sptr) || (sptr == acptr))) sendto_one(sptr, rpl_str(RPL_WHOISACTUALLY), me.name, sptr->name, name, user->real_oper_username, user->real_oper_host, *************** *** 2119,2134 **** buf[0] = '\0'; ! if (IsAnOper(acptr)) ! { ! if (IsSAdmin(acptr)) ! strcat(buf, "a \2Services Administrator\2"); ! else if (IsAdmin(acptr)) ! strcat(buf, "a \2Server Administrator\2"); else if (IsOper(acptr)) ! strcat(buf, "an \2IRC Operator\2"); ! else ! strcat(buf, "a \2Local Operator\2"); ! } ! if (buf[0]) sendto_one(sptr, rpl_str(RPL_WHOISOPERATOR), me.name, parv[0], --- 2120,2134 ---- buf[0] = '\0'; ! if (IsAnOper(acptr) && !IsUmodeH(acptr)) ! { ! if (IsSAdmin(acptr)) ! strcat(buf, "a \2Services Administrator\2"); ! else if (IsAdmin(acptr)) ! strcat(buf, "a \2Server Administrator\2"); else if (IsOper(acptr)) ! strcat(buf, "an \2IRC Operator\2"); ! else ! strcat(buf, "a \2Local Operator\2"); ! } if (buf[0]) sendto_one(sptr, rpl_str(RPL_WHOISOPERATOR), me.name, parv[0], *************** *** 2240,2248 **** sptr->umode |= UMODE_i; #endif ! if (confopts & FLAGS_AUTOUMODE_v) ! SetUmodev(sptr); ! if (confopts & FLAGS_AUTOUMODE_R) ! SetNoNonReg(sptr); sptr->umode |= (UFLAGS & atoi(host)); --- 2240,2248 ---- sptr->umode |= UMODE_i; #endif ! if (confopts & FLAGS_AUTOUMODE_v) ! SetUmodev(sptr); ! if (confopts & FLAGS_AUTOUMODE_R) ! SetNoNonReg(sptr); sptr->umode |= (UFLAGS & atoi(host)); *************** *** 2876,2907 **** sptr->umode|=(UMODE_s|UMODE_g|UMODE_w|UMODE_n); #endif ! Count.oper++; ! add_to_list(&oper_list, sptr); ! throttle_remove(oper_ip); ! if (OPIsSAdmin(sptr)) ! { ! sptr->umode|=(UMODE_a|UMODE_A|UMODE_o|UMODE_O); ! sendto_ops("%s (%s@%s) is now a \2Services Administrator\2 (a)", parv[0], sptr->user->username, sptr->sockhost); ! } ! else if (OPIsAdmin(sptr)) ! { ! sptr->umode|=(UMODE_A|UMODE_o|UMODE_O); ! sendto_ops("%s (%s@%s) is now a \2Server Administrator\2 (A)", parv[0], sptr->user->username, sptr->sockhost); ! } ! else if (aoper->flags & OFLAG_ISGLOBAL) ! { ! sptr->umode|=(UMODE_o|UMODE_O); ! sendto_ops("%s (%s@%s) is now an \2IRC Operator\2 (o)", parv[0], ! sptr->user->username, sptr->sockhost); ! } ! else ! { ! SetLocOp(sptr); ! sendto_ops("%s (%s@%s) is now a \2Local Operator\2 (O)", parv[0], ! sptr->user->username, sptr->sockhost); ! } ! set_hostmask(sptr); send_umode_out(cptr, sptr, old); sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]); --- 2876,2907 ---- sptr->umode|=(UMODE_s|UMODE_g|UMODE_w|UMODE_n); #endif ! Count.oper++; ! add_to_list(&oper_list, sptr); ! throttle_remove(oper_ip); ! if (OPIsSAdmin(sptr)) ! { ! sptr->umode|=(UMODE_a|UMODE_A|UMODE_o); ! sendto_ops("%s (%s@%s) is now a \2Services Administrator\2 (a)", parv[0], sptr->user->username, sptr->sockhost); ! } ! else if (OPIsAdmin(sptr)) ! { ! sptr->umode|=(UMODE_A|UMODE_o); ! sendto_ops("%s (%s@%s) is now a \2Server Administrator\2 (A)", parv[0], sptr->user->username, sptr->sockhost); ! } ! else if (aoper->flags & OFLAG_ISGLOBAL) ! { ! sptr->umode|=(UMODE_o); ! sendto_ops("%s (%s@%s) is now an \2IRC Operator\2 (o)", parv[0], ! sptr->user->username, sptr->sockhost); ! } ! else ! { ! SetLocOp(sptr); ! sendto_ops("%s (%s@%s) is now a \2Local Operator\2 (O)", parv[0], ! sptr->user->username, sptr->sockhost); ! } ! set_hostmask(sptr); send_umode_out(cptr, sptr, old); sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]); *************** *** 3237,3251 **** Count.invisi--; ! if (!(setflags & UMODE_v) && IsUmodev(sptr)) ! { ! set_hostmask(sptr); ! sendto_one(sptr, ":%s NOTICE %s :Your host is now masked (%s).", me.name, parv[0], sptr->user->host); ! } ! if ((setflags & UMODE_v) && !IsUmodev(sptr)) ! { ! set_hostmask(sptr); ! sendto_one(sptr, ":%s NOTICE %s :Your host is no longer masked.", me.name, parv[0]); ! } /* --- 3237,3256 ---- Count.invisi--; ! if (!(setflags & UMODE_v) && IsUmodev(sptr)) ! { ! set_hostmask(sptr); ! sendto_one(sptr, ":%s NOTICE %s :Your host is now masked (%s).", me.name, parv[0], sptr->user->host); ! } ! if ((setflags & UMODE_v) && !IsUmodev(sptr)) ! { ! set_hostmask(sptr); ! sendto_one(sptr, ":%s NOTICE %s :Your host is no longer masked.", me.name, parv[0]); ! } ! if ((setflags & UMODE_H) && !IsUmodeH(sptr) && IsOper(sptr)) ! set_hostmask(sptr); ! ! if (!(setflags & UMODE_H) && IsUmodeH(sptr) && IsOper(sptr)) ! set_hostmask(sptr); /* *************** *** 3268,3271 **** --- 3273,3277 ---- if (IsUmodeh(sptr)) ClearUmodeh(sptr); if (IsUmodeK(sptr)) ClearUmodeK(sptr); + if (IsUmodeH(sptr)) ClearUmodeH(sptr); if (NoMsgThrottle(sptr)) ClearNoMsgThrottle(sptr); #ifdef NO_USER_SERVERNOTICES |
From: Juan B. <tu...@us...> - 2004-10-12 02:30:29
|
Update of /cvsroot/solidircd/Solid-dev/zlib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4385/zlib Modified Files: Makefile zconf.h Log Message: Added umode +H - Oper Hiding. Index: zconf.h =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/zlib/zconf.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** zconf.h 11 Oct 2004 13:42:50 -0000 1.3 --- zconf.h 12 Oct 2004 02:30:16 -0000 1.4 *************** *** 276,280 **** #endif ! #if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */ # include <sys/types.h> /* for off_t */ # include <unistd.h> /* for SEEK_* and off_t */ --- 276,280 ---- #endif ! #if 1 /* HAVE_UNISTD_H -- this line is updated by ./configure */ # include <sys/types.h> /* for off_t */ # include <unistd.h> /* for SEEK_* and off_t */ Index: Makefile =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/zlib/Makefile,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Makefile 11 Oct 2004 13:42:49 -0000 1.4 --- Makefile 12 Oct 2004 02:30:16 -0000 1.5 *************** *** 17,23 **** # make install prefix=$HOME ! CC=cc ! CFLAGS=-O #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 #CFLAGS=-g -DDEBUG --- 17,23 ---- # make install prefix=$HOME ! CC=gcc ! CFLAGS=-O3 -DUSE_MMAP #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 #CFLAGS=-g -DDEBUG *************** *** 25,31 **** # -Wstrict-prototypes -Wmissing-prototypes ! LDFLAGS=libz.a ! LDSHARED=$(CC) ! CPP=$(CC) -E LIBS=libz.a --- 25,31 ---- # -Wstrict-prototypes -Wmissing-prototypes ! LDFLAGS=-L. libz.a ! LDSHARED=gcc ! CPP=gcc -E LIBS=libz.a *************** *** 40,48 **** EXE= ! prefix = /usr/local ! exec_prefix = ${prefix} ! libdir = ${exec_prefix}/lib ! includedir = ${prefix}/include ! mandir = ${prefix}/share/man man3dir = ${mandir}/man3 --- 40,48 ---- EXE= ! prefix =/usr/local ! exec_prefix =${prefix} ! libdir =${exec_prefix}/lib ! includedir =${prefix}/include ! mandir =${prefix}/share/man man3dir = ${mandir}/man3 |
From: Juan B. <tu...@us...> - 2004-10-12 02:30:26
|
Update of /cvsroot/solidircd/Solid-dev/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4385/include Modified Files: struct.h Log Message: Added umode +H - Oper Hiding. Index: struct.h =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/include/struct.h,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** struct.h 11 Oct 2004 22:38:37 -0000 1.28 --- struct.h 12 Oct 2004 02:30:15 -0000 1.29 *************** *** 298,302 **** #define UMODE_K 0x4000000 /* umode +K - U: lined server kill messages */ #define UMODE_I 0x8000000 /* umode +I - invisible oper (masked) */ ! #define UMODE_v 0x10000000 /* umode +v - hostmasking */ /* for sendto_ops_lev */ --- 298,304 ---- #define UMODE_K 0x4000000 /* umode +K - U: lined server kill messages */ #define UMODE_I 0x8000000 /* umode +I - invisible oper (masked) */ ! #define UMODE_v 0x10000000 /* umode +v - hostmasking */ ! #define UMODE_H 0x20000000 /* umode +H - Oper Hiding */ ! /* for sendto_ops_lev */ *************** *** 323,327 **** UMODE_n|UMODE_h|UMODE_m|UMODE_R|UMODE_e|\ UMODE_x|UMODE_X|UMODE_D|UMODE_F|UMODE_j|\ ! UMODE_K|UMODE_I|UMODE_v) #define SEND_UMODES (ALL_UMODES) --- 325,329 ---- UMODE_n|UMODE_h|UMODE_m|UMODE_R|UMODE_e|\ UMODE_x|UMODE_X|UMODE_D|UMODE_F|UMODE_j|\ ! UMODE_K|UMODE_I|UMODE_v|UMODE_H) #define SEND_UMODES (ALL_UMODES) *************** *** 361,364 **** --- 363,367 ---- #define IsUmodeI(x) ((x)->umode & UMODE_I) #define IsUmodev(x) ((x)->umode & UMODE_v) + #define IsUmodeH(x) ((x)->umode & UMODE_H) #define IsNoNonReg(x) ((x)->umode & UMODE_R) #define IsWSquelch(x) ((x)->umode & UMODE_x) *************** *** 389,396 **** #define SetNoNonReg(x) ((x)->umode |= UMODE_R) #define SetSAdmin(x) ((x)->umode |= UMODE_a) ! #define SetAdmin(x) ((x)->umode |= UMODE_A) #define SetLocOp(x) ((x)->umode |= UMODE_O) #define SetInvisible(x) ((x)->umode |= UMODE_i) #define SetUmodev(x) ((x)->umode |= UMODE_v) #define SetWallops(x) ((x)->umode |= UMODE_w) #define SetWSquelch(x) ((x)->umode |= UMODE_x) --- 392,400 ---- #define SetNoNonReg(x) ((x)->umode |= UMODE_R) #define SetSAdmin(x) ((x)->umode |= UMODE_a) ! #define SetAdmin(x) ((x)->umode |= UMODE_A) #define SetLocOp(x) ((x)->umode |= UMODE_O) #define SetInvisible(x) ((x)->umode |= UMODE_i) #define SetUmodev(x) ((x)->umode |= UMODE_v) + #define SetUmodeH(x) ((x)->umode |= UMODE_H) #define SetWallops(x) ((x)->umode |= UMODE_w) #define SetWSquelch(x) ((x)->umode |= UMODE_x) *************** *** 404,410 **** #define SetDCCNotice(x) ((x)->umode |= UMODE_D) ! #define SetShun(x) ((x)->flags |= FLAGS_SHUNNED) ! #define ClearShun(x) ((x)->flags &= ~FLAGS_SHUNNED) ! #define IsShunned(x) ((x)->flags & FLAGS_SHUNNED) #define SetNegoServer(x) ((x)->flags |= FLAGS_SERV_NEGO) --- 408,414 ---- #define SetDCCNotice(x) ((x)->umode |= UMODE_D) ! #define SetShun(x) ((x)->flags |= FLAGS_SHUNNED) ! #define ClearShun(x) ((x)->flags &= ~FLAGS_SHUNNED) ! #define IsShunned(x) ((x)->flags & FLAGS_SHUNNED) #define SetNegoServer(x) ((x)->flags |= FLAGS_SERV_NEGO) *************** *** 440,443 **** --- 444,448 ---- #define ClearUmodeI(x) ((x)->umode &= ~UMODE_I) #define ClearUmodev(x) ((x)->umode &= ~UMODE_v) + #define ClearUmodeH(x) ((x)->umode &= ~UMODE_H) #define ClearGlobops(x) ((x)->umode &= ~UMODE_g) #define ClearNoNonReg(x) ((x)->umode &= ~UMODE_R) |
From: Juan B. <tu...@us...> - 2004-10-12 02:30:25
|
Update of /cvsroot/solidircd/Solid-dev In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4385 Modified Files: CHANGES Log Message: Added umode +H - Oper Hiding. Index: CHANGES =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/CHANGES,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** CHANGES 11 Oct 2004 22:38:36 -0000 1.10 --- CHANGES 12 Oct 2004 02:30:14 -0000 1.11 *************** *** 1,4 **** --- 1,5 ---- Changes for Solid-3.4.5 ------------------------ + - Added umode +H - Oper Hiding. - /stats x or X to see the list of shuns. - Added UNSHUN |
From: Juan B. <tu...@us...> - 2004-10-12 02:03:41
|
Update of /cvsroot/solidircd/Solid-dev/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31630/src Modified Files: m_shun.c Log Message: Fixed a little typo. Index: m_shun.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/m_shun.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** m_shun.c 11 Oct 2004 22:38:37 -0000 1.4 --- m_shun.c 12 Oct 2004 02:03:21 -0000 1.5 *************** *** 169,173 **** /* ! * m_sunhun * ----- client parameters ----- * parv[0] = sender prefix --- 169,173 ---- /* ! * m_unshun * ----- client parameters ----- * parv[0] = sender prefix |
From: Juan B. <tu...@us...> - 2004-10-11 22:39:41
|
Update of /cvsroot/solidircd/Solid-dev/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19745/include Modified Files: config.h msg.h patchlevel.h struct.h userban.h Log Message: Added SHUN and UNSHUN Index: msg.h =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/include/msg.h,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** msg.h 11 Oct 2004 13:42:45 -0000 1.18 --- msg.h 11 Oct 2004 22:38:37 -0000 1.19 *************** *** 127,130 **** --- 127,132 ---- #define MSG_SVHOST "SVHOST" /* SVHOST */ #define MSG_MAP "MAP" /* MAP */ + #define MSG_SHUN "SHUN" /* SHUN */ + #define MSG_UNSHUN "UNSHUN" /* UNSHUN */ #define MAXPARA 15 *************** *** 224,227 **** --- 226,231 ---- extern int m_svhost(aClient *, aClient *, int, char **); extern int m_map(aClient *, aClient *, int, char **); + extern int m_shun(aClient *, aClient *, int, char **); + extern int m_unshun(aClient *, aClient *, int, char **); #ifdef MSGTAB *************** *** 328,331 **** --- 332,337 ---- {MSG_SVHOST, m_svhost, 0, MAXPARA, 1, 0, 0, 0L}, {MSG_MAP, m_map, 0, MAXPARA, 1, 0, 0, 0L}, + {MSG_SHUN, m_shun, 0, MAXPARA, 1, 0, 0, 0L}, + {MSG_UNSHUN, m_unshun, 0, MAXPARA, 1, 0, 0, 0L}, {(char *) 0, (int (*)()) 0, 0, 0, 0, 0, 0, 0L} }; Index: config.h =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/include/config.h,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** config.h 11 Oct 2004 13:42:44 -0000 1.38 --- config.h 11 Oct 2004 22:38:37 -0000 1.39 *************** *** 192,195 **** --- 192,197 ---- #define LOCAL_BANNED_NAME "k-lined" #define NETWORK_BANNED_NAME "autokilled" + #define SHUN_NAME "shun" + #define SHUNNED_NAME "shunned" /* Index: patchlevel.h =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/include/patchlevel.h,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** patchlevel.h 11 Oct 2004 13:42:45 -0000 1.20 --- patchlevel.h 11 Oct 2004 22:38:37 -0000 1.21 *************** *** 32,36 **** #define MAJOR 3 #define MINOR 4 ! #define PATCH 3 #define PATCHES "" --- 32,36 ---- #define MAJOR 3 #define MINOR 4 ! #define PATCH 5 #define PATCHES "" Index: userban.h =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/include/userban.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** userban.h 11 Oct 2004 13:42:45 -0000 1.7 --- userban.h 11 Oct 2004 22:38:37 -0000 1.8 *************** *** 21,44 **** /* $Id$ */ ! #define UBAN_LOCAL 0x001 /* formerly known as a K: or Z: line */ ! #define UBAN_NETWORK 0x002 /* formerly known as an autokill or an SZline */ ! #define UBAN_GECOS 0x004 /* formerly known as an SGLINE */ ! #define UBAN_NICK 0x008 /* formerly known as an SQLINE */ ! #define UBAN_HOST 0x010 /* this ban matches against the user's resolved host */ ! #define UBAN_IP 0x020 /* this ban matches against the user's IP address */ ! #define UBAN_WILD 0x040 /* this ban has wildcards */ ! #define UBAN_CIDR4 0x080 /* this ban is an IPv4 CIDR ban */ ! #define UBAN_CIDR4BIG 0x100 /* this ban is an IPv4 CIDR ban for something greater than a /16 */ ! #define UBAN_WILDUSER 0x200 /* Username is just '*' */ ! #define UBAN_WILDHOST 0x400 /* Hostname is just '*.*' or '*' -- this ban is a user@* ban */ ! #define UBAN_TEMPORARY 0x800 /* userban is temporary */ ! #define SBAN_LOCAL 0x001 #define SBAN_NETWORK 0x002 #define SBAN_NICK 0x004 /* sban on the nick field */ --- 21,46 ---- /* $Id$ */ ! #define UBAN_LOCAL 0x0001 /* formerly known as a K: or Z: line */ ! #define UBAN_NETWORK 0x0002 /* formerly known as an autokill or an SZline */ ! #define UBAN_GECOS 0x0004 /* formerly known as an SGLINE */ ! #define UBAN_NICK 0x0008 /* formerly known as an SQLINE */ ! #define UBAN_HOST 0x0010 /* this ban matches against the user's resolved host */ ! #define UBAN_IP 0x0020 /* this ban matches against the user's IP address */ ! #define UBAN_WILD 0x0040 /* this ban has wildcards */ ! #define UBAN_CIDR4 0x0080 /* this ban is an IPv4 CIDR ban */ ! #define UBAN_CIDR4BIG 0x0100 /* this ban is an IPv4 CIDR ban for something greater than a /16 */ ! #define UBAN_WILDUSER 0x0200 /* Username is just '*' */ ! #define UBAN_WILDHOST 0x0400 /* Hostname is just '*.*' or '*' -- this ban is a user@* ban */ ! #define UBAN_TEMPORARY 0x0800 /* userban is temporary */ ! #define UBAN_SHUN 0x1000 /* shun */ ! ! #define SBAN_LOCAL 0x001 #define SBAN_NETWORK 0x002 #define SBAN_NICK 0x004 /* sban on the nick field */ Index: struct.h =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/include/struct.h,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** struct.h 11 Oct 2004 13:42:45 -0000 1.27 --- struct.h 11 Oct 2004 22:38:37 -0000 1.28 *************** *** 228,231 **** --- 228,232 ---- #define FLAGS_ZIPPED_OUT 0x8000000 /* This link is gzipped. */ #define FLAGS_MAP 0x10000000 + #define FLAGS_SHUNNED 0x20000000 /* User is shunned */ /* Capabilities of the ircd or clients */ *************** *** 403,406 **** --- 404,411 ---- #define SetDCCNotice(x) ((x)->umode |= UMODE_D) + #define SetShun(x) ((x)->flags |= FLAGS_SHUNNED) + #define ClearShun(x) ((x)->flags &= ~FLAGS_SHUNNED) + #define IsShunned(x) ((x)->flags & FLAGS_SHUNNED) + #define SetNegoServer(x) ((x)->flags |= FLAGS_SERV_NEGO) #define IsNegoServer(x) ((x)->flags & FLAGS_SERV_NEGO) |
From: Juan B. <tu...@us...> - 2004-10-11 22:39:41
|
Update of /cvsroot/solidircd/Solid-dev In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19745 Modified Files: CHANGES TODO Log Message: Added SHUN and UNSHUN Index: CHANGES =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/CHANGES,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** CHANGES 11 Oct 2004 13:42:36 -0000 1.9 --- CHANGES 11 Oct 2004 22:38:36 -0000 1.10 *************** *** 1,2 **** --- 1,8 ---- + Changes for Solid-3.4.5 + ------------------------ + - /stats x or X to see the list of shuns. + - Added UNSHUN + - Added SHUN + Changes for Solid-3.4.2 ------------------------ Index: TODO =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/TODO,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** TODO 11 Oct 2004 13:42:38 -0000 1.9 --- TODO 11 Oct 2004 22:38:36 -0000 1.10 *************** *** 2,6 **** TODO List - - Add m_shun - Add oper umode +H --- 2,5 ---- |
From: Juan B. <tu...@us...> - 2004-10-11 22:39:41
|
Update of /cvsroot/solidircd/Solid-dev/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19745/src Modified Files: Makefile.in blalloc.c m_shun.c m_stats.c parse.c s_user.c userban.c Log Message: Added SHUN and UNSHUN Index: Makefile.in =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/Makefile.in,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Makefile.in 11 Oct 2004 13:42:45 -0000 1.9 --- Makefile.in 11 Oct 2004 22:38:37 -0000 1.10 *************** *** 18,22 **** SOURCES = blalloc.c bsd.c channel.c clientlist.c confparse.c fdlist.c fds.c \ ! hash.c hide.c inet_addr.c ircd.c ircsprintf.c list.c m_nick.c \ m_rwho.c m_server.c m_services.c m_stats.c m_who.c match.c \ modules.c packet.c parse.c pcre.c res.c s_auth.c s_bsd.c s_conf.c \ --- 18,22 ---- SOURCES = blalloc.c bsd.c channel.c clientlist.c confparse.c fdlist.c fds.c \ ! hash.c hide.c inet_addr.c ircd.c ircsprintf.c list.c m_shun.c m_nick.c \ m_rwho.c m_server.c m_services.c m_stats.c m_who.c match.c \ modules.c packet.c parse.c pcre.c res.c s_auth.c s_bsd.c s_conf.c \ *************** *** 126,129 **** --- 126,134 ---- ../include/numeric.h ../include/blalloc.h ../include/dh.h \ ../include/zlink.h + m_shun.o: m_shun.c ../include/struct.h ../include/config.h \ + ../include/setup.h ../include/defs.h ../include/hash.h \ + ../include/h.h ../include/send.h ../include/common.h \ + ../include/ircsprintf.h ../include/msg.h ../include/sys.h \ + ../include/userban.h ../include/common.h m_nick.o: m_nick.c ../include/struct.h ../include/config.h \ ../include/setup.h ../include/defs.h ../include/hash.h \ Index: m_stats.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/m_stats.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** m_stats.c 11 Oct 2004 13:42:46 -0000 1.1 --- m_stats.c 11 Oct 2004 22:38:37 -0000 1.2 *************** *** 1323,1327 **** break; #endif ! case 'Y': case 'y': --- 1323,1333 ---- break; #endif ! case 'x': ! case 'X': ! if(IsAnOper(sptr)) ! report_userbans_match_flags(sptr, UBAN_SHUN, 0); ! else ! sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); ! break; case 'Y': case 'y': Index: parse.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/parse.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** parse.c 11 Oct 2004 13:42:46 -0000 1.12 --- parse.c 11 Oct 2004 22:38:37 -0000 1.13 *************** *** 300,304 **** mptr->count++; ! /* patch to avoid server flooding from unregistered connects */ /* --- 300,310 ---- mptr->count++; ! ! /* Check if the user is shunned AND is registered. - Tux */ ! ! if (IsShunned(cptr) && IsRegistered(cptr)) ! if ((mptr->func != m_admin) && (mptr->func != m_quit) && (mptr->func != m_pong)) ! return -1; ! /* patch to avoid server flooding from unregistered connects */ /* *************** *** 308,318 **** if (!IsRegistered(cptr) && !mptr->allow_unregistered_use) { ! sendto_one(from, ":%s %d %s %s :Register first.", me.name, ERR_NOTREGISTERED, from->name, ch); ! return -1; } if (IsRegisteredUser(cptr) && mptr->reset_idle) ! from->user->last = timeofday; return (*mptr->func) (cptr, from, i, para); --- 314,324 ---- if (!IsRegistered(cptr) && !mptr->allow_unregistered_use) { ! sendto_one(from, ":%s %d %s %s :Register first.", me.name, ERR_NOTREGISTERED, from->name, ch); ! return -1; } if (IsRegisteredUser(cptr) && mptr->reset_idle) ! from->user->last = timeofday; return (*mptr->func) (cptr, from, i, para); Index: userban.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/userban.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** userban.c 11 Oct 2004 13:42:47 -0000 1.8 --- userban.c 11 Oct 2004 22:38:37 -0000 1.9 *************** *** 470,475 **** { uBanEnt *bln; struct userBan *ban; ! while(bl) { --- 470,476 ---- { uBanEnt *bln; + aClient *acptr; struct userBan *ban; ! int i; while(bl) { *************** *** 479,482 **** --- 480,496 ---- if((ban->flags & UBAN_TEMPORARY) && ban->timeset + ban->duration <= NOW) { + if (ban->flags & UBAN_SHUN) + { + for (i = 0; i <= highest_fd; i++) + { + if (!(acptr = local[i]) || IsMe(acptr) || IsLog(acptr)) + continue; + if (IsPerson(acptr) && user_match_ban(acptr, ban)) + { + ClearShun(acptr); + i--; + } + } + } remove_userban(ban); userban_free(ban); *************** *** 524,527 **** --- 538,545 ---- kset[0] = 'K'; } + else if (ban->flags & UBAN_SHUN) + { + kset[0] = 's'; + } else { Index: blalloc.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/blalloc.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** blalloc.c 11 Oct 2004 13:42:46 -0000 1.8 --- blalloc.c 11 Oct 2004 22:38:37 -0000 1.9 *************** *** 9,15 **** /* INCLUDES */ #include "struct.h" #include "common.h" - #include "sys.h" #include "h.h" #include "numeric.h" --- 9,15 ---- /* INCLUDES */ + #include "sys.h" #include "struct.h" #include "common.h" #include "h.h" #include "numeric.h" Index: s_user.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/s_user.c,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** s_user.c 11 Oct 2004 13:42:47 -0000 1.46 --- s_user.c 11 Oct 2004 22:38:37 -0000 1.47 *************** *** 883,915 **** if(ban) { ! char *reason, *ktype; ! int local; ! local = (ban->flags & UBAN_LOCAL) ? 1 : 0; ! ktype = local ? LOCAL_BANNED_NAME : NETWORK_BANNED_NAME; ! reason = ban->reason ? ban->reason : ktype; ! sendto_one(sptr, err_str(ERR_YOUREBANNEDCREEP), me.name, sptr->name, ktype); ! sendto_one(sptr, ":%s NOTICE %s :*** You are not welcome on" " this %s.", me.name, sptr->name, local ? "server" : "network"); ! sendto_one(sptr, ":%s NOTICE %s :*** %s for %s", me.name, sptr->name, ktype, reason); ! sendto_one(sptr, ":%s NOTICE %s :*** Your hostmask is %s!%s@%s", me.name, sptr->name, sptr->name, sptr->user->username, sptr->sockhost); ! sendto_one(sptr, ":%s NOTICE %s :*** Your IP is %s", me.name, sptr->name, inetntoa((char *)&sptr->ip.s_addr)); ! sendto_one(sptr, ":%s NOTICE %s :*** For assistance, please" " email %s and include everything shown here.", me.name, sptr->name, local ? Local_Kline_Address : Network_Kline_Address); ! ircstp->is_ref++; ! ircstp->is_ref_2++; ! throttle_force(sptr->hostip); ! return exit_client(cptr, sptr, &me, reason); } --- 883,924 ---- if(ban) { ! if (ban->flags & UBAN_SHUN) ! { ! SetShun(sptr); ! sendto_ops(SHUN_NAME" active for %s", ! get_client_name(sptr, FALSE)); ! } ! else ! { ! char *reason, *ktype; ! int local; ! local = (ban->flags & UBAN_LOCAL) ? 1 : 0; ! ktype = local ? LOCAL_BANNED_NAME : NETWORK_BANNED_NAME; ! reason = ban->reason ? ban->reason : ktype; ! sendto_one(sptr, err_str(ERR_YOUREBANNEDCREEP), me.name, sptr->name, ktype); ! sendto_one(sptr, ":%s NOTICE %s :*** You are not welcome on" " this %s.", me.name, sptr->name, local ? "server" : "network"); ! sendto_one(sptr, ":%s NOTICE %s :*** %s for %s", me.name, sptr->name, ktype, reason); ! sendto_one(sptr, ":%s NOTICE %s :*** Your hostmask is %s!%s@%s", me.name, sptr->name, sptr->name, sptr->user->username, sptr->sockhost); ! sendto_one(sptr, ":%s NOTICE %s :*** Your IP is %s", me.name, sptr->name, inetntoa((char *)&sptr->ip.s_addr)); ! sendto_one(sptr, ":%s NOTICE %s :*** For assistance, please" " email %s and include everything shown here.", me.name, sptr->name, local ? Local_Kline_Address : Network_Kline_Address); ! ircstp->is_ref++; ! ircstp->is_ref_2++; ! throttle_force(sptr->hostip); ! return exit_client(cptr, sptr, &me, reason); ! } } Index: m_shun.c =================================================================== RCS file: /cvsroot/solidircd/Solid-dev/src/m_shun.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** m_shun.c 11 Oct 2004 19:24:15 -0000 1.3 --- m_shun.c 11 Oct 2004 22:38:37 -0000 1.4 *************** *** 23,28 **** --- 23,257 ---- /* $Id$ */ + #include "sys.h" + #include "struct.h" + #include "numeric.h" + #include "h.h" + #include "find.h" + #include "userban.h" + #include "common.h" + + extern char *smalldate(time_t); + + static int isallnum(char *s) + { + int i; + + for (i = 0;i < strlen(s) && s[i]!='\0';i++) + { + if (!IsDigit(s[i])) + return 0; + } + return 1; + } + + /* + * m_shun + * ----- client parameters ----- + * parv[0] = sender prefix + * parv[1] = duration (must be in seconds) + * parv[2] = user@host or nickname + * parv[3] = reason + */ + int m_shun(aClient *cptr, aClient *sptr, int parc, char *parv[]) { + aClient *acptr; + struct userBan *ban, *oban; + char *string, *user, *host, *date, reason[TOPICLEN+1]; + char suser[USERLEN+1], shost[HOSTLEN+1], buffer[1024]; + int duration, i; + time_t shun_time; + + if (!MyClient(sptr) || !IsAnOper(sptr)) + { + sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); + return 0; + } + if (parc < 4) + { + sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), + me.name, parv[0], "SHUN"); + return 0; + } + if (parv[1] <= 0 || !isallnum(parv[1])) + { + sendto_one(sptr, ":%s NOTICE %s :The duration of a \2SHUN\2 must be in seconds, and" + "it cant be less than or equal to 0.", me.name, parv[0]); + return 0; + } + + bzero(buffer,sizeof(buffer)); + duration = atoi(parv[1]); + shun_time = (time_t) duration; + string = parv[2]; + + if ((host = strchr(string, '@'))) + { + user = string; + *(host++) = '\0'; + } + else + { + user = "*"; + host = string; + } + strncpyzt(suser,user,USERLEN+1); user = suser; + strncpyzt(shost,host,HOSTLEN+1); host = shost; + strncpyzt(reason,parv[3],TOPICLEN+1); + + /* Shun's range is too big, kill it. */ + if (!match(user,"jkjlkajflkajf") && !match(host,"afls...afplsf")) + { + sendto_one(sptr, ":%s NOTICE %s :Can't Shun *@*", me.name, parv[0]); + return 0; + } + + if (!(ban = make_hostbased_ban(user, host))) + { + sendto_one(sptr, ":%s NOTICE %s :Malformed shun %s@%s", me.name, parv[0], user, host); + return 0; + } + if ((oban = find_userban_exact(ban, 0)) && (oban->flags & UBAN_SHUN)) + { + if (!IsServer(sptr)) + sendto_one(sptr, ":%s NOTICE %s :[%s@%s] already shunned for %s", + me.name, parv[0], user, host, oban->reason); + userban_free(ban); + return 0; + } + + if (!IsServer(sptr)) + { + date = smalldate((time_t) 0); + ircsprintf(buffer, "%s (%s)", reason, date); + } + else + ircsprintf(buffer, "%s", reason); + + ban->flags |= (UBAN_SHUN|UBAN_TEMPORARY); + ban->reason = (char *) MyMalloc(strlen(buffer) + 1); + strcpy(ban->reason, buffer); + ban->timeset = timeofday; + ban->duration = shun_time; + + if(user_match_ban(sptr, ban)) + { + sendto_one(sptr, ":%s NOTICE %s :You attempted to add a shun [%s@%s]" + " which would affect yourself. Aborted.", + me.name, parv[0], user, host); + userban_free(ban); + return 0; + } + add_hostbased_userban(ban); + + for (i = 0; i <= highest_fd; i++) + { + if (!(acptr = local[i]) || IsMe(acptr) || IsLog(acptr)) + continue; + + if (IsPerson(acptr) && user_match_ban(acptr, ban)) + { + sendto_ops(SHUN_NAME" active for %s", + get_client_name(acptr, FALSE)); + SetShun(acptr); + i--; + } + } + + if (MyConnect(sptr)) + send_globops("Shun added for (%s@%s) by %s, expires in %d seconds (Reason: %s)", + user, host, parv[0], shun_time, buffer); + + sendto_serv_butone(NULL, ":%s SHUN %d %s@%s :%s", me.name, shun_time, user, host, buffer); + + return 0; + } + + /* + * m_sunhun + * ----- client parameters ----- + * parv[0] = sender prefix + * parv[1] = user@host or nickname + */ + + int m_unshun(aClient *cptr, aClient *sptr, int parc, char *parv[]) + { + aClient *acptr; + struct userBan *ban; + char *string, *user, *host; + int i; + + if (!MyClient(sptr) || !IsAnOper(sptr)) + { + sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); + return 0; + } + if (parc < 2) + { + sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), + me.name, parv[0], "UNSHUN"); + return 0; + } + + string = parv[1]; + + if ((host = strchr(string, '@'))) + { + user = string; + *(host++) = '\0'; + } + else + { + user = "*"; + host = string; + } + + /* FIXME: Mabye we should allow all shuns to be removed at the same time *@*? */ + if (!match(user,"jkjlkajflkajf") && !match(host,"afls...afplsf")) + { + sendto_one(sptr, ":%s NOTICE %s :Can't Unshun *@*", me.name, parv[0]); + return 0; + } + + if ((ban = make_hostbased_ban(user, host))) + { + struct userBan *oban; + + ban->flags |= UBAN_SHUN|UBAN_TEMPORARY; + + if ((oban = find_userban_exact(ban, UBAN_SHUN|UBAN_TEMPORARY))) + { + char tmp[512]; + + host = get_userban_host(oban, tmp, 512); + + for (i = 0; i <= highest_fd; i++) + { + if (!(acptr = local[i]) || IsMe(acptr) || IsLog(acptr)) + continue; + + if (IsPerson(acptr) && user_match_ban(acptr, ban)) + { + ClearShun(acptr); + i--; + } + } + remove_userban(oban); + userban_free(oban); + userban_free(ban); + + if (MyClient(sptr)) + send_globops("Shun for [%s@%s] removed by %s.", user, host, parv[0]); + + sendto_serv_butone(NULL, ":%s UNSHUN %s@%s", me.name, user, host); + + return 0; + } + userban_free(ban); + } + if (MyClient(sptr)) + sendto_one(sptr, ":%s NOTICE %s :No shun found for [%s@%s]", + me.name, parv[0], user, host); + return 0; } |
From: Juan B. <tu...@us...> - 2004-10-11 19:24:31
|
Update of /cvsroot/solidircd/Solid-dev/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8905/src Added Files: m_shun.c Log Message: Place holder for the future SHUN --- NEW FILE: m_shun.c --- /************************************************************************ * Solid IRCd - SOlid Internet Relay Chat Daemon, src/m_shun.c * Copyright (C) 2004 Juan L. Baez * * See file AUTHORS in IRC package for additional names of * the programmers. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* $Id: m_shun.c,v 1.3 2004/10/11 19:24:15 tux316 Exp $ */ int m_shun(aClient *cptr, aClient *sptr, int parc, char *parv[]) { return 0; } |
From: Juan B. <tu...@us...> - 2004-10-11 13:48:07
|
Update of /cvsroot/solidircd/Solid-dev/doc/old In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25270/doc/old Added Files: Authors FAQ Hybrid-team Operators README README.hybrid example.conf.old Log Message: --- NEW FILE: Hybrid-team --- The hybrid team is a group of ircd coders who were frustrated with the instability and all-out "dirtiness" of the efnet ircd's available. "hybrid" is the name for the collective efforts of a group of people, all of us. Anyone is welcome to contribute to this effort.. We have run the code through "purify", a commercial program designed to find memory leaks. The code has been mostly prototyped. Profiling has also been done to catch slow portions of the code. Portions of "crufty" code have been re-written. We have also looked at making the code as easy to setup up and run as possible using configure, checking header files etc. Finally speed enhancements and other enhancements have been made to this ircd. That is not to say that there are still not bugs, There are always bugs. But we have reviewed each others work on this project, and are open to bug reports. The following people have contributed blood, sweat, and/or code to this release of hybrid, in nick alphabetical order. cbongo, Chris A. Bongaarts (ca...@tc...) comstud, Chris Behrens (cbe...@co...) Dianora, Diane Bruce (db...@db...) johan, Johannes Erdfelt (jer...@en...) orabidoo, Roger Espel LLima (es...@un...) Rodder, Jon Lusky (lu...@vo...) Shadowfax, Michael Pearce (mp...@va...) ThemBones, Brian Kraemer (kraemer@u.washington.edu) Wohali, Joan Touzet (jo...@ca...) Others are welcome. email bug fixes/complaints/rotten tomatoes to irc...@vo... --- NEW FILE: Authors --- /************************************************************************ * IRC - Internet Relay Chat, doc/AUTHORS * Copyright (C) 1990 * * AUTHORS FILE: * This file attempts to remember all contributors to the IRC * developement. Names can be only added this file, no name * should never be removed. This file must be included into all * distributions of IRC and derived works. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ IRC was conceived of and written by Jarkko Oikarinen <jt...@to...>. IRC was originally written in University of Oulu, Computing Center. Jan 1991 - IRC 2.6 jt...@to... - Multiple Channels and protocol changes Contributions were made by a cast of dozens, including the following: Markku Jarvinen <mt...@tu...>: Emacs-like editing facility for the client Kimmo Suominen <ki...@ka...>: HP-UX port Jeff Trim <jt...@or...>: enhancements and advice Vijay Subramaniam <vi...@ll...>: advice and ruthless publicity Karl Kleinpaste <ka...@ci...>: user's manual Greg Lindahl <gl...@vi...>: AUTOMATON code, the Wumpus GM automaton, myriad bug fixes Bill Wisner <wi...@ha...>: numerous bug fixes and code enhancements Tom Davis <con...@ze...> and Tim Russell <ru...@ze...>: VMS modifications Markku Savela <ms...@te...>: advice, support, and being the incentive to do some of our *own* coding. :) Tom Hopkins <ho...@bu...>: bug fixes, quarantine lines, consolidation of various patches. Christopher Davis <ck...@cs...>: EFnet/Anet gateway coding, many automata ;), documentation fixing. Helen Rose <hr...@cs...>: documentation updating, and fixing. Tom Hinds <ro...@bu...>: emacs client updating. Tim Miller <ce...@bu...>: various server and client-breaking features. Darren Reed <av...@co...>: various bug fixes and enhancements. Introduced nickname and channelname hash tables into the server. The version 2.2 release was coordinated by Mike Bolotski <mi...@sa...>. The version 2.4 release was coordinated by Markku Savela and Chelsea Ashley Dyerman The version 2.5.2 release was coordinated by Christopher Davis, Helen Rose, and Tom Hopkins. The versions 2.6.2, 2.7 and 2.8 releases were coordinated by Darren Reed. Contributions for the 2.8 release from the following people: Matthew Green <ph...@co...> Chuck Kane <ck...@ec...> Matt Lyle <ma...@oc...> Vesa Ruokonen <ruo...@lu...> Markku Savela <Mar...@vt...> / April 1990 Fixed various bugs in 2.2PL1 release server (2.2msa.4) and changed sockets to use non-blocking mode (2.2msa.9). [I have absolutely nothing to do with clients :-] Chelsea Ashley Dyerman <ch...@ea...> / April 1990 Rewrote the Makefiles, restructuring of source tree. Added libIrcd.a to the Makefile macros, numerous reformatting of server text messages, and added mkversion.sh to keep track of compilation statistics. Numerous bug fixes and enhancements, and co-coordinator of the 2.4 release. ja...@if... added mail functions to irc. Armin Gruner <gr...@in...> / May, June 1990: * Patched KILL-line feature for ircd.conf, works now. Enhancement: Time intervals can be specified in passwd-field. Result: KILL-Line is only active during these intervals * Patched PRIVMSG handling, now OPER can specify masks for sending private messages, advantage: msg to all at a specified server or host. * Little tests on irc 2.5 alpha, fixed some little typos in client code. Change: common/debug.c has been moved to ircd/s_debug.c, and a irc/c_debug.c has been created, for the benefit that wrong server msg are displayed if client does not recognize them. (strange, if a server sends an 'unknown command', isn't it?) Tom Hopkins <ho...@bu...> / September, October 1990: * Patched msa's K lines for servers (Q lines). * Consolidated several patches, including Stealth's logging patch. * Fixed several minor bugs. * Has done lots of other stuff that I can't seem to remember, but he always works on code, so he has to have done alot more than three lines worth. :) Thanks go to those persons not mentioned here who have added their advice, opinions, and code to IRC. Various modifications, bugreports, cleanups and testing by: Hugo Calendar <hu...@uc...> Bo Adler <ad...@cs...> Michael Sandrof <ms...@an...> Jon Solomon <js...@cs...> Jan Peterson <jl...@ha...> Nathan Glasser <na...@br...> Helen Rose <hr...@ef...> Mike Pelletier <st...@ca...> Basalat Ali Raja <gw...@ta...> Eric P. Scott <ep...@to...> Dan Goodwin <fo...@wp...> Noah Friedman <fri...@ai...> --- NEW FILE: README --- This stuff is so ancient it's not even funny anymore. Take it with a grain of salt when you read it. --JRL The Bill Wisner example.conf has been updated, I have also included Helen Roses example.conf as example.conf.trillian (taken from the CSR tree ) as it is superiour in some respects to Bill's version. Updated as well to reflect hybrid . --Dianora --- NEW FILE: Operators --- Internet Relay Chat Operator Etiquette Guide May, 1992 Welcome! You've either been selected to be an IRC Operator or you have set up your server and thus have taken on the dual task of IRC Server Administrator and IRC Operator. Your future days will be filled with hours of fun chatting on IRC, and then wondering why everyone you talked to went away, because the links had apparently broken. Linking: ======== You will be assigned links from the IRC Routing Coordinators. Please use these links and these links ONLY. The links have been designed to maximize efficiency and make delays in chatting minimal. You will usually be given two links, one to each regional backbone site. Connect to the primary site first and then to the secondary site. You should not need to connect to any other sites. You will be informed if this policy changes. Kills ===== /kill is a special operator command. You should use it with care, and only if absolutely needed. The format is as follows: /kill NICKNAME comment. Comment can be a phrase of almost any length (within reason) and should be used for specifying the reason of the kill. Example: /kill Trillian She's a Ghost IRC Ghosts are created after a net split has occured and the net has yet to relink. /wallops PHRASE This is used to talk to those users who have their user mode set to +w. /wallops used to be a way for operators to talk about important matters in linking etc., but it has little use nowadays. /TRACE command /TRACE is useful to know what servers are connected to what. Sometimes /trace can be confusing, especially if you are using it for the first time. Here is an example of a trace from stekt1.oulu.fi to cdc835.cdc.polimi.it. /TRACE cdc835.cdc.polimi.it *** Link stekt1.oulu.fi<2.7.2> ==> cdc835.cdc.polimi.it *** Link rieska.oulu.fi<2.7.1>e ==> cdc835.cdc.polimi.it *** Link nic.funet.fi<2.7.1>e ==> cdc835.cdc.polimi.it *** Link ircserver.et.tudelft.nl<2.7.1>e ==> cdc835.cdc.polimi.it *** Link vesuv.unisg.ch<2.7.1>e ==> cdc835.cdc.polimi.it *** Link apollo.di.unipi.it<2.7.1>e ==> cdc835.cdc.polimi.it *** Oper Class[10] ==> Allanon[cdc835.cdc.polimi.it] *** User Class[11] ==> Lupandy[plus2.usr.dsi.unimi.it] *** Serv Class[3] ==> apollo.di.unipi.it[131.114.4.36] 132S 445C *** User Class[11] ==> Punk[pluto.sm.dsi.unimi.it] *** User Class[11] ==> TheEdge[pluto.sm.dsi.unimi.it] *** User Class[10] ==> Mork[cdc835.cdc.polimi.it] *** User Class[11] ==> Lollo[c700-2.sm.dsi.unimi.it] *** User Class[11] ==> Attila[hp2.sm.dsi.unimi.it] *** Class 0 Entries linked 1 *** Class 11 Entries linked 5 *** Class 10 Entries linked 2 *** Class 3 Entries linked 1 From this output you can see that the route goes first to rieska.oulu.fi (running version 2.7.1e), then nic.funet.fi, ircserver.et.tudelft.nl, vesuv.unisg.ch, and apollo.di.unipi.it, after which cdc835 is the next server. Then we see the connections on cdc835: One operator (Allanon) and 6 users are on line. The class of each connection is given. There is only one server connected to cdc835 at the moment, and that server is apollo.di.unipi.it (cdc835 is said to be a "leaf" server at the moment). The numbers 132S 445C in the end of line tell us, that there are 132 servers and 445 clients connected to the servers from apollo onwards. Finally we see a grand total of connections in each connection class. /SQUIT server {comment} /squit isolates a specified server from the next closest server, when you look at it along the trace path starting from your server. This is usually used in conjunction with CONNECT (explained later) to reroute traffic. This will be described in detail in the section "routing", preceding CONNECT. Usage (and examples): /squit E If the network looks like this initially (and you are on server A) A <---> B <---> C <---> D ^ | v G <---> E <---> F <---> ... (rest of the net) Then after issuing the previous /squit the network would look like this: A <---> B <---> C <---> D G <---> E <---> F <---> ... /squit E {comment} It usually helps to give a reason why you are sending a SQUIT for a server. This can be accomplished by sending the command "/squit server This link is making the US route through Finland". The SQUIT will then be sent out, and the server sending the squit will WALLOP sending the comment so all operators can see it. /CONNECT server {portnum server2} /connect is used to establish a link between two servers. These connections must be authorized by each server's ircd.conf file, but any operator can issue a CONNECT between authorized servers. This command is most often used in conjunction with SQUIT to reroute traffic. If only one argument is given, this command causes the server you are on to attempt to connect to the server specified. For example, "/connect B" (in the previous example) would cause your server (A) to connect to B. Suppose you wanted to reconnect server F to server E? You cannot contact server F since it is no longer part of your network. However, you can tell server E to connect to it. A remote CONNECT can be issued to server E. Examples (assume you are on server A): /connect B If the network initially looks like this: A B <---> ... (rest of network) Then afterwards (if the connection succeeds) the network will look like this: A <---> B <---> ... In the example where you wanted to reconnect server E to F, the following syntax would be appropriate (note: we are assuming that F's irc socket port is 6667, which is the default) /connect F 6667 E If the network initially looks like this: A <---> B <---> C <---> D ^ | v G <---> E F <---> ... Then after your CONNECT request the network topology will look like this: A <---> B <---> C <---> D ^ | v G <---> E <---> F <---> ... Be careful when connecting servers that you know which command to use! If you simply issued "/connect F" from your server, the network would look like this: ... <---> F <---> A <---> B <---> C <---> D ^ | v G <---> E which for various reasons (discussed below) might be very undesirable. Routing ======= When and how should you do rerouting? This depends on where your server is topologically located and whether you route traffic. If you are a leaf node (i.e. only connect to one server at a time) then chances are you won't need to do any routing at all. Your ircd.conf file should be written to connect to the best possible servers first before trying alternates. At the most, you may decide to squit an alternate server and connect to your primary if/when it goes back up. This only involves local squits, however. If you are operating a backbone site, you may find yourself rerouting things quite often. If the servers badger.ugcs.caltech.edu (Pasadena, CA), irc.mit.edu (Boston, MA), minnie.cc.utexas.edu (Austin, TX) and ucsu.colorado.edu (Boulder, CO) were routing traffic in the following way: ... <---> minnie <---> badger <---> bucsd <---> ucsu <---> ... It would make sense to either squit ucsu and reconnect it to minnie, or disconnect minnie from badger and connect to ucsu, because topologically (and geographically) ucsu and minnie are rather close. There are occasions when US traffic for some reasons winds up being routed through Australia. This is another case where traffic should definitely be rerouted. However, there are sometimes occasions when routing is going through "backdoor" methods. If you see something totally outrageous (like the east coast and the west coast being connected by eff.org) please ask for example on channel #twilight_zone before you send any squits, because chances are, it's like that for a reason. Of course, any operator can remotely squit or connect servers, so if you see a problem and you're sure you know how to fix it, it's a good idea to do so. If the operator of a server which is is being routed poorly is online, it's probably best to contact him/her first, though. Chances are that hub operators will be more familiar with the general topology of the network and which servers connect to which (which is why most of the manual routing is left to them), so if you have any problems, talk to the other operators on operator channels (#twilight_zone, #eu-opers etc.) That's what they are there for! Also, be aware that servers will notify all the operators online of remote SQUITs and CONNECTs via WALLOPS. Please let us know if there should be any additions to this guide. Again, this is not MANDATORY, this is just a GUIDE. Please conduct yourself as an IRC Operator would...you are looked upon for assistance, both emotional and mental. Helen Rose Christopher Davis Noah Friedman <hr...@cs...> <ck...@cs...> <fri...@ai...> January, 1991 Updated by Mauri Haikola <mj...@st...> May, 1992 --- NEW FILE: README.hybrid --- +hybrid-5.2p1 (5/12/98) removed uneeded variable in aClient (Dianora) added missing #ifdef's for USE_SYSLOG (Dianora) reverted to old check_pings() to fix high cpu usage (Rodder) fixed DEBUGMODE (Dianora) +hybrid-5.2 (4/21/98) - The inevitable bug fix release -fixes * changed many of the defaults in config.h * removed ident_fdlist it was never used anyway (comstud) * fixed quote kline for 10 character user names (Dianora) * obscure bug with KICK message in a desync channel situation (Dianora) * bug with max channel name fixed (comstud/Dianora) * stop spam from links command i.e. beeps (Dianora) * bug with default +i not showing MODE to user initially (Rodder) * ANTI_IP_SPOOF moved to "broken" section of conf (Rodder) * ident lookups now work properly for all interfaces of multihomed (or "VIF"'d) machines, including Solaris 2.6 (Rodder) * stats l/L no longer shows -i clients to non-opers (Rodder) * exorcised evil timedelta variable * Fixed oper wallops broadcasting instead of routing (Dianora) * Covered up bogus "Got Ident" messages in read_authports() (Rodder) * Fixed missing RPL_ENDOFTRACE for non-opered clients (Dianora) * #undef IDLE_FROM_MSG fixed, ping/pong/ison do not reset idle time (Dianora) -feature adds * bumped HTM code to not kick in until 40K/s by default * stop people from laming up the kline conf file with # in comment (Dianora) * added comstuds SEPARATE_QUOTE_KLINES_BY_DATE * use block allocator in FLUD code (Shadowfax) * added HTM quiet or HTM noisy option -- see NOISY_HTM in config.h for initial setting (Dianora) * added LOCOPS, each type of wallops/operwall/locops is now flagged (Dianora) * added signon time to RPL_WHOISIDLE (Dianora) * allow local opers to see kills requested by riss (Dianora) * added ANTI_SPAMBOT code, read config.h (Dianora) * added fixklines to tools dir, use it to check kline.conf for #'s inside of K-line comments (Dianora) * added OLD_Y_LIMIT in config.h.dist to go back to old Y/I line behaviour (Dianora) * M: line passwd field now used to specify address to bind to on machines with multiple interfaces. (Rodder) * P: line passwd field now used to specify address to bind to on machines with multiple interfaces. (Rodder) * added /quote set SPAMNUM SPAMTIME to control ANTI_SPAMBOT behaviour (Dianora) * hybrid option flags removed from m_version and replaced by (for opers) full listing of server defines in m_info (Rodder) * poll() code mods ported from CSr30 (comstud) by cbongo * m_whois() rewritten to use hash table when possible (Dianora) * spambot sign on code added (ThemBones) * i line (LITTLE_I_LINE) support, restricted i lines (Dianora) * NO_CHANOPS_WHEN_SPLIT delays channel hacking until rejoin (Dianora) * ANTI_SPAMBOT on sign on code (ThemBones) * only allow 4 kicked nicks per kick (Dianora) * sped up kline processing, redid check_pings in ircd.c (Dianora) * Server now checks for sane TS when connecting to other server, see TS_MAX_DELTA and TS_WARN_DELTA in config.h (Rodder) * Server checks for backwards spinning clock and complains if found (Rodder) * Check for error when timeofday is set (Shadowfax) * Announce TS changes after TS induced deops (Shadowfax) * stop redistributing away information to other servers * Prepared for TS4 mixed net by checking validity of channel mode changes only at the local server (orabidoo) +hybrid-5 (9/26/97) * LOTS AND LOTS OF CHANGES IN CONFIG.H * reorganized source tree, eliminating common subdir * reworked hash.c (Dianora) * reworked parse.c, tree prefix command lookups (Dianora/orabidoo) * all code is now function prototyped (Dianora) * improved bad host/nick handling, i.e. dns spoofers (ThemBones) * sped up send_umode_out in s_user.c (ThemBones) * sped up whowas processing, removed away from whowas (Dianora) * redid m_kline/cluster in s_serv.c (Dianora) * redid dline/kline handling (Dianora/Rodder/ThemBones) * removed lame #ifdefs in poll() (Dianora) * always defined D_LINES/E_LINES/F_LINES (Dianora) * TS_ONLY server now (Dianora) * cleaned up s_auth.c (Dianora/ThemBones) * changed BAN_INFO handling (Dianora) * sanity testing in res.c (Dianora) * added orabidoo's scache code (orabidoo/Dianora) * added KLINE_WITH_REASON kline reason on klines/connects (Dianora) * added NON_REDUNDANT_KLINE code (Dianora) * added ANTI_IP_SPOOF code (Dianora) * added temporary kline code (Dianora) * added Jolo's block allocator into list.c (Jolo/Dianora) * added ANTI_NICK_FLOOD code (Dianora) * removed UNIXPORT code (Dianora) * removed lame unused code in match.c (Jolo) * corrected many type errors, ran through purify (Jolo) * removed unused variables (Dianora) * folded in Shadowfax's FLUD code (Shadowfax/Dianora) * folded in Shadowfax's LOCKFILE code (Shadowfax/Dianora/Rodder/ThemBones) * added optional GLINE code (Dianora) * stats K now works for normal users (Dianora) * quote UNKLINE code as a option added (Dianora/common) * Reworked ACKPATCH, removed ONE kludge and use confeq field of Y instead, used hash table of ip's (Dianora) * removed UNIXPORT support (Dianora) * added support for oper WALLOPS back in. Use /quote OPERWALL to send operwalls. * reworked version.c.SH to track build number (Rodder) * make clean removes more junk (Rodder) * added check for adequate FD_SETSIZE * created tools subdir (Rodder) * added "Unauthorized connection" back in, under umode +c (Dianora/Rodder) * modified autoconf for Solaris 2.6 (Rodder) * modified LUSERS to ignore masks (Rodder) * fixed mysterious exit() in fdlist.c from fd leak in s_auth.c (Dianorans) * fixed overrun bugs in res.c (Dianora/Johan/Shadowfax) ----------------------------------------------------------------------------- +hybrid-4.3 (8/19/97) - more bug fixes * typo that caused immediate crash on HPUX fixed * IP/hostname mismatch code fixed, warns the user instead of opers * typo fixed in missing klinefile error message +hybrid-4.2 (8/4/97) - minor bug fix, one new feature * rcs version string was clobbering server version string * Bans can now match by IP for hosts that resolv (db) IP_BAN_ALL define added to config.h +hybrid-4 (7/28/97) * LOTS OF NEW STUFF IN CONFIG.H, GO READ IT!! THE WHOLE THING!! EVEN IF YOU ARE UPGRADING TO THIS FROM A HYBRID-4 BETA!! * patch for yet another NICK bug * patch for m_server() bug * patch for TS3 bug * switched to GNU autoconf (thanks ns!) * WALLOPS now only go to real opers * ircsprintf() mod to check for NULL args (db) * fixed possible overflow res.c (db) # seperate klines file - see config.h (db) * quote_dline support - see config.h (db) * fixed timezone snafu in date() * added RFC1035_ANAL define reject _ and / in hostnames * removed old DELAY_NICK define.. broken and unneeded * modified s_err.c and created s_err.h. See CUSTOM_ERR in include/config.h * m_server() now quietly ignores clients that try to use SERVER * removed NOTE code, removed SUMMON code, gutted USERS * added automatic timestamps to comments of quote KLINE and DLINE * changed failure notice for clients bouncing off ACKPATCH to "Only one connection at a time allowed from your hostname" * cleanup to channel.c * format() mod to check for NULL args (di) * removed more useless crap (UPHOST, VMS, etc) from config.h * #undef F_LINES fixed * oper WALLOPS changed to OPERWALL (code taken from csr30) * BSDI 3.0 FD_ALLOC support (db) # changed output of STATS D * Removed Q: line support * cleaned up find_conf_ip (db) * fixed crypt() usage to work on systems with longer salts (ie FreeBSD without DES libs) * various spelling fixes (db) * N: line checking in m_server() (db) * WARN_NO_NLINE define added to config.h ----------------------------------------------------------------------------- +hybrid-3 (6/17/97): * Added USRIP command. This command returns user@ip in a USERHOST reply for local clients only. Requests for remote nicks are treated as though the nick doesn't exist. * Switched to Dianora's faster dich_conf.c * Check for invalid characters (see RFC1035) in hostnames * Fixed problem with coring due to invalid hostnames on non-local users * TSora version 3 * Turned D_LINE support back on * Numerous changes to Config script, may actually work now * Additional OS defs in Makefile * Minor cleanup in include/config.h # created new INSTALL document ----------------------------------------------------------------------------- +hybrid-2 (4/12/97): This is ircd2.8/th.v5a.3 with the WHO, WHOWAS, and IsMember() code from Comstud's irc2.8.21CSr29. Please send email to Jon Lusky <ir...@vo...> if you find problems with it. Relevant excerpt from irc2.8.21+CSr29/README.CS: 3) /whowas code totally rewritten. This code is better than Avalon's ever was. You can now raise NICKNAMEHISTORYLENGTH in config.h to a value that makes sense with today's number of clients. Without rewriting, you could expect server lockup, mostly during splits. These changes should lower CPU usage quite a bit, especially during splits. 4) /who code tweaked. IsMember() = CPU hog...IsMember() has been changed and m_who does less find_user_link()s now...much less. This is a big reducer of CPU usage. Also another "bug" was removed from m_who that can possibly cause server lockups. The possibility still remains, though...not sure how to improve it further without totally breaking /who. 5) This goes with #4, but... /who nickname was optimized tremendously. However, this breaks /who if you do /who username and username happens to match a nickname. Oh well...too bad. ----------------------------------------------------------------------------- +hybrid-1 never really existed --- NEW FILE: FAQ --- These are the two most frequently asked questions about IRC server compliation: * I compile and everything seems fine during the compiling, but when it comes time for the program to link, I get errors complaining about dns and res things. What causes this? You need to make sure IRCDLIBS in the toplevel Makefile includes -lresolv * I start the ircd program and I get an error about chdir, no such file or directory. What causes this? Make sure IRCDDIR in the toplevel Makefile is set to the same as DPATH in include/config.h (send suggestions to this FAQ to hr...@cs...) --- NEW FILE: example.conf.old --- # IRC - Internet Relay Chat, doc/example.conf # Copyright (C) 1994, Helen Rose # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 1, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # This is an example configuration file for the Bahamut 1.4.23 # and higher IRC servers. # # You only need an ircd.conf (IRC server configuration file) if you are # running an IRC server. If you are running a standalone client this file # is not necessary. # # This file will explain the various lines in the IRC server # configuration file. Not all lines are mandatory. You can check to make # sure that your configuration file is correct by using the program # "chkconf", provided in the server distribution (and when you do "make # install" this program will be installed in the same directory as the irc # server). # # This document modified for use by the DALnet IRC network and its upgraded # server versions by Russell on 10/22/95. # # This document updated to comform to current ircd changes and features by # Cabal95 on 06/21/97. # # Other various updates, typo fixes and changes made by DuffJ on 01/08/97 # # Updated for Bahamut by Epiphani 06/28/99 # # Updated for Bahamut by driz 3/3/2001 # # The options for whether a line is needed or not are: # MANDATORY: you absolutely MUST have this line # NETWORKED: you must have this line if you are connecting this irc # server to any other server (servers can run standalone). # SUGGESTED: it is highly suggested that you use this line # OPTIONAL: it's completely up to you whether to define this or not # DISCOURAGED: you really really should not use this line if at all # possible. # OBSOLETE: an old or out of date line that isn't needed. # # MANDATORY lines are absolute *musts*, that is, if you do not have this # line then your server will not work properly. SUGGESTED lines are # close-to-mandatory (that is, the server will run without it, but you are # highly encouraged to use these lines). # # Note that "*" in a field indicates an "unused" field. # # ======================================================================== # NOTE! this entire configuration file is read UPSIDE-DOWN! So if you have # to put something in a specific order (for example, client-connection # lines), put them in reverse order! # ======================================================================== # # M: [MANDATORY]. This line sets your server's name, description, port # number, and IP address to bind to. Fields, in order, are: # # If you are compiling this server for use on DALnet, port number 7000 # as the default is recommended. If you leave IP address field blank or # *, it defaults to binding all local IP addresses on the machine. # # M:hostname:IP:Description Of Your Server:7000 # M:server.dal.net:*:East Coast DALnet Server:7000 # # A: [MANDATORY]. This line lists your administrative information # (contact address, etc). To view this information, /admin (server) will # show it to you. # # The A: line has no set information, in fact, you can put arbitrary text # in there if you wish (it is encouraged that you put at *least* a contact # address for a person responsible for the irc server, however) # A:Generic Internet Access:Admin John Doe:jd...@ge... # # Y: [SUGGESTED]. These lines define connection classes. Connection # classes allow you to fine-tune your client and server connections. It is # suggested that clients and servers be placed in seperate classes, and if # you have lots of server connections (if you do have lots of servers you # shouldn't be reading this file :-) each set of servers (defined # arbitrarily by you) should have its own class. If you have clients # coming in from lots of different sites, you may want to seperate them # out into classes. For instance, you may want to put local users in one # class, with remote users in another class. # # The class numbers are not arbitrary. In auto-connecting servers -- that # is, servers that you have a port number (e.g. 6667) on the end of the C: # line (see below) the higher the number the higher the priority in # auto-connecting. # # The fields in order are: class number, ping frequency (in seconds), # connect frequency (in seconds), maximum number of links (used for # auto-connecting, and for limiting the number of clients in that class), # and sendq (this overrides any value set in include/config.h for #define # MAXSENDQLENGTH). # # Note that it is a good idea to have ping frequency the same at both ends # of the link. # # in this case, connect-frequency is 0 indicating that this is a client # class (servers never connect to clients, it is the other way around). Y:1:90:0:20:100000 # # These are the recommended server Y:lines for connecting to dalnet. # In addition to these you should have at *least* one client class, and one # oper class (see O:lines). By convention on dalnet, these are usually # numbered from 5 to 10. # # Class 50 - Hub to hub, autoconnect Y:50:90:60:1:15000000 # # Class 51 - Hub to hub, no autoconnect Y:51:90:60:0:12000000 # # Class 30 - Hub to US leaf Y:30:90:0:0:5000000 # # Class 32 - Hub to EU leaf Y:32:180:0:0:5000000 # # Class 34 - Hub to AU leaf Y:34:300:0:0:5000000 # # Class 40 - US leaf to hub, autoconnect Y:40:90:90:1:5000000 # # Class 41 - US leaf to hub, no autoconnect Y:41:90:90:0:5000000 # # Class 42 - EU leaf hub Y:42:180:90:1:5000000 # # Class 44 - AU leaf to hub Y:44:300:120:1:5000000 # # I: [MANDATORY]. The I: lines are client-authorization lines. Without # these lines, no clients will be able to connect to your server. # Wildcards ("*") are permitted. Passwords are also permitted (clients can # be configured to send passwords). # # Ident (for more information on this, see rfc1413) can also be used by # placing a @ in the appropriate fields. # # Fields are as follows: # I:IP-address-mask:optional password:domain-mask::connection class (opt) # # With a password..... This will allow anyone from anywhere to connect # as long as they know the password ("foobar"). Note listing this I: line # first, it will be read *last*, meaning it is the "fall-through". That # is, anyone who doesn't match the I: lines listed below must know the # password ("foobar") to connect. # I:*@*:foobar:*@*::1 # This is a standard vanilla I: line which will permit anyone with an IP # address starting with 205.133 OR with a hostname ending in # .toledolink.com to connect to the server. NOTE, the ircd matches on the # *right-most* match, so if I connect as rm...@gl... # (which is rmiller@205.133.127.8) I will show up on irc as # rm...@gl... since that is the first match it found. # (Even though the second match is valid). I:205.133.*::*.toledolink.com::1 # # using ident I:*@205.133.*::*@*.toledolink.com::1 # and you can even specify just certain usernames running ident (as long # as the client's site is running the ident daemon): I:NOMATCH::rm...@gl...::1 # putting NOMATCH in the first field will stop the ircd from matching # automatically against the IP address and it will force the server to # match against the hostname. (the "NOMATCH" string is not mandatory, you # can use any arbitrary text in the first field). # # # O: [OPTIONAL]. These lines define operator access. You do not need to # have an operator to run a server. A well configured leaf site should not # need an operator online, if it's connections are well defined, the irc # administrator can use kill -HUP on the ircd to reload the configuration # file. # The fields are as follows: # O:hostname (ident "@" permitted):password:NickName:AccessFlags:class # if the person in "NickName" is not coming from the hostname defined in # the first field then the person will get the error message "No O: lines # for your host". # NOTE that since Crypted Passwords are defined by default in # include/config.h this text probably will not be plaintext. See # ircd/crypt/README for more information. # # class is the Y:Line class you want this operator to end up in after they # have successfully /oper'd. # # Access flags may be left blank, or * to give full access rights. Flags # are in the form of single characters making a string. Any combination # of the following can be used(these are cAsE sensitive characters): # # r = access to /rehash server # R = access to /restart server # D = access to /die server # g = oper can send /globops # w = oper can send /wallops # l = oper can send /locops # c = access to do local /squits and /connects # C = access to do remote /squits and /connects # k = access to do local /kills # K = access to do global /kills # b = oper can /kline users from server # B = oper can /unkline users from server # n = oper can send local server notices(/notice $servername message) # N = oper can send global notices(/notice $*.dal.net message) # A = can set umode +Aa to display server admin access in /whois # a = can set umode +a to display services admin access in /whois # u = oper can set /umode +c # f = oper can set /umode +f # s = oper can send /chatops # o = local oper, flags included: rhgwlckbBnuf # O = global oper, flags included: oCKNs # # Note: the RD flags must be manually included if you wish the # O:line to give /restart or /die access. They do not appear in # any wildcard lines, therefore a full set of operflags is OaARD # # This is a plain vanilla O:line: O:*.toledolink.com:nopassword:Russell:*:10 # # and this line forces ident: O:rm...@gl...:nopassword:Russell::10 # # This line is a generic "local operator", because of the flags, the only # thing that really makes them global operators, is if they have the flags # CKN set in their access flags. # # this line permits the nickname "jhs" with the password of "ITBites" to # be a local operator only (be able to issue commands locally -- can /kill # and /squit and /connect -- but *only* locally) # O:*.something.net:ITBites:jhs:o:10 # # a crypted password line (NOTE that if you have crypted passwords, *all* # of you passwords must be crypted! In fact, if you are getting an error # "Incorrect Password" it may well be because crypted passwords are # defined and you have used plaintext. So my example of plaintext and # crypted strings in the same IRC server configuration file is an # impossibility (but it is just theoretical, which is why I explained both). # O:rmiller@*.toledolink.com:T0eiVgHrqeKTQ:Russell::10 # # U: [OPTIONAL]. This line defines the servers that IRC recognizes as being # allowed to make various changes to the IRC environment (mode changes, for # example), without complaining or otherwise obstructing them. For example, # DALnet requires the following line: U:services.dal.net:*:* # # X: [SUGGESTED]. This line defines the password that an operator must use # to restart or die the server. Note that they must also have the R and D # operflags in their O:line. This is just a security precaution against # accidentally typing /die or /restart. # # X:<password for /DIE>:<password for /RESTART> X:diepass:restartpass # C: [NETWORKED]. These lines define what servers your server tries to # connect to. # N: [NETWORKED]. These lines define what servers your server permits # connections to be initiated from. # C/N lines MUST be used in pairs. You cannot have one without the other. # # C: lines contain the following fields: # C:remote server's hostname:passwd:remote server's name:port:conn class # (connection class):source ip # N: lines contain the following fields: # N:remote server's hostname:passwd:remote server's name:host mask:encryption # and/or compresion support:conn class # # "host mask" is the number of parts in *your* hostname to mask to. For # instance, with my servername being "csa.bu.edu", if I wanted to present # my servername to be "*.bu.edu" I would have a host-mask portion of "1". # # it is *strongly* advised that your C/N line passwords be different for # security's sake. # # ident is allowed in the server's hostname part of the field. # these lines tell the server to automatically (note the port number, that # means automatic connection) connect to mindijari.ca.us.dal.net: # C:dal...@no...:bigspark:nowhere.he.us.dal.net:7000:32 N:dal...@no...:bigalpha:nowhere.he.us.dal.net::32 # # This server's connection lines are more vanilla, masking the host to # *.toledolink.com (as described above): # C:*.dalnet.com:camelsrk00l:*.dalnet.com::32 N:*.dalnet.com:andsoarellamas:*.dalnet.com:1:32 # # This example displays the use of RC4 streaming encryption, denoted by the "E" # in the N: line. This MUST be matched on the remote server's N: line. # C:192.168.0.5:milk42cows:server.dal.net::32 N:192.168.0.5:milk42cows:server.dal.net:E:32 # # This example displays the use of zlib-compression for outgoing data. # It's generally a good idea to compress hub<->hub and hub->leaf, but # compressing leaf->hub is discouraged on large client servers due to # higher CPU usage. # C:172.16.12.3:milk42cows:server.dal.net::32 N:172.16.12.3:milk42cows:server.dal.net:Z:32 # # Here's an example using both compression and encryption. # C:10.182.3.2:milk42cows:server.dal.net::32 N:10.182.3.2:milk42cows:server.dal.net:EZ:32 # # In this example, the source ip is set to 192.168.10.200 when /connecting # out to another server. This is useful for servers which don't want to use # the main IP in the M: as the server<->server IP. Theoretically, you could # bind to a different ip for each server that you connect to. # C:192.168.2.1:milk42cows:server.dal.net::32:192.168.10.200 N:192.168.2.1:milk42cows:server.dal.net::32 # # K: [OBSOLETE]. Bans are now stored in the kline.conf file. # # These lines define user@host patterns to be banned from # this particular server (with an optional time field). Note that K: lines # are *not* global, and if you ban a user they can still use any other IRC # server (unless they have specifically been banned there as well). # # The time field (same as reason) is only used if you #define # TIMED_KLINES in config.h, and even then they are discouraged. # # the fields are defined as: # K:hostmask:reason:username # wildcards are permitted in any one of the fields, in other words, you can # K:*::* if you wanted (but your server wouldn't be used much ;-) # # Spaces are permitted in the reason field (you don't have to use _). # The /stats command has been modified to replace all spaces with _'s when # doing a /stats k. # # This K: line bans the username "hrose" (the wildcards are used to make # sure that any ident-checking character will match) on any machine from # the University of Boston. K:*.bu.edu:Hacking #dragonrealm:*hrose* # # This K: line bans any users from acs*.bu.edu between the hours of 8am # and 12pm and 1pm and 5pm (the time is always the server's local time). # Time-based K-lines such as this require TIMED_KLINES in config.h to be # #defined. K:acs*.bu.edu:0800-1200,1300-1700:* # Note that 24 hour time is used (no "AM" or "PM"). # # q: [DISCOURAGED]. These lines "quarantine" specified servers. Because # of the way they operates, the same q: lines MUST be installed by # everyone or the net will keep breaking. I CANNOT EMPHASIZE THIS ENOUGH. # Do NOT use q: lines lightly! # # This is NOT a nick q-line, if you wish to quarantine a NICK, see below. # # The fields are as follows: # q:*:reason why quarantine is in place:servername # q::this server is too slow and lags the net:cm5.eng.umd.edu # # Q: [OPTIONAL]. Different from the above type of q: line, these lines # prevent users on your server from picking certain nicks. This is useful # if your network has 'reserved' nicknames that should not be taken by # normal users. Note the difference in capitalization and BE CAREFUL! # # The fields are as follows: # Q:*:reason why quarantine is in place:nickname # # For example, DALnet servers MUST have the following lines at minimum: Q::Reserved for services:ChanServ Q::Reserved for services:NickServ Q::Reserved for services:MemoServ Q::Reserved for services:OperServ Q::Reserved for services:HelpServ # Q::Reserved for operators:DALnet Q::Reserved for operators:IRCop # # # Z: [DISCOURAGED]. These block ALL incoming connections from a certain # IP address mask. They can stop users who log on and issue the SERVER # command a couple of times just to annoy IRC operators. They are more # powerful than K-lines because they can stop users before they've had a # chance to register. This works on servers, SO BE VERY CAREFUL WITH # YOUR Z-LINE MASKS. Z-lines are a LAST RESORT. They are much too # dangerous and powerful to be using them instead of K-lines and akills. # # NOTE 1: Z-lines do NOT work on host names! Only IP addresses. # NOTE 2: Z-lines are part of /stats k. # NOTE 3: The :* at the end is REQUIRED. Not using it will cause both # ircd and chkconf to segfault without saying why. # # Syntax: # Z:IP mask:reason for zapping:* Z:127.0.0.1:Please don't log on from the local machine:* # # H: [OPTIONAL]. These lines define who you permit to act as a "hub" to # you (that is, who you permit to connect non-leafed servers to you). # # the first field may use wildcards, the third field *must* be an exact # match for a server's name (NOT a server's hostname, if they differ, the # server's name must be used). If the servername is a wildcard (e.g. *.au) # that is an acceptable name for the third field. # # The fields are as follows: # H:servers which are permitted entry::hub server # # Example, permit nowhere.ca.us.dal.net to allow any servers behind it to # connect: H:*::nowhere.he.us.dal.net # # Example, permit irc-2.mit.edu to allow any MIT servers behind it to # connect: H:*.mit.edu::irc-2.mit.edu # # P : [SUGGESTED] # port. The port line allows the server to listen on various ports for # connections. Fields in order: address mask to allow connections from, # address to bind to, unused, port to listen on # P:*:192.168.0.4::6665 P:128.32.*:::6665 P::209.42.128.252::31337 # # Listen on port 6665 on all available interfaces. Only allow connections from # net 128.32. This is checked before existance of other access is available. # 128.32.* == 128.32.0.0 where 0 is a wildcard. # Also listen to port 31337 on only 209.42.128.252. Allow connections from # anywhere. # # E : [OPTIONAL] # Exception lines. # Bypasses K: lines for matching clients. First arg is hostmask, # Second arg is unused. Third arg is optional username # Every Oper on a server should have one of these. # E:shell3.ba.best.com::jrsE:*.concentric.net::* # # F : [OPTIONAL] # Super-Exception Lines. # All of the features of an E: line plus bypasses class limits. # Use these carefully. # F:blown-rat.hotrod.com::*lusky # T : [OPTIONAL] # Proxy monitor info lines # You may override the default proxy monitor information # shown if WINGATE_NOTICE is defined. (This has no effect otherwise) # You should only have ONE T: line # # Note that http:// is automatically prefixed on the URL specified # # This T: line sets the host to proxy-checker and the URL to default #T:proxy-checker.myserver.dal.net # This T: line sets the host to default and the info URL to something #T::www.dal.net/proxies/ T:i.shoud.edit.example.conf:using.example/conf |
From: Juan B. <tu...@us...> - 2004-10-11 13:44:07
|
Update of /cvsroot/solidircd/Solid-dev/tools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23894/tools Added Files: Makefile.in convert_conf.c mkpasswd.c Log Message: Initial Import...Again --- NEW FILE: Makefile.in --- CC=@CC@ RM=@RM@ MV=@MV@ IRCDLIBS=@LIBS@ INSTALL=@INSTALL@ INSTALL_BIN=@INSTALL_PROGRAM@ INSTALL_DIR=@INSTALL_DIR@ INCLUDEDIR=-I../include mkpasswd_SOURCES = mkpasswd.c mkpasswd_OBJECTS = mkpasswd.o convert_conf_SOURCES = convert_conf.c convert_conf_OBJECTS = convert_conf.o ../src/match.o PROGRAMS = mkpasswd convert_conf all_OBJECTS = $(mkpasswd_OBJECTS) $(convert_conf_OBJECTS) all: mkpasswd convert_conf build: all mkpasswd: $(mkpasswd_OBJECTS) $(CC) -o mkpasswd $(mkpasswd_OBJECTS) $(IRCDLIBS) convert_conf: $(convert_conf_OBJECTS) $(CC) -o convert_conf $(convert_conf_OBJECTS) $(IRCDLIBS) clean: $(RM) -f $(all_OBJECTS) mkpasswd convert_conf *~ core distclean: clean $(RM) -f Makefile .c.o: $(CC) $(CFLAGS) $(INCLUDEDIR) -c $< install: @for i in $(PROGRAMS); do \ if test -f $(INSTALL_DIR)/$$i; then \ echo $(MV) $(INSTALL_DIR)/$$i $(INSTALL_DIR)/$$i.old; \ $(MV) $(INSTALL_DIR)/$$i $(INSTALL_DIR)/$$i.old; \ fi; \ echo $(INSTALL_BIN) $$i $(INSTALL_DIR); \ $(INSTALL_BIN) $$i $(INSTALL_DIR); \ done --- NEW FILE: mkpasswd.c --- /* simple password generator by Nelson Minar (mi...@re...) * copyright 1991, all rights reserved. * You can use this code as long as my name stays with it. */ #include "sys.h" #include <time.h> #ifndef lint /* static char *rcs_version = "$Id: mkpasswd.c,v 1.3 2004/10/11 13:42:49 tux316 Exp $"; */ #endif extern char *getpass(); extern char *crypt(); /* extern long random(); */ /* extern int srandom(unsigned); */ int main(argc, argv) int argc; char *argv[]; { static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./"; char salt[3]; char * plaintext; if (argc < 2) { srandom(time(0)); /* may not be the BEST salt, but its close */ salt[0] = saltChars[random() % 64]; salt[1] = saltChars[random() % 64]; salt[2] = 0; } else { salt[0] = argv[1][0]; salt[1] = argv[1][1]; salt[2] = '\0'; if ((strchr(saltChars, salt[0]) == NULL) || (strchr(saltChars, salt[1]) == NULL)) fprintf(stderr, "illegal salt %s\n", salt), exit(1); } plaintext = getpass("plaintext: "); printf("%s\n", crypt(plaintext, salt)); return 0; } --- NEW FILE: convert_conf.c --- /* tools/convert_conf.c * Copyright (c) 2004, Aaron Wiebe * and The Bahamut Development Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ [...1291 lines suppressed...] if(argc != 2) { printf("Useage: ./convert_conf ircd.conf > ircd.conf.new\n"); exit(0); } file = argv[1]; if((fd = openconf(file)) == -1) { printf("Cannot locate file %s\n", file); exit(-1); } (void) initconf(0, fd, 0); /* so far so good */ printconf(); exit(1); } |
Update of /cvsroot/solidircd/Solid-dev/zlib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23894/zlib Added Files: ChangeLog FAQ INDEX Makefile Makefile.in README adler32.c algorithm.txt compress.c configure crc32.c crc32.h deflate.c deflate.h example.c gzio.c infback.c inffast.c inffast.h inffixed.h inflate.c inflate.h inftrees.c inftrees.h minigzip.c trees.c trees.h uncompr.c zconf.h zconf.in.h zlib.3 zlib.h zutil.c zutil.h Log Message: Initial Import...Again --- NEW FILE: inffast.h --- /* inffast.h -- header to use inffast.c * Copyright (C) 1995-2003 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ /* WARNING: this file should *not* be used by applications. It is part of the implementation of the compression library and is subject to change. Applications should only use zlib.h. */ void inflate_fast OF((z_streamp strm, unsigned start)); --- NEW FILE: INDEX --- ChangeLog history of changes FAQ Frequently Asked Questions about zlib INDEX this file Makefile makefile for Unix (generated by configure) Makefile.in makefile for Unix (template for configure) README guess what algorithm.txt description of the (de)compression algorithm configure configure script for Unix zconf.in.h template for zconf.h (used by configure) msdos/ makefiles for MSDOS old/ makefiles for various architectures and zlib documentation files that have not yet been updated for zlib 1.2.x qnx/ makefiles for QNX win32/ makefiles for Windows zlib public header files (must be kept): zconf.h zlib.h private source files used to build the zlib library: adler32.c compress.c crc32.c crc32.h deflate.c deflate.h gzio.c infback.c inffast.c inffast.h inffixed.h inflate.c inflate.h inftrees.c inftrees.h trees.c trees.h uncompr.c zutil.c zutil.h source files for sample programs: example.c minigzip.c unsupported contribution by third parties See contrib/README.contrib --- NEW FILE: uncompr.c --- /* uncompr.c -- decompress a memory buffer * Copyright (C) 1995-2003 Jean-loup Gailly. * For conditions of distribution and use, see copyright notice in zlib.h */ /* @(#) $Id: uncompr.c,v 1.3 2004/10/11 13:42:50 tux316 Exp $ */ #define ZLIB_INTERNAL #include "zlib.h" /* =========================================================================== Decompresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be large enough to hold the entire uncompressed data. (The size of the uncompressed data must have been saved previously by the compressor and transmitted to the decompressor by some mechanism outside the scope of this compression library.) Upon exit, destLen is the actual size of the compressed buffer. This function can be used to decompress a whole file at once if the input file is mmap'ed. uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, or Z_DATA_ERROR if the input data was corrupted. */ int ZEXPORT uncompress (dest, destLen, source, sourceLen) Bytef *dest; uLongf *destLen; const Bytef *source; uLong sourceLen; { z_stream stream; int err; stream.next_in = (Bytef*)source; stream.avail_in = (uInt)sourceLen; /* Check for source > 64K on 16-bit machine: */ if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; stream.next_out = dest; stream.avail_out = (uInt)*destLen; if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; stream.zalloc = (alloc_func)0; stream.zfree = (free_func)0; err = inflateInit(&stream); if (err != Z_OK) return err; err = inflate(&stream, Z_FINISH); if (err != Z_STREAM_END) { inflateEnd(&stream); if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0)) return Z_DATA_ERROR; return err; } *destLen = stream.total_out; err = inflateEnd(&stream); return err; } --- NEW FILE: inftrees.h --- /* inftrees.h -- header to use inftrees.c * Copyright (C) 1995-2003 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ /* WARNING: this file should *not* be used by applications. It is part of the implementation of the compression library and is subject to change. Applications should only use zlib.h. */ /* Structure for decoding tables. Each entry provides either the information needed to do the operation requested by the code that indexed that table entry, or it provides a pointer to another table that indexes more bits of the code. op indicates whether the entry is a pointer to another table, a literal, a length or distance, an end-of-block, or an invalid code. For a table pointer, the low four bits of op is the number of index bits of that table. For a length or distance, the low four bits of op is the number of extra bits to get after the code. bits is the number of bits in this code or part of the code to drop off of the bit buffer. val is the actual byte to output in the case of a literal, the base length or distance, or the offset from the current table to the next table. Each entry is four bytes. */ typedef struct { unsigned char op; /* operation, extra bits, table bits */ unsigned char bits; /* bits in this part of the code */ unsigned short val; /* offset in table or code value */ } code; /* op values as set by inflate_table(): 00000000 - literal 0000tttt - table link, tttt != 0 is the number of table index bits 0001eeee - length or distance, eeee is the number of extra bits 01100000 - end of block 01000000 - invalid code */ /* Maximum size of dynamic tree. The maximum found in a long but non- exhaustive search was 1004 code structures (850 for length/literals and 154 for distances, the latter actually the result of an exhaustive search). The true maximum is not known, but the value below is more than safe. */ #define ENOUGH 1440 #define MAXD 154 /* Type of code to build for inftable() */ typedef enum { CODES, LENS, DISTS } codetype; extern int inflate_table OF((codetype type, unsigned short FAR *lens, unsigned codes, code FAR * FAR *table, unsigned FAR *bits, unsigned short FAR *work)); --- NEW FILE: configure --- #!/bin/sh # configure script for zlib. This script is needed only if # you wish to build a shared library and your system supports them, # of if you need special compiler, flags or install directory. # Otherwise, you can just use directly "make test; make install" # # To create a shared library, use "configure --shared"; by default a static # library is created. If the primitive shared library support provided here # does not work, use ftp://prep.ai.mit.edu/pub/gnu/libtool-*.tar.gz # # To impose specific compiler or flags or install directory, use for example: # prefix=$HOME CC=cc CFLAGS="-O4" ./configure # or for csh/tcsh users: # (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure) # LDSHARED is the command to be used to create a shared library # Incorrect settings of CC or CFLAGS may prevent creating a shared library. # If you have problems, try without defining CC and CFLAGS before reporting # an error. LIBS=libz.a LDFLAGS="-L. ${LIBS}" VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h` VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h` VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h` AR=${AR-"ar rc"} RANLIB=${RANLIB-"ranlib"} prefix=${prefix-/usr/local} exec_prefix=${exec_prefix-'${prefix}'} libdir=${libdir-'${exec_prefix}/lib'} includedir=${includedir-'${prefix}/include'} mandir=${mandir-'${prefix}/share/man'} shared_ext='.so' shared=0 gcc=0 old_cc="$CC" old_cflags="$CFLAGS" while test $# -ge 1 do case "$1" in -h* | --h*) echo 'usage:' echo ' configure [--shared] [--prefix=PREFIX] [--exec_prefix=EXPREFIX]' echo ' [--libdir=LIBDIR] [--includedir=INCLUDEDIR]' exit 0;; -p*=* | --p*=*) prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; -e*=* | --e*=*) exec_prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; -l*=* | --libdir=*) libdir=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; -i*=* | --includedir=*) includedir=`echo $1 | sed 's/[-a-z_]*=//'`;shift;; -p* | --p*) prefix="$2"; shift; shift;; -e* | --e*) exec_prefix="$2"; shift; shift;; -l* | --l*) libdir="$2"; shift; shift;; -i* | --i*) includedir="$2"; shift; shift;; -s* | --s*) shared=1; shift;; *) echo "unknown option: $1"; echo "$0 --help for help"; exit 1;; esac done test=ztest$$ cat > $test.c <<EOF extern int getchar(); int hello() {return getchar();} EOF test -z "$CC" && echo Checking for gcc... cc=${CC-gcc} cflags=${CFLAGS-"-O3"} # to force the asm version use: CFLAGS="-O3 -DASMV" ./configure case "$cc" in *gcc*) gcc=1;; esac if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then CC="$cc" SFLAGS=${CFLAGS-"-fPIC -O3"} CFLAGS="$cflags" case `(uname -s || echo unknown) 2>/dev/null` in Linux | linux | GNU | GNU/*) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1"};; CYGWIN* | Cygwin* | cygwin* ) EXE='.exe';; QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4 # (ala...@ic...) LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"};; HP-UX*) LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"} shared_ext='.sl' SHAREDLIB='libz.sl';; Darwin*) shared_ext='.dylib' SHAREDLIB=libz$shared_ext SHAREDLIBV=libz.$VER$shared_ext SHAREDLIBM=libz.$VER1$shared_ext LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name /usr/lib/$SHAREDLIBV -compatibility_version $VER2 -current_version $VER"} libdir='/usr/lib' includedir='/usr/include';; *) LDSHARED=${LDSHARED-"$cc -shared"};; esac else # find system name and corresponding cc options CC=${CC-cc} case `(uname -sr || echo unknown) 2>/dev/null` in HP-UX*) SFLAGS=${CFLAGS-"-O +z"} CFLAGS=${CFLAGS-"-O"} # LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"} LDSHARED=${LDSHARED-"ld -b"} shared_ext='.sl' SHAREDLIB='libz.sl';; IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."} CFLAGS=${CFLAGS-"-ansi -O2"} LDSHARED=${LDSHARED-"cc -shared"};; OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"} CFLAGS=${CFLAGS-"-O -std1"} LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"};; OSF1*) SFLAGS=${CFLAGS-"-O -std1"} CFLAGS=${CFLAGS-"-O -std1"} LDSHARED=${LDSHARED-"cc -shared"};; QNX*) SFLAGS=${CFLAGS-"-4 -O"} CFLAGS=${CFLAGS-"-4 -O"} LDSHARED=${LDSHARED-"cc"} RANLIB=${RANLIB-"true"} AR="cc -A";; SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "} CFLAGS=${CFLAGS-"-O3"} LDSHARED=${LDSHARED-"cc -dy -KPIC -G"};; SunOS\ 5*) SFLAGS=${CFLAGS-"-fast -xcg89 -KPIC -R."} CFLAGS=${CFLAGS-"-fast -xcg89"} LDSHARED=${LDSHARED-"cc -G"};; SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"} CFLAGS=${CFLAGS-"-O2"} LDSHARED=${LDSHARED-"ld"};; UNIX_System_V\ 4.2.0) SFLAGS=${CFLAGS-"-KPIC -O"} CFLAGS=${CFLAGS-"-O"} LDSHARED=${LDSHARED-"cc -G"};; UNIX_SV\ 4.2MP) SFLAGS=${CFLAGS-"-Kconform_pic -O"} CFLAGS=${CFLAGS-"-O"} LDSHARED=${LDSHARED-"cc -G"};; OpenUNIX\ 5) SFLAGS=${CFLAGS-"-KPIC -O"} CFLAGS=${CFLAGS-"-O"} LDSHARED=${LDSHARED-"cc -G"};; AIX*) # Courtesy of db...@ar... SFLAGS=${CFLAGS-"-O -qmaxmem=8192"} CFLAGS=${CFLAGS-"-O -qmaxmem=8192"} LDSHARED=${LDSHARED-"xlc -G"};; # send working options for other systems to su...@gz... *) SFLAGS=${CFLAGS-"-O"} CFLAGS=${CFLAGS-"-O"} LDSHARED=${LDSHARED-"cc -shared"};; esac fi SHAREDLIB=${SHAREDLIB-"libz$shared_ext"} SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"} SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"} if test $shared -eq 1; then echo Checking for shared library support... # we must test in two steps (cc then ld), required at least on SunOS 4.x if test "`($CC -c $SFLAGS $test.c) 2>&1`" = "" && test "`($LDSHARED -o $test$shared_ext $test.o) 2>&1`" = ""; then CFLAGS="$SFLAGS" LIBS="$SHAREDLIBV" echo Building shared library $SHAREDLIBV with $CC. elif test -z "$old_cc" -a -z "$old_cflags"; then echo No shared library support. shared=0; else echo 'No shared library support; try without defining CC and CFLAGS' shared=0; fi fi if test $shared -eq 0; then LDSHARED="$CC" echo Building static library $LIBS version $VER with $CC. else LDFLAGS="-L. ${SHAREDLIBV}" fi cat > $test.c <<EOF #include <unistd.h> int main() { return 0; } EOF if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then sed < zconf.in.h "/HAVE_UNISTD_H/s%0%1%" > zconf.h echo "Checking for unistd.h... Yes." else cp -p zconf.in.h zconf.h echo "Checking for unistd.h... No." fi cat > $test.c <<EOF #include <stdio.h> #include <stdarg.h> #include "zconf.h" int main() { #ifndef STDC choke me #endif return 0; } EOF if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()" cat > $test.c <<EOF #include <stdio.h> #include <stdarg.h> int mytest(char *fmt, ...) { char buf[20]; va_list ap; va_start(ap, fmt); vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); return 0; } int main() { return (mytest("Hello%d\n", 1)); } EOF if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then echo "Checking for vsnprintf() in stdio.h... Yes." cat >$test.c <<EOF #include <stdio.h> #include <stdarg.h> int mytest(char *fmt, ...) { int n; char buf[20]; va_list ap; va_start(ap, fmt); n = vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); return n; } int main() { return (mytest("Hello%d\n", 1)); } EOF if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then echo "Checking for return value of vsnprintf()... Yes." else CFLAGS="$CFLAGS -DHAS_vsnprintf_void" echo "Checking for return value of vsnprintf()... No." echo " WARNING: apparently vsnprintf() does not return a value. zlib" echo " can build but will be open to possible string-format security" echo " vulnerabilities." fi else CFLAGS="$CFLAGS -DNO_vsnprintf" echo "Checking for vsnprintf() in stdio.h... No." echo " WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" echo " can build but will be open to possible buffer-overflow security" echo " vulnerabilities." cat >$test.c <<EOF #include <stdio.h> #include <stdarg.h> int mytest(char *fmt, ...) { int n; char buf[20]; va_list ap; va_start(ap, fmt); n = vsprintf(buf, fmt, ap); va_end(ap); return n; } int main() { return (mytest("Hello%d\n", 1)); } EOF if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then echo "Checking for return value of vsprintf()... Yes." else CFLAGS="$CFLAGS -DHAS_vsprintf_void" echo "Checking for return value of vsprintf()... No." echo " WARNING: apparently vsprintf() does not return a value. zlib" echo " can build but will be open to possible string-format security" echo " vulnerabilities." fi fi else echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()" cat >$test.c <<EOF #include <stdio.h> int mytest() { char buf[20]; snprintf(buf, sizeof(buf), "%s", "foo"); return 0; } int main() { return (mytest()); } EOF if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then echo "Checking for snprintf() in stdio.h... Yes." cat >$test.c <<EOF #include <stdio.h> int mytest() { char buf[20]; return snprintf(buf, sizeof(buf), "%s", "foo"); } int main() { return (mytest()); } EOF if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then echo "Checking for return value of snprintf()... Yes." else CFLAGS="$CFLAGS -DHAS_snprintf_void" echo "Checking for return value of snprintf()... No." echo " WARNING: apparently snprintf() does not return a value. zlib" echo " can build but will be open to possible string-format security" echo " vulnerabilities." fi else CFLAGS="$CFLAGS -DNO_snprintf" echo "Checking for snprintf() in stdio.h... No." echo " WARNING: snprintf() not found, falling back to sprintf(). zlib" echo " can build but will be open to possible buffer-overflow security" echo " vulnerabilities." cat >$test.c <<EOF #include <stdio.h> int mytest() { char buf[20]; return sprintf(buf, "%s", "foo"); } int main() { return (mytest()); } EOF if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then echo "Checking for return value of sprintf()... Yes." else CFLAGS="$CFLAGS -DHAS_sprintf_void" echo "Checking for return value of sprintf()... No." echo " WARNING: apparently sprintf() does not return a value. zlib" echo " can build but will be open to possible string-format security" echo " vulnerabilities." fi fi fi cat >$test.c <<EOF #include <errno.h> int main() { return 0; } EOF if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then echo "Checking for errno.h... Yes." else echo "Checking for errno.h... No." CFLAGS="$CFLAGS -DNO_ERRNO_H" fi cat > $test.c <<EOF #include <sys/types.h> #include <sys/mman.h> #include <sys/stat.h> caddr_t hello() { return mmap((caddr_t)0, (off_t)0, PROT_READ, MAP_SHARED, 0, (off_t)0); } EOF if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then CFLAGS="$CFLAGS -DUSE_MMAP" echo Checking for mmap support... Yes. else echo Checking for mmap support... No. fi CPP=${CPP-"$CC -E"} case $CFLAGS in *ASMV*) if test "`nm $test.o | grep _hello`" = ""; then CPP="$CPP -DNO_UNDERLINE" echo Checking for underline in external names... No. else echo Checking for underline in external names... Yes. fi;; esac rm -f $test.[co] $test $test$shared_ext # udpate Makefile sed < Makefile.in " /^CC *=/s#=.*#=$CC# /^CFLAGS *=/s#=.*#=$CFLAGS# /^CPP *=/s#=.*#=$CPP# /^LDSHARED *=/s#=.*#=$LDSHARED# /^LIBS *=/s#=.*#=$LIBS# /^SHAREDLIB *=/s#=.*#=$SHAREDLIB# /^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV# /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM# /^AR *=/s#=.*#=$AR# /^RANLIB *=/s#=.*#=$RANLIB# /^EXE *=/s#=.*#=$EXE# /^prefix *=/s#=.*#=$prefix# /^exec_prefix *=/s#=.*#=$exec_prefix# /^libdir *=/s#=.*#=$libdir# /^includedir *=/s#=.*#=$includedir# /^mandir *=/s#=.*#=$mandir# /^LDFLAGS *=/s#=.*#=$LDFLAGS# " > Makefile --- NEW FILE: zlib.h --- /* zlib.h -- interface of the 'zlib' general purpose compression library version 1.2.1, November 17th, 2003 Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. [...1161 lines suppressed...] #define inflateInit2(strm, windowBits) \ inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) #define inflateBackInit(strm, windowBits, window) \ inflateBackInit_((strm), (windowBits), (window), \ ZLIB_VERSION, sizeof(z_stream)) #if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) struct internal_state {int dummy;}; /* hack for buggy compilers */ #endif ZEXTERN const char * ZEXPORT zError OF((int err)); ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z)); ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void)); #ifdef __cplusplus } #endif #endif /* ZLIB_H */ --- NEW FILE: Makefile.in --- # Makefile for zlib # Copyright (C) 1995-2003 Jean-loup Gailly. # For conditions of distribution and use, see copyright notice in zlib.h # To compile and test, type: # ./configure; make test # The call of configure is optional if you don't have special requirements # If you wish to build zlib as a shared library, use: ./configure -s # To use the asm code, type: # cp contrib/asm?86/match.S ./match.S # make LOC=-DASMV OBJA=match.o # To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type: # make install # To install in $HOME instead of /usr/local, use: # make install prefix=$HOME CC=cc CFLAGS=-O #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 #CFLAGS=-g -DDEBUG #CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ # -Wstrict-prototypes -Wmissing-prototypes LDFLAGS=libz.a LDSHARED=$(CC) CPP=$(CC) -E LIBS=libz.a SHAREDLIB=libz.so SHAREDLIBV=libz.so.1.2.1 SHAREDLIBM=libz.so.1 AR=ar rc RANLIB=ranlib TAR=tar SHELL=/bin/sh EXE= prefix = /usr/local exec_prefix = ${prefix} libdir = ${exec_prefix}/lib includedir = ${prefix}/include mandir = ${prefix}/share/man man3dir = ${mandir}/man3 OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \ zutil.o inflate.o infback.o inftrees.o inffast.o OBJA = # to use the asm code: make OBJA=match.o TEST_OBJS = example.o minigzip.o all: example$(EXE) minigzip$(EXE) build: all check: test test: all @LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \ echo hello world | ./minigzip | ./minigzip -d || \ echo ' *** minigzip test FAILED ***' ; \ if ./example; then \ echo ' *** zlib test OK ***'; \ else \ echo ' *** zlib test FAILED ***'; \ fi libz.a: $(OBJS) $(OBJA) $(AR) $@ $(OBJS) $(OBJA) -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 match.o: match.S $(CPP) match.S > _match.s $(CC) -c _match.s mv _match.o match.o rm -f _match.s $(SHAREDLIBV): $(OBJS) $(LDSHARED) -o $@ $(OBJS) rm -f $(SHAREDLIB) $(SHAREDLIBM) ln -s $@ $(SHAREDLIB) ln -s $@ $(SHAREDLIBM) example$(EXE): example.o $(LIBS) $(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) minigzip$(EXE): minigzip.o $(LIBS) $(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) install: $(LIBS) -@if [ ! -d $(exec_prefix) ]; then mkdir -p $(exec_prefix); fi -@if [ ! -d $(includedir) ]; then mkdir -p $(includedir); fi -@if [ ! -d $(libdir) ]; then mkdir -p $(libdir); fi -@if [ ! -d $(man3dir) ]; then mkdir -p $(man3dir); fi cp zlib.h zconf.h $(includedir) chmod 644 $(includedir)/zlib.h $(includedir)/zconf.h cp $(LIBS) $(libdir) cd $(libdir); chmod 755 $(LIBS) -@(cd $(libdir); $(RANLIB) libz.a || true) >/dev/null 2>&1 cd $(libdir); if test -f $(SHAREDLIBV); then \ rm -f $(SHAREDLIB) $(SHAREDLIBM); \ ln -s $(SHAREDLIBV) $(SHAREDLIB); \ ln -s $(SHAREDLIBV) $(SHAREDLIBM); \ (ldconfig || true) >/dev/null 2>&1; \ fi cp zlib.3 $(man3dir) chmod 644 $(man3dir)/zlib.3 # The ranlib in install is needed on NeXTSTEP which checks file times # ldconfig is for Linux uninstall: cd $(includedir); \ cd $(libdir); rm -f libz.a; \ if test -f $(SHAREDLIBV); then \ rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \ fi cd $(man3dir); rm -f zlib.3 mostlyclean: clean clean: rm -f *.o *~ example$(EXE) minigzip$(EXE) \ libz.* foo.gz so_locations \ _match.s maketree contrib/infback9/*.o maintainer-clean: distclean distclean: clean cp -p Makefile.in Makefile cp -p zconf.in.h zconf.h rm -f .DS_Store tags: etags *.[ch] depend: makedepend -- $(CFLAGS) -- *.[ch] # DO NOT DELETE THIS LINE -- make depend depends on it. adler32.o: zlib.h zconf.h compress.o: zlib.h zconf.h crc32.o: crc32.h zlib.h zconf.h deflate.o: deflate.h zutil.h zlib.h zconf.h example.o: zlib.h zconf.h gzio.o: zutil.h zlib.h zconf.h inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inftrees.o: zutil.h zlib.h zconf.h inftrees.h minigzip.o: zlib.h zconf.h trees.o: deflate.h zutil.h zlib.h zconf.h trees.h uncompr.o: zlib.h zconf.h zutil.o: zutil.h zlib.h zconf.h --- NEW FILE: zconf.h --- /* zconf.h -- configuration of the zlib compression library * Copyright (C) 1995-2003 Jean-loup Gailly. * For conditions of distribution and use, see copyright notice in zlib.h */ /* @(#) $Id: zconf.h,v 1.3 2004/10/11 13:42:50 tux316 Exp $ */ #ifndef ZCONF_H #define ZCONF_H /* * If you *really* need a unique prefix for all types and library functions, * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. */ #ifdef Z_PREFIX # define deflateInit_ z_deflateInit_ # define deflate z_deflate # define deflateEnd z_deflateEnd # define inflateInit_ z_inflateInit_ # define inflate z_inflate # define inflateEnd z_inflateEnd # define deflateInit2_ z_deflateInit2_ # define deflateSetDictionary z_deflateSetDictionary # define deflateCopy z_deflateCopy # define deflateReset z_deflateReset # define deflatePrime z_deflatePrime # define deflateParams z_deflateParams # define deflateBound z_deflateBound # define inflateInit2_ z_inflateInit2_ # define inflateSetDictionary z_inflateSetDictionary # define inflateSync z_inflateSync # define inflateSyncPoint z_inflateSyncPoint # define inflateCopy z_inflateCopy # define inflateReset z_inflateReset # define compress z_compress # define compress2 z_compress2 # define compressBound z_compressBound # define uncompress z_uncompress # define adler32 z_adler32 # define crc32 z_crc32 # define get_crc_table z_get_crc_table # define Byte z_Byte # define uInt z_uInt # define uLong z_uLong # define Bytef z_Bytef # define charf z_charf # define intf z_intf # define uIntf z_uIntf # define uLongf z_uLongf # define voidpf z_voidpf # define voidp z_voidp #endif #if defined(__MSDOS__) && !defined(MSDOS) # define MSDOS #endif #if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) # define OS2 #endif #if defined(_WINDOWS) && !defined(WINDOWS) # define WINDOWS #endif #if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) # define WIN32 #endif #if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) # if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) # ifndef SYS16BIT # define SYS16BIT # endif # endif #endif /* * Compile with -DMAXSEG_64K if the alloc function cannot allocate more * than 64k bytes at a time (needed on systems with 16-bit int). */ #ifdef SYS16BIT # define MAXSEG_64K #endif #ifdef MSDOS # define UNALIGNED_OK #endif #ifdef __STDC_VERSION__ # ifndef STDC # define STDC # endif # if __STDC_VERSION__ >= 199901L # ifndef STDC99 # define STDC99 # endif # endif #endif #if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) # define STDC #endif #if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) # define STDC #endif #if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) # define STDC #endif #if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) # define STDC #endif #if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ # define STDC #endif #ifndef STDC # ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ # define const /* note: need a more gentle solution here */ # endif #endif /* Some Mac compilers merge all .h files incorrectly: */ #if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) # define NO_DUMMY_DECL #endif /* Maximum value for memLevel in deflateInit2 */ #ifndef MAX_MEM_LEVEL # ifdef MAXSEG_64K # define MAX_MEM_LEVEL 8 # else # define MAX_MEM_LEVEL 9 # endif #endif /* Maximum value for windowBits in deflateInit2 and inflateInit2. * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files * created by gzip. (Files created by minigzip can still be extracted by * gzip.) */ #ifndef MAX_WBITS # define MAX_WBITS 15 /* 32K LZ77 window */ #endif /* The memory requirements for deflate are (in bytes): (1 << (windowBits+2)) + (1 << (memLevel+9)) that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) plus a few kilobytes for small objects. For example, if you want to reduce the default memory requirements from 256K to 128K, compile with make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" Of course this will generally degrade compression (there's no free lunch). The memory requirements for inflate are (in bytes) 1 << windowBits that is, 32K for windowBits=15 (default value) plus a few kilobytes for small objects. */ /* Type declarations */ #ifndef OF /* function prototypes */ # ifdef STDC # define OF(args) args # else # define OF(args) () # endif #endif /* The following definitions for FAR are needed only for MSDOS mixed * model programming (small or medium model with some far allocations). * This was tested only with MSC; for other MSDOS compilers you may have * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, * just define FAR to be empty. */ #ifdef SYS16BIT # if defined(M_I86SM) || defined(M_I86MM) /* MSC small or medium model */ # define SMALL_MEDIUM # ifdef _MSC_VER # define FAR _far # else # define FAR far # endif # endif # if (defined(__SMALL__) || defined(__MEDIUM__)) /* Turbo C small or medium model */ # define SMALL_MEDIUM # ifdef __BORLANDC__ # define FAR _far # else # define FAR far # endif # endif #endif #if defined(WINDOWS) || defined(WIN32) /* If building or using zlib as a DLL, define ZLIB_DLL. * This is not mandatory, but it offers a little performance increase. */ # ifdef ZLIB_DLL # if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) # ifdef ZLIB_INTERNAL # define ZEXTERN extern __declspec(dllexport) # else # define ZEXTERN extern __declspec(dllimport) # endif # endif # endif /* ZLIB_DLL */ /* If building or using zlib with the WINAPI/WINAPIV calling convention, * define ZLIB_WINAPI. * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. */ # ifdef ZLIB_WINAPI # ifdef FAR # undef FAR # endif # include <windows.h> /* No need for _export, use ZLIB.DEF instead. */ /* For complete Windows compatibility, use WINAPI, not __stdcall. */ # define ZEXPORT WINAPI # ifdef WIN32 # define ZEXPORTVA WINAPIV # else # define ZEXPORTVA FAR CDECL # endif # endif #endif #if defined (__BEOS__) # ifdef ZLIB_DLL # ifdef ZLIB_INTERNAL # define ZEXPORT __declspec(dllexport) # define ZEXPORTVA __declspec(dllexport) # else # define ZEXPORT __declspec(dllimport) # define ZEXPORTVA __declspec(dllimport) # endif # endif #endif #ifndef ZEXTERN # define ZEXTERN extern #endif #ifndef ZEXPORT # define ZEXPORT #endif #ifndef ZEXPORTVA # define ZEXPORTVA #endif #ifndef FAR # define FAR #endif #if !defined(__MACTYPES__) typedef unsigned char Byte; /* 8 bits */ #endif typedef unsigned int uInt; /* 16 bits or more */ typedef unsigned long uLong; /* 32 bits or more */ #ifdef SMALL_MEDIUM /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ # define Bytef Byte FAR #else typedef Byte FAR Bytef; #endif typedef char FAR charf; typedef int FAR intf; typedef uInt FAR uIntf; typedef uLong FAR uLongf; #ifdef STDC typedef void const *voidpc; typedef void FAR *voidpf; typedef void *voidp; #else typedef Byte const *voidpc; typedef Byte FAR *voidpf; typedef Byte *voidp; #endif #if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */ # include <sys/types.h> /* for off_t */ # include <unistd.h> /* for SEEK_* and off_t */ # ifdef VMS # include <unixio.h> /* for off_t */ # endif # define z_off_t off_t #endif #ifndef SEEK_SET # define SEEK_SET 0 /* Seek from beginning of file. */ # define SEEK_CUR 1 /* Seek from current position. */ # define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ #endif #ifndef z_off_t # define z_off_t long #endif #if defined(__OS400__) #define NO_vsnprintf #endif #if defined(__MVS__) # define NO_vsnprintf # ifdef FAR # undef FAR # endif #endif /* MVS linker does not support external names larger than 8 bytes */ #if defined(__MVS__) # pragma map(deflateInit_,"DEIN") # pragma map(deflateInit2_,"DEIN2") # pragma map(deflateEnd,"DEEND") # pragma map(deflateBound,"DEBND") # pragma map(inflateInit_,"ININ") # pragma map(inflateInit2_,"ININ2") # pragma map(inflateEnd,"INEND") # pragma map(inflateSync,"INSY") # pragma map(inflateSetDictionary,"INSEDI") # pragma map(compressBound,"CMBND") # pragma map(inflate_table,"INTABL") # pragma map(inflate_fast,"INFA") # pragma map(inflate_copyright,"INCOPY") #endif #endif /* ZCONF_H */ --- NEW FILE: inffast.c --- /* inffast.c -- fast decoding * Copyright (C) 1995-2003 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ #include "zutil.h" #include "inftrees.h" #include "inflate.h" #include "inffast.h" #ifndef ASMINF /* Allow machine dependent optimization for post-increment or pre-increment. Based on testing to date, Pre-increment preferred for: - PowerPC G3 (Adler) - MIPS R5000 (Randers-Pehrson) Post-increment preferred for: - none No measurable difference: - Pentium III (Anderson) - 68060 (Nikl) */ #ifdef POSTINC # define OFF 0 # define PUP(a) *(a)++ #else # define OFF 1 # define PUP(a) *++(a) #endif /* Decode literal, length, and distance codes and write out the resulting literal and match bytes until either not enough input or output is available, an end-of-block is encountered, or a data error is encountered. When large enough input and output buffers are supplied to inflate(), for example, a 16K input buffer and a 64K output buffer, more than 95% of the inflate execution time is spent in this routine. Entry assumptions: state->mode == LEN strm->avail_in >= 6 strm->avail_out >= 258 start >= strm->avail_out state->bits < 8 On return, state->mode is one of: LEN -- ran out of enough output space or enough available input TYPE -- reached end of block code, inflate() to interpret next block BAD -- error in block data Notes: - The maximum input bits used by a length/distance pair is 15 bits for the length code, 5 bits for the length extra, 15 bits for the distance code, and 13 bits for the distance extra. This totals 48 bits, or six bytes. Therefore if strm->avail_in >= 6, then there is enough input to avoid checking for available input while decoding. - The maximum bytes that a single length/distance pair can output is 258 bytes, which is the maximum length that can be coded. inflate_fast() requires strm->avail_out >= 258 for each loop to avoid checking for output space. */ void inflate_fast(strm, start) z_streamp strm; unsigned start; /* inflate()'s starting value for strm->avail_out */ { struct inflate_state FAR *state; unsigned char FAR *in; /* local strm->next_in */ unsigned char FAR *last; /* while in < last, enough input available */ unsigned char FAR *out; /* local strm->next_out */ unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ unsigned char FAR *end; /* while out < end, enough space available */ unsigned wsize; /* window size or zero if not using window */ unsigned whave; /* valid bytes in the window */ unsigned write; /* window write index */ unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ unsigned long hold; /* local strm->hold */ unsigned bits; /* local strm->bits */ code const FAR *lcode; /* local strm->lencode */ code const FAR *dcode; /* local strm->distcode */ unsigned lmask; /* mask for first level of length codes */ unsigned dmask; /* mask for first level of distance codes */ code this; /* retrieved table entry */ unsigned op; /* code bits, operation, extra bits, or */ /* window position, window bytes to copy */ unsigned len; /* match length, unused bytes */ unsigned dist; /* match distance */ unsigned char FAR *from; /* where to copy match from */ /* copy state to local variables */ state = (struct inflate_state FAR *)strm->state; in = strm->next_in - OFF; last = in + (strm->avail_in - 5); out = strm->next_out - OFF; beg = out - (start - strm->avail_out); end = out + (strm->avail_out - 257); wsize = state->wsize; whave = state->whave; write = state->write; window = state->window; hold = state->hold; bits = state->bits; lcode = state->lencode; dcode = state->distcode; lmask = (1U << state->lenbits) - 1; dmask = (1U << state->distbits) - 1; /* decode literals and length/distances until end-of-block or not enough input data or output space */ do { if (bits < 15) { hold += (unsigned long)(PUP(in)) << bits; bits += 8; hold += (unsigned long)(PUP(in)) << bits; bits += 8; } this = lcode[hold & lmask]; dolen: op = (unsigned)(this.bits); hold >>= op; bits -= op; op = (unsigned)(this.op); if (op == 0) { /* literal */ Tracevv((stderr, this.val >= 0x20 && this.val < 0x7f ? "inflate: literal '%c'\n" : "inflate: literal 0x%02x\n", this.val)); PUP(out) = (unsigned char)(this.val); } else if (op & 16) { /* length base */ len = (unsigned)(this.val); op &= 15; /* number of extra bits */ if (op) { if (bits < op) { hold += (unsigned long)(PUP(in)) << bits; bits += 8; } len += (unsigned)hold & ((1U << op) - 1); hold >>= op; bits -= op; } Tracevv((stderr, "inflate: length %u\n", len)); if (bits < 15) { hold += (unsigned long)(PUP(in)) << bits; bits += 8; hold += (unsigned long)(PUP(in)) << bits; bits += 8; } this = dcode[hold & dmask]; dodist: op = (unsigned)(this.bits); hold >>= op; bits -= op; op = (unsigned)(this.op); if (op & 16) { /* distance base */ dist = (unsigned)(this.val); op &= 15; /* number of extra bits */ if (bits < op) { hold += (unsigned long)(PUP(in)) << bits; bits += 8; if (bits < op) { hold += (unsigned long)(PUP(in)) << bits; bits += 8; } } dist += (unsigned)hold & ((1U << op) - 1); hold >>= op; bits -= op; Tracevv((stderr, "inflate: distance %u\n", dist)); op = (unsigned)(out - beg); /* max distance in output */ if (dist > op) { /* see if copy from window */ op = dist - op; /* distance back in window */ if (op > whave) { strm->msg = (char *)"invalid distance too far back"; state->mode = BAD; break; } from = window - OFF; if (write == 0) { /* very common case */ from += wsize - op; if (op < len) { /* some from window */ len -= op; do { PUP(out) = PUP(from); } while (--op); from = out - dist; /* rest from output */ } } else if (write < op) { /* wrap around window */ from += wsize + write - op; op -= write; if (op < len) { /* some from end of window */ len -= op; do { PUP(out) = PUP(from); } while (--op); from = window - OFF; if (write < len) { /* some from start of window */ op = write; len -= op; do { PUP(out) = PUP(from); } while (--op); from = out - dist; /* rest from output */ } } } else { /* contiguous in window */ from += write - op; if (op < len) { /* some from window */ len -= op; do { PUP(out) = PUP(from); } while (--op); from = out - dist; /* rest from output */ } } while (len > 2) { PUP(out) = PUP(from); PUP(out) = PUP(from); PUP(out) = PUP(from); len -= 3; } if (len) { PUP(out) = PUP(from); if (len > 1) PUP(out) = PUP(from); } } else { from = out - dist; /* copy direct from output */ do { /* minimum length is three */ PUP(out) = PUP(from); PUP(out) = PUP(from); PUP(out) = PUP(from); len -= 3; } while (len > 2); if (len) { PUP(out) = PUP(from); if (len > 1) PUP(out) = PUP(from); } } } else if ((op & 64) == 0) { /* 2nd level distance code */ this = dcode[this.val + (hold & ((1U << op) - 1))]; goto dodist; } else { strm->msg = (char *)"invalid distance code"; state->mode = BAD; break; } } else if ((op & 64) == 0) { /* 2nd level length code */ this = lcode[this.val + (hold & ((1U << op) - 1))]; goto dolen; } else if (op & 32) { /* end-of-block */ Tracevv((stderr, "inflate: end of block\n")); state->mode = TYPE; break; } else { strm->msg = (char *)"invalid literal/length code"; state->mode = BAD; break; } } while (in < last && out < end); /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ len = bits >> 3; in -= len; bits -= len << 3; hold &= (1U << bits) - 1; /* update state and return */ strm->next_in = in + OFF; strm->next_out = out + OFF; strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); strm->avail_out = (unsigned)(out < end ? 257 + (end - out) : 257 - (out - end)); state->hold = hold; state->bits = bits; return; } /* inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): - Using bit fields for code structure - Different op definition to avoid & for extra bits (do & for table bits) - Three separate decoding do-loops for direct, window, and write == 0 - Special case for distance > 1 copies to do overlapped load and store copy - Explicit branch predictions (based on measured branch probabilities) - Deferring match copy and interspersed it with decoding subsequent codes - Swapping literal/length else - Swapping window/direct else - Larger unrolled copy loops (three is about right) - Moving len -= 3 statement into middle of loop */ #endif /* !ASMINF */ --- NEW FILE: Makefile --- # Makefile for zlib # Copyright (C) 1995-2003 Jean-loup Gailly. # For conditions of distribution and use, see copyright notice in zlib.h # To compile and test, type: # ./configure; make test # The call of configure is optional if you don't have special requirements # If you wish to build zlib as a shared library, use: ./configure -s # To use the asm code, type: # cp contrib/asm?86/match.S ./match.S # make LOC=-DASMV OBJA=match.o # To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type: # make install # To install in $HOME instead of /usr/local, use: # make install prefix=$HOME CC=cc CFLAGS=-O #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 #CFLAGS=-g -DDEBUG #CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ # -Wstrict-prototypes -Wmissing-prototypes LDFLAGS=libz.a LDSHARED=$(CC) CPP=$(CC) -E LIBS=libz.a SHAREDLIB=libz.so SHAREDLIBV=libz.so.1.2.1 SHAREDLIBM=libz.so.1 AR=ar rc RANLIB=ranlib TAR=tar SHELL=/bin/sh EXE= prefix = /usr/local exec_prefix = ${prefix} libdir = ${exec_prefix}/lib includedir = ${prefix}/include mandir = ${prefix}/share/man man3dir = ${mandir}/man3 OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \ zutil.o inflate.o infback.o inftrees.o inffast.o OBJA = # to use the asm code: make OBJA=match.o TEST_OBJS = example.o minigzip.o all: example$(EXE) minigzip$(EXE) build: all check: test test: all @LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \ echo hello world | ./minigzip | ./minigzip -d || \ echo ' *** minigzip test FAILED ***' ; \ if ./example; then \ echo ' *** zlib test OK ***'; \ else \ echo ' *** zlib test FAILED ***'; \ fi libz.a: $(OBJS) $(OBJA) $(AR) $@ $(OBJS) $(OBJA) -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 match.o: match.S $(CPP) match.S > _match.s $(CC) -c _match.s mv _match.o match.o rm -f _match.s $(SHAREDLIBV): $(OBJS) $(LDSHARED) -o $@ $(OBJS) rm -f $(SHAREDLIB) $(SHAREDLIBM) ln -s $@ $(SHAREDLIB) ln -s $@ $(SHAREDLIBM) example$(EXE): example.o $(LIBS) $(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) minigzip$(EXE): minigzip.o $(LIBS) $(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) install: $(LIBS) -@if [ ! -d $(exec_prefix) ]; then mkdir -p $(exec_prefix); fi -@if [ ! -d $(includedir) ]; then mkdir -p $(includedir); fi -@if [ ! -d $(libdir) ]; then mkdir -p $(libdir); fi -@if [ ! -d $(man3dir) ]; then mkdir -p $(man3dir); fi cp zlib.h zconf.h $(includedir) chmod 644 $(includedir)/zlib.h $(includedir)/zconf.h cp $(LIBS) $(libdir) cd $(libdir); chmod 755 $(LIBS) -@(cd $(libdir); $(RANLIB) libz.a || true) >/dev/null 2>&1 cd $(libdir); if test -f $(SHAREDLIBV); then \ rm -f $(SHAREDLIB) $(SHAREDLIBM); \ ln -s $(SHAREDLIBV) $(SHAREDLIB); \ ln -s $(SHAREDLIBV) $(SHAREDLIBM); \ (ldconfig || true) >/dev/null 2>&1; \ fi cp zlib.3 $(man3dir) chmod 644 $(man3dir)/zlib.3 # The ranlib in install is needed on NeXTSTEP which checks file times # ldconfig is for Linux uninstall: cd $(includedir); \ cd $(libdir); rm -f libz.a; \ if test -f $(SHAREDLIBV); then \ rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \ fi cd $(man3dir); rm -f zlib.3 mostlyclean: clean clean: rm -f *.o *~ example$(EXE) minigzip$(EXE) \ libz.* foo.gz so_locations \ _match.s maketree contrib/infback9/*.o maintainer-clean: distclean distclean: clean cp -p Makefile.in Makefile cp -p zconf.in.h zconf.h rm -f .DS_Store tags: etags *.[ch] depend: makedepend -- $(CFLAGS) -- *.[ch] # DO NOT DELETE THIS LINE -- make depend depends on it. adler32.o: zlib.h zconf.h compress.o: zlib.h zconf.h crc32.o: crc32.h zlib.h zconf.h deflate.o: deflate.h zutil.h zlib.h zconf.h example.o: zlib.h zconf.h gzio.o: zutil.h zlib.h zconf.h inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inftrees.o: zutil.h zlib.h zconf.h inftrees.h minigzip.o: zlib.h zconf.h trees.o: deflate.h zutil.h zlib.h zconf.h trees.h uncompr.o: zlib.h zconf.h zutil.o: zutil.h zlib.h zconf.h --- NEW FILE: trees.h --- /* header created automatically with -DGEN_TREES_H */ local const ct_data static_ltree[L_CODES+2] = { {{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}}, {{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}}, {{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}}, {{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}}, {{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}}, {{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}}, {{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}}, {{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}}, {{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}}, {{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}}, {{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}}, {{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}}, {{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}}, {{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}}, {{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}}, {{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}}, {{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}}, {{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}}, {{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}}, {{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}}, {{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}}, {{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}}, {{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}}, {{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}}, {{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}}, {{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}}, {{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}}, {{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}}, {{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}}, {{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}}, {{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}}, {{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}}, {{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}}, {{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}}, {{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}}, {{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}}, {{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}}, {{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}}, {{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}}, {{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}}, {{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}}, {{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}}, {{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}}, {{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}}, {{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}}, {{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}}, {{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}}, {{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}}, {{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}}, {{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}}, {{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}}, {{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}}, {{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}}, {{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}}, {{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}}, {{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}}, {{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}}, {{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}} }; local const ct_data static_dtree[D_CODES] = { {{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}}, {{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}}, {{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}}, {{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}}, {{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}}, {{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}} }; const uch _dist_code[DIST_CODE_LEN] = { 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 }; const uch _length_code[MAX_MATCH-MIN_MATCH+1]= { 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28 }; local const int base_length[LENGTH_CODES] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0 }; local const int base_dist[D_CODES] = { 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576 }; --- NEW FILE: inftrees.c --- /* inftrees.c -- generate Huffman trees for efficient decoding * Copyright (C) 1995-2003 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ #include "zutil.h" #include "inftrees.h" #define MAXBITS 15 const char inflate_copyright[] = " inflate 1.2.1 Copyright 1995-2003 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot include such an acknowledgment, I would appreciate that you keep this copyright string in the executable of your product. */ /* Build a set of tables to decode the provided canonical Huffman code. The code lengths are lens[0..codes-1]. The result starts at *table, whose indices are 0..2^bits-1. work is a writable array of at least lens shorts, which is used as a work area. type is the type of code to be generated, CODES, LENS, or DISTS. On return, zero is success, -1 is an invalid code, and +1 means that ENOUGH isn't enough. table on return points to the next available entry's address. bits is the requested root table index bits, and on return it is the actual root table index bits. It will differ if the request is greater than the longest code or if it is less than the shortest code. */ int inflate_table(type, lens, codes, table, bits, work) codetype type; unsigned short FAR *lens; unsigned codes; code FAR * FAR *table; unsigned FAR *bits; unsigned short FAR *work; { unsigned len; /* a code's length in bits */ unsigned sym; /* index of code symbols */ unsigned ... [truncated message content] |
From: Juan B. <tu...@us...> - 2004-10-11 13:42:54
|
Update of /cvsroot/solidircd/Solid-dev/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23894/doc Added Files: Bahamut-team CHANGES_1.4 CODING_STANDARD Makefile.in README modules.txt opers.txt pcrepattern.html reference.conf server-version-info template.conf Log Message: Initial Import...Again --- NEW FILE: opers.txt --- The following outlines the features and commands that Bahamut has for operators of the server. - 11/13/02 - srd (sr...@da...) Based upon opers.txt for ircd-hybrid by: ThemBones (kraemer@u.washington.edu) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Usermodes: (* designates that the umode is oper only) USERMODE DESCRIPTION ----------------------------------------------------------------- +i - Designates the user is 'invisible'. +w - User can recieve wallops messages. +g - User can recieve globops messages. +s - User can recieve server messages and oper kills. +k - User can see server kill messages. +r - User is marked as being registered/identified to services. +R - User will not recieve messages from -r clients. *+O - Designates the user as being a local IRC Operator. *+o - Designates the user as being a global IRC Operator. *+a - Designates the user as being a services administrator. *+A - Designates the user as being a server administrator. *+c - User can see client connections and exits. *+d - User can see debug messages. *+e - User can see dccallow failure notices. *+f - User can see flood messages. *+F - Can bypass the ircd's recvq throttling *+h - Operator is available for help, being listed in /stats P *+K - Recieve U:lined server kill notices *+j - Recieve rejected drone connection notices *+m - user can see spambot notices. *+n - User can see routing notices. *+y - User can see certain information requests. (e.g. /stats) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Oper Commands: (+ indicates that /quote must be used with ircII) COMMAND - USAGE and DESCRIPTION ------------------------------------------------------------------- SQUIT - SQUIT <server> [reason] Splits <server> away from your side of the net with [reason]. KILL - KILL <nick> <reason> Disconnects user <nick> from the IRC server he/she is connected to with reason <reason>. Local Opers can only kill clients on his/her server. Global Opers can kill clients on any server on the IRC network. STATS - STATS <letter> [server|nick] Queries server [server] (or your own server if no server parameter is given) for info corresponing to <letter>. LETTER (* = Oper only.) ------ (^ = Can be configured to be oper only.) c - Shows C/N lines ^ d - Shows D lines ^ e - Shows E lines ^ f - Shows F lines * h - Shows H lines i - Shows I lines K - Shows K lines (or matched klines) k - Shows temporary K lines (or matched temp klines) * L - Shows IP and generic info about [nick] * l - Shows hostname and generic info about [nick] m - Shows commands and their usage ^ o - Shows O/o lines p - Shows opers connected and their idle times r - Shows resource usage by ircd (only in DEBUGMODE) * t - Shows generic server stats * U - Shows U:lined servers. u - Shows server uptime v - Shows connected servers and their idle times y - Shows Y lines * z - Shows memory stats ? - Shows connected servers and sendq info about them CONNECT - CONNECT <server_A> [port] [server_B] When [server_B] is used, CONNECT asks [server_B] to connect to <server_A>. Global Opers only. When [server_B] is not used, CONNECT trys to connect your server to <server_A>. Local and Global Opers. When [port] is used, the connection will be attempted to [port]. When [port] is not used, 6667 is used as a default. + WALLOPS - WALLOPS :<message> Sends a WALLOPS message of <message> to all opers who are umode +w and +z (see above) Server sent wallops go to all users who are umode +w, oper or not. + LOCOPS - LOCOPS :<message> Sends an LOCOPS message of <message> to all opers on local server who are umode +g + GLOBOPS - GLOBOPS :<message> Sends an GLOBOPS message of <message> to all opers on the network who are umode +g + CHATOPS - CHATOPS :<message> Sends an CHATOPS message of <message> to all opers on the network who are umode +b TRACE - TRACE [server|nick] TRACE shows client info about [server|nick] or about the server you are on if no [server|nick] is given. All users that use TRACE can see the path to [server|nick] if given and all servers and opers connected, as well as the connection class they fall into. Opers can see all clients connected to a server with TRACE as well as the connection class they fall into. REHASH - REHASH [option] When no [option] is given, ircd will re-read the ircd.conf file. [option] can be one of the following: DNS - Re-read the /etc/resolv.conf file IP - Reloads the IP hash for the new and improved ACKPATCH. Should never need to be used. TKLINES - Clears temporary klines GC - Performs garbage collecting of excess memory. MOTD - Re-reads MOTD file THROTTLES - Clears connection throttles RESTART - RESTART Restarts the IRC server. CLOSE - CLOSE Close any connections from clients who have not fully registered yet. DIE - DIE [reason] Terminates the IRC server with optional reason [reason] + HASH - HASH Shows some stats about ircd's internal hashes. + DNS - DNS Shows some stats about ircd's asynchronous resolving code + KLINE - KLINE <nick|user@host> :[reason] Adds a KLINE to the ircd.conf or klines.conf file which will ban the specified user from using that server. The banned client will receive a message saying he/she is banned with reason [reason] For a temporary KLINE, length of kline is given in minutes as the first parameter i.e. KLINE 10 <nick|user@host> :cool off for 10 minutes + UNKLINE - UNKLINE <user@host> -- If compiled with UNKLINE -- Will attempt to unkline the given <user@host> + SET - SET <option> <value> <option> can be one of the following: MAX - Sets the number of max connections to <value>. (This number cannot exceed HARD_FDLIMIT in config.h) -- The following three are if compiled with FLUD -- FLUDNUM - Sets the number of flud messages to trip flud alarm to <value> FLUDTIME - Sets the number of seconds in which FLUDNUM msgs must occur to <value> FLUDBLOCK - Sets the number of seconds to block fluds to <value> --- NEW FILE: CHANGES_1.4 --- Changes for 1.4.36 - Fix bug that caused bans to be expired ~1 million times on startup - Remove opers from fdlists that are set -o via SVSMODE - Only show IPs of unknowns or clients to opers in /trace - Use OpenSSL instead of GMP for encryption (much cleaner! :) - Remove non-SSJOIN support - Allow for a server to detect it is out of synch, and request a channel resynch from an upstream hub - Fix remote /stats k/K/a bug (it works now :) - Optimize some sendto() things that are used a lot - Add usermode +I (server hiding) - Fix /whois, /admin, /who, etc to not allow a user to discover which server a +I user is on - Don't let *MY* opers /kill U: lined things (but pass on kills destined for them already) - Chatops don't require you to be +gb (now, just +b) - Various typos fixed - No longer complain if a user is already on a +i channel, and they /join it - Use hash tables for very common res functions, which were taking up as much as 80% of CPU time in a pooled server - add a command, /userip, for opers. Works just like /userhost. - Allow /who +c @#channel +#channel @+#channel for more refined /who listings - Add a /who flag for opers, +/-t, clients who have been on for more/less than <param> seconds - Don't let opers get stuck in weird anti-flooding bugs (oper recvq lock bug) - When an oper deopers, they are returned to the appropriate client class - Allow opers to /who +l <class> for local clients (class = Y: class) - Send optimizations for high-volume server connections - Remove fdlists for lists of clients and instead use linked lists for things: - recvq clients, instead of searching through *all* clients - listing clients, ditto - Remove certain things which actually caused poor server operation: - HTM - relax sending out when we have high incoming traffic. This actually causes a nasty bursty cycle. - busy clients This was taking up a great deal of CPU time to save CPU time. Hmm. - Rewrite the entire base socket engine; now supports kqueue on freebsd. - Poll() and select() use persistant states, so these should be twice as fast as well. - Stop remapping fds. What's the point? - /stats w reports fd map (don't use this on a large server! :) - /stats z is more informative - Hide the source servers of numerics (mask them with me.name) - Hide /kill sources in quit messages (still in +s, though) and in messages sent to killed client - Hide split sources in quit messages - Add a LINKSCONTROL command which allows a services-controlled /links list - Better server traffic accounting in /stats ? (uses a moving average instead of a plain average) - Fix a bug in which connecting servers will always remove a key if the channel exists (argh!) - Correctly propogate cmode +O - Show more squelched info in /whois to opers - Be smarter about broken FD_SETSIZE implementations - Crash if we try to free something twice in the block allocator, produces a useful coredump instead of confused opers and an unrelated crash hours later. - ability to lock /lusers output via services for a dynamic amount of time - Fix 'ghost channels' where I create a channel but none of the users in it exist to me - Allow /who +i ip/cidr and /who +I (show IPs only) for opers - SAJOIN, like SAMODE for joining channels. Joins through all modes, sends a globop. - Local servers notify the channel of an invite, not the server the invitee is on - Remove the drone module, replace it with a powerful and generic module system that has event-based hooks. - Streamline some privmsg stuff, fix a few bugs. - Fix a bug in which an IP ban on 1.2.3.4* wouldn't work. - Dehybridize some things. - SVSMODE +T, which sets a "client type" that can be seen in a /who +T <clienttype> - Don't allow ',' in channel keys - Fix umode +r/-r notification to clients - Pretty print some things in /stats ? - Remove support for non-NOQUIT servers - Modes sent from servers come from the local server now - Complain about /who +<flag>, where <flag> isn't valid, instead of sending the entire client list - Move SQLINES and SGLINES into another hash-based structure for fast lookups - Add SVSHOLD, which adds a local temp qline for a nick for N seconds, intended to replace enforcers in services. - Make HTM work on outgoing traffic (the part of HTM that limits sending lots of expensive things like /list) - Don't complain about servers relinking that look 'juped' (don't complain if the server that already exists is U: lined, unless I actually have a .conf U: line for it!) - Compile with GCC3! - Nicer umode separation, ie what used to come in as *** Notice -- comes in as: +d : *** Debug -- +y : *** Spy -- +c : *** Client -- - Channel join throttling (cmode +j, but disabled for user changes by default to be compatible with pre-1.4.36), defaults to 8 network non-split joins in 4 seconds before saying channel is full. - Fix the DEBUGMODE pattern string exploit Changes for 1.4.35 - Source address support on /connect problem fixed - Squelching added, umode +x or +X (+X is silent squelch), this prevents the user from doing certain online tasks such as privmsg. Meant to be set by a U: lined server or client using SVSMODE. - Complete rewrite of the kline/akill/zline system. (s)zlines no longer exist. K: lines set on IP addresses without username portions (or *) are treated as Z: lines used to be. CIDR banning is now supported in all K: line/akill bans (ie, 204.127.54.112/28). - +F usermode bypasses ircd's recvq throttling for opers - Improved handling under high load situations - Ban munching bug introduced in 1.4.34 is fixed - /rehash GC now works - lots of sendto_ops_lev changed to sendto_realops_lev for speed - Fix a bug where we'd try to target limit messages by a server and write to locations of memory that weren't ours :) - Fix O: flags that just didn't work as advertised - Moved rejection notices to umode +j (re_j_ection) - Moved KILL messages from U: lined clients to umode +K (oper only) - Support for a loadable drone module, compile with --enable-dronemodule, ircd tries to load drone.so from DPATH on startup or on /rehash drones, read src/drone.c to view the interface - /stats t shows more information - Various code cleanup and readability fixes - Users and opers will now recieve a different output to '/who ?'. - When 'HELP_FORWARD_HS' is defined, non-opers /quote help requests will be forwarded to HelpServ. Changes for 1.4.34 - Don't use FD_SETSIZE at all if USE_POLL is defined - Fixed a server negotiation bug that could break apart the network when autoconnects and user connects were done at the same instant - Fix a bug where PART messages were not sent to 'userB' when 'userA's QUIT message was squelched on more than 1 channel - Fixed split riding ability left over from hybrid (where a channel with a newer TS could 'take over' if it had ops and the older TS channel did not) - Fixed 'topic riding' ability that allowed topics from newer TS'd channels to propogate. - Fixed channel ban desync on netjoin - all channel modes are now sent with a TS - Target limiting anti-spam measure installed - Reject acebot-style drones by default - Minor fixes to prevent annoying auth error messages - Minor configuration/installation fixes -- WARNING -- 1.4.34 may cause desynch in net joins if used on a network with newer servers! This is because the algorithm for determining which channel modes to keep when servers rejoin has changed. You should upgrade your entire network to 1.4.34. -- WARNING -- Changes for 1.4.33 - Only ops can invite on channels - Various desync-causing memory-corrupting bugs fixed - Fixed a problem with perm klines where they werent removing the user - Moved to zlib 1.1.4, as 1.1.3 was vulnerable (but not directly in ircd) - Fixed minor SVSKILL wrong direction issue. - Fixed a wierd desync issue with sqlined channels - Fixed /stats l's sendM statistic - it wasnt working properly with crypt Changes for 1.4.32 - Throttling modified to be more friendly and punish repeat offenders - Major bug causing memory corruption (coredumps as well as duplicate or missing messages) fixed - Lag on signon fixed (where a user connects, but the server chooses to ignore the user until something is sent to them) - Fixed a netsplit detection bug when a leaf server splits from its hub (for no_chanops_when_split) - Fix for .conf based K: lines (that just didn't work) Changes for 1.4.31 - Connection Throttling Patch from Chip Norkus Changes for 1.4.30 - Updated 'make profile'; now on glibc2 systems, you can kill -USR1 the process and get a current profile dump, and restart profiling - Kline/akill/zline matching has been revamped, which should help greatly with lag under heavy user loads with many klines/akills/zlines - Deny sending .zip files and . files (with a null extension) to prevent the spreading of exploits Changes for 1.4.29 - Umode +R to not allow msgs from non registered nicks - chanmode +R extended to deny msgs for -r clients in channel - +c/+R extended to squelch quit messages with color/from non reg'd nicks - wrapped HTM detection code in #ifndef HUB - Added channel qline reason display - Removed LITTLE_I_LINES as with services they are dumb - Massive code reformatting - Moved some oper notices around to reduce unnecessary traffic - klines match IP field too now, for NICKIP akills. - Changed default mask to @DALnet so it's known it's a fake address - This is the last 1.4 release planned. For real this time. Changes for 1.4.28 - Minor bug fixes Changes for 1.4.27 - Fixed key bug - Fixed showstopper remoteclientsonlygetpiecesofaClient bug Changes for 1.4.25 - Hide Nick Collisions (Revealing services location) - Make 005 show more info - Add who +i to search by IP - Hide stats L for non opers - Add NICKIP CAPAB for services to get nicks - Channel QLINES from Ryan - Removed * from valid key char Changes for 1.4.23 - Some error message changes/fixes - Fixed a cloaking bug - Added support to source from a different local IP address when /connecting out to another server; useful for servers which don't want to use the main IP in the M: line as the server<->server IP - To use: Add :<local IP> to the end of a C: line - E.g.: C:192.168.0.1:pass:server.dal.net:7325:10:192.168.10.200 - Block DCCs of .htm/.html files due to script viruses being spread in this way - Prompt for max channels per user and oper pw encryption in the config script - Example.conf brought up to date - Display proper error messages when you can't join a channel - Fixed the +a (away) who flag; its behavior was reversed from what it should have been Changes for 1.4.22 - Fixed a bug where a server with a bad name trying to connect or trying to be used in /links could crash Bahamut Changes for 1.4.21 - rate-squelch zipinbuf complain messages - turn off yet more DNS debug messages (forward<>reverse query error) - oper hostmasking no longer pollutes IPHASH (ouch) - configure script reworked to search better for libgmp.a - configure script bugs fixed Changes for 1.4.20 - /whois works correctly for hostmasked opers. growl. - configure gives more information about gmp errors. Changes for 1.4.19 (released, but not an advised upgrade) - Fixed a crashing bug with /whois - Fixed a crashing bug with /oper (I need to remember how to handle nulls correctly :) - Imported res fixes from bahamut-stable - made configure work for solaris to find gmp Changes for 1.4.18 (never officially released) - Changed level of some debug messages to not go to all opers Changes for 1.4.17 (never officially released) - Oper hostmasking: Your I: line password is oper<.password> where password is optional. You then /server <yourserver> <yourport> <portpass:>opernick:operpass Anyone +A can see your real username, host, and IP. Changes for 1.4.16 - deal with long-time buffer overflow when more than MAXADDR A DNS answers are received. Changes for 1.4.15 (never officially released) - Crash in res.c fixed (due to wrong question received under heavy load) - name resolution prevents ircd dns cache pollution Changes for 1.4.14 (previous release was 1.4.12) - RC4 streaming encryption added, diffie hellman key exchange - Requires GMP library - Vulnerable to man-in-the-middle attacks - Requires 'E' flag in the N: line on both servers. - zlib-compressed links added - Requires 'Z' flag in the N: line of a server that wishes to zip outgoing links to that link. Changes for 1.4.12 (previous release was 1.4.8): - /stats ?, v fixed to hide u-lined servers - /lusers fixed to hide u-lined servers - name resolution is more strict --- NEW FILE: template.conf --- # ========================================================================= # QUICKSTART: server configuration (see reference.conf for details) # ========================================================================= /* server name and administration info */ global { name not.configured; # IRC name of the server info "located on earth"; # A short info line admin { "An unconfigured server"; # Three information lines sent "An unknown administrator"; # in reply to ADMIN command "email@somewhere.earth"; }; }; /* server options */ options { network_name unconfigured; # A name is needed even if not linked local_kline admin@server; # Contact email for server bans show_links; # Show servers in LINKS allow_split_ops; # Give ops in empty channels // use these options when services is on the network services_name services.name; # Name of services (NS/CS/MS/RS) server stats_name stats.name; # Name of stats (OS/SS/HS) server network_kline admin@net; # Contact email for network bans nshelpurl "http://help"; # Nick registration help page // if you need to link more than 1 server, uncomment the following line # servtype hub; /* Solid IRCd specific */ rquit; # Allow only registered nicks to specify quit messages? /* Oper Hostmasking */ sadmin_host "Admin.VidGameChat.Net"; # Services Admin's hostmask admin_host "Admin.VidGameChat.Net"; # Server Admin's hostmask ircop_host "IRCop.VidGameChat.Net"; # IRC Operator's hostmask locop_host "LocOp.VidGameChat.Net"; # Local Operator's hostmask /* User hostmasking */ host_domain "vidgamechat.net"; host_prefix "VGC"; /* Set the following modes on connect? */ auto_umode_R; auto_umode_v; }; /* where to listen for connections */ port { port 6667; # Port to listen on bind 127.0.0.1; # IP address to listen on }; /* more listening ports */ port { port 6668; bind 127.0.0.1; }; port { port 6669; bind 127.0.0.1; }; port { port 7000; bind 127.0.0.1; }; /* allow clients to connect */ allow { host *@*; # Allow anyone class users; # Place them in the users class }; /* connection class for users */ class { name users; # Class name maxusers 100; # Maximum connections pingfreq 90; # Check idle connections every N seconds maxsendq 100000; # 100KB send buffer limit }; /* connection class for server operators */ class { name opers; pingfreq 90; maxsendq 500000; # 500KB limit for opers }; /* the server administrator */ oper { name admin; # Username passwd secret; # Password access OARD; # Server Administrator host *@192.168.0.*; # Must be connecting from here host *@10.64.64.*; # Or from here // insert other other hostmasks here class opers; # Belongs in the opers class }; /* for services */ super { "services.name"; "stats.name"; // insert any other special servers here }; /* reserved nicknames */ restrict { type nick; mask "NickServ"; reason "reserved for services"; }; restrict { type nick; mask "ChanServ"; reason "reserved for services"; }; restrict { type nick; mask "MemoServ"; reason "reserved for services"; }; restrict { type nick; mask "RootServ"; reason "reserved for services"; }; restrict { type nick; mask "OperServ"; reason "reserved for services"; }; restrict { type nick; mask "StatServ"; reason "reserved for services"; }; restrict { type nick; mask "HelpServ"; reason "reserved for services"; }; restrict { type nick; mask "services"; reason "reserved for services"; }; /* === these next two blocks are for linking to a hub === */ /* class for uplink hub */ class { name hub; pingfreq 120; # Idle check every 2 minutes connfreq 300; # Try autoconnect every 5 minutes maxsendq 1000000; # 1MB send queue maxlinks 1; # Autoconnect to only 1 hub at a time }; /* our uplink hub */ connect { name hub.name; # Hub's IRC name host 172.16.4.2; # Hub's IP address port 7325; # Autoconnect to hub's port 7325 bind 127.0.0.1; # We connect from this IP apasswd secret; # We accept this password from hub cpasswd secret; # We send this password to hub flags H; # It is a hub class hub; # Use hub class }; /* === these next two blocks are for linking to services === */ /* class for services */ class { name services; pingfreq 60; # Idle check every minute maxsendq 5000000; # 5MB backlog buffer }; /* our services */ connect { name services.name; # Services' IRC name host 127.0.0.1; # IP address services connects from apasswd secret; # Password services sends cpasswd secret; # Same password class services; }; --- NEW FILE: modules.txt --- Bahamut Hook Module System [2003-10-13] First released in Bahamut 1.4.36, the hook module system permits outside modules to be 'hooked' into bahamut without having to modify the core source tree. This is to allow other groups to write code to benefit IRCD that serve specific functions. As an example, some groups write modules to block common trojan / drone patterns. Once a module has been built, hooking it into the system is fairly simple. The components that are used, are: 1. A modules/ directory where the shared modules themselves are stored To enable the hook module system, you must issue --enable-hook-modules at configuration time. Example: ./configure --enable-hook-modules (As of bahamut 1.8, this is implicitely assumed.) --- 1. modules/ directory This directory stores the shared modules that you wish to hook into bahamut. The modules/ directory is found in the same directory as your server configuration files (eg: bahamut-release/modules) --- USER COMMANDS TO CONTROL MODULES There are a few new commands to control modules. They are all accessed by using /quote module <command>. /quote module LIST List all modules loaded in memory /quote module HOOKS List where modules are hooked into ircd /quote module LOAD <name> Load a module into memory /quote module UNLOAD <name> Unload a module from memory To use the above commands, you must be an IRC Operator at the time of issuing the command (umode +o). To issue LOAD/UNLOAD commands, you must be a Server Adminstrator (umode +A) --- NEW FILE: pcrepattern.html --- <html> <head> <title>pcrepattern specification</title> </head> <body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB"> This HTML document has been generated automatically from the original man page. If there is any nonsense in it, please consult the man page, in case the conversion went wrong.<br> <ul> <li><a name="TOC1" href="#SEC1">PCRE REGULAR EXPRESSION DETAILS</a> <li><a name="TOC2" href="#SEC2">BACKSLASH</a> <li><a name="TOC3" href="#SEC3">CIRCUMFLEX AND DOLLAR</a> <li><a name="TOC4" href="#SEC4">FULL STOP (PERIOD, DOT)</a> <li><a name="TOC5" href="#SEC5">MATCHING A SINGLE BYTE</a> <li><a name="TOC6" href="#SEC6">SQUARE BRACKETS</a> <li><a name="TOC7" href="#SEC7">POSIX CHARACTER CLASSES</a> <li><a name="TOC8" href="#SEC8">VERTICAL BAR</a> <li><a name="TOC9" href="#SEC9">INTERNAL OPTION SETTING</a> <li><a name="TOC10" href="#SEC10">SUBPATTERNS</a> [...1568 lines suppressed...] </P> <P> <pre> (?C1)\dabc(?C2)def </PRE> </P> <P> During matching, when PCRE reaches a callout point (and <i>pcre_callout</i> is set), the external function is called. It is provided with the number of the callout, and, optionally, one item of data originally supplied by the caller of <b>pcre_exec()</b>. The callout function may cause matching to backtrack, or to fail altogether. A complete description of the interface to the callout function is given in the <a href="pcrecallout.html"><b>pcrecallout</b></a> documentation. </P> <P> Last updated: 03 February 2003 <br> Copyright © 1997-2003 University of Cambridge. --- NEW FILE: Makefile.in --- #************************************************************************ #* IRC - Internet Relay Chat, Makefile #* Copyright (C) 1990, Jarkko Oikarinen #* #* This program is free software; you can redistribute it and/or modify #* it under the terms of the GNU General Public License as published by #* the Free Software Foundation; either version 1, or (at your option) #* any later version. #* #* This program is distributed in the hope that it will be useful, #* but WITHOUT ANY WARRANTY; without even the implied warranty of #* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #* GNU General Public License for more details. #* #* You should have received a copy of the GNU General Public License #* along with this program; if not, write to the Free Software #* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #*/ RM=@RM@ MV=@MV@ INSTALL=@INSTALL@ INSTALL_DATA=@INSTALL_DATA@ INSTALL_DIR=@INSTALL_DIR@ FILES=opers.txt reference.conf template.conf all: build: clean: install: all @for i in $(FILES); do \ if test -f $(INSTALL_DIR)/$$i; then \ echo $(MV) $(INSTALL_DIR)/$$i $(INSTALL_DIR)/$$i.old; \ $(MV) $(INSTALL_DIR)/$$i $(INSTALL_DIR)/$$i.old; \ fi; \ echo $(INSTALL_DATA) $$i $(INSTALL_DIR); \ $(INSTALL_DATA) $$i $(INSTALL_DIR); \ done -@if [ ! -f $(INSTALL_DIR)/ircd.motd ] ; then \ echo "ircd.motd does not exist, creating..."; \ touch $(INSTALL_DIR)/ircd.motd; \ echo "This is the default Bahamut MOTD" >> $(INSTALL_DIR)/ircd.motd; \ fi distclean: clean $(RM) -f Makefile --- NEW FILE: server-version-info --- When you type /version you will often see something like this: bahamut-1.8(02). server aABCdFhistTY/HoS TS5ow-r[RELEASE] RPL1 NP[U] Ever wondered what those funny chars mean after the version number? Well here they are: The first set before the '/' are compile-time flags: 'a' config.h ANTI_SPAMBOT 'A' config.h ALWAYS_SEND_DURING_SPLIT 'B' config.h MAXBUFFERS 'C' config.h CMDLINE_CONFIG 'd' config.h DO_IDENTD 'D' config.h DEBUGMODE 'E' configure encryption support enabled 'F' config.h FLUD 'h' config.h SHOW_HEADERS 'i' config.h SHOW_INVISIBLE_LUSERS 'I' config.h NO_DEFAULT_INVISIBLE 'J' config.h NO_DEFAULT_JOINRATE 'M' configure module support enabled 'N' config.h DNS_DEBUG 'r' config.h DENY_SERVICES_MSGS 's' config.h SUPER_TARGETS_ONLY 't' config.h MSG_TARGET_LIMIT 'T' config.h THROTTLE_ENABLE 'u' config.h IRCII_KLUDGE 'Y' config.h USE_SYSLOG The first set after the '/' are runtime flags: 'H' ircd.conf servtype = hub 'm' ircd.conf short_motd 'o' ircd.conf allow_split_ops 'p' ircd.conf crypt_oper_pass 'S' ircd.conf servtype = serviceshub 'w' ircd.conf wgmonhost/wgmonurl The next part, 'TS5ow', is mostly historical. The release tag is provided after it. If 'RPL#' shows up, oper hostmasking is enabled. The number is the level: 1 All +A users can see real IP 2 Local +A users can see real IP 3 Noone can see real IP (but it's still logged) The last part, 'NP[]', contains network information hiding flags: 'A' config.h FORCE_EVERYONE_HIDDEN 'I' config.h ALLOW_HIDDEN_OPERS 'K' config.h HIDE_KILL_ORIGINS 'L' ircd.conf no show_links (hiding LINKS) 'M' config.h HIDE_SERVERMODE_ORIGINS 'N' config.h HIDE_NUMERIC_SOURCE 'O' config.h NO_USER_OPERTARGETED_COMMANDS 'P' config.h HIDE_SPLIT_SERVERS 'S' config.h NO_USER_STATS 'T' config.h NO_USER_TRACE 'U' config.h HIDEULINEDSERVS 'W' config.h NO_USER_SERVERNOTICES --- NEW FILE: README --- User Guide for Bahamut 1.4 ^^^^ ^^^^^ ^^^ ^^^^^^^ ^^^ Contents: 1) Introduction 2) What's new in 1.4 3) Installing Bahamut ---------------------------------------------------------------- Introuction ^^^^^^^^^^^ Welcome to Bahamut 1.4, the next generation of ircds. With one of the most advanced ircds available, you'll be online and aceepting users in no time. Although bahamut is strictly written for the DALnet IRC network, the code is made available publicly so that others may benefit from its features and stability. Online resource are also made available for those needing assistance with setting up and maintaining your server. Mainly there is documentation that is made available at our website http://bahamut.dal.net/ to email support which you can obtain by sending a mssage to dal...@da.... The dal...@da... email address is a public mailing list where you can subscribe to by sending an email to maj...@da... with the message of 'subscribe dalnet-src' with no topic, and without the ''s. If at anytime you do find bugs or errors in the program, we ask that you send those bug reports to ir...@da... so that we may correct those in future version. ---------------------------------------------------------------- What's new in 1.4 ^^^^^^ ^^^ ^^ ^^^ If you're just upgrading from bahamut 1.2 or earlier, you'll notice alot of major changes and improvement in the way the server operates. Main features which have been pronounced in the 1.4 versions include: * Compression and encryption of server to server communications which uses zlib, and rc4 respectivly * Hostmasking for IRC Operators, where a static hostmask is set and operators can use by using a specialized I:line. The real ip can be viewable by clients with the usermode +A (server administrator). * A new function called DCCALLOW blocks users from sending files which could be potential viruses from untrusted users. To allow a blocked filetype to be recieved on a users end they may simply use the '/dccallow [+|-]user' command. * A new variety of channelmodes which includes: +O - Restricts a channel to allow only server operators to join a specific channel. +R - Denies a user not using a registered nick (or not identified with services) to join a specific channel. +M - Denies a user not using a registered nick (or not identified with services) to speak in a specific channel. * A new variety of usermodes which includes: +x - Squelches a user so that they may not perform various commands like privmsg. This usermode sends a notice to the user letting them know they are being squelched. This usermode is only settable by a ULined server. +X - This usermode works in pretty much the same manner as '+x' but does not imform the user that they are being squelched. This usermode also is only settable by ULined servers. +F - Bypasses the ircd's recieveQ throttling. This usermode can only be used by opers with the 'F' flag in their OLine. +j - Client rejection notices are now only sent to opers using this usermode. +K - Kill messages from ULined servers are now only sent to opers with the umode '+K' which should help clear up the regular usermode '+k'. * Channel QLines is much like nickname QLines where it denies a user from joining a specific channel. * Improved handling under high loads. For a complete list of changes made, feel free to consult the changes pages on the Bahamut website. ---------------------------------------------------------------- Installing Bahamut ^^^^^^^^^^ ^^^^^^^ If you currently have able experience in setting up an ircd, then this process should be pretty familiar to you. This section is aimed torwared the novice user, and a more detailed version of this is available on the bahamut website at the url: http://bahamut.dal.net/documentation/install.php To start off, if you do not already have a copy of bahamut go ahead and download that now from either ftp.dal.net or the bahamut website bahamut.dal.net. Once you've downloaded the bahamut tar file, you will start out by decompressing the file you downloaded by using gunzip and tar. The reccomended command syntax is: 'gunzip -c bahamut-* | tar xvf -' Now you'll change over to the newly created directory where you'll run the two pre-setup script in the following order: './configure' and then './config'. The last 'config' script will ask you various questions in which will determine how and where your irc server will operate from. For those of you who have experience with limited or more advanced coding you may wish to look over 'include/config.h' to make modifications in areas where they are not covered in the 'config' script. After you've done this, you'll run 'make' where at this point you'll be compiling the source code and you'll have your actual ircd program. If you've decided to put your ircd files in a different directory such as '/home/user/ircd' be sure to make sure that the directory you intend to run from is created, and finally run the 'make install' script. After that, you'll edit your ircd.conf file for various settings such as the servers name, client classes, and server operators. In no time, you'll be up and running. ---------------------------------------------------------------- $Id: README,v 1.3 2004/10/11 13:42:44 tux316 Exp $ ---------------------------------------------------------------- --- NEW FILE: CODING_STANDARD --- The following are the Coding Standards for Bahamut. 1) No C++ style comments are allowed in the code tree. 2) All indentations shall be 4 characters long - no tab characters '\t' 3) All variable names shall begin with a lowercase letter. 4) All variables defined as macros shall be in all Upper Case 5) All preprocessor directive shall be at char posistion 0 with no spaces after the #. 6) all conditional/loop statements shall have the brace on a line by themselves --- NEW FILE: Bahamut-team --- Bahamut was taken on by a group of loosely knit coders that decided that Dreamforge just was eating up too much CPU to handle DALnet's growing user base. Originally starting out as the DFhybrid project, it slowly grew into the Bahamut project as the peices started falling together. Bahamut is based upon the hybrid IRCd, developed for EFnet, and we most surely wouldn't be where we are today without the dedication of the coders that developed that IRCd. The Hybrid team is outlined in the file included with this distribution, in doc/Hybrid-team. Please look over that file, those people are as much to credit for this as the people listed here. People who have supported the Bahamut project with code, support, or testing are, in alphabetical order: Aaron Wiebe epi...@da... Chip Norkus wd...@da... David Friedman dr...@da... David Knepper da...@da... David Parton sed...@da... Diane Bruce db...@ko... Ian Westcott ra...@da... Jason Slagle rai...@ba... Karthik Arumugham ka...@ka... Kevin Turner ke...@da... Lucas Madar lu...@da... Mark Salerno ms...@da... Peter Wood do...@da... Ryan Smith xp...@da... Sven Nielsen dal...@da... Thanks goes out to all those not listed here, your help is much appreciated. Feel free to contact the Bahamut team with any bugs, bug fixes, and the like at: co...@da... Also, there is a public mailing list for bahamut: dal...@da.... This list would be the place to send suggestions and comments regarding Bahamut. And, last but not least, the Bahamut website is at http://bahamut.dal.net. Thanks for the Support, The Bahamut Coding Team --- NEW FILE: reference.conf --- /* * Bahamut IRCd, doc/reference.conf * * Originally written by Trevor Talbot (Quension) in April 2004. * $Id: reference.conf,v 1.1 2004/10/11 13:42:44 tux316 Exp $ * * The configuration format consists of blocks, each containing name-value * pairs, tags, or string data. It is designed to be easily readable by * both human and ircd. * * A block consists of a block name, an opening '{' brace, statements, a * closing '}' brace, and a ';' semicolon. A statement consists of a * name, possibly followed by a value, and ending with a semicolon. * Strings that contain special characters or whitespace can be surrounded * by '"' double quotes. All elements of the configuration are separated * by whitespace, and can be packed on one line, or broken up over several * lines. * */ # Comments are supported in three forms: /* C style multi-line */ # shell style single-line // C++ style single-line /* * A sample block: * * block { * name value; # A statement with a name value * name 123; # A statement with a number value * name "hello world"; # A statement with a string value * tag; # A simple tag * "will code for food"; # A simple string * }; * * The parser also understands a special include directive outside of a * block context: * * include path/to/file.conf; */ ########################################################################### # Global [REQUIRED] # The Global block defines information about the server itself. # This block is required for the server to start. # # Old conf format equivalents: # M:name::info # X:dpass:rpass global { // required tokens name not.configured; # The IRC name of the server info "located on earth"; # A short info line // optional tokens dpass secret; # Password for DIE command rpass secret; # Password for RESTART command // the optional Admin block may also be specified here }; # The DIE and RESTART commands can optionally require passwords to be # supplied, to help prevent accidents. If the dpass and rpass tokens are # not specified, no passwords are needed. # # The Admin block may be nested here. (This is currently a purely # organizational/astetic option. This will probably change in future # releases. -epi) # # The server name may only be changed by a server restart. The info line # can be changed on rehash, but will not propagate to other linked servers. # # There must be exactly one Global block. ########################################################################### ########################################################################### # Admin [SUGGESTED] # The Admin block defines up to 3 information lines for the ADMIN command. # It may also exist inside the Global block. # # Old conf format equivalents: # A:line 1:line 2:line 3 admin { // optional tokens "An unconfigured server"; # Info line #1 "An unknown administrator"; # Info line #2 "email@somewhere.earth"; # Info line #3 }; # Not all lines are required. There may be only one Admin block. ########################################################################### ########################################################################### # Options [OPTIONAL] # The Options block configures various options for the server itself. # This block is recommended for networks other than DALnet. # # Old conf format equivalents: # T:wgmonhost:wgmonurl options { // optional tokens network_name unconfigured; # Name of the network services_name services.name; # IRC name of services server stats_name stats.name; # IRC name of stats server staff_address staff.net; # Opermask hostname nshelpurl "http://foo"; # URL for nick registration help wgmonhost wgmon.host; # Wingate monitor scan host wgmonurl "http://foo"; # URL for wingate monitor info network_kline "kline@net"; # Contact email for network bans local_kline "kline@server"; # Contact email for server bans servtype client; # Set server type: # CLIENT, HUB, SERVICESHUB maxchannels 10; # Max chans user can join ts_max_delta 300; # Maximum timestamp delta ts_warn_delta 30; # Warn for TS deltas larger than this crypt_oper_pass; # Encrypted passwords in Oper blocks short_motd; # Use ircd.smotd show_links; # Show real LINKS output allow_split_ops; # Op in empty channels while unlinked /* Solid IRCd specific */ rquit; # Allow only registered nicks to specify quit messages? /* Oper Hostmasking */ sadmin_host "Admin.VidGameChat.Net"; # Services Admin's hostmask admin_host "Admin.VidGameChat.Net"; # Server Admin's hostmask ircop_host "IRCop.VidGameChat.Net"; # IRC Operator's hostmask locop_host "LocOp.VidGameChat.Net"; # Local Operator's hostmask /* User hostmasking */ host_domain "vidgamechat.net"; host_prefix "VGC"; /* Set the following modes on connect? */ auto_umode_R; auto_umode_v; }; # The services and stats IRC server names are used for the shortform # commands, which are transformed into targeted name@server messages for # security. The services server name is used by SERVICES, IDENTIFY, # NICKSERV, CHANSERV, MEMOSERV, ROOTSERV, NS, CS, MS, and RS. The stats # server name is used by OPERSERV, STATSERV, HELPSERV, OS, SS, and HS. # # The staff_address token is used for operator hostmasking, as described # in the Allow block documentation. # # The nshelpurl token is used to supply a URL for nick registration help. # It is sent to clients in the rejection numeric when they encounter a +R # channel and are not registered. # # The maxchannels token limits the number of channels a user may join at # one time. This limit does not apply to server operators. # # The server type changes some behavior to be appropriate to the role. # CLIENT servers can only link to one other server (their uplink hub). # HUB servers link several servers together, but are not intended to hold # general users. The SERVICESHUB type enables some optimizations for # directly-connected services; it requires special services support and # should not be used in other cases. The default server type is CLIENT. # # The server is capable of sending a set of notices to users on connect, # providing some information about a proxy bot that scans them. The # wgmonhost token is the host the bot will be connecting from (for users # with firewalls or other connection monitoring), and wgmonurl is a web # page containing additional information about the bot. If neither token # is specified, the notices will not be sent. # # Proper clock synchronization is required among connected servers. This # requirement can be relaxed by using the ts_warn_delta and ts_max_delta # tokens. The TS delta is the difference (in seconds) between the clocks # of this server and the one it is linked to. These options should only # be used as a last resort; the correct fix for TS delta problems is to # synchronize the clocks on both server computers, such as with the ntpdate # tool. Unsynchronized clocks may cause unpredictable network problems. # # The crypt_oper_pass token configures the server to use hashed passwords # in the Oper blocks, to avoid password discovery by someone reading the # conf file. If this token is specified, passwords in the Oper blocks # must be generated by the tools/mkpasswd utility. # # The short_motd token enables use of the ircd.smotd file, which is sent # to clients on connect instead of ircd.motd. The MOTD command still sends # the contents of ircd.motd as normal. This option is intended to reduce # traffic on connect, but still convince users to read the full motd when # appropriate. # # The show_links token causes the LINKS command to display real server # links (though Super servers are still hidden). If this token is not # specified, LINKS will display the list given to it by services. # # The allow_split_ops token causes the server to always give chanop status # to users who join empty channels, even when no other servers are linked. # Normally op status will not be given when this server is alone, to help # prevent channel abuse during netsplits. This token should be used if # your server is not part of a network. Opers are always given op status # in empty channels regardless of this setting. # # All of these tokens are optional, and can be specified at different times # in multiple Options blocks. If a token is specified twice, the second # value overrides the first. ########################################################################### ########################################################################### # Port [REQUIRED] # The Port blocks define where the server will accept connections. At # least one Port block is required to start. # # Old conf format equivalents: # M::bind::port # P:ipmask:bind::port port { // required tokens port 6667; # Port to listen on // optional tokens bind 127.0.0.1; # IP address to listen on ipmask 127.0.*.*; # Mask to accept connections from }; # If a bind address is not specified, the server listens on all available # interfaces. # # The ipmask token is used to limit the port to connections from the # specified IP mask. Only a simple mask is supported, consisting of a * # where one component of the address is (e.g. "192.168.*.*"). # # There may be multiple Port blocks. ########################################################################### ########################################################################### # Class [RECOMMENDED] # The Class blocks define the connection classes used by the Allow, Oper, # and Connect blocks. While the server will start without a Class block, # it will not be usable. # # Old conf format equivalents: # Y:name:pingfreq::maxusers:maxsendq (for clients) # Y:name:pingfreq:connfreq:maxlinks:maxsendq (for servers) class { // required tokens name users; # Name of the class pingfreq 90; # PING idle connection every N seconds maxsendq 100000; # Send buffer limit // optional, for Allow classes only: maxusers 100; # Maximum number of clients // optional, for Connect classes only: connfreq 300; # Try autoconnect every N seconds maxlinks 1; # Autoconnect if less than N links in class }; # Idle connections are polled with the PING command every pingfreq seconds. # # The maxsendq token controls the size of the internal send buffer, used # when a connection cannot accept large amounts of data at once. Certain # server commands emit such large amounts of data. As an example metric, # a 100KB user send queue can support a WHO <channel> query for a channel # with approximately 700 users. Large amounts of data are also generated # when two servers link and synchronize network state. If the send queue # limit is exceeded, the connection is terminated. # # For classes used in the Allow blocks, the maxusers token limits the # number of clients that may exist in this class. This is the most common # general user limit for the server. If this limit is reached, additional # clients will be rejected with a "server busy" message. This token must # not be specified for classes used in the Connect blocks. # # For classes used in the Connect blocks, the connfreq token specifies the # frequency at which autoconnections are tried. This token works together # with maxlinks, which specifies the maximum number of servers in this # class to autoconnect to. For an autoconnection to take place, the # Connect block must have a valid port token, and there must be less than # maxlinks connected servers in this class. The connfreq and maxlinks # tokens must not be specified for classes used in the Allow or Oper # blocks. # # A "default" class is created internally using definitions in config.h. # This class is used when no other class is specified, but its settings are # not useful for most situations. Custom classes are strongly suggested. # # There may be multiple Class blocks; at least one is recommended. ########################################################################### ########################################################################### # Allow [RECOMMENDED] # The Allow blocks define the hosts connections are allowed from, and # places them into classes. While the server will start without an Allow # block, it will not be usable. # # Old conf format equivalents: # I:ipmask:passwd:host:port:class allow { // required tokens host *; # Resolved host mask (optional if using ipmask) ipmask *; # Unresolved IP mask (optional if using host) // optional tokens port 6667; # Apply block to this port only passwd secret; # Require password for connection class users; # Place connections in this class }; # The server uses a default-deny policy for incoming connections; at least # one Allow block must be supplied if you wish to use your server. # # The host and ipmask tokens specify which connections this block matches. # The server always performs DNS and ident lookups for connections. If DNS # cannot find a hostname, the IP is used instead. If ident cannot get a # valid response, "unknown" is used during this stage. The client's # resolved hostname, IP address, ident reply, and username (from the USER # line) are used according to the results of the matches described below. # # The host token attempts to match first against the resolved hostname if # available, then against the IP address. To include the connection's # ident response in the match, use a mask in the form "ident@host". If a # client matches this token, it appears on IRC using its resolved hostname. # # The ipmask token attempts to match against the IP address only. To # include the connection's ident response in the match, use a mask in the # form "ident@host". If a client matches this token, it appears on IRC # using its IP address, even if its hostname was resolved. # # If the matching mask used ident ("ident@host" instead of "host"), and no # ident response was received from the client, it appears on IRC with its # username prefixed with '~'. If the matching mask used only the "host" # form, the client's username is not prefixed. If a valid ident response # was received, it is always used (without prefix), regardless of the mask # form. # # Only one of the host and ipmask tokens is needed; if both are used, host # is matched first. # # Examples: # // client with username "user", ident "ident", hostname "name" # host ident@*; # appears as ident@name # ipmask *; # appears as ident@10.0.0.1 # # // same client without ident response # host *; # appears as user@name # host *@*; # appears as ~user@name # ipmask unknown@*; # appears as ~user@10.0.0.1 # # The port token limits this block to match connections to the specified # port only. # # The passwd token requires that matching connections supply a password to # use the server. This token is also used to enable operator hostmasking. # There are three forms for the passwd token: # # passwd secret; # Require a password of "secret" # passwd oper; # Enable operator hostmasking # passwd oper.secret; # Require "secret", enable opermask # # (Oper hostmasking in this form will probably change in a later # release. -epi) # # Clients can send a password string in multiple forms, depending on which # passwords need to be used. The basic format is # # [passwd][:][opername:operpass][:][nickpass] # # If the Allow block requires a password, it must be supplied at the front # of the string. If operator hostmasking is enabled, the client can mask # itself by supplying a "name:passwd" string as defined in an Oper block. # When masked, a client appears on IRC using the Oper block name for its # ident, and the Options block staff_address for its hostname. Any # remaining passwords are sent to NickServ in an SIDENTIFY command. All # password components must be separated from each other by a ':' colon. # # Using the examples in this file, and the last passwd token above, a # client could connect with the password string "secret:johndoe:secret" # and be masked as jo...@st.... # # The class token specifies the connection Class to place matching # connections in. If not specified, the default class is used; see the # Class block description for details. # # There may be multiple Allow blocks; they are matched in the order they # appear. ########################################################################### ########################################################################### # Oper [SUGGESTED] # The Oper blocks define server operators. One or more of these blocks # is recommended if you intend to maintain your server. # # Old conf format equivalents: # O:host:passwd:name:access:class oper { // required tokens name johndoe; # Account name passwd secret; # Account password (optionally encrypted) host ident@hostmask; # Restrict access to this mask host *@172.16.4.2; # Up to 32 masks can be specified here access *Aa; # Access flags // optional tokens class opers; # Place authenticated client in this class }; # The name and passwd tokens match the parameters of the OPER command. If # the crypt_oper_pass token is specified in the Options block, the passwd # string must be generated by the tools/mkpasswd utility. The plaintext # password is still used in the OPER command. # # To authenticate as an operator, a client must match one of the host # tokens specified in "user@host" mask form. There can be up to 32 host # tokens. The host part is matched against both resolved hostname and IP # address. # # The access token specifies what access an operator has, using a set of # single-letter flags. The available flags are: # # r Can use REHASH # h Can use GLOBOPS # w Can use WALLOPS # l Can use LOCOPS # b Can use KLINE # B Can use UNKLINE # c Can route this server # k Can kill clients on this server # n Can send server notices # u Can use umode +c (see client connection notices) # f Can use umode +f (see flood notices) # o Server operator: includes all of above, plus umodes # +y (spy), +d (debug), +b (CHATOPS) # # C Can route other servers # K Can kill clients on other servers # N Can send global notices # O Network operator: includes all of above # # D Can use DIE # R Can use RESTART # F Can use umode +F (no flood limits) # * all of the above # # A Can use umode +A (server administrator) # a Can use umode +a (services administrator) # # The class token specifies the connection class the operator will be # placed in. If not specified, the default class is used; see the Class # block description for details. # # There may be multiple Oper blocks. ########################################################################### ###########... [truncated message content] |
Update of /cvsroot/solidircd/Solid-dev In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23894 Added Files: CHANGES INSTALL LICENCE.pcre LICENSE Makefile.in README TODO config.guess config.sub configure configure.in install-sh Log Message: Initial Import...Again --- NEW FILE: configure --- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.57. # # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' [...8166 lines suppressed...] $ac_cs_success || { (exit 1); exit 1; } fi echo configuring zlib... ( cd zlib ./configure cd .. ) echo "" echo " ******* Bahamut Configuration Settings *******" echo " System Build Type: $target" echo " Socket Engine Type: $engine" echo " Encryption: $encryption" echo " Loadable Modules: $set_hmodules" echo " Maximum Connections: $maxconnections" echo " Install Directory: $prefix" echo "" --- NEW FILE: LICENSE --- GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) 19yy <name of author> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- NEW FILE: configure.in --- dnl Process this file with autoconf to produce a configure script. dnl rewritten for my own personal sanity, and for more extensive dnl checks - feb04 -epi AC_INIT AC_CONFIG_HEADER(include/setup.h) PACKAGE=bahamut-release VERSION=1.4 AC_SUBST(PACKAGE) AC_SUBST(VERSION) # autoheader templates AH_TEMPLATE([BROKEN_FD_SETSIZE],[If on a system with a broken FD_SETSIZE]) AH_TEMPLATE([HAVE_ENCRYPTION_ON],[If we support encryption]) AH_TEMPLATE([HAVE_MINMAX],[If we have the MIN and MAX macros]) AH_TEMPLATE([OS_SOLARIS2],[If we're running on Solaris]) AH_TEMPLATE([OS_SOLARIS],[Not quite sure why we have two of these]) AH_TEMPLATE([SYS_ERRLIST_DECLARED],[If the sys_errlist array is defined]) AH_TEMPLATE([USE_HOOKMODULES],[Do we support loadable modules]) AH_TEMPLATE([MAXCONNECTIONS],[Maximum Connections we allow]) AH_TEMPLATE([NEED_EPOLL_DEFS],[epoll behavior]) AH_TEMPLATE([AIX],[AIX support]) dnl Put our options of here for ease of reading. AC_ARG_ENABLE(hookmodules, [ --disable-hookmodules disable support for loadable hook modules],, [ check_hmodules="yes" ]) AC_ARG_ENABLE(openssl, [ --enable-openssl[=DIR] Enable OpenSSL support (DIR optional). --disable-openssl Disable OpenSSL support. ], [ cf_enable_openssl=$enableval ], [ cf_enable_openssl="auto" ]) AC_ARG_WITH(socketengine, [ --with-socketengine=TYPE Set the socketengine type. Choices are: kqueue poll select ], [ check_sengine=$withval ], [ check_sengine="yes" ]) AC_ARG_WITH(maxconnections, [ --with-maxconnections=NUMBER Set the maximum number of sockets.], [ check_maxconnections=$withval ], [ check_maxconnections="auto" ]) dnl ----------------------------------------------------------------- dnl this adds our check for proper warnings checks dnl http://ac-archive.sourceforge.net/guidod/ax_cflags_warn_all.html dnl handy. AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_warn_all])dnl AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings], VAR,[VAR="no, unknown" AC_LANG_SAVE AC_LANG_C ac_save_[]FLAGS="$[]FLAGS" for ac_arg dnl in "-pedantic % -Wall" dnl GCC "-xstrconst % -v" dnl Solaris C "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX "-ansi -ansiE % -fullwarn" dnl IRIX "+ESlit % +w1" dnl HP-UX C "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10) "-h conform % -h msglevel 2" dnl Cray C (Unicos) # do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` AC_TRY_COMPILE([],[return 0;], [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) done FLAGS="$ac_save_[]FLAGS" AC_LANG_RESTORE ]) case ".$VAR" in .ok|.ok,*) m4_ifvaln($3,$3) ;; .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[ AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"]) m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;; *) m4_ifvaln($3,$3,[ if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" fi ]) ;; esac AS_VAR_POPDEF([VAR])dnl AS_VAR_POPDEF([FLAGS])dnl ]) dnl the only difference - the LANG selection... and the default FLAGS AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_warn_all])dnl AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings], VAR,[VAR="no, unknown" AC_LANG_SAVE AC_LANG_CXX ac_save_[]FLAGS="$[]FLAGS" for ac_arg dnl in "-pedantic % -Wall" dnl GCC "-xstrconst % -v" dnl Solaris C "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX "-ansi -ansiE % -fullwarn" dnl IRIX "+ESlit % +w1" dnl HP-UX C "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10) "-h conform % -h msglevel 2" dnl Cray C (Unicos) # do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` AC_TRY_COMPILE([],[return 0;], [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) done FLAGS="$ac_save_[]FLAGS" AC_LANG_RESTORE ]) case ".$VAR" in .ok|.ok,*) m4_ifvaln($3,$3) ;; .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[ AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"]) m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;; *) m4_ifvaln($3,$3,[ if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" fi ]) ;; esac AS_VAR_POPDEF([VAR])dnl AS_VAR_POPDEF([FLAGS])dnl ]) dnl implementation tactics: dnl the for-argument contains a list of options. The first part of dnl these does only exist to detect the compiler - usually it is dnl a global option to enable -ansi or -extrawarnings. All other dnl compilers will fail about it. That was needed since a lot of dnl compilers will give false positives for some option-syntax dnl like -Woption or -Xoption as they think of it is a pass-through dnl to later compile stages or something. The "%" is used as a dnl delimimiter. A non-option comment can be given after "%%" marks. dnl ------------------------------------------------------------------- dnl Checks for programs. AC_PROG_CC AX_CFLAGS_WARN_ALL AC_CANONICAL_SYSTEM AC_ISC_POSIX AC_PROG_MAKE_SET AC_PATH_PROG(RM, rm) AC_PATH_PROG(CP, cp) AC_PATH_PROG(MV, mv) AC_PROG_INSTALL AC_C_INLINE dnl Checks for libraries. dnl Replace `main' with a function in -lnsl: AC_CHECK_LIB(nsl, gethostbyname) AC_CHECK_FUNC(res_mkquery,, AC_CHECK_LIB(resolv, res_mkquery)) AC_CHECK_FUNC(__res_mkquery,, AC_CHECK_LIB(resolv, __res_mkquery)) AC_CHECK_LIB(socket, socket) AC_CHECK_FUNC(crypt,, AC_CHECK_LIB(descrypt, crypt,,AC_CHECK_LIB(crypt, crypt,,))) dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([fcntl.h limits.h malloc.h netdb.h netinet/in.h stddef.h]) AC_CHECK_HEADERS([stdlib.h string.h strings.h sys/file.h sys/ioctl.h]) AC_CHECK_HEADERS([sys/param.h sys/socket.h sys/time.h syslog.h unistd.h]) AC_CHECK_HEADERS([utmp.h]) AC_CHECK_HEADERS(inttypes.h sys/resource.h errno.h stdlib.h stddef.h getopt.h) AC_MSG_CHECKING(MIN and MAX definition) AC_EGREP_CPP(yes, [ #if defined( HAVE_SYS_PARAM_H ) #include <sys/param.h> #ifdef MIN yes #endif #endif ], AC_DEFINE(HAVE_MINMAX) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) dnl Checks for library functions. AC_PROG_GCC_TRADITIONAL AC_CHECK_FUNCS([alarm dup2 gethostbyname gethostname getpass gettimeofday]) AC_CHECK_FUNCS([inet_ntoa isascii memmove memset munmap setenv socket]) AC_CHECK_FUNCS([strcasecmp strchr strdup strerror strncasecmp strrchr strtol]) AC_CHECK_FUNCS([strtoul index strerror strtoken strtok inet_addr inet_netof]) AC_CHECK_FUNCS([inet_aton gettimeofday lrand48 sigaction bzero bcmp bcopy]) AC_CHECK_FUNCS([dn_skipname __dn_skipname getrusage times break]) dnl check for various OSes case "$target" in *-solaris2*) solaris2="yes" AC_DEFINE(OS_SOLARIS2) AC_DEFINE(OS_SOLARIS) ;; *-freebsd*) freebsd="yes" ;; *-linux*) linux="yes" ;; *aix*) aix="yes" AC_DEFINE(AIX) ;; *-darwin*) check_hmodules="no" ;; esac dnl Checks for loadable hook module support set_hmodules="disabled" if test "$check_hmodules" = "yes"; then AC_CHECK_LIB(dl, dlopen) AC_CHECK_HEADER(dlfcn.h) AC_CHECK_FUNCS(dlopen dlsym, [set_hmodules="enabled"]) if test "$set_hmodules" = "enabled"; then AC_DEFINE(USE_HOOKMODULES) MOD_LIBS="-Wl,-export-dynamic" fi fi dnl Check for sys_errlist dnl Stolen from BitchX AC_MSG_CHECKING(for sys_errlist declaration) AC_TRY_RUN([ #include <sys/types.h> #include <stdio.h> #include <errno.h> main() { char *s = sys_errlist[0]; exit(0); } ], AC_MSG_RESULT(yes) AC_DEFINE(SYS_ERRLIST_DECLARED), AC_MSG_RESULT(no), AC_MSG_RESULT(cross compiling)) dnl Openssl checks - combination of our old way and the hybrid7 method save_LIBS="$LIBS" AC_MSG_CHECKING(for OpenSSL) if test "X$cf_enable_openssl" != "Xno" ; then cf_openssl_basedir="" if test "X$cf_enable_openssl" != "Xauto" && test "X$cf_enable_openssl" != "Xyes"; then dnl Support for --enable-openssl=/some/place cf_openssl_basedir="${cf_enable_openssl}" else dnl Do the auto-probe here. Check some common directory paths. for dirs in /usr/local/ssl /usr/pkg /usr/local /usr/lib /usr/lib/ssl\ /opt /opt/openssl /usr/local/openssl ; do if test -f "${dirs}/include/openssl/opensslv.h" ; then cf_openssl_basedir="${dirs}" break fi done unset dirs fi dnl Now check cf_openssl_found to see if we found anything. if test "X$cf_openssl_basedir" != "X" ; then if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then SSL_INCLUDES="-I${cf_openssl_basedir}/include" SSL_LIBS="-L${cf_openssl_basedir}/lib" else dnl OpenSSL wasn't found in the directory specified. Naughty dnl administrator... cf_openssl_basedir="" fi else dnl Check for stock FreeBSD 4.x and 5.x systems, since their files dnl are in /usr/include and /usr/lib. In this case, we don't want to dnl change INCLUDES or LIBS, but still want to enable OpenSSL. dnl We can't do this check above, because some people want two versions dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl) dnl and they want /usr/local/ssl to have preference. if test -f "/usr/include/openssl/opensslv.h" ; then cf_openssl_basedir="/usr" fi fi dnl If we have a basedir defined, then everything is okay. Otherwise, dnl we have a problem. if test "X$cf_openssl_basedir" != "X" ; then LIBS="$save_LIBS $SSL_LIBS -lcrypto" AC_MSG_RESULT($cf_openssl_basedir) cf_enable_openssl="yes" encryption="enabled" AC_DEFINE(HAVE_ENCRYPTION_ON) ENCRYPT_SRC="rc4.c dh.c" AC_SUBST(ENCRYPT_SRC) else AC_MSG_RESULT(not found. Please check your path.) cf_enable_openssl="no" encryption="disabled" fi unset cf_openssl_basedir else dnl If --disable-openssl was specified encryption="disabled" AC_MSG_RESULT(disabled) fi unset save_LIBS dnl end of openssl library test dnl once we add epoll and /dev/poll support, these will be dnl updated with the appropriate checks if test "$check_sengine" = "yes"; then engine="select" if test "$freebsd" = "yes"; then AC_CHECK_FUNC(kevent, [ engine="kqueue" ], ) elif test "$solaris2" = "yes"; then engine="poll" AC_CHECK_HEADER(sys/devpoll.h, engine="devpoll", ) elif test "$linux" = "yes"; then AC_CHECK_FUNC(poll, [ engine="poll" ], ) AC_CHECK_HEADER(sys/epoll.h, HAVE_EPOLL_H=yes, HAVE_EPOLL_H=no) AC_CHECK_LIB(epoll, epoll_create, [LIBS="$LIBS -lepoll"; have_epoll_lib="yes"; engine="epoll"], have_epoll_lib="no") if test "$HAVE_EPOLL_H $have_epoll_lib" = "yes no"; then AC_MSG_CHECKING(for epoll_create [without -lepoll]) AC_TRY_RUN([ #include <stdint.h> #include <sys/epoll.h> #include <errno.h> #include <asm/unistd.h> _syscall1(int, epoll_create, int, size) int main(int argc, char **argv) { return epoll_create(5) < 1; } ], have_epoll_lib="yes", have_epoll_lib="no") AC_MSG_RESULT($have_epoll_lib) if test "$have_epoll_lib" = "yes"; then AC_DEFINE(NEED_EPOLL_DEFS) fi fi if test "$HAVE_EPOLL_H $have_epoll_lib" = "yes yes"; then engine="epoll"; fi else AC_CHECK_FUNC(poll, [ engine="poll"], ) fi elif test "$check_sengine" = "kqueue"; then AC_CHECK_FUNC(kevent, [ engine="kqueue" ], ) if test "X$engine" = "X"; then AC_MSG_NOTICE() AC_MSG_NOTICE(kqueue not supported on this platform!) AC_MSG_ERROR() fi AC_MSG_NOTICE(setting socketengine type to kqueue) elif test "$check_sengine" = "poll"; then AC_CHECK_FUNC(poll, [ engine="poll" ], ) if test "X$engine" = "X"; then AC_MSG_NOTICE() AC_MSG_NOTICE(poll not supported on this platform!) AC_MSG_ERROR() fi AC_MSG_NOTICE(setting socketengine type to poll) elif test "$check_sengine" = "devpoll"; then AC_CHECK_HEADER(sys/devpoll.h, engine="devpoll", ) if test "X$engine" = "X"; then AC_MSG_NOTICE() AC_MSG_NOTICE(/dev/poll not supported on this system) AC_MSG_ERROR() fi AC_MSG_NOTICE(setting socketengine to devpoll) elif test "$check_sengine" = "epoll"; then AC_CHECK_HEADER(sys/epoll.h, HAVE_EPOLL_H=yes, HAVE_EPOLL_H=no) AC_CHECK_LIB(epoll, epoll_create, [LIBS="$LIBS -lepoll"; have_epoll_lib="yes"; engine="epoll"], have_epoll_lib="no") if test "$HAVE_EPOLL_H $have_epoll_lib" = "yes no"; then AC_MSG_CHECKING(for epoll_create [without -lepoll]) AC_TRY_RUN([ #include <stdint.h> #include <sys/epoll.h> #include <errno.h> #include <asm/unistd.h> _syscall1(int, epoll_create, int, size) int main(int argc, char **argv) { return epoll_create(5) < 1; } ], have_epoll_lib="yes", have_epoll_lib="no") AC_MSG_RESULT($have_epoll_lib) if test "$have_epoll_lib" = "yes"; then AC_DEFINE(NEED_EPOLL_DEFS) fi fi if test "$HAVE_EPOLL_H $have_epoll_lib" != "yes yes"; then AC_MSG_NOTICE() AC_MSG_ERROR(epoll is not supported on this machine) AC_MSG_ERROR() fi AC_MSG_NOTICE(setting socketengine type to epoll) engine="epoll"; elif test "$check_sengine" = "select"; then AC_MSG_NOTICE(setting socketengine type to select.. for some stupid reason) engine="select" else AC_MSG_NOTICE() AC_MSG_NOTICE(socket engine type incorrect!) AC_MSG_ERROR() fi SENGINE="socketengine_$engine.c" dnl Check to see if we have a broken FD_SETSIZE if test $engine = "select"; then AC_MSG_CHECKING(to see if FD_SETSIZE is broken) AC_TRY_RUN([ #define FD_SETSIZE 666 #include <sys/types.h> #include <sys/time.h> int main() { if(FD_SETSIZE != 666) exit(1); exit(0); } ], AC_MSG_RESULT(no), [ AC_MSG_RESULT(YES) AC_MSG_WARN(FD_SETSIZE is hard set by your operating system) AC_MSG_WARN(MAXCONNECTIONS must be no higher than the hardwired FD_SETSIZE) AC_DEFINE(BROKEN_FD_SETSIZE) broken_fd_setsize="yes" ], AC_MSG_RESULT(can't tell)) fi if test "$solaris2" != "yes" && test "$aix" != "yes" && test "$set_hmodules" = "enabled"; then LIBS="$LIBS $MOD_LIBS" fi if test "$check_maxconnections" = "auto"; then AC_MSG_CHECKING(Maximum file descriptors); AC_CACHE_VAL(maxconnections, [ AC_LANG_CONFTEST( [AC_LANG_SOURCE([[ #include <sys/types.h> #include <sys/time.h> #include <sys/resource.h> #include <stdio.h> #ifdef RLIMIT_FDMAX #define RLIMIT_FD_MAX RLIMIT_FDMAX #else #ifdef RLIMIT_NOFILE #define RLIMIT_FD_MAX RLIMIT_NOFILE #else #ifdef RLIMIT_OPEN_MAX #define RLIMIT_FD_MAX RLIMIT_OPEN_MAX #else #undef RLIMIT_FD_MAX #endif #endif #endif int main() { #ifndef BROKEN_FD_SETSIZE #ifdef RLIMIT_FD_MAX struct rlimit limit; if(!getrlimit(RLIMIT_FD_MAX, &limit)) { if(limit.rlim_max > 32768) printf("32768"); else printf("%ld", (long) limit.rlim_max); } else #endif printf("256"); #else printf("%d", FD_SETSIZE); #endif return 0; } ]]) ]) $CC -o conftest conftest.c >/dev/null 2>&1 maxconnections=`./conftest` AC_MSG_RESULT($maxconnections) $RM -f conftest conftest.c ]) AC_DEFINE_UNQUOTED(MAXCONNECTIONS, ${maxconnections}) else maxconnections=$check_maxconnections AC_DEFINE_UNQUOTED(MAXCONNECTIONS, ${maxconnections}) fi if test "$engine" = "select" && test "$broken_fd_setsize" != "yes"; then CFLAGS="$CFLAGS -DFD_SETSIZE=$maxconnections" fi if test $prefix = NONE; then prefix=${HOME}/ircd fi INSTALL_DIR="${prefix}" AC_SUBST(SSL_INCLUDES) AC_SUBST(SSL_LIBS) AC_SUBST(LIBS) AC_SUBST(SENGINE) AC_SUBST(INSTALL_DIR) AC_OUTPUT(Makefile src/Makefile tools/Makefile doc/Makefile) echo configuring zlib... ( cd zlib ./configure cd .. ) echo "" echo " ******* Bahamut Configuration Settings *******" echo " System Build Type: $target" echo " Socket Engine Type: $engine" echo " Encryption: $encryption" echo " Loadable Modules: $set_hmodules" echo " Maximum Connections: $maxconnections" echo " Install Directory: $prefix" echo "" --- NEW FILE: Makefile.in --- # IRC - Internet Relay Chat, Makefile # Copyright (C) 1990, Jarkko Oikarinen # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 1, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # $Id: Makefile.in,v 1.8 2004/10/11 13:42:37 tux316 Exp $ RM=@RM@ MV=@MV@ ENGINE=@SENGINE@ SHELL=/bin/sh SUBDIRS=zlib src doc tools INSTDIRS=src doc tools CLEANSUBDIRS=src tools CC=@CC@ CFLAGS=@CFLAGS@ LIBS=@LIBS@ INSTALL_DIR=@INSTALL_DIR@ all: build build: -@if [ ! -f include/setup.h ] ; then \ echo "Hmm...doesn't look like you've run configure..."; \ echo "Doing so now."; \ sh configure; \ fi @for i in $(SUBDIRS); do \ echo "Building $$i";\ cd $$i;\ ${MAKE} build; cd ..;\ done @echo "******************************************************************************" @echo "* For help with bahamut, please refer to http://bahamut.dal.net/ *" @echo "* If you encouter serious security related bugs, please mail co...@da... *" @echo "* For other bug reports and inquiries, please mail dal...@da... *" @echo "* Thank you for choosing Bahamut! - The DALnet coding team *" @echo "******************************************************************************" profile: @for i in $(SUBDIRS); do \ echo "Building $$i [profile]";\ cd $$i;\ ${MAKE} profile; cd ..;\ done clean: ${RM} -f *~ core @for i in $(CLEANSUBDIRS); do \ echo "Cleaning $$i";\ cd $$i;\ ${MAKE} clean; cd ..;\ done -@if [ -f include/setup.h ] ; then \ echo "To really restart installation, make distclean" ; \ fi fullclean: ${RM} -f *~ core @for i in $(SUBDIRS); do \ echo "Cleaning $$i";\ cd $$i;\ ${MAKE} clean; cd ..;\ done -@if [ -f include/setup.h ] ; then \ echo "To really restart installation, make distclean" ; \ fi distclean: ${RM} -f Makefile *~ *.rej *.orig core ircd.core *.tmp ${RM} -f config.status config.cache config.log cd include; ${RM} -f setup.h *~ *.rej *.orig options.h; cd .. @for i in $(SUBDIRS); do \ echo "Cleaning $$i";\ cd $$i;\ ${MAKE} distclean; cd ..;\ done depend: @for i in $(SUBDIRS); do \ echo "Making dependencies in $$i";\ cd $$i;\ ${MAKE} depend; cd ..;\ done install: all @if test ! -d $(INSTALL_DIR); then \ echo "Creating directory $(INSTALL_DIR)"; \ mkdir $(INSTALL_DIR); \ fi @for i in $(INSTDIRS); do \ cd $$i; \ $(MAKE) install; \ cd ..; \ done @echo "" @echo "Now edit $(INSTALL_DIR)/template.conf" @echo "and move it to ircd.conf - and you'll be all set." @echo "See the doc/ directory and the INSTALL file for more assistance" @echo "Thank you for choosing Bahamut!" @echo "" --- NEW FILE: CHANGES --- Changes for Solid-3.4.2 ------------------------ - OperMode and OperWalk added. - Added m_map - Correctly display an oper's status on a whois. - Automatically set +a/A upon opering if the oper has the correct oflags. - User and oper host masking. - Added a few ircd.conf options: rquit, sadmin_host, admin_host ircop_host, locop_host, host_domain, host_prefix, auto_umode_R, auto_umode_v; - Applied BSD jail patch. - Added /msg raw reparser for handicap clients. Changes for bahamut 1.8.2 ----------------- - fixed entropy generation on OpenBSD and cleaned up status messages (from Mark19960) - fixed cosmetic error in /stats C reply - fixed autoconnect blast when connect->port was specified but not class->connfreq (from Mark19960) - fixed crash on /stats request from a server (from Mark19960) - fixed invite exceptions not working at all (from wshs) - fixed ban exemptions not affecting bquiet (from wshs) - fixed -e/-I sync failure during netbursts of older channels - tweaked reference.conf - corrected new find_port() check - now removing simbans (restrict blocks) on rehash (from Ballsy) - fixed cosmetic errors in nick collision kills (from Goplat) - Converted old "X line" messages to "X block" - Changed stray free() to MyFree() - Corrected a tolower() reference I missed the first time around - Removed ancient prototype causing compile failures with gcc 3.4 - Fixed 005 WATCH token (was using incorrect number) - Removed temporary debug code causing compile failure when !USE_SYSLOG - Finished correcting same port, multiple IP binds - stats L shows user IPs again (but still hides opers) - Numerics 477 and 487 no longer hardcoded dal.net - Fixed numeric responses for certain PRIVMSG/NOTICE targets - Updated reference.conf and template.conf with additional bits and better documentation of Allow block quirks - Tweaked handling and display of removed-but-not-yet-deleted conf entries after a rehash (Oper, Connect, Class) - Oper block host entries are now matched against the user@host that would appear on IRC (previously what they matched was a bit convoluted) - Corrected class maxusers handling -- applies to the class, not the allow block - Updated 004 and 005 numerics - trace now shows the class list again - bquiet is now using deferred cache concept from ratbox to deal with ban exemptions correctly - Ban exemptions are now marked with type and checked during nick_is_banned() - Begin unbreaking redundant ban check -- will take at least one more release to complete - Cleaned up related channel ban code - CHOOK_10SEC is now called when it should be (from wshs) - Unbroke modules command handling (from wshs) - Fixed modules load crash when there was no Modules block in ircd.conf (from wshs) - Fixed SVSKILL crash on no parameters (from Zeke Gomez) - Compile fixes for DNS_DEBUG and DEBUGMODE (but don't use DEBUGMODE) - Compile fix for missing LINE_MAX - Spellcheck: virii -> viruses (from The List) - HIDE_LINKS functionality inverted and attached to show_links token in Options block - NO_CHANOPS_WHEN_SPLIT functionality inverted and attached to allow_split_ops token in Options block - Merging duplicate Allow blocks during rehash to avoid admin confusion - Boolean Options block items can now be disabled by rehash - Fixed "servtype hub" causing certain previously specified options to reset to defaults - Fixed a loop error report that was broken when it was introduced 11 years ago - Ignoring SVSMODE +o/O attempts (not handled correctly) - Repaired showing of +s channels in LIST to +A users - Fixed and document DENY_SERVICES_MSGS (from wshs) - Corrected structfunc.h prototypes for modules (from wshs) - Added SVSMODE -e/-I support for channels - Fixed .maxclients not being read on startup - Rewrote m_invite(), behaves logically now - Enabled cmode +j (joins:secs rate limit) - Fixed resolver cache corruption (and crash), mostly affected newer RedHat thanks huni and Sarcast for patience, analysis, and cores - More conf documentation clarity - Unresolved class reference in conf now reports class name - Updated RPL_VERSION, RPL_ISUPPORT; now running from a cache in s_debug.c - Removed sockhost data from RPL_YOURHOST, since it was always zeroed - Squished more memory corruption bugs thanks Glitch and dev0 for more patience and cores - Module support is now unconditionally disabled under OS X - Build system now handles FD_SETSIZE properly when using the select engine - Internal maxconnections and SET MAX handling is rational again ircd can run with as few as 20 FDs and support 10 clients - Ripped out obsolete sendto_match_servs() - Added support for non-noquit servers in #define NOQUIT - Updated zlib to version 1.2.1 - Restricted stats q/Q/g to opers - Show IPs in stats C to services and local +A - Added RWHO, see /rwho ? and doc/pcrepattern.html for info - Set +k and +s umodes to opers only. - Fixed a bug in m_trace that caused cores when issuing a /trace when connecting to a server. - ERR_WHOSYNTAX reply changed to ERR_NOPRIVILEGES for non opers trying oper restricted who, but using correct syntax : fixed by Unim4trix0 (Av...@gm...) Changes for bahamut 1.8.0 ----------------- - Removed backwards compatibility for: - NOQUIT - UNCONNECT - TSMODE - NICKIP All of these modes are now REQUIRED. - Removed Code and defines for outdated stuff: - FOLLOW_IDENT_RFC - NO_IDENT_SYSTYPE_OTHER - NO_MIXED_CASE - OLD_Y_LIMIT - USE_REJECT_HOLD This code is no longer used. - Removed define options for: - CLIENT_COUNT This code is now manditory. - Completely rewrote configuration structures. - Rewrote methods for connecting to servers. - Outdated Link structure config linking, now linking directly from aClient(user/serv) structures to appropriate conf strucutures. - Backported lucas's aListener structure and routines from defunct bahamut-devel tree. - Implemented +I/+e channel lists - thanks seddy. - Ports now can be opened and closed on /rehash - config file format changed to bind-style - klinefile outdated - replaced dbufs with sbufs - shared buffers. - removed old High Traffic Mode (HTM) code - config option block added to outdate use of ./config script - fixes for solaris and OSX compatibility - Added support for /dev/poll and epoll socket engines - thanks seddy. - Moved m_server and m_dkey into m_server.c - Moved m_stats into m_stats.c - Fixed memory counting routines. Thanks Quension! - Outdated modules.ini and all inifile uses - now a modules {} conf block - Updated m_module to allow non-admin viewing of hooks and loaded modules - Added module hooks for user and channel targetted privmsgs --- NEW FILE: config.guess --- #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. timestamp='2003-02-22' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software [...1349 lines suppressed...] /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: --- NEW FILE: config.sub --- #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. timestamp='2003-02-22' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the [...1450 lines suppressed...] -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: --- NEW FILE: INSTALL --- HOW TO BUILD: ------------- 1. Run the configure script. It will setup include/setup.h and the Makefiles to match your system: ./configure Type ./configure --help to see different options. Most people will not need to alter these. 2. [DISCOURAGED] Edit the the "include/config.h" file. This allows you to change various options of how the ircd will operate. Usually the defaults are OK. 3. "make" should build ircd. 4. "make install" will install the ircd, config converter, and documents to the directory set by ./configure 5. Edit example.conf in your install directory, and move it to "ircd.conf". 6. Run the binary! ircd will look in the directory you are executing from for an ircd.conf first, then it will look to the directory local to itself. You may override these options by specifying a config file using: ./ircd -f path/to/ircd.conf Best of luck! -The Bahamut Team $Id: INSTALL,v 1.3 2004/10/11 13:42:36 tux316 Exp $ --- NEW FILE: install-sh --- #! /bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. # # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 --- NEW FILE: README --- Welcome to Bahamut 1.8 ---------------------- Please refer to the INSTALL file for help instructions on building and installing ircd. The doc/ directory may also be of interest. Please refer to the CHANGES file to see what has changed in the 1.8 revision of Bahamut. *** IMPORTANT *** Please send any SECURITY RELATED bugs to co...@da... - any non-critical bugs can be sent to dal...@da... - a public list i for code discussion. Thanks! -Bahamut Team $Id: README,v 1.1 2004/10/11 13:42:37 tux316 Exp $ --- NEW FILE: LICENCE.pcre --- PCRE LICENCE ------------ PCRE is a library of functions to support regular expressions whose syntax and semantics are as close as possible to those of the Perl 5 language. Written by: Philip Hazel <ph...@ca...> University of Cambridge Computing Service, Cambridge, England. Phone: +44 1223 334714. Copyright (c) 1997-2003 University of Cambridge Permission is granted to anyone to use this software for any purpose on any computer system, and to redistribute it freely, subject to the following restrictions: 1. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 2. The origin of this software must not be misrepresented, either by explicit claim or by omission. In practice, this means that if you use PCRE in software that you distribute to others, commercially or otherwise, you must put a sentence like this Regular expression support is provided by the PCRE library package, which is open source software, written by Philip Hazel, and copyright by the University of Cambridge, England. somewhere reasonably visible in your documentation and in any relevant files or online help data or similar. A reference to the ftp site for the source, that is, to ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ should also be given in the documentation. However, this condition is not intended to apply to whole chains of software. If package A includes PCRE, it must acknowledge it, but if package B is software that includes package A, the condition is not imposed on package B (unless it uses PCRE independently). 3. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. 4. If PCRE is embedded in any software that is released under the GNU General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL), then the terms of that licence shall supersede any condition above with which it is incompatible. The documentation for PCRE, supplied in the "doc" directory, is distributed under the same terms as the software itself. End --- NEW FILE: TODO --- Solid IRCd TODO List - Add m_shun - Add oper umode +H ---------------------------- bahamut 1.8.2 -------------------------------- Future TODO List ---------------- - Split up aClient into separate structures for local and remote users - Backport message tokenization from 1.6 - Carve off throttling into its own hook module - Revamp hashing to use a generic hashing model (like throttling). - Implement IPV6 List to Ponder -------------- - Add support for multiple language sets via flatfile configuration - Switch encryption to RSA - Backport IDENTITY from 1.6 |
From: Juan B. <tu...@us...> - 2004-10-11 13:41:24
|
Update of /cvsroot/solidircd/Solid-dev/doc/old In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23514/doc/old Log Message: Directory /cvsroot/solidircd/Solid-dev/doc/old added to the repository |
From: Juan B. <tu...@us...> - 2004-10-11 13:32:11
|
Update of /cvsroot/solidircd/Solid-dev/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21813/doc Removed Files: Authors FAQ Hybrid-team Makefile Manual Operators README README.Ilines README.TSora README.hybrid README.th blalloc.txt example.conf example.conf.old irc.1 ircd.8 server-version-info Log Message: Cleaning up for the Solid IRCd 3.4 tree --- ircd.8 DELETED --- --- README.Ilines DELETED --- --- README.TSora DELETED --- --- irc.1 DELETED --- --- server-version-info DELETED --- --- Makefile DELETED --- --- Operators DELETED --- --- README.hybrid DELETED --- --- Manual DELETED --- --- README DELETED --- --- Hybrid-team DELETED --- --- Authors DELETED --- --- blalloc.txt DELETED --- --- README.th DELETED --- --- FAQ DELETED --- --- example.conf DELETED --- --- example.conf.old DELETED --- |
Update of /cvsroot/solidircd/Solid-dev/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21813/src Removed Files: Makefile.in blalloc.c bsd.c channel.c class.c cloak.c dbuf.c dh.c dich_conf.c drone.c fdlist.c hash.c inet_addr.c ircd.c ircsprintf.c list.c m_gline.c m_nick.c m_services.c m_shun.c m_who.c match.c packet.c parse.c rc4.c res.c res_comp.c res_init.c res_mkquery.c s_auth.c s_bsd.c s_conf.c s_debug.c s_err.c s_misc.c s_numeric.c s_serv.c s_user.c scache.c send.c silly.c support.c throttle.c userban.c version.c.SH whowas.c zlink.c Log Message: Cleaning up for the Solid IRCd 3.4 tree --- drone.c DELETED --- --- fdlist.c DELETED --- --- s_err.c DELETED --- --- Makefile.in DELETED --- --- whowas.c DELETED --- --- throttle.c DELETED --- --- support.c DELETED --- --- silly.c DELETED --- --- send.c DELETED --- --- res.c DELETED --- --- blalloc.c DELETED --- --- s_serv.c DELETED --- --- zlink.c DELETED --- --- m_shun.c DELETED --- --- s_misc.c DELETED --- --- s_conf.c DELETED --- --- s_user.c DELETED --- --- rc4.c DELETED --- --- inet_addr.c DELETED --- --- hash.c DELETED --- --- s_debug.c DELETED --- --- res_comp.c DELETED --- --- class.c DELETED --- --- match.c DELETED --- --- ircd.c DELETED --- --- m_gline.c DELETED --- --- m_services.c DELETED --- --- scache.c DELETED --- --- dh.c DELETED --- --- version.c.SH DELETED --- --- packet.c DELETED --- --- ircsprintf.c DELETED --- --- parse.c DELETED --- --- userban.c DELETED --- --- bsd.c DELETED --- --- m_nick.c DELETED --- --- channel.c DELETED --- --- cloak.c DELETED --- --- list.c DELETED --- --- res_init.c DELETED --- --- s_numeric.c DELETED --- --- res_mkquery.c DELETED --- --- m_who.c DELETED --- --- dbuf.c DELETED --- --- s_auth.c DELETED --- --- dich_conf.c DELETED --- --- s_bsd.c DELETED --- |
Update of /cvsroot/solidircd/Solid-dev/zlib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21813/zlib Removed Files: ChangeLog FAQ INDEX Makefile.in README adler32.c algorithm.txt compress.c configure crc32.c deflate.c deflate.h example.c gzio.c infblock.c infblock.h infcodes.c infcodes.h inffast.c inffast.h inffixed.h inflate.c inftrees.c inftrees.h infutil.c infutil.h maketree.c minigzip.c trees.c trees.h uncompr.c zconf.h zlib.3 zlib.h zutil.c zutil.h Log Message: Cleaning up for the Solid IRCd 3.4 tree --- inffast.h DELETED --- --- INDEX DELETED --- --- uncompr.c DELETED --- --- inftrees.h DELETED --- --- infcodes.h DELETED --- --- ChangeLog DELETED --- --- zlib.h DELETED --- --- Makefile.in DELETED --- --- trees.c DELETED --- --- inffast.c DELETED --- --- trees.h DELETED --- --- inflate.c DELETED --- --- inftrees.c DELETED --- --- zutil.h DELETED --- --- infcodes.c DELETED --- --- compress.c DELETED --- --- zutil.c DELETED --- --- crc32.c DELETED --- --- zlib.3 DELETED --- --- configure DELETED --- --- maketree.c DELETED --- --- infutil.h DELETED --- --- infblock.c DELETED --- --- zconf.h DELETED --- --- inffixed.h DELETED --- --- example.c DELETED --- --- FAQ DELETED --- --- infblock.h DELETED --- --- gzio.c DELETED --- --- algorithm.txt DELETED --- --- deflate.c DELETED --- --- infutil.c DELETED --- --- README DELETED --- --- adler32.c DELETED --- --- minigzip.c DELETED --- --- deflate.h DELETED --- |