irc-dev-cvs Mailing List for IRC-Dev ircd development (Page 5)
Brought to you by:
zolty
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(22) |
Sep
|
Oct
(2) |
Nov
|
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(30) |
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(27) |
Dec
(17) |
2004 |
Jan
|
Feb
(4) |
Mar
|
Apr
(4) |
May
(8) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(14) |
Dec
(2) |
2005 |
Jan
(18) |
Feb
(2) |
Mar
(12) |
Apr
(18) |
May
(16) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
(3) |
Oct
(9) |
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
(8) |
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
(5) |
Oct
|
Nov
(3) |
Dec
(2) |
2008 |
Jan
(6) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
(8) |
Aug
(14) |
Sep
(4) |
Oct
(11) |
Nov
(1) |
Dec
|
From: Toni G. <zo...@us...> - 2005-05-07 12:43:48
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-07 12:43:39 UTC Modified files: ChangeLog ChangeLog.es include/ddb.h include/patchlevel.h ircd/Makefile.in ircd/ddb.c ircd/ddb_db_native.c ircd/ircd.c ircd/m_db.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-05-07 Toni García <zo...@ir...> 1.0.alpha31 * DB nativo: Lectura y escritura de tablas * DB Burst ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.32 ircd-ircdev/ChangeLog:1.33 --- ircd-ircdev/ChangeLog:1.32 Sun May 1 05:59:37 2005 +++ ircd-ircdev/ChangeLog Sat May 7 05:43:28 2005 @@ -1,10 +1,14 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.32 2005/05/01 12:59:37 zolty Exp $ +# $Id: ChangeLog,v 1.33 2005/05/07 12:43:28 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-05-07 Toni García <zo...@ir...> 1.0.alpha31 + * Native DB: Tables read and save + * Burst DB + 2005-05-01 Toni García <zo...@ir...> 1.0.alpha30 * Native DB: Hashes read and save Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.32 ircd-ircdev/ChangeLog.es:1.33 --- ircd-ircdev/ChangeLog.es:1.32 Sun May 1 05:59:39 2005 +++ ircd-ircdev/ChangeLog.es Sat May 7 05:43:28 2005 @@ -1,10 +1,14 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.32 2005/05/01 12:59:39 zolty Exp $ +# $Id: ChangeLog.es,v 1.33 2005/05/07 12:43:28 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-05-07 Toni García <zo...@ir...> 1.0.alpha31 + * DB nativo: Lectura y escritura de tablas + * DB Burst + 2005-05-01 Toni García <zo...@ir...> 1.0.alpha30 * DB nativo: Lectura y escritura de hashes Index: ircd-ircdev/include/ddb.h diff -u ircd-ircdev/include/ddb.h:1.6 ircd-ircdev/include/ddb.h:1.7 --- ircd-ircdev/include/ddb.h:1.6 Thu Apr 28 15:00:07 2005 +++ ircd-ircdev/include/ddb.h Sat May 7 05:43:28 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ddb.h,v 1.6 2005/04/28 22:00:07 zolty Exp $ + * $Id: ddb.h,v 1.7 2005/05/07 12:43:28 zolty Exp $ * */ #ifndef INCLUDED_ddb_h @@ -69,19 +69,18 @@ struct Ddb *next; }; -#if 0 -struct portable_stat -{ +struct ddb_stat { dev_t dev; /* ID of device containing a directory entry for this file */ ino_t ino; /* Inode number */ off_t size; /* File size in bytes */ time_t mtime; /* Time of last data modification */ -} -#endif - +}; +/* + * ddb_db_native + */ struct ddb_memory_table { - struct stat status; + struct ddb_stat file_stat; char *position; /* Posicion */ char *point_r; /* Lectura */ #if 0 @@ -89,30 +88,6 @@ #endif }; -#if 0 -struct db_file__ { - char *map_p; lo mismo que position - struct stat estado; - char *read_p; -}; -estado.st_size - -struct stat -{ - st_size - st_mtime -} - -struct portable_stat -{ - dev_t dev; /* ID of device containing a directory -entry for this file */ - ino_t ino; /* Inode number */ - off_t size; /* File size in bytes */ - time_t mtime; /* Time of last data modification */ -} -#endif - #define DdbMalloc(x) MyMalloc(x) #define DdbFree(x) MyFree(x) @@ -121,6 +96,7 @@ * Prototypes */ extern struct Ddb **ddb_data_table[DDB_TABLE_MAX]; +extern struct ddb_stat ddb_stats_table[DDB_TABLE_MAX]; extern unsigned int ddb_resident_table[DDB_TABLE_MAX]; extern unsigned int ddb_count_table[DDB_TABLE_MAX]; extern unsigned int ddb_id_table[DDB_TABLE_MAX]; @@ -136,10 +112,8 @@ extern void ddb_init(void); extern void ddb_events_init(void); +extern void ddb_end(void); -/* -extern int ddb_read(struct ddb_memory_table *dump, char *buf); -*/ extern void ddb_new_register(struct Client *cptr, unsigned char table, char *mask, unsigned int id, char *key, char *content); extern void ddb_drop(unsigned char table); extern void ddb_drop_memory(unsigned char table, int events); @@ -157,15 +131,15 @@ extern void ddb_report_stats(struct Client* to, const struct StatDesc* sd, char* param); /* Externs de ddb_db_*.c */ -extern int ddb_db_open(unsigned char table, unsigned int id, struct ddb_memory_table *mt); -extern void ddb_db_close(struct ddb_memory_table *mt); +extern void ddb_db_init(void); +extern int ddb_db_read(struct Client *cptr, unsigned char table, unsigned int id, int count); extern void ddb_db_write(unsigned char table, char *mask, unsigned int id, char *key, char *content); extern void ddb_db_drop(unsigned char table); extern void ddb_compact(unsigned char table, char *mask, unsigned int id, char *comment); extern void ddb_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo); extern void ddb_hash_write(unsigned char table); +extern void ddb_db_end(void); #endif /* defined(DDB) */ #endif /* INCLUDED_ddb_h */ - Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.31 ircd-ircdev/include/patchlevel.h:1.32 --- ircd-ircdev/include/patchlevel.h:1.31 Sun May 1 05:59:39 2005 +++ ircd-ircdev/include/patchlevel.h Sat May 7 05:43:28 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.31 2005/05/01 12:59:39 zolty Exp $ + * $Id: patchlevel.h,v 1.32 2005/05/07 12:43:28 zolty Exp $ * */ -#define PATCHLEVEL ".alpha30" +#define PATCHLEVEL ".alpha31" #define RELEASE "1.0" Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.24 ircd-ircdev/ircd/Makefile.in:1.25 --- ircd-ircdev/ircd/Makefile.in:1.24 Sun May 1 05:59:39 2005 +++ ircd-ircdev/ircd/Makefile.in Sat May 7 05:43:29 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.24 2005/05/01 12:59:39 zolty Exp $ +# $Id: Makefile.in,v 1.25 2005/05/07 12:43:29 zolty Exp $ #### Start of system configuration section. #### @@ -394,60 +394,71 @@ # DO NOT DELETE THIS LINE (or the blank line after it) -- make depend depends on them. +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" IPcheck.o: IPcheck.c ../config.h ../include/IPcheck.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ ../include/match.h ../include/msg.h ../include/numnicks.h \ - ../include/ircd_alloc.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/s_debug.h ../include/s_user.h \ - ../include/send.h + ../include/ircd_alloc.h ../include/ircd_events.h \ + ../include/ircd_features.h ../include/ircd_log.h ../include/s_debug.h \ + ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" channel.o: channel.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/capab.h \ ../include/destruct_event.h ../include/hash.h ../include/ircd.h \ ../include/struct.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ - ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_defs.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/list.h ../include/match.h \ - ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/querycmds.h ../include/s_bsd.h ../include/s_conf.h \ + ../include/msg.h ../include/msgq.h ../include/numeric.h \ + ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \ + ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ - ../include/send.h ../include/sys.h ../include/whowas.h + ../include/send.h ../include/struct.h ../include/sys.h \ + ../include/whowas.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" class.o: class.c ../config.h ../include/class.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_features.h \ + ../include/capab.h ../include/client.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/list.h ../include/numeric.h \ ../include/s_conf.h ../include/s_debug.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" client.o: client.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/class.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/list.h ../include/numeric.h \ - ../include/s_conf.h ../include/s_debug.h ../include/send.h + ../include/class.h ../include/client.h ../include/ircd.h \ + ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/list.h ../include/msgq.h \ + ../include/numeric.h ../include/s_conf.h ../include/s_debug.h \ + ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" crule.o: crule.c ../config.h ../include/crule.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ ../include/ircd_alloc.h ../include/ircd_chattr.h \ ../include/ircd_string.h ../include/match.h ../include/s_bsd.h \ - ../include/s_debug.h + ../include/s_debug.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" dbuf.o: dbuf.c ../config.h ../include/dbuf.h ../include/ircd_alloc.h \ ../include/ircd_chattr.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/send.h ../include/sys.h -ddb.o: ddb.c ../config.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" destruct_event.o: destruct_event.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/s_debug.h \ ../include/ircd_alloc.h ../include/ircd.h ../include/struct.h \ ../include/ircd_events.h ../include/ircd_log.h ../include/send.h \ ../include/msg.h ../include/ircd_handler.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" fileio.o: fileio.c ../config.h ../include/fileio.h \ ../include/ircd_alloc.h ../include/ircd_log.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" gline.o: gline.c ../config.h ../include/gline.h ../include/res.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ @@ -457,67 +468,79 @@ ../include/ircd_snprintf.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/numeric.h \ ../include/s_bsd.h ../include/s_debug.h ../include/s_misc.h \ - ../include/s_stats.h ../include/send.h ../include/msg.h \ - ../include/numnicks.h ../include/whocmds.h + ../include/s_stats.h ../include/send.h ../include/struct.h \ + ../include/msg.h ../include/numnicks.h ../include/whocmds.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" hash.o: hash.c ../config.h ../include/hash.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/channel.h ../include/ircd_alloc.h \ - ../include/ircd_chattr.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd.h ../include/struct.h \ - ../include/msg.h ../include/numeric.h ../include/random.h \ - ../include/send.h ../include/sys.h ../include/watch.h + ../include/capab.h ../include/channel.h ../include/ddb.h ../config.h \ + ../include/client.h ../include/ircd_alloc.h ../include/ircd_chattr.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd.h ../include/struct.h ../include/msg.h \ + ../include/numeric.h ../include/random.h ../include/send.h \ + ../include/struct.h ../include/sys.h ../include/watch.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd.o: ircd.c ../config.h ../include/ircd.h ../include/struct.h \ ../include/ircd_defs.h ../include/IPcheck.h ../include/class.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/crule.h ../include/destruct_event.h \ + ../include/capab.h ../include/client.h ../include/crule.h \ + ../include/ddb.h ../config.h ../include/destruct_event.h \ ../include/channel.h ../include/hash.h ../include/ircd_alloc.h \ - ../include/ircd_crypt.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_signal.h \ + ../include/ircd_crypt.h ../include/ircd_events.h \ + ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_signal.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/jupe.h \ ../include/list.h ../include/match.h ../include/motd.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/opercmds.h \ - ../include/parse.h ../include/s_auth.h ../include/s_bsd.h \ - ../include/s_conf.h ../include/s_debug.h ../include/s_misc.h \ - ../include/s_stats.h ../include/send.h ../include/sys.h \ - ../include/uping.h ../include/userload.h ../include/version.h \ - ../include/whowas.h + ../include/parse.h ../include/res.h ../include/s_auth.h \ + ../include/s_bsd.h ../include/s_conf.h ../include/s_debug.h \ + ../include/s_misc.h ../include/s_stats.h ../include/send.h \ + ../include/sys.h ../include/uping.h ../include/userload.h \ + ../include/version.h ../include/whowas.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_alloc.o: ircd_alloc.c ../config.h ../include/ircd_alloc.h \ ../include/ircd_log.h ../include/ircd_string.h ../include/ircd_chattr.h \ ../include/s_debug.h ../include/ircd_defs.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_auth.o: ircd_auth.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd_alloc.h ../include/ircd_auth.h \ - ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_osdep.h ../include/ircd_snprintf.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/ircd.h \ - ../include/struct.h ../include/msg.h ../include/s_bsd.h \ + ../include/ircd_events.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_osdep.h \ + ../include/ircd_snprintf.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/ircd.h ../include/struct.h \ + ../include/msg.h ../include/msgq.h ../include/res.h ../include/s_bsd.h \ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_crypt.o: ircd_crypt.c ../config.h ../include/ircd_crypt.h \ ../include/ircd_alloc.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_string.h ../include/ircd_chattr.h \ ../include/s_debug.h ../include/ircd_defs.h \ ../include/ircd_crypt_native.h ../include/ircd_crypt_plain.h \ ../include/ircd_crypt_smd5.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_events.o: ircd_events.c ../config.h ../include/ircd_events.h \ ../include/ircd.h ../include/struct.h ../include/ircd_defs.h \ ../include/ircd_alloc.h ../include/ircd_log.h \ ../include/ircd_snprintf.h ../include/s_debug.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_features.o: ircd_features.c ../config.h ../include/ircd_features.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/class.h ../include/client.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/capab.h ../include/client.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/motd.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/random.h ../include/s_bsd.h ../include/s_debug.h \ ../include/s_misc.h ../include/s_stats.h ../include/send.h \ - ../include/sys.h ../include/whowas.h + ../include/struct.h ../include/sys.h ../include/whowas.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_log.o: ircd_log.c ../config.h ../include/ircd_log.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ @@ -525,7 +548,8 @@ ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/ircd.h \ ../include/struct.h ../include/numeric.h ../include/s_debug.h \ - ../include/send.h + ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_relay.o: ircd_relay.c ../config.h ../include/ircd_relay.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ @@ -536,13 +560,16 @@ ../include/match.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_debug.h ../include/s_misc.h \ ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_reply.o: ircd_reply.c ../config.h ../include/ircd_reply.h \ ../include/client.h ../include/ircd_defs.h ../include/dbuf.h \ ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \ ../include/res.h ../include/capab.h ../include/ircd.h \ ../include/struct.h ../include/ircd_log.h ../include/ircd_snprintf.h \ - ../include/msg.h ../include/numeric.h ../include/s_conf.h \ - ../include/s_debug.h ../include/send.h + ../include/msg.h ../include/msgq.h ../include/numeric.h \ + ../include/s_conf.h ../include/client.h ../include/s_debug.h \ + ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_res.o: ircd_res.c ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../config.h ../include/ircd_handler.h ../include/res.h \ @@ -553,25 +580,32 @@ ../include/numeric.h ../include/fileio.h ../include/random.h \ ../include/s_bsd.h ../include/s_debug.h ../include/s_stats.h \ ../include/ircd_features.h ../include/send.h ../include/sys.h \ - ../include/ircd_reslib.h + ../include/res.h ../include/ircd_reslib.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_reslib.o: ircd_reslib.c ../include/ircd.h ../include/struct.h \ ../include/ircd_defs.h ../include/res.h ../config.h \ - ../include/ircd_reslib.h ../include/fileio.h ../include/ircd_string.h \ - ../include/ircd_chattr.h + ../include/ircd_reslib.h ../include/ircd_defs.h ../include/fileio.h \ + ../include/ircd_string.h ../include/ircd_chattr.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_signal.o: ircd_signal.c ../config.h ../include/ircd.h \ ../include/struct.h ../include/ircd_defs.h ../include/ircd_events.h \ ../include/ircd_log.h ../include/ircd_signal.h ../include/s_conf.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_snprintf.o: ircd_snprintf.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/channel.h ../include/ircd_log.h \ ../include/ircd_snprintf.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_string.o: ircd_string.c ../config.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/ircd_defs.h ../include/ircd_log.h \ - ../include/res.h chattr.tab.c + ../include/ircd_chattr.h ../include/ircd_defs.h \ + ../include/ircd_chattr.h ../include/ircd_log.h ../include/res.h \ + chattr.tab.c +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" ircd_tea.o: ircd_tea.c ../config.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" jupe.o: jupe.c ../config.h ../include/jupe.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -580,44 +614,47 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \ - ../include/s_misc.h ../include/send.h ../include/sys.h + ../include/s_misc.h ../include/send.h ../include/struct.h \ + ../include/sys.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" lex.yy.o: lex.yy.c ../config.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_defs.h ../include/ircd_string.h \ + ../include/ircd_defs.h ../include/ircd_alloc.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/s_debug.h y.tab.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" list.o: list.c ../config.h ../include/list.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_alloc.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/listener.h \ - ../include/match.h ../include/numeric.h ../include/s_auth.h \ - ../include/s_bsd.h ../include/s_conf.h ../include/s_debug.h \ - ../include/s_misc.h ../include/s_user.h ../include/send.h \ - ../include/whowas.h + ../include/ircd_alloc.h ../include/ircd_events.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd_chattr.h ../include/listener.h ../include/match.h \ + ../include/numeric.h ../include/res.h ../include/s_auth.h \ + ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ + ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ + ../include/send.h ../include/struct.h ../include/whowas.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" listener.o: listener.c ../config.h ../include/listener.h \ ../include/ircd_defs.h ../include/ircd_events.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_handler.h ../include/capab.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_alloc.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_osdep.h ../include/ircd_reply.h \ + ../include/struct.h ../include/ircd_alloc.h ../include/ircd_events.h \ + ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_osdep.h ../include/ircd_reply.h \ ../include/ircd_snprintf.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/numeric.h \ - ../include/s_bsd.h ../include/s_conf.h ../include/s_misc.h \ - ../include/s_stats.h ../include/send.h ../include/sys.h -m_account.o: m_account.c ../config.h ../include/client.h \ - ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ - ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/msg.h ../include/numnicks.h \ - ../include/s_debug.h ../include/s_user.h ../include/send.h + ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ + ../include/s_misc.h ../include/s_stats.h ../include/send.h \ + ../include/sys.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_admin.o: m_admin.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/hash.h ../include/ircd.h \ ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_conf.h ../include/s_user.h + ../include/numnicks.h ../include/s_conf.h ../include/client.h \ + ../include/s_user.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_asll.o: m_asll.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -626,6 +663,7 @@ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/match.h ../include/msg.h ../include/send.h \ ../include/s_bsd.h ../include/s_user.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_away.o: m_away.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -633,6 +671,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_burst.o: m_burst.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -642,8 +681,9 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/ircd_snprintf.h ../include/list.h \ ../include/match.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_conf.h ../include/s_misc.h \ - ../include/send.h + ../include/numnicks.h ../include/s_conf.h ../include/client.h \ + ../include/s_misc.h ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_cap.o: m_cap.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -651,6 +691,7 @@ ../include/ircd_log.h ../include/ircd_reply.h \ ../include/ircd_snprintf.h ../include/ircd_string.h ../include/msg.h \ ../include/numeric.h ../include/send.h ../include/s_user.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_clearmode.o: m_clearmode.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -660,13 +701,15 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/list.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ - ../include/send.h + ../include/client.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_close.o: m_close.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/numeric.h \ ../include/s_bsd.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_connect.o: m_connect.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -675,13 +718,15 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/jupe.h ../include/match.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_bsd.h ../include/s_conf.h ../include/s_user.h \ - ../include/send.h + ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ + ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_cprivmsg.o: m_cprivmsg.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd_log.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/s_user.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_create.o: m_create.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -691,8 +736,7 @@ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_debug.h ../include/s_misc.h \ ../include/s_user.h ../include/send.h -m_db.o: m_db.c ../config.h -m_dbq.o: m_dbq.c ../config.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_defaults.o: m_defaults.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -700,6 +744,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h ../include/supported.h \ ../include/channel.h ../include/version.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_destruct.o: m_destruct.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -708,6 +753,7 @@ ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_desynch.o: m_desynch.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -716,6 +762,7 @@ ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_die.o: m_die.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -723,6 +770,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_bsd.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_endburst.o: m_endburst.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -731,6 +779,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_error.o: m_error.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -739,6 +788,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_misc.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_get.o: m_get.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -747,6 +797,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_gline.o: m_gline.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -755,7 +806,8 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ - ../include/s_misc.h ../include/send.h + ../include/client.h ../include/s_misc.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_help.o: m_help.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -763,6 +815,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_info.o: m_info.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -770,7 +823,9 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_misc.h ../include/s_user.h \ - ../include/s_conf.h ../include/send.h ../include/version.h + ../include/s_conf.h ../include/client.h ../include/send.h \ + ../include/version.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_invite.o: m_invite.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -779,13 +834,16 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/list.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_user.h \ - ../include/send.h + ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_ison.o: m_ison.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ ../include/hash.h ../include/ircd.h ../include/struct.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/numeric.h ../include/send.h + ../include/ircd_chattr.h ../include/msgq.h ../include/numeric.h \ + ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_join.o: m_join.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -795,6 +853,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_jupe.o: m_jupe.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -803,7 +862,8 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_conf.h \ - ../include/s_misc.h ../include/send.h + ../include/client.h ../include/s_misc.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_kick.o: m_kick.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -812,6 +872,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_kill.o: m_kill.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -821,15 +882,17 @@ ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_misc.h \ ../include/send.h ../include/whowas.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_links.o: m_links.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ - ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_defs.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_user.h \ - ../include/send.h + ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_list.o: m_list.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -839,6 +902,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/s_bsd.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_lusers.o: m_lusers.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -846,17 +910,21 @@ ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/querycmds.h ../include/s_misc.h \ - ../include/s_serv.h ../include/s_user.h ../include/send.h + ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \ + ../include/s_misc.h ../include/s_serv.h ../include/s_user.h \ + ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_map.o: m_map.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_snprintf.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/list.h ../include/match.h \ - ../include/msg.h ../include/numeric.h ../include/s_user.h \ - ../include/s_serv.h ../include/send.h ../include/querycmds.h + ../include/ircd.h ../include/struct.h ../include/ircd_defs.h \ + ../include/ircd_features.h ../include/ircd_log.h \ + ../include/ircd_reply.h ../include/ircd_snprintf.h \ + ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ + ../include/match.h ../include/msg.h ../include/numeric.h \ + ../include/s_user.h ../include/s_serv.h ../include/send.h \ + ../include/querycmds.h ../include/ircd_features.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_mode.o: m_mode.c ../config.h ../include/handlers.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -864,8 +932,9 @@ ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_conf.h ../include/s_debug.h \ - ../include/s_user.h ../include/send.h + ../include/numnicks.h ../include/s_conf.h ../include/client.h \ + ../include/s_debug.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_motd.o: m_motd.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -873,8 +942,9 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/motd.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_conf.h ../include/class.h ../include/s_user.h \ - ../include/send.h + ../include/s_conf.h ../include/client.h ../include/class.h \ + ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_names.o: m_names.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -883,15 +953,18 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_nick.o: m_nick.c ../config.h ../include/IPcheck.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_chattr.h ../include/ircd_features.h \ + ../include/capab.h ../include/ddb.h ../config.h ../include/client.h \ + ../include/hash.h ../include/ircd.h ../include/struct.h \ + ../include/ircd_chattr.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ ../include/send.h ../include/sys.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_notice.o: m_notice.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -899,6 +972,7 @@ ../include/ircd_relay.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/send.h ../include/handlers.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_oper.o: m_oper.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -907,9 +981,10 @@ ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/querycmds.h ../include/s_conf.h \ - ../include/s_debug.h ../include/s_user.h ../include/s_misc.h \ - ../include/send.h + ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \ + ../include/s_conf.h ../include/client.h ../include/s_debug.h \ + ../include/s_user.h ../include/s_misc.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_opmode.o: m_opmode.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -917,7 +992,9 @@ ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/send.h ../include/s_conf.h + ../include/numnicks.h ../include/send.h ../include/s_conf.h \ + ../include/client.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_part.o: m_part.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -926,11 +1003,13 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_pass.o: m_pass.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_ping.o: m_ping.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -939,6 +1018,7 @@ ../include/struct.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/opercmds.h ../include/s_debug.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_pong.o: m_pong.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -947,6 +1027,7 @@ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/opercmds.h ../include/s_user.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_privmsg.o: m_privmsg.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -955,13 +1036,15 @@ ../include/ircd_log.h ../include/ircd_relay.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_privs.o: m_privs.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/hash.h ../include/ircd.h \ ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/numeric.h \ - ../include/numnicks.h ../include/send.h + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ + ../include/numeric.h ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_proto.o: m_proto.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -971,6 +1054,7 @@ ../include/numeric.h ../include/numnicks.h ../include/s_debug.h \ ../include/s_misc.h ../include/send.h ../include/supported.h \ ../include/channel.h ../include/version.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_pseudo.o: m_pseudo.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -979,20 +1063,25 @@ ../include/ircd_relay.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/ircd_chattr.h \ ../include/ircd_snprintf.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/s_conf.h ../include/s_user.h + ../include/numnicks.h ../include/s_conf.h ../include/client.h \ + ../include/s_user.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_quit.o: m_quit.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/capab.h ../include/ircd.h \ ../include/struct.h ../include/ircd_log.h ../include/ircd_string.h \ - ../include/ircd_chattr.h ../include/s_misc.h ../include/ircd_reply.h + ../include/ircd_chattr.h ../include/struct.h ../include/s_misc.h \ + ../include/ircd_reply.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_rehash.o: m_rehash.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd.h ../include/struct.h \ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/motd.h ../include/numeric.h \ - ../include/s_conf.h ../include/send.h + ../include/s_conf.h ../include/client.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_reset.o: m_reset.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1001,6 +1090,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_restart.o: m_restart.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1008,6 +1098,7 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_rping.o: m_rping.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1016,6 +1107,7 @@ ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/opercmds.h \ ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_rpong.o: m_rpong.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1024,6 +1116,7 @@ ../include/ircd_string.h ../include/ircd_chattr.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/opercmds.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_server.o: m_server.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1032,9 +1125,11 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/jupe.h ../include/list.h \ ../include/match.h ../include/msg.h ../include/numeric.h \ - ../include/numnicks.h ../include/querycmds.h ../include/s_bsd.h \ - ../include/s_conf.h ../include/s_debug.h ../include/s_misc.h \ - ../include/s_serv.h ../include/send.h ../include/userload.h + ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \ + ../include/s_bsd.h ../include/s_conf.h ../include/client.h \ + ../include/s_debug.h ../include/s_misc.h ../include/s_serv.h \ + ../include/send.h ../include/userload.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_set.o: m_set.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -1043,6 +1138,7 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/numeric.h ../include/numnicks.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_settime.o: m_settime.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1051,7 +1147,8 @@ ../include/ircd_reply.h ../include/ircd_snprintf.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_user.h ../include/send.h + ../include/s_user.h ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_silence.o: m_silence.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -1061,7 +1158,8 @@ ../include/ircd_snprintf.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/list.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_user.h \ - ../include/send.h + ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_squit.o: m_squit.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1070,14 +1168,16 @@ ../include/ircd_reply.h ../include/ircd_string.h ../include/numeric.h \ ../include/numnicks.h ../include/match.h ../include/s_debug.h \ ../include/s_misc.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_stats.o: m_stats.c ../config.h ../include/s_stats.h \ ../include/ircd_features.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ - ../include/ircd.h ../include/struct.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ - ../include/s_user.h ../include/send.h + ../include/s_user.h ../include/send.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_time.o: m_time.c ../config.h ../include/client.h ../include/ircd_defs.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ ../include/ircd_handler.h ../include/res.h ../include/capab.h \ @@ -1086,6 +1186,7 @@ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_misc.h ../include/s_user.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_topic.o: m_topic.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -1094,16 +1195,18 @@ ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_trace.o: m_trace.c ../config.h ../include/class.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ - ../include/capab.h ../include/hash.h ../include/ircd.h \ - ../include/struct.h ../include/ircd_features.h ../include/ircd_log.h \ - ../include/ircd_reply.h ../include/ircd_string.h \ + ../include/capab.h ../include/client.h ../include/hash.h \ + ../include/ircd.h ../include/struct.h ../include/ircd_features.h \ + ../include/ircd_log.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/match.h ../include/msg.h \ ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \ ../include/s_conf.h ../include/s_user.h ../include/send.h \ ../include/version.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_uping.o: m_uping.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1111,8 +1214,9 @@ ../include/struct.h ../include/ircd_log.h ../include/ircd_reply.h \ ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \ ../include/msg.h ../include/numeric.h ../include/numnicks.h \ - ../include/s_conf.h ../include/s_user.h ../include/send.h \ - ../include/uping.h + ../include/s_conf.h ../include/client.h ../include/s_user.h \ + ../include/send.h ../include/uping.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_user.o: m_user.c ../config.h ../include/handlers.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1121,26 +1225,30 @@ ../include/ircd_string.h ../include/numeric.h ../include/numnicks.h \ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \ ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_users.o: m_users.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd_features.h ../include/ircd_log.h \ ../include/ircd_reply.h ../include/msg.h ../include/numeric.h \ - ../include/querycmds.h ../include/s_misc.h ../include/s_user.h \ - ../include/s_serv.h + ../include/querycmds.h ../include/ircd_features.h ../include/s_misc.h \ + ../include/s_user.h ../include/s_serv.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_userhost.o: m_userhost.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd_log.h ../include/ircd_reply.h \ - ../include/ircd_string.h ../include/ircd_chattr.h ../include/numeric.h \ - ../include/s_user.h ../include/struct.h + ../include/ircd_string.h ../include/ircd_chattr.h ../include/msgq.h \ + ../include/numeric.h ../include/s_user.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_userip.o: m_userip.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../include/capab.h ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/ircd_features.h \ - ../include/ircd_log.h ../include/numeric.h ../include/s_user.h \ - ../include/struct.h + ../include/ircd_log.h ../include/msgq.h ../include/numeric.h \ + ../include/s_user.h ../include/struct.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_version.o: m_version.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ @@ -1151,6 +1259,7 @@ ../include/numeric.h ../include/numnicks.h ../include/s_debug.h \ ../include/s_user.h ../include/send.h ../include/supported.h \ ../include/channel.h ../include/version.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_wallchops.o: m_wallchops.c ../config.h ../include/channel.h \ ../include/ircd_defs.h ../include/res.h ../include/client.h \ ../include/dbuf.h ../include/msgq.h ../include/ircd_events.h \ @@ -1159,18 +1268,21 @@ ../include/ircd_reply.h ../include/ircd_string.h \ ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \ ../include/numnicks.h ../include/s_user.h ../include/send.h +# 1 "/usr/home/zoltan/ircd-ircdev/ircd//" m_wallops.o: m_wallops.c ../config.h ../include/client.h \ ../include/ircd_defs.h ../include/dbuf.h ../include/msgq.h \ ../include/ircd_events.h ../include/ircd_handler.h ../include/res.h \ ../includ... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-05-01 12:59:58
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-05-01 12:59:50 UTC Modified files: ChangeLog ChangeLog.es include/patchlevel.h ircd/Makefile.in ircd/s_conf.c Added files: ircd/ddb_db_native.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-05-01 Toni García <zo...@ir...> 1.0.alpha30 * DB nativo: Lectura y escritura de hashes ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.31 ircd-ircdev/ChangeLog:1.32 --- ircd-ircdev/ChangeLog:1.31 Thu Apr 28 14:59:58 2005 +++ ircd-ircdev/ChangeLog Sun May 1 05:59:37 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.31 2005/04/28 21:59:58 zolty Exp $ +# $Id: ChangeLog,v 1.32 2005/05/01 12:59:37 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-05-01 Toni García <zo...@ir...> 1.0.alpha30 + * Native DB: Hashes read and save + 2005-04-29 Toni García <zo...@ir...> 1.0.alpha29 * Table i (ilines) * Table z (config) Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.31 ircd-ircdev/ChangeLog.es:1.32 --- ircd-ircdev/ChangeLog.es:1.31 Thu Apr 28 15:00:05 2005 +++ ircd-ircdev/ChangeLog.es Sun May 1 05:59:39 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.31 2005/04/28 22:00:05 zolty Exp $ +# $Id: ChangeLog.es,v 1.32 2005/05/01 12:59:39 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-05-01 Toni García <zo...@ir...> 1.0.alpha30 + * DB nativo: Lectura y escritura de hashes + 2005-04-29 Toni García <zo...@ir...> 1.0.alpha29 * Tabla i de ilines * Tabla z de Config Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.30 ircd-ircdev/include/patchlevel.h:1.31 --- ircd-ircdev/include/patchlevel.h:1.30 Thu Apr 28 15:00:08 2005 +++ ircd-ircdev/include/patchlevel.h Sun May 1 05:59:39 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.30 2005/04/28 22:00:08 zolty Exp $ + * $Id: patchlevel.h,v 1.31 2005/05/01 12:59:39 zolty Exp $ * */ -#define PATCHLEVEL ".alpha29" +#define PATCHLEVEL ".alpha30" #define RELEASE "1.0" Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.23 ircd-ircdev/ircd/Makefile.in:1.24 --- ircd-ircdev/ircd/Makefile.in:1.23 Thu Apr 14 03:28:06 2005 +++ ircd-ircdev/ircd/Makefile.in Sun May 1 05:59:39 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.23 2005/04/14 10:28:06 zolty Exp $ +# $Id: Makefile.in,v 1.24 2005/05/01 12:59:39 zolty Exp $ #### Start of system configuration section. #### @@ -93,7 +93,7 @@ DDB_SRC = \ ddb.c \ - ddb_db_template.c \ + ddb_db_native.c \ ddb_events.c\ m_db.c \ m_dbq.c \ Index: ircd-ircdev/ircd/ddb_db_native.c diff -u /dev/null ircd-ircdev/ircd/ddb_db_native.c:1.1 --- /dev/null Sun May 1 05:59:50 2005 +++ ircd-ircdev/ircd/ddb_db_native.c Sun May 1 05:59:40 2005 @@ -0,0 +1,142 @@ +/* + * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/ddb_db_native.c + * + * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> + * Copyright (C) 2004-2005 Toni Garcia (zoltan) <zo...@ir...> + * Copyright (C) 1999-2003 Jesus Cea Avion <jc...@ar...> + * + * 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 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 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/** @file + * @brief Native DataBase implementation of Distributed DataBase. + * @version $Id: ddb_db_native.c,v 1.1 2005/05/01 12:59:40 zolty Exp $ + */ +#include "config.h" + +#include "ddb.h" +#include "ircd_features.h" +#include "numnicks.h" + +#include <fcntl.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +/* +#include <stdlib.h> +#include <sys/mman.h> +#include <sys/stat.h> +*/ + + +int +ddb_db_open(unsigned char table, unsigned int id, struct ddb_memory_table *mt) +{ + return 1; +} + + +void ddb_db_close(struct ddb_memory_table *mt) +{ +} + +int ddb_db_read(struct ddb_memory_table *mt, char *mask, char *id, char *key, char *content) +{ + return 1; +} + +void ddb_db_write(unsigned char table, char *mask, unsigned int id, char *key, char *content) +{ +} + +void ddb_db_drop(unsigned char table) +{ +} + +void +ddb_db_compact(unsigned char table, char *mask, unsigned int id, char *comment) +{ + +} + + + +void +ddb_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo) +{ + char path[1024]; + char c; + int handle; + + sprintf(path, "%s/hashes", feature_str(FEAT_DDBPATH)); + + handle = open(path, O_RDONLY, S_IRUSR | S_IWUSR); + if (handle == -1) + { + *hi = *lo = 0; + return; + } + + if (lseek(handle, (15 * (table - DDB_INIT)) + 2, SEEK_SET) == -1) + ddb_die("Error when reading table %c hashes (LSEEK)", table); + + read(handle, path, 12); + close(handle); + alarm(0); + + path[12] = '\0'; + c = path[6]; + path[6] = '\0'; + *hi = base64toint(path); + path[6] = c; + *lo = base64toint(path + 6); +} + +void +ddb_hash_write(unsigned char table) +{ + char path[1024]; + char hash[20]; + int handle; + + sprintf(path, "%s/hashes", feature_str(FEAT_DDBPATH)); + alarm(3); + handle = open(path, O_WRONLY, S_IRUSR | S_IWUSR); + if (handle == -1) + { + unsigned char tabletemp; + handle = open(path, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); + if (handle == -1) + ddb_die("Error when saving table %c hashes (OPEN)", table); + + for (tabletemp = DDB_INIT; tabletemp <= DDB_END; tabletemp++) + { + sprintf(hash, "%c AAAAAAAAAAAA\n", tabletemp); + write(handle, hash, 15); + } + } + + if (lseek(handle, (15 * (table - DDB_INIT)), SEEK_SET) == -1) + ddb_die("Error when saving table %c hashes (LSEEK)", table); + + inttobase64(hash, ddb_hashtable_hi[table], 6); + inttobase64(hash + 6, ddb_hashtable_lo[table], 6); + sprintf(path, "%c %s\n", table, hash); + if (write(handle, path, strlen(path)) == -1) + ddb_die("Error when saving table %c hashes (WRITE)", table); + close(handle); + alarm(0); +} + Index: ircd-ircdev/ircd/s_conf.c diff -u ircd-ircdev/ircd/s_conf.c:1.14 ircd-ircdev/ircd/s_conf.c:1.15 --- ircd-ircdev/ircd/s_conf.c:1.14 Thu Apr 28 15:00:09 2005 +++ ircd-ircdev/ircd/s_conf.c Sun May 1 05:59:40 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief ircd configuration file driver - * @version $Id: s_conf.c,v 1.14 2005/04/28 22:00:09 zolty Exp $ + * @version $Id: s_conf.c,v 1.15 2005/05/01 12:59:40 zolty Exp $ */ #include "config.h" @@ -390,8 +390,8 @@ ddb = ddb_find_key(DDB_CONFIGDB, (char *)DDB_CONFIGDB_MSG_TOO_MANY_FROM_IP); sendcmdto_one(&me, CMD_NOTICE, cptr, - "In %s IRC Network only allows %d clones for your IP (%s)%s%s", - feature_str(FEAT_NETWORK), maxclones, ircd_ntoa(&cli_ip(cptr)), + "%C :In the %s IRC Network only allows %d clones for your IP (%s)%s%s", + cptr, feature_str(FEAT_NETWORK), maxclones, ircd_ntoa(&cli_ip(cptr)), ddb ? ". " : "", ddb ? ddb->content : ""); return ACR_TOO_MANY_FROM_IP; } ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-28 22:02:54
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-28 22:02:47 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.21 ircd-ircdev/TODO.es:1.22 --- ircd-ircdev/TODO.es:1.21 Thu Apr 28 15:00:05 2005 +++ ircd-ircdev/TODO.es Thu Apr 28 15:02:37 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.21 2005/04/28 22:00:05 zolty Exp $ +# $Id: TODO.es,v 1.22 2005/04/28 22:02:37 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -9,11 +9,9 @@ URGENTE -------------------------------------------------------------------------------------- - [D] Implementar el protocolo DDB (ddb_db). - - [D] Implementar tabla i de Ilines - [D] Implementar tabla o de Operadores - [D] Implementar tabla p de Privilegios - [D] Implementar tabla f de Features - - [D] Implementar tabla (a definir) de diversas configuraciones ALTA PRIORIDAD -------------------------------------------------------------------------------------- @@ -23,7 +21,6 @@ - [G] ¿Modo +M de canales?. - [G] Poner uuna Feature para elegir entre salir o no el nombre del servidor en los notices de auth y dnslookup al conectar. - - [G] Completar el MAP, salir numeric, nº de usuarios, porcentajes. - [D] Virtualhost personalizado a traves de la DDB. - [D] U-lines a traves de la DDB. ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-28 22:00:31
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-28 22:00:20 UTC Modified files: ChangeLog ChangeLog.es TODO.es include/ddb.h include/patchlevel.h include/s_conf.h ircd/ddb.c ircd/ddb_events.c ircd/ircd.c ircd/ircd_lexer.l ircd/ircd_parser.y ircd/m_invite.c ircd/m_map.c ircd/m_whowas.c ircd/s_conf.c ircd/s_err.c ircd/s_stats.c ircd/s_user.c tools/convert-conf.py Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-29 Toni García <zo...@ir...> 1.0.alpha29 * Tabla i de ilines * Tabla z de Config * Cambios en map * Cambios en parser.y ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.30 ircd-ircdev/ChangeLog:1.31 --- ircd-ircdev/ChangeLog:1.30 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/ChangeLog Thu Apr 28 14:59:58 2005 @@ -1,10 +1,16 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.30 2005/04/24 22:18:05 zolty Exp $ +# $Id: ChangeLog,v 1.31 2005/04/28 21:59:58 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-29 Toni García <zo...@ir...> 1.0.alpha29 + * Table i (ilines) + * Table z (config) + * Map changes + * parser.y changes + 2005-04-25 Toni García <zo...@ir...> 1.0.alpha28 * Fix bugs Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.30 ircd-ircdev/ChangeLog.es:1.31 --- ircd-ircdev/ChangeLog.es:1.30 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/ChangeLog.es Thu Apr 28 15:00:05 2005 @@ -1,10 +1,16 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.30 2005/04/24 22:18:05 zolty Exp $ +# $Id: ChangeLog.es,v 1.31 2005/04/28 22:00:05 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-29 Toni García <zo...@ir...> 1.0.alpha29 + * Tabla i de ilines + * Tabla z de Config + * Cambios en map + * Cambios en parser.y + 2005-04-25 Toni García <zo...@ir...> 1.0.alpha28 * Fix de bugs Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.20 ircd-ircdev/TODO.es:1.21 --- ircd-ircdev/TODO.es:1.20 Wed Apr 20 15:09:46 2005 +++ ircd-ircdev/TODO.es Thu Apr 28 15:00:05 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.20 2005/04/20 22:09:46 zolty Exp $ +# $Id: TODO.es,v 1.21 2005/04/28 22:00:05 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -68,6 +68,9 @@ actualmente deja X clones para cada IP de ese rango, deberia haber alguna forma de que sea por rango. +[18:11:32] <Tor> quote opmode torcum #opers,#lala +[18:11:38] <Tor> quote opmode #opers +nk lalala +[18:14:59] <Tor> burst de aways DOCUMENTACION PENDIENTE -------------------------------------------------------------------------------------- Index: ircd-ircdev/include/ddb.h diff -u ircd-ircdev/include/ddb.h:1.5 ircd-ircdev/include/ddb.h:1.6 --- ircd-ircdev/include/ddb.h:1.5 Thu Apr 14 03:28:06 2005 +++ ircd-ircdev/include/ddb.h Thu Apr 28 15:00:07 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ddb.h,v 1.5 2005/04/14 10:28:06 zolty Exp $ + * $Id: ddb.h,v 1.6 2005/04/28 22:00:07 zolty Exp $ * */ #ifndef INCLUDED_ddb_h @@ -45,11 +45,15 @@ #define DDB_INIT 'a' /* First table */ #define DDB_CHANDB 'c' /* ChanDB table */ +#define DDB_ILINEDB 'i' /* IlineDB table */ #define DDB_NICKDB 'n' /* NickDB table */ - +#define DDB_CONFIGDB 'z' /* ConfigDB table */ #define DDB_END 'z' /* Last table */ +#define DDB_CONFIGDB_MAX_CLONES_PER_IP "maxclones" +#define DDB_CONFIGDB_MSG_TOO_MANY_FROM_IP "msgmanyperip" + /* * PseudoBots */ @@ -120,8 +124,8 @@ extern unsigned int ddb_resident_table[DDB_TABLE_MAX]; extern unsigned int ddb_count_table[DDB_TABLE_MAX]; extern unsigned int ddb_id_table[DDB_TABLE_MAX]; -typedef void (*ddb_events_table_t)(char *, char *, int); -extern ddb_events_table_t ddb_events_table[DDB_TABLE_MAX]; +typedef void (*ddb_events_table_td)(char *, char *, int); +extern ddb_events_table_td ddb_events_table[DDB_TABLE_MAX]; extern unsigned int ddb_hashtable_hi[DDB_TABLE_MAX]; extern unsigned int ddb_hashtable_lo[DDB_TABLE_MAX]; extern int ddb_hash_register(char *key, int hash_size); Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.29 ircd-ircdev/include/patchlevel.h:1.30 --- ircd-ircdev/include/patchlevel.h:1.29 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/include/patchlevel.h Thu Apr 28 15:00:08 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.29 2005/04/24 22:18:05 zolty Exp $ + * $Id: patchlevel.h,v 1.30 2005/04/28 22:00:08 zolty Exp $ * */ -#define PATCHLEVEL ".alpha28" +#define PATCHLEVEL ".alpha29" #define RELEASE "1.0" Index: ircd-ircdev/include/s_conf.h diff -u ircd-ircdev/include/s_conf.h:1.11 ircd-ircdev/include/s_conf.h:1.12 --- ircd-ircdev/include/s_conf.h:1.11 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/include/s_conf.h Thu Apr 28 15:00:08 2005 @@ -21,7 +21,7 @@ */ /** @file s_conf.h * @brief ircd configuration file API. - * @version $Id: s_conf.h,v 1.11 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: s_conf.h,v 1.12 2005/04/28 22:00:08 zolty Exp $ */ #ifndef INCLUDED_s_conf_h #define INCLUDED_s_conf_h @@ -54,6 +54,8 @@ #define CONF_OPERATOR 0x0020 /**< ConfItem describes an Operator block */ #define CONF_UWORLD 0x8000 /**< ConfItem describes a Uworld server */ +#define CONF_AUTOCONNECT 0x0001 /**< Autoconnect to a server */ + /** Indicates ConfItem types that count associated clients. */ #define CONF_CLIENT_MASK (CONF_CLIENT | CONF_OPERATOR | CONF_SERVER) @@ -85,6 +87,7 @@ time_t hold; /**< Earliest time to attempt an outbound connect on this ConfItem. */ int dns_pending; /**< A dns request is pending. */ + int flags; /**< Additional modifiers for item. */ int addrbits; /**< Number of bits valid in ConfItem::address. */ struct Privs privs; /**< Privileges for opers. */ /** Used to detect if a privilege has been set by this ConfItem. */ Index: ircd-ircdev/ircd/ddb.c diff -u ircd-ircdev/ircd/ddb.c:1.5 ircd-ircdev/ircd/ddb.c:1.6 --- ircd-ircdev/ircd/ddb.c:1.5 Thu Apr 14 03:28:06 2005 +++ ircd-ircdev/ircd/ddb.c Thu Apr 28 15:00:08 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of Distributed DataBase. - * @version $Id: ddb.c,v 1.5 2005/04/14 10:28:06 zolty Exp $ + * @version $Id: ddb.c,v 1.6 2005/04/28 22:00:08 zolty Exp $ */ #include "config.h" @@ -161,7 +161,9 @@ * y no deben ser superiores a HASHSIZE, ya que ello * solo desperdiciaria memoria. */ + ddb_resident_table[DDB_ILINEDB] = 256; ddb_resident_table[DDB_NICKDB] = 32768; + ddb_resident_table[DDB_CONFIGDB] = 256; for (table = DDB_INIT; table <= DDB_END; table++) ddb_table_init(table); @@ -230,7 +232,7 @@ strcpy(keytemp, key); while (keytemp[i]) { -/* keytemp[i] = toLower(keytemp[i]); */ +/* keytemp[i] = ToLower(keytemp[i]); */ i++; } @@ -272,7 +274,7 @@ /* while (c[i] != 0) { - k[i] = toLower(c[i]); + k[i] = ToLower(c[i]); i++; } */ @@ -520,7 +522,10 @@ { /* if (!strcmp(ddb->key, k)) */ if (!ircd_strcmp(ddb->key, k)) + { + assert(0 != ddb->content); return ddb; + } } return NULL; } @@ -559,7 +564,13 @@ char * ddb_get_botname(char *bot) { - return cli_name(&me); + struct Ddb *ddb; + + ddb = ddb_find_key(DDB_CONFIGDB, DDB_NICKSERV); + if (ddb) + return ddb->content; + else + return cli_name(&me); } Index: ircd-ircdev/ircd/ddb_events.c diff -u ircd-ircdev/ircd/ddb_events.c:1.1 ircd-ircdev/ircd/ddb_events.c:1.2 --- ircd-ircdev/ircd/ddb_events.c:1.1 Thu Apr 14 03:28:07 2005 +++ ircd-ircdev/ircd/ddb_events.c Thu Apr 28 15:00:08 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Events of Distributed DataBase. - * @version $Id: ddb_events.c,v 1.1 2005/04/14 10:28:07 zolty Exp $ + * @version $Id: ddb_events.c,v 1.2 2005/04/28 22:00:08 zolty Exp $ */ #include "config.h" @@ -41,8 +41,9 @@ static int events_init = 0; static void ddb_events_table_n(char *key, char *content, int update); +static void ddb_events_table_z(char *key, char *content, int update); -ddb_events_table_t ddb_events_table[DDB_TABLE_MAX]; +ddb_events_table_td ddb_events_table[DDB_TABLE_MAX]; void @@ -51,7 +52,9 @@ if (events_init) return; + ddb_events_table[DDB_ILINEDB] = 0; ddb_events_table[DDB_NICKDB] = ddb_events_table_n; + ddb_events_table[DDB_CONFIGDB] = ddb_events_table_z; events_init = 1; } @@ -174,3 +177,8 @@ } } } + +static void +ddb_events_table_z(char *key, char *content, int update) +{ +} Index: ircd-ircdev/ircd/ircd.c diff -u ircd-ircdev/ircd/ircd.c:1.16 ircd-ircdev/ircd/ircd.c:1.17 --- ircd-ircdev/ircd/ircd.c:1.16 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/ircd.c Thu Apr 28 15:00:08 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Entry point and other initialization functions for the daemon. - * @version $Id: ircd.c,v 1.16 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: ircd.c,v 1.17 2005/04/28 22:00:08 zolty Exp $ */ #include "config.h" @@ -268,6 +268,7 @@ */ if (!(aconf->status & CONF_SERVER) || aconf->address.port == 0 + || !(aconf->flags & CONF_AUTOCONNECT) || ((ajupe = jupe_find(aconf->name)) && JupeIsActive(ajupe))) continue; Index: ircd-ircdev/ircd/ircd_lexer.l diff -u ircd-ircdev/ircd/ircd_lexer.l:1.12 ircd-ircdev/ircd/ircd_lexer.l:1.13 --- ircd-ircdev/ircd/ircd_lexer.l:1.12 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/ircd/ircd_lexer.l Thu Apr 28 15:00:08 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_lexer.l,v 1.12 2005/04/24 22:18:05 zolty Exp $ + * $Id: ircd_lexer.l,v 1.13 2005/04/28 22:00:08 zolty Exp $ * */ @@ -26,6 +26,7 @@ #include <unistd.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "config.h" #include "ircd.h" #include "ircd_alloc.h" @@ -102,9 +103,11 @@ TOKEN(PREPEND), TOKEN(USERMODE), TOKEN(FAST), + TOKEN(AUTOCONNECT), #undef TOKEN { "administrator", ADMIN }, { "apass_opmode", TPRIV_APASS_OPMODE }, + { "auto", AUTOCONNECT }, { "b", BYTES }, { "badchan", TPRIV_BADCHAN }, { "chan_limit", TPRIV_CHAN_LIMIT }, Index: ircd-ircdev/ircd/ircd_parser.y diff -u ircd-ircdev/ircd/ircd_parser.y:1.19 ircd-ircdev/ircd/ircd_parser.y:1.20 --- ircd-ircdev/ircd/ircd_parser.y:1.19 Sun Apr 24 15:18:05 2005 +++ ircd-ircdev/ircd/ircd_parser.y Thu Apr 28 15:00:08 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_parser.y,v 1.19 2005/04/24 22:18:05 zolty Exp $ + * $Id: ircd_parser.y,v 1.20 2005/04/28 22:00:08 zolty Exp $ * */ %{ @@ -70,7 +70,7 @@ int yylex(void); /* Now all the globals we need :/... */ - int tping, tconn, maxlinks, sendq, port, invert, stringno; + int tping, tconn, maxlinks, sendq, port, invert, stringno, flags; char *name, *pass, *host, *ip, *username, *origin, *hub_limit; char *stringlist[MAX_STRINGS]; struct ConnectionClass *c_class; @@ -157,6 +157,7 @@ %token IAUTH %token TIMEOUT %token FAST +%token AUTOCONNECT /* and now a lot of privileges... */ %token TPRIV_CHAN_LIMIT TPRIV_MODE_LCHAN TPRIV_DEOP_LCHAN TPRIV_WALK_LCHAN %token TPRIV_LOCAL_KILL TPRIV_REHASH TPRIV_RESTART TPRIV_DIE @@ -396,7 +397,8 @@ connectblock: CONNECT { - maxlinks = 65535; + maxlinks = 65535; + flags = CONF_AUTOCONNECT; } '{' connectitems '}' { struct ConfItem *aconf = NULL; @@ -409,7 +411,7 @@ else if (strchr(host, '*') || strchr(host, '?')) parse_error("Invalid host '%s' in connect block", host); else if (c_class == NULL) - parse_error("Missing class in connect block"); + parse_error("Missing or non-existent class in connect block"); else { aconf = make_conf(CONF_SERVER); aconf->name = name; @@ -420,6 +422,7 @@ aconf->host = host; aconf->maximum = maxlinks; aconf->hub_limit = hub_limit; + aconf->flags = flags; lookup_confhost(aconf); } if (!aconf) { @@ -431,12 +434,12 @@ } name = pass = host = origin = hub_limit = NULL; c_class = NULL; - port = 0; + port = flags = 0; }';'; connectitems: connectitem connectitems | connectitem; connectitem: connectname | connectpass | connectclass | connecthost | connectport | connectvhost | connectleaf | connecthub - | connecthublimit | connectmaxhops | error; + | connecthublimit | connectmaxhops | connectauto | error; connectname: NAME '=' QSTRING ';' { MyFree(name); @@ -450,6 +453,8 @@ connectclass: CLASS '=' QSTRING ';' { c_class = find_class($3); + if (!c_class) + parse_error("No such connection class '%s' for Connect block", $3); MyFree($3); }; connecthost: HOST '=' QSTRING ';' @@ -484,6 +489,8 @@ { maxlinks = $3; }; +connectauto: AUTOCONNECT '=' YES ';' { flags |= CONF_AUTOCONNECT; } + | AUTOCONNECT '=' NO ';' { flags &= ~CONF_AUTOCONNECT; }; uworldblock: UWORLD '{' uworlditems '}' ';'; uworlditems: uworlditem uworlditems | uworlditem; @@ -503,7 +510,7 @@ else if (host == NULL) parse_error("Missing host in operator block"); else if (c_class == NULL) - parse_error("Missing class in operator block"); + parse_error("Invalid or missing class in operator block"); else { aconf = make_conf(CONF_OPERATOR); aconf->name = name; @@ -554,6 +561,8 @@ operclass: CLASS '=' QSTRING ';' { c_class = find_class($3); + if (!c_class) + parse_error("No such connection class '%s' for Operator block", $3); MyFree($3); }; @@ -654,17 +663,16 @@ } '{' clientitems '}' ';' { + struct ConfItem *aconf = 0; struct irc_in_addr addr; unsigned char addrbits = 0; - if (ip && !ipmask_parse(ip, &addr, &addrbits)) { - parse_error("Invalid IP address %s in block", ip); - MyFree(username); - MyFree(host); - MyFree(ip); - MyFree(pass); - } else { - struct ConfItem *aconf = make_conf(CONF_CLIENT); + if (!c_class) + parse_error("Invalid or missing class in Client block"); + else if (ip && !ipmask_parse(ip, &addr, &addrbits)) + parse_error("Invalid IP address %s in Client block", ip); + else { + aconf = make_conf(CONF_CLIENT); aconf->username = username; aconf->host = host; if (ip) @@ -673,10 +681,16 @@ memset(&aconf->address.addr, 0, sizeof(aconf->address.addr)); aconf->addrbits = addrbits; aconf->name = ip; - aconf->conn_class = c_class ? c_class : find_class("default"); + aconf->conn_class = c_class; aconf->maximum = maxlinks; aconf->passwd = pass; } + if (!aconf) { + MyFree(username); + MyFree(host); + MyFree(ip); + MyFree(pass); + } host = NULL; username = NULL; c_class = NULL; @@ -720,6 +734,8 @@ clientclass: CLASS '=' QSTRING ';' { c_class = find_class($3); + if (!c_class) + parse_error("No such connection class '%s' for Class block", $3); MyFree($3); }; clientpass: PASS '=' QSTRING ';' Index: ircd-ircdev/ircd/m_invite.c diff -u ircd-ircdev/ircd/m_invite.c:1.9 ircd-ircdev/ircd/m_invite.c:1.10 --- ircd-ircdev/ircd/m_invite.c:1.9 Mon Mar 21 10:39:08 2005 +++ ircd-ircdev/ircd/m_invite.c Thu Apr 28 15:00:08 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_invite.c,v 1.9 2005/03/21 18:39:08 zolty Exp $ + * $Id: m_invite.c,v 1.10 2005/04/28 22:00:08 zolty Exp $ * */ @@ -176,24 +176,23 @@ if (cli_user(acptr)->away) send_reply(sptr, RPL_AWAY, cli_name(acptr), cli_user(acptr)->away); - if (MyConnect(acptr)) + if (MyConnect(acptr)) { add_invite(acptr, chptr); + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H", cli_name(acptr), chptr); + } if (!IsLocalChannel(chptr->chname) || MyConnect(acptr)) { if (feature_bool(FEAT_ANNOUNCE_INVITES)) { /* Announce to channel operators. */ sendcmdto_channel_butserv_butone(&me, get_error_numeric(RPL_ISSUEDINVITE)->str, - NULL, chptr, sptr, SKIP_NONOPS, + NULL, chptr, sptr, SKIP_NONOPS, "%H %C %C :%C has been invited by %C", chptr, acptr, sptr, acptr, sptr); - /* Announce to servers with channel operators, but skip acptr, - * since they will be notified below. */ - sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, acptr, SKIP_NONOPS, + /* Announce to servers with channel operators. */ + sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, NULL, SKIP_NONOPS, "%s %H %Tu", cli_name(acptr), chptr, chptr->creationtime); } - sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H %Tu", cli_name(acptr), - chptr, chptr->creationtime); } return 0; @@ -281,8 +280,10 @@ if (is_silenced(sptr, acptr)) return 0; - if (MyConnect(acptr)) + if (MyConnect(acptr)) { add_invite(acptr, chptr); + sendcmdto_one(sptr, CMD_INVITE, acptr, "%s %H", cli_name(acptr), chptr); + } if (feature_bool(FEAT_ANNOUNCE_INVITES)) { /* Announce to channel operators. */ @@ -290,16 +291,12 @@ NULL, chptr, sptr, SKIP_NONOPS, "%H %C %C :%C has been invited by %C", chptr, acptr, sptr, acptr, sptr); - /* Announce to servers with channel operators, but skip acptr, - * since they will be notified below. */ - sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, acptr, SKIP_NONOPS, + /* Announce to servers with channel operators. */ + sendcmdto_channel_servers_butone(sptr, NULL, TOK_INVITE, chptr, NULL, SKIP_NONOPS, "%s %H %Tu", cli_name(acptr), chptr, chptr->creationtime); } - sendcmdto_one(sptr, CMD_INVITE, acptr, - "%s %H %Tu", - cli_name(acptr), chptr, chptr->creationtime); return 0; } Index: ircd-ircdev/ircd/m_map.c diff -u ircd-ircdev/ircd/m_map.c:1.7 ircd-ircdev/ircd/m_map.c:1.8 --- ircd-ircdev/ircd/m_map.c:1.7 Mon Mar 21 10:39:08 2005 +++ ircd-ircdev/ircd/m_map.c Thu Apr 28 15:00:09 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_map.c,v 1.7 2005/03/21 18:39:08 zolty Exp $ + * $Id: m_map.c,v 1.8 2005/04/28 22:00:09 zolty Exp $ * */ @@ -115,6 +115,17 @@ else { char lag[512]; + unsigned int users; + unsigned int totalusers; + unsigned int percentage; + + totalusers = UserStats.clients; + if (!totalusers) + totalusers = 1; + + users = (IsMe(server) ? UserStats.local_clients : cli_serv(server)->clients); + percentage = (10000 * users) / totalusers; + if (cli_serv(server)->lag>10000) lag[0]=0; else if (cli_serv(server)->lag<0) @@ -128,8 +139,8 @@ else chr = ""; send_reply(cptr, RPL_MAP, prompt, chr, cli_name(server), - lag, (server == &me) ? UserStats.local_clients : - cli_serv(server)->clients); + lag, users, (users == 1) ? "" : "s", + (percentage / 100), (percentage % 100)); } if (prompt_length > 0) { Index: ircd-ircdev/ircd/m_whowas.c diff -u ircd-ircdev/ircd/m_whowas.c:1.7 ircd-ircdev/ircd/m_whowas.c:1.8 --- ircd-ircdev/ircd/m_whowas.c:1.7 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/m_whowas.c Thu Apr 28 15:00:09 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_whowas.c,v 1.7 2005/04/22 16:22:13 zolty Exp $ + * $Id: m_whowas.c,v 1.8 2005/04/28 22:00:09 zolty Exp $ * */ @@ -137,7 +137,7 @@ { send_reply(sptr, RPL_WHOWASUSER, temp->name, temp->username, temp->hostname, temp->realname); - if (IsAnOper(sptr) && ircd_strcmp(temp->hostname, temp->realhost)) + if (IsAnOper(sptr) && temp->realhost) send_reply(sptr, RPL_WHOISACTUALLY, temp->name, temp->username, temp->realhost); send_reply(sptr, RPL_WHOISSERVER, temp->name, feature_bool(FEAT_HIS_WHOIS_SERVERNAME) && !IsOper(sptr) ? Index: ircd-ircdev/ircd/s_conf.c diff -u ircd-ircdev/ircd/s_conf.c:1.13 ircd-ircdev/ircd/s_conf.c:1.14 --- ircd-ircdev/ircd/s_conf.c:1.13 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/s_conf.c Thu Apr 28 15:00:09 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief ircd configuration file driver - * @version $Id: s_conf.c,v 1.13 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: s_conf.c,v 1.14 2005/04/28 22:00:09 zolty Exp $ */ #include "config.h" @@ -30,6 +30,7 @@ #include "class.h" #include "client.h" #include "crule.h" +#include "ddb.h" #include "ircd_features.h" #include "fileio.h" #include "gline.h" @@ -46,6 +47,7 @@ #include "listener.h" #include "match.h" #include "motd.h" +#include "msg.h" #include "numeric.h" #include "numnicks.h" #include "opercmds.h" @@ -369,8 +371,34 @@ static enum AuthorizationCheckResult check_limit_and_attach(struct Client* cptr, struct ConfItem* aconf) { +#if defined(DDB) + struct Ddb *ddb; + int clones; + int maxclones; + + ddb = ddb_find_key(DDB_ILINEDB, (char *)ircd_ntoa(&cli_ip(cptr))); + if (ddb && (clones = atoi(ddb->content))) + maxclones = clones; + else if ((ddb = ddb_find_key(DDB_CONFIGDB, (char *)DDB_CONFIGDB_MAX_CLONES_PER_IP)) + && (clones = atoi(ddb->content))) + maxclones = clones; + else + maxclones = aconf->maximum; + + if (IPcheck_nr(cptr) > maxclones) + { + ddb = ddb_find_key(DDB_CONFIGDB, (char *)DDB_CONFIGDB_MSG_TOO_MANY_FROM_IP); + + sendcmdto_one(&me, CMD_NOTICE, cptr, + "In %s IRC Network only allows %d clones for your IP (%s)%s%s", + feature_str(FEAT_NETWORK), maxclones, ircd_ntoa(&cli_ip(cptr)), + ddb ? ". " : "", ddb ? ddb->content : ""); + return ACR_TOO_MANY_FROM_IP; + } +#else if (IPcheck_nr(cptr) > aconf->maximum) return ACR_TOO_MANY_FROM_IP; +#endif return attach_conf(cptr, aconf); } Index: ircd-ircdev/ircd/s_err.c diff -u ircd-ircdev/ircd/s_err.c:1.17 ircd-ircdev/ircd/s_err.c:1.18 --- ircd-ircdev/ircd/s_err.c:1.17 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/s_err.c Thu Apr 28 15:00:09 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Error handling support. - * @version $Id: s_err.c,v 1.17 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: s_err.c,v 1.18 2005/04/28 22:00:09 zolty Exp $ */ #include "config.h" @@ -65,7 +65,7 @@ /* 014 */ { 0 }, /* 015 */ - { RPL_MAP, ":%s%s%s %s [%i clients]", "015" }, + { RPL_MAP, ":%s%s%s %s [%i client%s - %i.%i%%]", "015" }, /* 016 */ { RPL_MAPMORE, ":%s%s --> *more*", "016" }, /* 017 */ Index: ircd-ircdev/ircd/s_stats.c diff -u ircd-ircdev/ircd/s_stats.c:1.12 ircd-ircdev/ircd/s_stats.c:1.13 --- ircd-ircdev/ircd/s_stats.c:1.12 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/s_stats.c Thu Apr 28 15:00:09 2005 @@ -22,7 +22,7 @@ /** @file * @brief Report configuration lines and other statistics from this * server. - * @version $Id: s_stats.c,v 1.12 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: s_stats.c,v 1.13 2005/04/28 22:00:09 zolty Exp $ * * Note: The info is reported in the order the server uses * it--not reversed as in ircd.conf! @@ -415,7 +415,8 @@ nowr = CurrentTime - cli_since(&me); send_reply(to, RPL_STATSUPTIME, nowr / 86400, (nowr / 3600) % 24, (nowr / 60) % 60, nowr % 60); - send_reply(to, RPL_STATSCONN, max_connection_count, max_client_count); + send_reply(to, RPL_STATSCONN, max_connection_count, max_client_count, + ServerStats->is_cl); } /** Verbosely report on servers connected to the network. Index: ircd-ircdev/ircd/s_user.c diff -u ircd-ircdev/ircd/s_user.c:1.15 ircd-ircdev/ircd/s_user.c:1.16 --- ircd-ircdev/ircd/s_user.c:1.15 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/s_user.c Thu Apr 28 15:00:09 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Miscellaneous user-related helper functions. - * @version $Id: s_user.c,v 1.15 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: s_user.c,v 1.16 2005/04/28 22:00:09 zolty Exp $ */ #include "config.h" @@ -432,7 +432,7 @@ { last_too_many1 = CurrentTime; sendto_opmask_butone(0, SNO_TOOMANY, "Too many connections in " - "class %i for %s.", get_client_class(sptr), + "class %s for %s.", get_client_class(sptr), get_client_name(sptr, SHOW_IP)); } ++ServerStats->is_ref; @@ -613,12 +613,32 @@ /* * Set user's initial modes */ - parv[0] = (char*)nick; - parv[1] = (char*)nick; - parv[2] = (char*)client_get_default_umode(sptr); - parv[3] = NULL; /* needed in case of +s */ - set_user_mode(sptr, sptr, 3, parv); - ClearHiddenHost(sptr); /* just in case somebody stuck +x in there */ + tmpstr = (char*)client_get_default_umode(sptr); + if (tmpstr) for (; *tmpstr; ++tmpstr) { + switch (*tmpstr) { + case 's': + if (!feature_bool(FEAT_HIS_SNOTICES_OPER_ONLY)) { + SetServNotice(sptr); + set_snomask(sptr, SNO_DEFAULT, SNO_SET); + } + break; + case 'w': + if (!feature_bool(FEAT_WALLOPS_OPER_ONLY)) + SetWallops(sptr); + break; + case 'i': + SetInvisible(sptr); + ++UserStats.inv_clients; + break; + case 'd': + SetDeaf(sptr); + break; + case 'g': + if (!feature_bool(FEAT_HIS_DEBUG_OPER_ONLY)) + SetDebug(sptr); + break; + } + } } else /* if (IsServer(cptr)) */ @@ -678,9 +698,14 @@ iptobase64(ip_base64, &cli_ip(sptr), sizeof(ip_base64), 0), NumNick(sptr), cli_info(sptr)); - /* Send server notice mask to client */ - if (MyUser(sptr) && (cli_snomask(sptr) != SNO_DEFAULT) && HasFlag(sptr, FLAG_SERVNOTICE)) - send_reply(sptr, RPL_SNOMASK, cli_snomask(sptr), cli_snomask(sptr)); + /* Send user mode to client */ + if (MyUser(sptr)) + { + static struct Flags flags; /* automatically initialized to zeros */ + send_umode(cptr, sptr, &flags, ALL_UMODES); + if ((cli_snomask(sptr) != SNO_DEFAULT) && HasFlag(sptr, FLAG_SERVNOTICE)) + send_reply(sptr, RPL_SNOMASK, cli_snomask(sptr), cli_snomask(sptr)); + } /* Notify new local user */ check_status_watch(sptr, RPL_LOGON); Index: ircd-ircdev/tools/convert-conf.py diff -u ircd-ircdev/tools/convert-conf.py:1.4 ircd-ircdev/tools/convert-conf.py:1.5 --- ircd-ircdev/tools/convert-conf.py:1.4 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/tools/convert-conf.py Thu Apr 28 15:00:09 2005 @@ -19,7 +19,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# $Id: convert-conf.py,v 1.4 2005/04/22 16:22:13 zolty Exp $ +# $Id: convert-conf.py,v 1.5 2005/04/28 22:00:09 zolty Exp $ # # Configuration file converter from 2.10.11 to 2.10.12 format @@ -70,6 +70,10 @@ "HIS_SERVERINFO", "HIS_URLSERVERS" ] +deprecated_features = [ + "VIRTUAL_HOST", + ] + # [ "old feature" => ( local oper priv, global oper priv ) ] # None means don't add this feature_to_priv = { @@ -209,7 +213,7 @@ opers.append(parts) cvtmap = { - 'M': ('General', ('name', 'vhost', 'description', '', '!numeric'), ''), + 'M': ('General', ('name', 'vhost', 'description', '-', '!numeric'), ''), 'A': ('Admin', ('location', 'contact', 'contact'), ''), 'Y': ('Class', ('name', '!pingfreq', '!connectfreq', '!maxlinks', '!sendq'), ''), 'I': do_iline, @@ -283,6 +287,11 @@ for item in items: if idx >= len(parts): break + # This field is ignored + if parts[idx]=="-": + continue + if len(parts[idx]) and not len(item): + sys.stderr.write("WARNING: Unknown field %i on line %i\n" % (idx,lno)) if len(parts[idx]) and len(item): if item[0] == '!': print "\t%s = %s;" % (item[1:], istr(parts[idx])) @@ -344,13 +353,18 @@ print "\tname = \"%s\";" % qstr(connects[i]["name"]) print "\thost = \"%s\";" % qstr(connects[i]["host"]) print "\tpassword = \"%s\";" % qstr(connects[i]["password"]) - if connects[i]["port"]: + if connects[i].has_key("port"): print "\tport = %s;" % connects[i]["port"] print "\tclass = \"%s\";" % qstr(connects[i]["class"]) if connects[i].has_key("hub"): print "\thub = \"%s\";" % qstr(connects[i]["hub"]) else: print "\tleaf;" + if not connects[i].has_key("port"): + print "# You can now specify ports without implying autoconnect" + print "#\tport = 4400;" + print "\tautoconnect = no;" + sys.stderr.write("NOTE: You should add a port for \"%s\", autoconnect is now specified seperately\n" % qstr(connects[i]["name"])) print "};" print @@ -367,8 +381,10 @@ print "# Option converted to locop privilege" elif name.startswith("OPER_"): print "# Option converted to oper privilege" + elif name in deprecated_features: + print "# Option is deprecated" else: - print "# Option no longer exists in 2.10.12" + print "# Unknown option" print "#\t\"%s\" = \"%s\";" % (qstr(name), qstr(value)) print "\t\"%s\" = \"%s\";" % (qstr(name), qstr(value)) print "};" ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-24 22:18:24
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-24 22:18:16 UTC Modified files: ChangeLog ChangeLog.es include/patchlevel.h ircd/channel.c ircd/ircd_lexer.l ircd/ircd_parser.y ircd/m_silence.c ircd/m_userhost.c ircd/m_userip.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-25 Toni García <zo...@ir...> 1.0.alpha28 * Fix de bugs ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.29 ircd-ircdev/ChangeLog:1.30 --- ircd-ircdev/ChangeLog:1.29 Fri Apr 22 09:22:11 2005 +++ ircd-ircdev/ChangeLog Sun Apr 24 15:18:05 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.29 2005/04/22 16:22:11 zolty Exp $ +# $Id: ChangeLog,v 1.30 2005/04/24 22:18:05 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-25 Toni García <zo...@ir...> 1.0.alpha28 + * Fix bugs + 2005-04-22 Toni García <zo...@ir...> 1.0.alpha27 * Undernet synchronization Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.29 ircd-ircdev/ChangeLog.es:1.30 --- ircd-ircdev/ChangeLog.es:1.29 Fri Apr 22 09:22:11 2005 +++ ircd-ircdev/ChangeLog.es Sun Apr 24 15:18:05 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.29 2005/04/22 16:22:11 zolty Exp $ +# $Id: ChangeLog.es,v 1.30 2005/04/24 22:18:05 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-25 Toni García <zo...@ir...> 1.0.alpha28 + * Fix de bugs + 2005-04-22 Toni García <zo...@ir...> 1.0.alpha27 * Sincronización Undernet Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.28 ircd-ircdev/include/patchlevel.h:1.29 --- ircd-ircdev/include/patchlevel.h:1.28 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/include/patchlevel.h Sun Apr 24 15:18:05 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.28 2005/04/22 16:22:13 zolty Exp $ + * $Id: patchlevel.h,v 1.29 2005/04/24 22:18:05 zolty Exp $ * */ -#define PATCHLEVEL ".alpha27" +#define PATCHLEVEL ".alpha28" #define RELEASE "1.0" Index: ircd-ircdev/ircd/channel.c diff -u ircd-ircdev/ircd/channel.c:1.18 ircd-ircdev/ircd/channel.c:1.19 --- ircd-ircdev/ircd/channel.c:1.18 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/channel.c Sun Apr 24 15:18:05 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Channel management and maintanance - * @version $Id: channel.c,v 1.18 2005/04/22 16:22:13 zolty Exp $ + * @version $Id: channel.c,v 1.19 2005/04/24 22:18:05 zolty Exp $ */ #include "config.h" @@ -2837,6 +2837,8 @@ if (!bmatch(ban, newban)) { if (do_free) free_ban(newban); + else + MyFree(newban); return 1; } if (!(ban->flags & (BAN_OVERLAPPED|BAN_DEL))) { @@ -2873,6 +2875,8 @@ } if (do_free) free_ban(newban); + else + MyFree(newban->banstr); return 4; } @@ -2928,7 +2932,7 @@ newban = state->banlist + (state->numbans++); newban->next = 0; newban->flags = ((state->dir == MODE_ADD) ? BAN_ADD : BAN_DEL) - | (*flag_p == 'b' ? 0 : BAN_EXCEPTION); + | (*flag_p == MODE_BAN ? 0 : BAN_EXCEPTION); newban->banstr = NULL; set_ban_mask(newban, collapse(pretty_mask(t_str))); newban->who = cli_name(state->sptr); @@ -3031,6 +3035,13 @@ prevban = ban; } /* for (prevban = 0, ban = state->chptr->banlist; ban; ban = nextban) { */ + /* Release all masks of removed bans */ + for (count = 0; count < state->numbans; ++count) { + ban = state->banlist + count; + if (ban->flags & BAN_DEL) + MyFree(ban->banstr); + } + if (changed) /* if we changed the ban list, we must invalidate the bans */ mode_ban_invalidate(state->chptr); } Index: ircd-ircdev/ircd/ircd_lexer.l diff -u ircd-ircdev/ircd/ircd_lexer.l:1.11 ircd-ircdev/ircd/ircd_lexer.l:1.12 --- ircd-ircdev/ircd/ircd_lexer.l:1.11 Sat Apr 2 11:47:35 2005 +++ ircd-ircdev/ircd/ircd_lexer.l Sun Apr 24 15:18:05 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_lexer.l,v 1.11 2005/04/02 19:47:35 zolty Exp $ + * $Id: ircd_lexer.l,v 1.12 2005/04/24 22:18:05 zolty Exp $ * */ @@ -28,6 +28,7 @@ #include <stdlib.h> #include "config.h" #include "ircd.h" +#include "ircd_alloc.h" #include "ircd_string.h" #include "s_debug.h" #include "y.tab.h" @@ -204,7 +205,7 @@ QSTRING \"[^"\n]+[\"\n] %% -{QSTRING} {yytext[yyleng-1] = 0; yylval.text = yytext+1; return QSTRING;} +{QSTRING} {yytext[yyleng-1] = 0; DupString(yylval.text, yytext+1); return QSTRING;} {NUMBER} {yylval.num = strtoul(yytext, NULL, 10); return NUMBER;} {WHITE} ; {SHCOMMENT} ; Index: ircd-ircdev/ircd/ircd_parser.y diff -u ircd-ircdev/ircd/ircd_parser.y:1.18 ircd-ircdev/ircd/ircd_parser.y:1.19 --- ircd-ircdev/ircd/ircd_parser.y:1.18 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/ircd/ircd_parser.y Sun Apr 24 15:18:05 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_parser.y,v 1.18 2005/04/22 16:22:13 zolty Exp $ + * $Id: ircd_parser.y,v 1.19 2005/04/24 22:18:05 zolty Exp $ * */ %{ @@ -93,7 +93,6 @@ %token <text> QSTRING %token <num> NUMBER -%token <text> FNAME %token GENERAL %token ADMIN @@ -262,6 +261,7 @@ jupenick: NICK '=' QSTRING { addNickJupes($3); + MyFree($3); } ';'; generalblock: GENERAL '{' generalitems '}' @@ -285,16 +285,19 @@ generalname: NAME '=' QSTRING ';' { if (localConf.name == NULL) - DupString(localConf.name, $3); - else if (strcmp(localConf.name, $3)) - parse_error("Redefinition of server name %s (%s)", $3, - localConf.name); + localConf.name = $3; + else { + if (strcmp(localConf.name, $3)) + parse_error("Redefinition of server name %s (%s)", $3, + localConf.name); + MyFree($3); + } }; generaldesc: DESCRIPTION '=' QSTRING ';' { MyFree(localConf.description); - DupString(localConf.description, $3); + localConf.description = $3; ircd_strncpy(cli_info(&me), $3, REALLEN); }; @@ -307,6 +310,7 @@ memcpy(&VirtualHost_v4.addr, &addr, sizeof(addr)); else memcpy(&VirtualHost_v6.addr, &addr, sizeof(addr)); + MyFree($3); }; adminblock: ADMIN '{' adminitems '}' @@ -322,17 +326,17 @@ adminitem: adminlocation | admincontact | error; adminlocation: LOCATION '=' QSTRING ';' { - if (localConf.location1 == NULL) - DupString(localConf.location1, $3); - else if (localConf.location2 == NULL) - DupString(localConf.location2, $3); - /* Otherwise just drop it. -A1kmm */ + if (localConf.location1 == NULL) + localConf.location1 = $3; + else if (localConf.location2 == NULL) + localConf.location2 = $3; + else /* Otherwise just drop it. -A1kmm */ + MyFree($3); }; admincontact: CONTACT '=' QSTRING ';' { - if (localConf.contact != NULL) - MyFree(localConf.contact); - DupString(localConf.contact, $3); + MyFree(localConf.contact); + localConf.contact = $3; }; classblock: CLASS { @@ -366,7 +370,7 @@ classname: NAME '=' QSTRING ';' { MyFree(name); - DupString(name, $3); + name = $3; }; classpingfreq: PINGFREQ '=' timespec ';' { @@ -387,7 +391,7 @@ classusermode: USERMODE '=' QSTRING ';' { MyFree(pass); - DupString(pass, $3); + pass = $3; }; connectblock: CONNECT @@ -395,32 +399,39 @@ maxlinks = 65535; } '{' connectitems '}' { - if (name != NULL && pass != NULL && host != NULL && c_class != NULL - && !strchr(host, '*') && !strchr(host, '?')) - { - struct ConfItem *aconf = make_conf(CONF_SERVER); - aconf->name = name; - aconf->origin_name = origin; - aconf->passwd = pass; - aconf->conn_class = c_class; - aconf->address.port = port; - aconf->host = host; - aconf->maximum = maxlinks; - aconf->hub_limit = hub_limit; - lookup_confhost(aconf); - } - else - { - MyFree(name); - MyFree(pass); - MyFree(host); - MyFree(origin); - MyFree(hub_limit); - parse_error("Bad connect block"); - } - name = pass = host = origin = hub_limit = NULL; - c_class = NULL; - port = 0; + struct ConfItem *aconf = NULL; + if (name == NULL) + parse_error("Missing name in connect block"); + else if (pass == NULL) + parse_error("Missing password in connect block"); + else if (host == NULL) + parse_error("Missing host in connect block"); + else if (strchr(host, '*') || strchr(host, '?')) + parse_error("Invalid host '%s' in connect block", host); + else if (c_class == NULL) + parse_error("Missing class in connect block"); + else { + aconf = make_conf(CONF_SERVER); + aconf->name = name; + aconf->origin_name = origin; + aconf->passwd = pass; + aconf->conn_class = c_class; + aconf->address.port = port; + aconf->host = host; + aconf->maximum = maxlinks; + aconf->hub_limit = hub_limit; + lookup_confhost(aconf); + } + if (!aconf) { + MyFree(name); + MyFree(pass); + MyFree(host); + MyFree(origin); + MyFree(hub_limit); + } + name = pass = host = origin = hub_limit = NULL; + c_class = NULL; + port = 0; }';'; connectitems: connectitem connectitems | connectitem; connectitem: connectname | connectpass | connectclass | connecthost @@ -428,78 +439,73 @@ | connecthublimit | connectmaxhops | error; connectname: NAME '=' QSTRING ';' { - MyFree(name); - DupString(name, $3); + MyFree(name); + name = $3; }; connectpass: PASS '=' QSTRING ';' { - MyFree(pass); - DupString(pass, $3); + MyFree(pass); + pass = $3; }; connectclass: CLASS '=' QSTRING ';' { - c_class = find_class($3); + c_class = find_class($3); + MyFree($3); }; connecthost: HOST '=' QSTRING ';' { - MyFree(host); - DupString(host, $3); + MyFree(host); + host = $3; }; connectport: PORT '=' NUMBER ';' { - port = $3; + port = $3; }; connectvhost: VHOST '=' QSTRING ';' { - MyFree(origin); - DupString(origin, $3); + MyFree(origin); + origin = $3; }; connectleaf: LEAF ';' { - maxlinks = 0; + maxlinks = 0; }; connecthub: HUB ';' { - MyFree(hub_limit); - DupString(hub_limit, "*"); + MyFree(hub_limit); + DupString(hub_limit, "*"); }; connecthublimit: HUB '=' QSTRING ';' { - MyFree(hub_limit); - DupString(hub_limit, $3); + MyFree(hub_limit); + hub_limit = $3; }; connectmaxhops: MAXHOPS '=' expr ';' { - maxlinks = $3; + maxlinks = $3; }; -uworldblock: UWORLD '{' uworlditems '}' ';' -{ - if (name) - { - struct ConfItem *aconf = make_conf(CONF_UWORLD); - aconf->host = name; - } - else - { - MyFree(name); - parse_error("Bad UWorld block"); - } - name = NULL; -}; +uworldblock: UWORLD '{' uworlditems '}' ';'; uworlditems: uworlditem uworlditems | uworlditem; uworlditem: uworldname | error; uworldname: NAME '=' QSTRING ';' { - MyFree(name); - DupString(name, $3); + make_conf(CONF_UWORLD)->host = $3; }; operblock: OPER '{' operitems '}' ';' { - if (name && pass && host && c_class) - { - struct ConfItem *aconf = make_conf(CONF_OPERATOR); + struct ConfItem *aconf = NULL; + if (name == NULL) + parse_error("Missing name in operator block"); + else if (pass == NULL) + parse_error("Missing password in operator block"); + else if (host == NULL) + parse_error("Missing host in operator block"); + else if (c_class == NULL) + parse_error("Missing class in operator block"); + else { + aconf = make_conf(CONF_OPERATOR); aconf->name = name; aconf->passwd = pass; conf_parse_userhost(aconf, host); @@ -510,9 +516,7 @@ && !FlagHas(&c_class->privs_dirty, PRIV_PROPAGATE)) parse_error("Operator block for %s and class %s have no LOCAL setting", name, c_class->cc_name); } - else - { - parse_error("operator blocks need a name, password, class and host."); + if (!aconf) { MyFree(name); MyFree(pass); MyFree(host); @@ -527,29 +531,30 @@ opername: NAME '=' QSTRING ';' { MyFree(name); - DupString(name, $3); + name = $3; }; operpass: PASS '=' QSTRING ';' { MyFree(pass); - DupString(pass, $3); + pass = $3; }; operhost: HOST '=' QSTRING ';' { - MyFree(host); - if (!strchr($3, '@')) - { - int uh_len; - char *b = (char*) MyMalloc((uh_len = strlen($3)+3)); - ircd_snprintf(0, b, uh_len, "*@%s", $3); - host = b; - } - else - DupString(host, $3); + MyFree(host); + if (!strchr($3, '@')) + { + int uh_len; + host = (char*) MyMalloc((uh_len = strlen($3)+3)); + ircd_snprintf(0, host, uh_len, "*@%s", $3); + MyFree($3); + } + else + host = $3; }; operclass: CLASS '=' QSTRING ';' { - c_class = find_class($3); + c_class = find_class($3); + MyFree($3); }; priv: privtype '=' yesorno ';' @@ -600,13 +605,9 @@ portblock: PORT '{' portitems '}' ';' { if (port > 0 && port <= 0xFFFF) - { add_listener(port, host, pass, tconn, tping); - } else - { - parse_error("Bad port block"); - } + parse_error("Port %d is out of range", port); MyFree(host); MyFree(pass); host = pass = NULL; @@ -622,7 +623,7 @@ portvhost: VHOST '=' QSTRING ';' { MyFree(host); - DupString(host, $3); + host = $3; }; portmask: MASK '=' QSTRING ';' @@ -657,7 +658,7 @@ unsigned char addrbits = 0; if (ip && !ipmask_parse(ip, &addr, &addrbits)) { - parse_error("Invalid IP address in block"); + parse_error("Invalid IP address %s in block", ip); MyFree(username); MyFree(host); MyFree(ip); @@ -691,38 +692,40 @@ if (sep) { *sep++ = '\0'; MyFree(username); - DupString(username, $3); DupString(host, sep); + username = $3; } else { - DupString(host, $3); + host = $3; } }; clientip: IP '=' QSTRING ';' { - char *sep = strchr($3, '@'); + char *sep; + sep = strchr($3, '@'); MyFree(ip); if (sep) { *sep++ = '\0'; MyFree(username); - DupString(username, $3); DupString(ip, sep); + username = $3; } else { - DupString(ip, $3); + ip = $3; } }; clientusername: USERNAME '=' QSTRING ';' { MyFree(username); - DupString(username, $3); + username = $3; }; clientclass: CLASS '=' QSTRING ';' { c_class = find_class($3); + MyFree($3); }; clientpass: PASS '=' QSTRING ';' { MyFree(pass); - DupString(pass, $3); + pass = $3; }; clientmaxlinks: MAXLINKS '=' expr ';' { @@ -746,7 +749,7 @@ MyFree(dconf->realmask); MyFree(dconf->message); MyFree(dconf); - parse_error("Bad kill block"); + parse_error("Kill block must match on at least one of username, host or realname"); } dconf = NULL; } ';'; @@ -754,48 +757,47 @@ killitem: killuhost | killreal | killusername | killreasonfile | killreason | error; killuhost: HOST '=' QSTRING ';' { - char *u, *h; + char *h; MyFree(dconf->hostmask); MyFree(dconf->usermask); if ((h = strchr($3, '@')) == NULL) { - u = "*"; - h = $3; + DupString(dconf->usermask, "*"); + dconf->hostmask = $3; } else { - u = $3; *h++ = '\0'; + DupString(dconf->hostmask, h); + dconf->usermask = $3; } - DupString(dconf->hostmask, h); - DupString(dconf->usermask, u); ipmask_parse(dconf->hostmask, &dconf->address, &dconf->bits); }; killusername: USERNAME '=' QSTRING ';' { MyFree(dconf->usermask); - DupString(dconf->usermask, $3); + dconf->usermask = $3; }; killreal: REAL '=' QSTRING ';' { - MyFree(dconf->realmask); - DupString(dconf->realmask, $3); + MyFree(dconf->realmask); + dconf->realmask = $3; }; killreason: REASON '=' QSTRING ';' { - dconf->flags &= ~DENY_FLAGS_FILE; - MyFree(dconf->message); - DupString(dconf->message, $3); + dconf->flags &= ~DENY_FLAGS_FILE; + MyFree(dconf->message); + dconf->message = $3; }; killreasonfile: TFILE '=' QSTRING ';' { - dconf->flags |= DENY_FLAGS_FILE; - MyFree(dconf->message); - DupString(dconf->message, $3); + dconf->flags |= DENY_FLAGS_FILE; + MyFree(dconf->message); + dconf->message = $3; }; cruleblock: CRULE @@ -803,8 +805,14 @@ tconn = CRULE_AUTO; } '{' cruleitems '}' ';' { - struct CRuleNode *node; - if (host != NULL && pass != NULL && (node=crule_parse(pass)) != NULL) + struct CRuleNode *node = NULL; + if (host == NULL) + parse_error("Missing host in crule block"); + else if (pass == NULL) + parse_error("Missing rule in crule block"); + else if ((node = crule_parse(pass)) == NULL) + parse_error("Invalid rule '%s' in crule block", pass); + else { struct CRuleConf *p = (struct CRuleConf*) MyMalloc(sizeof(*p)); p->hostmask = host; @@ -814,11 +822,10 @@ p->next = cruleConfList; cruleConfList = p; } - else + if (!node) { MyFree(host); MyFree(pass); - parse_error("Bad CRule block"); } host = pass = NULL; tconn = 0; @@ -831,13 +838,13 @@ { MyFree(host); collapse($3); - DupString(host, $3); + host = $3; }; crulerule: RULE '=' QSTRING ';' { - MyFree(pass); - DupString(pass, $3); + MyFree(pass); + pass = $3; }; cruleall: ALL '=' YES ';' @@ -861,12 +868,12 @@ motditem: motdhost | motdfile | error; motdhost: HOST '=' QSTRING ';' { - DupString(host, $3); + host = $3; }; motdfile: TFILE '=' QSTRING ';' { - DupString(pass, $3); + pass = $3; }; featuresblock: FEATURES '{' featureitems '}' ';'; @@ -884,7 +891,10 @@ stringno = 2; } posextrastrings { + unsigned int ii; feature_set(NULL, (const char * const *)stringlist, stringno); + for (ii = 0; ii < stringno; ++ii) + MyFree(stringlist[ii]); }; posextrastrings: /* empty */ | extrastrings; extrastrings: extrastrings extrastring | extrastring; @@ -892,6 +902,8 @@ { if (stringno < MAX_STRINGS) stringlist[stringno++] = $1; + else + MyFree($1); }; quarantineblock: QUARANTINE '{' quarantineitems '}' ';'; @@ -899,8 +911,8 @@ quarantineitem: QSTRING '=' QSTRING ';' { struct qline *qconf = MyCalloc(1, sizeof(*qconf)); - DupString(qconf->chname, $1); - DupString(qconf->reason, $3); + qconf->chname = $1; + qconf->reason = $3; qconf->next = GlobalQuarantineList; GlobalQuarantineList = qconf; }; @@ -908,16 +920,19 @@ pseudoblock: PSEUDO QSTRING '{' { smap = MyCalloc(1, sizeof(struct s_map)); - DupString(smap->command, $2); + smap->command = $2; } pseudoitems '}' ';' { - if (!smap->name || !smap->services) - { - parse_error("pseudo commands need a service name and list of target nicks."); - return 0; - } - if (register_mapping(smap)) + int valid = 0; + + if (!smap->name) + parse_error("Missing name in pseudo %s block", smap->command); + else if (!smap->services) + parse_error("Missing nick in pseudo %s block", smap->command); + else + valid = 1; + if (valid && register_mapping(smap)) { smap->next = GlobalServiceMapList; GlobalServiceMapList = smap; @@ -942,11 +957,13 @@ pseudoitem: pseudoname | pseudoprepend | pseudonick | pseudoflags | error; pseudoname: NAME '=' QSTRING ';' { - DupString(smap->name, $3); + MyFree(smap->name); + smap->name = $3; }; pseudoprepend: PREPEND '=' QSTRING ';' { - DupString(smap->prepend, $3); + MyFree(smap->prepend); + smap->prepend = $3; }; pseudonick: NICK '=' QSTRING ';' { @@ -960,6 +977,7 @@ nh->next = smap->services; smap->services = nh; } + MyFree($3); }; pseudoflags: FAST ';' { @@ -972,11 +990,12 @@ tping = 60; } iauthitems '}' ';' { - if (!host || !port) { - parse_error("IAuth block needs a server name and port."); - return 0; - } - iauth_connect(host, port, pass, tconn, tping); + if (!host) + parse_error("Missing host in iauth block"); + else if (!port) + parse_error("Missing port in iauth block"); + else + iauth_connect(host, port, pass, tconn, tping); MyFree(pass); MyFree(host); pass = host = NULL; @@ -988,12 +1007,12 @@ iauthpass: PASS '=' QSTRING ';' { MyFree(pass); - DupString(pass, $3); + pass = $3; }; iauthhost: HOST '=' QSTRING ';' { MyFree(host); - DupString(host, $3); + host = $3; }; iauthport: PORT '=' NUMBER ';' { Index: ircd-ircdev/ircd/m_silence.c diff -u ircd-ircdev/ircd/m_silence.c:1.6 ircd-ircdev/ircd/m_silence.c:1.7 --- ircd-ircdev/ircd/m_silence.c:1.6 Mon Feb 21 02:20:04 2005 +++ ircd-ircdev/ircd/m_silence.c Sun Apr 24 15:18:06 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Handlers for SILENCE command. - * @version $Id: m_silence.c,v 1.6 2005/02/21 10:20:04 zolty Exp $ + * @version $Id: m_silence.c,v 1.7 2005/04/24 22:18:06 zolty Exp $ */ #include "config.h" @@ -58,7 +58,7 @@ * @return The new ban entry on success, NULL on failure. */ static struct Ban * -apply_silence(struct Client *sptr, const char *mask) +apply_silence(struct Client *sptr, char *mask) { struct Ban *sile; int flags; @@ -82,7 +82,7 @@ } /* Make the silence, set flags, and apply it. */ - sile = make_ban(mask); + sile = make_ban(pretty_mask(mask)); sile->flags |= flags; return apply_ban(&cli_user(sptr)->silence, sile, 1) ? NULL : sile; } Index: ircd-ircdev/ircd/m_userhost.c diff -u ircd-ircdev/ircd/m_userhost.c:1.5 ircd-ircdev/ircd/m_userhost.c:1.6 --- ircd-ircdev/ircd/m_userhost.c:1.5 Mon Jan 10 04:23:03 2005 +++ ircd-ircdev/ircd/m_userhost.c Sun Apr 24 15:18:06 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_userhost.c,v 1.5 2005/01/10 12:23:03 zolty Exp $ + * $Id: m_userhost.c,v 1.6 2005/04/24 22:18:06 zolty Exp $ * */ @@ -97,6 +97,13 @@ msgq_append(0, mb, "%s%s=%c%s@%s", cli_name(cptr), SeeOper(sptr,cptr) ? "*" : "", cli_user(cptr)->away ? '-' : '+', cli_user(cptr)->username, + /* Do not *EVER* change this to give opers the real host. + * Too many scripts rely on this data and can inadvertently + * publish the user's real host, thus breaking the security + * of +x. If an oper wants the real host, he should go to + * /whois to get it. + */ + /* HasHiddenHost(cptr) && (sptr != cptr) ? */ HasHiddenHost(cptr) && !IsAnOper(sptr) && (sptr != cptr) ? cli_user(cptr)->host : cli_user(cptr)->realhost); Index: ircd-ircdev/ircd/m_userip.c diff -u ircd-ircdev/ircd/m_userip.c:1.6 ircd-ircdev/ircd/m_userip.c:1.7 --- ircd-ircdev/ircd/m_userip.c:1.6 Mon Jan 10 04:23:03 2005 +++ ircd-ircdev/ircd/m_userip.c Sun Apr 24 15:18:06 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_userip.c,v 1.6 2005/01/10 12:23:03 zolty Exp $ + * $Id: m_userip.c,v 1.7 2005/04/24 22:18:06 zolty Exp $ * */ @@ -98,6 +98,13 @@ msgq_append(0, mb, "%s%s=%c%s@%s", cli_name(cptr), SeeOper(sptr,cptr) ? "*" : "", cli_user(cptr)->away ? '-' : '+', cli_user(cptr)->username, + /* Do not *EVER* change this to give opers the real host. + * Too many scripts rely on this data and can inadvertently + * publish the user's real host, thus breaking the security + * of +x. If an oper wants the real host, he should go to + * /whois to get it. + */ + /* HasHiddenHost(cptr) && (sptr != cptr) ? */ HasHiddenHost(cptr) && !IsAnOper(sptr) && (sptr != cptr) ? feature_str(FEAT_HIDDEN_IP) : ircd_ntoa(&cli_ip(cptr))); ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-23 15:57:31
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-23 15:57:23 UTC Modified files: RELEASE.NOTES RELEASE.NOTES.es doc/ircd.sample-en.conf doc/ircd.sample-es.conf Log message: actualizacion docs ---------------------- diff included ---------------------- Index: ircd-ircdev/RELEASE.NOTES diff -u ircd-ircdev/RELEASE.NOTES:1.1 ircd-ircdev/RELEASE.NOTES:1.2 --- ircd-ircdev/RELEASE.NOTES:1.1 Sun Apr 17 11:35:07 2005 +++ ircd-ircdev/RELEASE.NOTES Sat Apr 23 08:57:00 2005 @@ -1,5 +1,5 @@ Release notes for IRC-Dev IRCD version 1.0 -Last updated: 17 Apr 2005 +Last updated: 23 Apr 2005 Written by Toni Garcia <zo...@ir...> Based on earlier documents by Kev <kl...@mi...>, Braden <db...@ya...> and Michael Poole <md...@tr...> @@ -59,8 +59,8 @@ Client blocks (previously I: lines), Operator blocks (previously O: and o: lines), channel bans and silences may use CIDR notation instead of simple wildcards. You may also have silence exceptions by putting -'-' before the mask; for example, if you wish to silence everyone -except X, you could use SILENCE *!*@*,-X!cse...@ir.... +'~' before the mask; for example, if you wish to silence everyone +except X, you could use SILENCE *!*@*,~X!cse...@ir.... The server will no longer kick "net riders" in keyed (+k) channels if both sides of the net join have the same key. Index: ircd-ircdev/RELEASE.NOTES.es diff -u ircd-ircdev/RELEASE.NOTES.es:1.1 ircd-ircdev/RELEASE.NOTES.es:1.2 --- ircd-ircdev/RELEASE.NOTES.es:1.1 Sun Apr 17 11:35:07 2005 +++ ircd-ircdev/RELEASE.NOTES.es Sat Apr 23 08:57:02 2005 @@ -1,5 +1,5 @@ Notas de lanzamiento para IRCD de IRC-Dev version 1.0 -Ultima actualización: 17 Abril 2005 +Ultima actualización: 23 Abril 2005 Escrito y traducido por Toni Garcia <zo...@ir...> Basado en anteriores documentos por Kev <kl...@mi...>, Braden <db...@ya...> y Michael Poole <md...@tr...> @@ -62,9 +62,9 @@ Los bloques "Client" (previamente líneas I:), bloques "Operator" (previamente líneas O: y o:), bans de canales y los sileces pueden utilizar la notación de CIDR en lugar de comodines simples. Puedes -también tener excepciones de silencie poniendo '-' antes de la máscara; +también tener excepciones de silencie poniendo '~' antes de la máscara; por ejemplo, si deseas silenciar de todo el mundo excepto X, puedes -utilizar SILENCE *!*@*,-X!cse...@bo.... +utilizar SILENCE *!*@*,~X!cse...@bo.... El servidor no puede kickear por "net riders" en los canales con llave (+k) si ambos lados de la red al unirse tienen la misma llave. Index: ircd-ircdev/doc/ircd.sample-en.conf diff -u ircd-ircdev/doc/ircd.sample-en.conf:1.19 ircd-ircdev/doc/ircd.sample-en.conf:1.20 --- ircd-ircdev/doc/ircd.sample-en.conf:1.19 Fri Apr 22 09:55:35 2005 +++ ircd-ircdev/doc/ircd.sample-en.conf Sat Apr 23 08:57:02 2005 @@ -1,6 +1,6 @@ # ircd.conf - configuration file for IRC-Dev's IRCD. # -# Last Updated: 22, Apr 2005. +# Last Updated: 23, Apr 2005. # # Written by Niels <ni...@un...>, based on the original example.conf, # server code and some real-life (ahem) experience. @@ -404,6 +404,8 @@ # name = "relservername"; # }; # +# You may have have more than one name listed in each block. +# # Note: (1) These lines are agreed on by every server admin on IRC-Dev; # (2) These lines must be the same on every single server, or results # will be disasterous; (3) This is a useful feature, not something that @@ -421,8 +423,6 @@ UWorld { name = "luz.irc-dev.net"; -}; -Uworld { name = "services.irc-dev.net"; }; Index: ircd-ircdev/doc/ircd.sample-es.conf diff -u ircd-ircdev/doc/ircd.sample-es.conf:1.14 ircd-ircdev/doc/ircd.sample-es.conf:1.15 --- ircd-ircdev/doc/ircd.sample-es.conf:1.14 Fri Apr 22 09:22:13 2005 +++ ircd-ircdev/doc/ircd.sample-es.conf Sat Apr 23 08:57:13 2005 @@ -1,6 +1,6 @@ # ircd.conf - archivo de configuración para el IRCD de IRC-Dev. # -# Ultima actualización: 27, Abr 2005. +# Ultima actualización: 23, Abr 2005. # # Escrito por Niels <ni...@un...>, basado en el archivo example.conf # original, en el código del servidor y la experiencia de la vida real. @@ -419,6 +419,8 @@ # name = "relnombreservidor"; # }; # +# Puedes tener más de un nombre listado en cada bloque. +# # Nota: (1) Estas líneas son puestas por cada administrador de un servidor # en IRC-Dev; (2) Estas líneas debe ser exactamente iguales en cada # servidor, o los resultados serán impredecibles; (3) Esta es una @@ -440,8 +442,6 @@ Uworld { name = "luz.irc-dev.net"; -}; -Uworld { name = "services.irc-dev.net"; }; ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-22 16:55:53
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-22 16:55:46 UTC Modified files: doc/ircd.sample-en.conf Log message: Fallito ---------------------- diff included ---------------------- Index: ircd-ircdev/doc/ircd.sample-en.conf diff -u ircd-ircdev/doc/ircd.sample-en.conf:1.18 ircd-ircdev/doc/ircd.sample-en.conf:1.19 --- ircd-ircdev/doc/ircd.sample-en.conf:1.18 Fri Apr 22 09:22:12 2005 +++ ircd-ircdev/doc/ircd.sample-en.conf Fri Apr 22 09:55:35 2005 @@ -469,7 +469,7 @@ Kill { host = "*.edu"; reason = "Please use a nearer server"; }; # You can also kill based on username. -Kill { username = "sub7"; realname = "s*7*"; reason = "You are infected with a Trojan"; +Kill { username = "sub7"; realname = "s*7*"; reason = "You are infected with a Trojan"; }; # The file can contain for example, a reason, a link to the # server rules and a contact address. Note the combination ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-22 16:53:33
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-22 16:53:23 UTC Removed files: doc/history/IRC-Hispano/CAMBIOS2_10_06 doc/history/IRC-Hispano/CAMBIOS2_10_07 doc/history/IRC-Hispano/CAMBIOS2_10_H_01 doc/history/IRC-Hispano/CAMBIOS2_10_H_02 doc/history/IRC-Hispano/CAMBIOS2_10_H_03 doc/history/IRC-Hispano/CAMBIOS2_10_H_04 doc/history/IRC-Hispano/CAMBIOS2_10_H_05 doc/history/IRC-Hispano/CAMBIOS2_10_H_06 Log message: Borrar lo que huele mal ;) ---------------------- diff included ---------------------- Index: ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_06 diff -u ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_06:1.1.1.1 ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_06:removed --- ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_06:1.1.1.1 Mon Sep 8 03:34:26 2003 +++ ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_06 Fri Apr 22 09:53:25 2005 @@ -1,321 +0,0 @@ -$Id: CAMBIOS2_10_06,v 1.1.1.1 2003/09/08 10:34:26 zolty Exp $ - -* 1999/11/11 sa...@ap... (patch.db51) FIX - ----------------------------------------------------------------------- - Cambiados todos los 'unsigned long' de s_bdd.c a 'unsigned int', pues - en realidad solo necesitamos u_int32_t, y usando 'unsigned long' tenwmos - problemas en arquitecturas de 64 bits. Los mismos cambios en las - funciones que llamaban a tea() en s_user.c - -* 1999/11/11 sa...@ap... (patch.vip4) FIX - ----------------------------------------------------------------------- - Segun lo decidido, se cambia el algoritmo de criptación de direcciones - al siguiente modelo: - - VIRTUAL = TEA( clave, ip<<32 + (clave>>32)&0xffff0000 + n) - - Siendo 'clave' el valor que contiene el registro '.' de la tabla de - direcciones virtuales, que se irá cambiando periodicamente. - Este fix permite que los usuarios baneados por dirección virtual no - puedan abusar, conectando de nuevo o cambiando el nick, pues hay una - relación directa entre la dir virtual y la real. - -* 1999/10/26 sa...@ap... (patch.dbh15) FEATURE - ----------------------------------------------------------------------- - Para facilitar la migración a autentificación por server, creamos una - tabla 't' (residente), que PERMITE que los usuarios se autentifiquen - de la misma forma que los de la tabla 'n'. Si ponen clave, esta ha de - ser la correcta. Si no la ponen les molesta con un par de NOTICEs. - En VERSION del server aparece como DBH15 - -* 1999/10/15 sa...@ap... (patch.p9hispano) FIX - ----------------------------------------------------------------------- - He definido los numeros de nodo P9 para los services en numnicks.c, - dado que n2k ha destruido la "autoasignación" de numeros de nodo para - los P9. - -* 1999/10/14 sa...@ap... (patch.dbh14) FIX - ----------------------------------------------------------------------- - He modificado la respuesta al /STATS B, para hacerla mas corta y le he - añadido el soporte de las nuevas BDD. - -* 1999/10/13 sa...@ap... (patch.xmode2) FIX - ----------------------------------------------------------------------- - Arreglado un pekeño bug cosmetico, que ocurria cuando mediante XMODE - intentabamos por ejemplo dar +o a alguien que ya tiene +o, quedando - visible el intento como '+x' sin parametro alguno. - -* 1999/10/13 sa...@ap... (patch.dbh13) FEATURE - ----------------------------------------------------------------------- - Implemento comando DBQ sustituyendo el DBH de usuario, con el formato: - - [<:origen>] DBQ [<server>] <tabla> <clave> - - Si <server> existe pero no somos nostros, lo rutaremos al server en - cuestión para que sea él quien contesta. Se acepta server '*' para - broacast y los tipicos comodines 'jupiter.*' - -* 1999/10/10 sa...@ap... (patch.vip3) FIX - ----------------------------------------------------------------------- - Las desconexiones (QUIT) involuntarios (Ping timeout / Read error) ya - no muestran el hostname del usuario si este tiene el modo +x activo. - El /WHO busca sobre la direccion virtual en lugar de la real en los - usuarios +x excepto si quien mira es un +X, en cuyo caso mira en ambas. - -* 1999/10/05 sa...@ap... (patch.vip2) FEATURE - ----------------------------------------------------------------------- - Se cambia el modo de trabajo de /WHOIS y /WHO para que lo hagan segun - sugerencias de jcea. El propio usuario se ve a si mismo como lo haria - un +X. Y la primera linea (311) de WHOIS da el host real y en la linea - codigo 378 informamos de la dirección virtual. - -* 1999/10/05 sa...@ap... (patch.dbh12) FIX - ----------------------------------------------------------------------- - Las nuevas funciones base64toint() que han introducido en el parche de - undernet8 necesitan tener completamente rellenado el string, antes se - conformaban con tener \0's al final. Lo correcto es tal como lo han - dejado en esta versión, pero es incompatible con lo anterior. - Solución: a las claves cortas se les añaden tantas 'A' al final como - sea preciso. - -* 1999/10/05 sa...@ap... (patch.dbh11) FIX - ----------------------------------------------------------------------- - Al introducir el parche de undernet8 y posteriores, se nos pasó cambiar - el %c%c%c por %s%s para imprimir el nick numerico extendido en el - comando BMODE. Se ha optimizado el modo de delimitar el final de de - cadenas en las modificaciones introducidas en la autenticación usuario. - Se han cambiado los %c a %s en protocolos DB y DBH para uso correcto de - la macro NumServ(). Puestos a arreglar, el make install crea con los - permisos adecuados las tablas DBH. - -* 1999/09/14 sa...@ap... (patch.vip) FEATURE - ----------------------------------------------------------------------- - Se introducen dos nuevos flags de usuario: +x y +X, el primero oculta - la dirección ip(o hostname) del usuario y el segundo (+X) permite ver - las direcciónes reales al ejecutar /WHOIS /WHO /USERIP y /USERHOST - Solo los usuarios +r acceden, automaticamente, a +x, pudiendo cambiar - a -x y +x a voluntad mientras perdure el flag +r - Solo los usuarios +o (ircops) y +h (OPERS) pueden activar el flag +X - El formato de las direcciones es @GaRaBaTo12Ch.virtual, y este valor - se calcula en todos los servers cuando el usuario activa +x, - guardandose en un campo especifico: User->virtualhost - Si los servers encuentran en la nueva tabla V un registro para el nick - en cuestión, instalan el valor del registro en User->virtualhost, - permitiendo así definir ips virtuales fijas para ciertos usuarios. - El valor del GaRaBaTo12Ch se calcula en make_virtualhost() de s_user.c - y es basicamente: - - garabato = base64(tea(tea(nick,password),ip<<32+xyz<<8)); - - haciendose imposible crear una relación de ips virtuales a reales, asi - como su desencriptación por parte de los usuarios. La unica forma de - conseguir averiguar una ip a partir de una virtual sera analizando los - logs de los distintos servidores de servicios. - - he modificado además el codigo refernete a BAN para que acepte ban por - virtual, y el ban a real afecte tambien a los +x. - - he cambiado el antiguo codigo 378 (ke ya movimos en su dia) al 380 - he ocupado el codigo 378 para que nos indique la ip/host real del user - tal como lo hacen otros daemons de irc. El 379 lo he reservado para - que muestre los modos de usn usuario, como enotras redes, pero esto es - asunto de otro parche. - - El comando /TRACE solo será accesible a Opers +o y HelpOps +h, antes - era accesible a todos. Este comando no oculta IPs. - - No puedo considerar el codigo terminado, la version queda reflejada - como VIP+, activandose en el configurador dentro de la sección HISPANO, - siendo desactivable por si nos da problemas. - -* 1999/09/14 sa...@ap... (patch.no_whois_secret) UNFEATURE - ----------------------------------------------------------------------- - Elimina completamente el parche patch.whois_secret - -* 1999/07/31 sa...@ap... (patch.dbh10) FIX - ----------------------------------------------------------------------- - Corrección del BMODE, pues se producian algunos desynch. - Lo he simplificado, y para ello he tenido que meter un parametro - adicional a set_mode(), que se usa en m_botmode (1) y m_mode (0). - Si el parametro es 1 (BMODE), se hace badop=0, bounce=0, asi no se queja - nadie. Como el arreglo es en la recepción, sera necesario que este activo - en todos los servers antes de que sea operativo. - Por error, en DBH9 deje abierto a IRCops el comando BMODE, ahora es solo - server-server. - El BURST de p10 no parsea los modos +R+A+S de canal, tb lo he arreglado. - Queda reflejado como DBH10+ - -* 1999/07/30 sa...@ap... (patch.whois_secret) FEATURE - ----------------------------------------------------------------------- - Si asi lo pedimos en la configuración (make config), - OPERS_SEE_IN_SECRET_CHANNELS, el whois les muestra a los IrcOP o +k la - lista de canales secretos (+s) donde esta el usuario - Se documenta en /VERSION como W+/W- - -* 1999/07/29 sa...@ap... (patch.dbh9) FEATURE - ----------------------------------------------------------------------- - Incorpora el comando SERVER-SERVER BMODE, con formato: - - :origen BMODE ChanServ #canal +modos :parametros - - ChanServ se busca en la tabla B, y se nos traduce a 'CHaN!^@^', y es lo - que veran los usuarios en los cambios de modos del canal realizados por - los servers (autoops, etc). Para mas info ver codigo m_botmode() en - chammel.c - - Modos de usuario: - - B -> Modo Bot, permite TODO sobre canales, sin estar dentro, - limitado a los BOTS, no se puede colocar en modo usuario. - - Se ha usado un bit de nustro campo Client->hmodes - - Modos de Canal: - - r -> Canal Registrado (existe en tabla C, no se puede poner/quitar) - R -> Canal Restringido, solo acepta users Registrados - A -> Activacion de autoop para los ke salgan en tabla C - S -> Modo Secure OP (no implementado de momento) - - Se han usado 4 bits del campo chptr->modes.modes: - #define MODE_REGCHAN 0x020000 - #define MODE_REGNICKS 0x040000 - #define MODE_AUTOOP 0x080000 - #define MODE_SECUREOP 0x100000 - -* 1999/07/29 sa...@ap... (patch.noproxy4) FIX - ----------------------------------------------------------------------- - Se corrige el tema caida por timeout si tienes el 1080 cerrado sin aviso - mediante firewall. Ahora deja al usuario enganchado 90 segundos antes de - dejarle entrar. - Queda reflejado como PX4+ o PX4- en el /VERSION - -* 1999/07/29 sa...@ap... (patch.noproxy3) FIX - ----------------------------------------------------------------------- - Se elimina el chekeo de Socks y el de Ident sobre puerto de servers - Queda reflejado como PX3+ o PX3- en el /VERSION - -* 1999/07/29 sa...@ap... (patch.dbh8) FEATURE - ----------------------------------------------------------------------- - Implementa el nuevo modo de usuario -/+h, conocido en otras redes como - HelpOperator, que vendrian a ser los Oper del irc-hispano. - Este modo (+h) se activa automaticamente si el nick esta registrado y - ademas en la tabla O (de OPERS). Los oper se lo pueden quitar o poner a - su antojo. La unica finalidad del modo +h es aparecer en el /WHOIS - indicando que el usuario es un Operador de Servicios IRC (raw 310) - Ademas mejora la implementacion de los modos automaticos al cambiar - de nick. - -* 1999/07/28 sa...@ap... (patch.noproxy2) FIX - ----------------------------------------------------------------------- - Algunos cambios cosmeticos en los textos enviados al usuario. - El patch.noproxy no compila modo DEBUG, este lo arregla. - Queda reflejado como PX2+ o PX2- en el /VERSION - -* 1999/07/28 sa...@ap... (patch.noproxy) FEATURE - ----------------------------------------------------------------------- - Implemento un checker de Socks4-Proxies (wingates incluido). - La implementación esta en s_socks.c y s_socks.h, pero ha sido necesario - tocar ligeramente s_bsd.c, ircd.c y s_res.c. En la estructura Client de - struct.h he añadido el campo socksfd en la parte extendida de clientes - locales. En s_bsd.h he creado las macros y usado un par de bits del - campo client->hmodes. - - Implementacion: - - - Llega conexion nueva - - Se lanzan en paralelo los checkers de DNS, ident y proxy - - Se atiende al user cuando los tres han finalizado - - Cuando lanzamos el cheker de proxy, este se intenta conectar al puerto - de socks4 del usuario (1080), si lo consigue, mediante protocolo socks4 - le solicita al proxy que habra una conexion a la direccion/puerto del - ircd que el usuario ha conectado. Se analiza la respuesta de socks4 y - si nos confirma la conexión, es un proxy abiero y lo desconectamos del - irc informandole de la causa. - - Mientras se hace el proceso de checking de Proxy, el server envia unos - NOTICE al usuario para que vea lo que le está haciendo. He tenido que - usar writes directos al cptr->fd, pk al no estar registrado el usuario - en el momento del cheking, no podia usar las colas de salida. - - Esta opcion se puede activar/desactivar (PROXY_PROTECTION) en el make - config, siempre que hayamos seleccionado DB_HISPANO. Queda reflejado - en el /VERSION como PX+ o PX- - -* 1999/07/21 sa...@ap... (patch.DBH6) FIX - ----------------------------------------------------------------------- - Cambia la forma de trabajo del flag +r, impidiendo que el user - se lo quite, y (des)activandose solo ante autentificacion, y no ademas - por la llegada de un registro DBH, como hasta ahora. - - Introduce algunos cambios cosmeticos en la consulta de la BD - (comando DBH en modo user). - - Como estaba mirando la causa de que los DBH2 regalen modos +k a - los users, he cambiado a logica positiva la parte del condicional que - hace que NO sea aceptado el modo +k cuando: - - - no lo tenias y no eres server y no eres ircop - y no (estas registrado y estas en la DB de OPERS) - - en lugar de la equivalente pero menos inteligible: - - - no lo tenias y no eres server y no eres ircop - y (no estas registrado o no estas en la DB de OPERS) - - Aunque el bug quedo solucionado en DBH3. - - Puestos a arreglar, añado el DBPATH de la DB10 como prefijo a los - ficheros usados por la DBH. - -* 1999/07/06 sa...@ap... (patch.whois_renumber) FIX - ----------------------------------------------------------------------- - Este patch renumera algunos codigos de respuesta del WHOIS para hacerlos - mas universales. Se activa si usamos DB_HISPANO/DB_ESNET. Los codigos - renumerados son: - - 307 (undernet) IP del usuario -> 378 el usado en otras redes - 308 (hispano) Nick Registrado -> 307 el usado en otras redes - - Esto hace ke BitchX se sienta inmensamente feliz :) - -* 1999/07/06 sa...@ap... (patch.DBH3) FEATURE - ----------------------------------------------------------------------- - En el fichero struct.h he ampliado con un nuevo campo la estructura - Client, es un unsigned int llamado hmodes. Esto nos permitira dispo- - ner de 32bits adicionales como flags de usuario. Estos nuevos flags - son propagados si se definen en la tabla user_hmodes[] de s_user.c - - En este parche se hace uso del bit de menor peso de este nuevo campo, - en el fichero s_bsd.h: - #define HMODES_NICKREGISTERED 0x00000001 - Y las macros asocicadas: - IsNickRegistered(cptr); - SetNickRegistered(cptr); - ClearNickRegistered(cptr); - - Cuando alguien se pone un nick, se hace un Clear, y si acierta la clave - se hace un SetNickRegistered. - Este flag queda reflejado con la letra 'r' en los modos de usuario, y - solo es aceptada si la envia un server (o por la autentificacion). - Si un usuario esta conectado y registra su nick en los servicios, este - flag se activara cuando llegue su registro DBH/DB. Y le sera borrado - cuando se llegue un borrado de su registro. Los cambios son informados - al usuario y propagados a la red. - - El /WHOIS ha sido ampliado (whocmds.c) para mostrar este nuevo 'flag' - y he ocupado el ERROR 308 en los fichero s_err.c y numeric.h - - He cambiado los condicionales que comprueban en tablas si nick registrado - por la nueva macro IsNickRegistered() - - Queda reflejado en el /VERSION como DBH3.Nr+...., cambiando el anterior - texto (DBH2.N+....). He decidido cambiar a DBH3, pk las macros son y - seran ampliamente usadas en futuras DBH's, y hago desaparecer la opcion - de compilacion DBH_NICK_HACK quedando integrado todo su codigo en el - que es activado por el #define DB_HISPANO - - ----------------------------------------------------------------------- - -* FINAL o INICIO de CAMBIOS, segun se mire :) Index: ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_07 diff -u ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_07:1.1.1.1 ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_07:removed --- ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_07:1.1.1.1 Mon Sep 8 03:34:26 2003 +++ ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_07 Fri Apr 22 09:53:25 2005 @@ -1,793 +0,0 @@ -$Id: CAMBIOS2_10_07,v 1.1.1.1 2003/09/08 10:34:26 zolty Exp $ - -* 2000/10/10 jc...@ar... (---) FIX - ----------------------------------------------------------------------- - Un "make distclean" tambien elimina los ficheros de la "zlib". Esto - es bastante importante si cambiamos de arquitectura. - - Tambien se eliminan los ficheros de cache del "configure", por la - misma razon. - -* 2000/10/05 jc...@ar... (---) FEATURE - ----------------------------------------------------------------------- - Un "/map" muestra, adicionalmente a lo normal: - - - El "numeric" del servidor - - El lag con ese servidor (medido a partir de los "create") - - El numero de usuario conectados a ese servidor - -* 2000/10/05 jc...@ar... (---) FEATURE - ----------------------------------------------------------------------- - Cuando se echa a un usuario con una nueva GLINE, se le informa a el - y a los que tengan activada la mascara "s" correspondiente, de - la razon del GLINE. - -* 2000/10/05 jc...@ar... (DB77) FEATURE - ----------------------------------------------------------------------- - Peticion de Sisco: - el mensaje de 'class full' de cuando la clase de usuario se llene, - que diga que su clase en este server esta llena, que pruebe - /server libres.irc-hispano.org , Es muy efectivo y ya fue probado - con exito en la transicion de pulsar a pulsar2.... - -* 2000/10/05 jc...@ar... (---) FEATURE - ----------------------------------------------------------------------- - Mostrar en "/stats Y" cuantos usuarios hay conectados - en cada clase. Sino la unica opcion es hacer un - "/trace", lo que ocasiona FLOOD. - -* 2000/08/16 jc...@ar... (clones7) FEATURE - ----------------------------------------------------------------------- - Las conexiones con clones no heredan "targets", para evitar que - las sesiones se quiten targets entre si. - - -* 2000/06/20 jc...@ar... (DB76) FEATURE - ----------------------------------------------------------------------- - Hago que los usuarios locales no puedan ACTIVAR los modos "SAR", aunque - el server los acepta si llegan de un usuario remoto. - - De esta forma los usuarios no juegan con modos que no estan - desplegados aun. - -* 2000/06/13 jc...@ar... (ZLIB10) FIX - ----------------------------------------------------------------------- - Tras horas de investigacion descubro un fallo en la implementacion - de las "microrafagas": cuando trabajamos con microrafagas es - perfectamente posible que tengamos que hacer FLUSH varias veces (no - solo una), ya que ZLIB puede ir almacenando compresion de forma - interna, y no soltarla hasta el final. - - Por tanto, hay que comprobar este caso especificamente, y no confiar - en que un buffer de salida lo bastante grande sea suficiente, ya que - antes se usaba ese buffer para un unico comando, y ahora lo usamos - para todas las microrafagas que, en el caso de un NETJOIN, pueden - ser varios megabytes. - - Cuando tengo que hacer varios FLUSH, aprovecho para usar "send_queued()". - -* 2000/06/13 jc...@ar... (Undernet20) SYNC - ----------------------------------------------------------------------- - Parches Undernet hasta version 12. - - Oculto la IP de los nodos tambien en el comando "uping". - -* 2000/06/12 jc...@ar... (ZLIB9) FEATURE - ----------------------------------------------------------------------- - Para evitar la posible carga de los malloc/free durante las microrafagas, - implemente un sistema de cache, de forma que no haga falta pedir/liberar - memoria constantemente. - - La cache se va purgando poco a poco, de forma que si en un momento - dado se pidieron muchos recursos, esto se van liberando poco a poco. - -* 2000/06/12 jc...@ar... (ZLIB8) FIX - ----------------------------------------------------------------------- - Toda "microrafaga" que se abra, debe ser cerrada. Hay que tener cuidado - con posibles "return" entre la apertura y cierre, ya que impiden el - correcto cierre de la "microrafaga" si no se programa adecuadamente. - - Para curarnos en salud, an~ado una rutina nueva que fuerza una - inicializacion del modulo de "microrafagas" entre lecturas de - las conexiones server<->server. De esta forma cualquier microrafaga - "huerfana" sera clausurada correctamente. - - An~ado tambien otro comando para eliminar "cptr" que se hayan cerrado, - del sistema de "microrafagas". De esta forma no nos preocupara que - una conexion se cierre mientras esta en una "microrafaga". - - -* 2000/06/12 jc...@ar... (ZLIB7) FEATURE - ----------------------------------------------------------------------- - Intento realizar el FLUSH de compresion por grupos, no por comandos - aislados. Ello supone la deteccion y aprovechamiento de las microrafagas, - que son cuando se van a generar varios comandos de salida por una - o mas conexiones. - - El caso mas obvio es un "netjoin", cuando el servidor transfiere al otro - extremo todo el BURST. - - Otro caso bastante evidente es cuando se lee un bloque de otro nodo; - cuando ese bloque tiene varios comandos, podemos considerar que hasta - su final estamos trabajando con una "microrafaga". - - Por ultimo, tenemos el caso de la BDD. - - Cuando se cierra una microrafaga, se hace FLUSH de lo que pudiese - haber quedado. - -* 2000/06/08 jc...@ar... (ZLIB6) CLEANUP - ----------------------------------------------------------------------- - Introduzco algunos "assert()" para casos que no deberian ocurrir nunca, - y verifico todas las llamadas a la libreria ZLIB y de gestion de - memoria asociadas, por si alguna falla (no deberia). - -* 2000/06/08 jc...@ar... (indent6) CLEANUP - ----------------------------------------------------------------------- - "make indent". - -* 2000/06/06 jc...@ar... (ZLIB5) FIX - ----------------------------------------------------------------------- - El servidor no compilaba correctamente si el sistema en el que se - va a instalar NO tenia instalado ya la ZLIB (aunque use la local al - servidor, no la instalada en el sistema). - -* 2000/05/23 jc...@ar... (CONFIG5) FEATURE/FIX - ----------------------------------------------------------------------- - Corregido un bucle infinito cuando se evalua la configuracion. - - "/stats f" muestra la configuracion de las lineas "F". - - La negociacion en los enlaces se activa en el "make config". - - Cambiados los textos de los "DEFINE". - -* 2000/05/23 jc...@ar... (CONFIG4) FEATURE - ----------------------------------------------------------------------- - Cambio "NACK" por "REQ", que es mas logico. - - Hago que las negociaciones entre nodos sean configurables mediante una - nueva "F"-line. - - El primer campo indica el sentido salida, y el segundo el sentido entrada. - - Las mayusculas indican SIEMPRE, y las minusculas NUNCA. - - De momento defino "z" como ZLIB. - -* 2000/05/18 jc...@ar... (ZLIB4) FEATURE/FIX - ----------------------------------------------------------------------- - Un "stats l" muestra el trafico transferido realmente, y su nivel - de compresion. - - Solo crea las estructuras de datos de compresion cuando se ha negociado - afirmativamente la compresion (de forma independiente en cada sentido). - - Este cambio corrige tambien un grave "memory leak", debido a que se - inicializaban unos 300Kbytes por conexion de usuario, para soportar - posible compresion, pero no se liberaba si no se habia negociado - compresion. - -* 2000/05/18 jc...@ar... (ZLIB3) FEATURE - ----------------------------------------------------------------------- - Primera version que se va a probar en la red en produccion. Se ha - modificado "stats l" para que indique el porcentaje de compresion en - recepcion y en transmision, por cada enlace. - -* 2000/05/18 jc...@ar... (CONFIG3) FEATURE - ----------------------------------------------------------------------- - Lo anterior no funciona todo lo bien que debiera, por multiples motivos - explicados en mi web. - - Ahora trabajo considerando que algunas peticiones son "especulativas", - y se accede a ellas o se ignoran tras resolverse el tipo de conexion. - -* 2000/05/18 jc...@ar... (CONFIG2) FEATURE - ----------------------------------------------------------------------- - Cuando se unen dos servers, se envia un "ping" y toda la negociacion, - y solo se manda el BURST cuando llega el "pong" de respuesta. - - Ello permite negociar ANTES de transmitir el burst. - -* 2000/05/17 jc...@ar... (CONFIG1) FEATURE - ----------------------------------------------------------------------- - Primera implementacion del protocolo de negociacion entre servidores. - - Se basa en el PPP. Un servidor solicita a otro una "feature" mediante - un NAK, y este la confirma activa con un ACK. Si no reconoce la - feature, devuelve un REJ. - -* 2000/05/17 jc...@ar... (ZLIB2) FEATURE - ---------------------------------------------------------------------- - An~ado los flags "ZLIB_ESNET_IN" y "ZLIB_ESNET_OUT" a la estructura - de servidor. Tambien an~ado dos estructuras "z_stream". - - Compilo la libreria ZLIB *ANTES* de compilar el servidor, para que - no se enlace con una version anticuada o preinstalada. - - Compresion de la salida a servidor activada "a pin~on fijo", para - verificar que funciona bien. - -* 2000/05/16 jc...@ar... (ZLIB1) FEATURE - ----------------------------------------------------------------------- - An~adida la libreria ZLIB de forma interna, para no depender de que - se tenga una version instalada y actualizada en el sistema. - - Se configura y se compila correctamente. Se an~ade una opcion de - configuracion para permitir activar o desactivar la "feature" en tiempo - de compilacion. - -* 2000/05/16 jc...@ar... (Undernet19) SYNC - ----------------------------------------------------------------------- - Parches Undernet hasta version 11. - -* 2000/04/04 jc...@ar... (DB75) FIX - ----------------------------------------------------------------------- - Correccion al parche DB71. Si el HUB manda una orden de borrado, no - hace falta mandarle nada mas, ni registros ni "B", ya que la orden de - borrado sera confirmada y se pedira la base de datos de nuevo. - -* 2000/04/04 jc...@ar... (DB74) FIX - ----------------------------------------------------------------------- - El parche db52 es erroneo, porque bajo ciertas condiciones se saltaba - "hubs", y es imperativo desconectar de todos ellos. - - El sintoma es que si una tabla es muy corta, si se corrompe se genera - un bucle entre el nodo y el hub. Ver parche DB71. - -* 2000/04/04 jc...@ar... (---) FIX - ----------------------------------------------------------------------- - Compila con la opcion de DEBUG activada. - -* 2000/04/03 jc...@ar... (DB73) FIX? - ----------------------------------------------------------------------- - En algunas maquinas parece que la compactacisn da problemas, por alguna - razon desconocida. En Solaris parece que todo funciona bien, y no he - logrado reproducir el problema en mis Linux. - - He modificado la forma de realizar las compactaciones para verificar - si se trata de un bug del Kernel Linux, bajo determinadas condiciones, - o no. - -* 2000/03/28 jc...@ar... (---) FEATURE - ----------------------------------------------------------------------- - Elimino la opcion "DBH_OPER_HACK_ONLYREG" en la configuracisn, ya que - ahora mismo no tiene sentido. No obstante dejo todo el codigo en el - servidor, para el futuro. - -* 2000/03/28 jc...@ar... (---) FEATURE - ----------------------------------------------------------------------- - Por defecto, los opers deberian poder entrar en cualquier canal usando - el comando "join # OPER". Ahora esta puesto que solo puedan entrar en - los canales registrados en la base de datos distribuida, lo que es un - problema porque no hay ninguno :-) - - En el futuro se devolvera a este flag a su valor normal. - - Por lo pronto, la compilacion de servidores nuevos debe realizarse - cambiando esta opcion en el "make config". Probablemente, lo mas - inteligente seria eliminar esta opcion. - -* 2000/03/09 jc...@ar... (VIP13) FIX - ----------------------------------------------------------------------- - Elimina las dependencias big endian/little endian a la hora de calcular - las IPs virtuales. - - Por otra parte, el codigo original de savage era defectuoso y no - permitia recuperar una IP cifrada. Cambio el sistema de cifrado. - -* 2000/03/09 jc...@ar... (VIP12) FIX - ----------------------------------------------------------------------- - Complemento al parche VIP11: aparte del kill, tampoco muestra en el - status de los usuarios conectados al servidor, cuando un IRCop ejecuta - el comando "/oper" con exito. - - Si "/oper" falla, solo se enteran los IRCops, no todos los usuarios. - Esto ya estaba de antes. - -* 2000/03/09 jc...@ar... (db71) FIX - ----------------------------------------------------------------------- - Cuando un nodo detecta que una de las bases de datos locales esta - corrupta, la borra y solicita actualizaciones a su HUB. Habia un - problema cuando la base de datos en si era lo bastante pequen~a como - para transferirla en una unica rafaga: - - - El nodo con la BDD corrupta borra la base de datos y emite un "J 0" - a su hub, indicandole que le reenvie de nuevo. - - - Si el HUB tenia ya el grifo abierto, envia una orden de borrado y - la base de datos. Si cabe entera en una rafaga, abre el grifo de nuevo. - - - El nodo original recibe la orden de borrado y la responde con - otro "J 0" - - - Dado que el HUB recibe otro "J 0" con grifo abierto, se vuelve - a repetir el proceso. - - La solucion a este problema es no enviar la base de datos, sino un - comando "B num_registro", para que el otro extremo nos la pida. Es - decir, no hacemos un "push", sino que tiene que ser el otro extremo - quien nos haga el "pull". - -* 2000/03/09 jc...@ar... (VIP11) FIX - ----------------------------------------------------------------------- - Cuando un IRCop hace un "kill", en el "path" aparece su IP virtual, - si tiene. - -* 2000/03/08 jc...@ar... (db70) FIX - ----------------------------------------------------------------------- - Cuando llegaba una orden de compactacion de la base de datos con - contenido (por ejemplo, una frase explicativa), se producia una - compactacion (correcto) y no se guarda dicho registro en memoria - aunque si en disco (correcto). - - El problema es que si se reinicia el servidor IRC, o se hace un - /rehash, se leen todos los registros de disco... incluyendo el - registro de compactado... y se almacena en memoria (mal). - - Lo que hago es leer todo el fichero, como siempre, y al final - borrar cualquier posible registro de compactado que hayamos - podido capturar en memoria. El problema solo se producia cuando - se releia la base de datos de disco (reinicio o rehash) *Y* - el registro de compactado tenia algun texto explicativo. - - -* 2000/03/08 jc...@ar... (db69) FEATURE - ----------------------------------------------------------------------- - En resumen, si un nick registrado cambia a otro nick (independientemente - de que este registrado), anula sus flags: - - r - Nick Registrado - h - Operador (helper) - x - Ocultacion de IP - - Adicionalmente, si no es IRCop, anula tambien el flag: - - X - Poder ver IPs ocultas. - - - - 02/Mar/00 - Complemento a la entrada siguiente. - - Cuando se pasa de un nick registrado a otro tambien - registrado, deberia haber un estado "intermedio" - sin registro, para que se detecte correctamente que - se trata de otro usuario tambien registrado. Ejemplo: - - :pepe mode :-rhx - :pepe nick :juan - :juan mode :+rhx - - O eso o, lo logico, ampliar el comando "nick" para que - envie tambien los modos. - - 02/Mar/00 - Cuando un usuario con nick registrado pasa a nick - sin registrar, el servidor deberia quitar los modos - ANTES de cambiar el nick. - - En realidad, lo bueno seria que justo antes del cambio - de nick se enviasen los modos que se PIERDEN y justo - despues los modos que se ganan. - -* 2000/02/15 jc...@ar... (db68) FIX - ----------------------------------------------------------------------- - Si un "helper" cambia de nick y se pone otro nick - registrado, el resto de la red no lo vera como - "helper", pero su nodo lo seguira considerando - "helper". Problema detectado por {^DaNi^}. - - Debe propagar modos al resto de la red y ajustar modos - en el nodo local. - -* 2000/01/24 jc...@ar... (NoProxy17) FEATURE - ----------------------------------------------------------------------- - Si la verificacion SOCKS no llega a conectar, porque por ejemplo la - maquina destino tiene un cortafuegos o lo tiene el propio servidor de - IRC (no deberia bloquear la salida), almacena en la cache SOCKS que - la verificacion tuvo exito. - -* 2000/01/24 jc...@ar... (undernet18) SYNC - ----------------------------------------------------------------------- - Parches Undernet. - - Glines a canales - Ocultacion de las IPs de los nodos/HUBs. - -* 2000/01/21 jc...@ar... (NoProxy16) FIX - ----------------------------------------------------------------------- - El parche original de SOCKS hace verificacion de SOCKS tambien cuando - un servidor se conecta a otro. Y encima el servidor que realiza la - verificacion en aquel que inicia la conexion... Lo cual es innecesario. - -* 2000/01/21 jc...@ar... (undernet17) SYNC - ----------------------------------------------------------------------- - Sincronizacion con parches Undernet. Un operador puede entrar en un - canal local si usa la clave "OVERRIDE". - -* 2000/01/20 jc...@ar... (NoProxy15) FIX - ----------------------------------------------------------------------- - En NoProxy14 se leia el canal, pero luego no se hacia nada con el - y se seguia enviando a #opers. - -* 2000/01/20 jc...@ar... (NoProxy14) FEATURE - ----------------------------------------------------------------------- - Las notificaciones de proxy abierto no se envian a #opers, sino al - canal que se indique en la BDD "b" bajo la clave "sockschannel". - -* 2000/01/20 jc...@ar... (VIP10) FIX - ----------------------------------------------------------------------- - Si un usuario cambia de nick, hay que regenerar su - IP virtual. Sino, nos sigue saliendo la antigua - cuando se vuelve a poner el nick. - - Se nota si la IP virtual del usuario cambia, por ejemplo - porque cambie la clave de cifrado o porque cambie - su entrada en la BDD "v". - - Lo sencillo es borrar la IP virtual cuando se cambia el nick. - -* 2000/01/18 jc...@ar... (NoProxy13) FIX - ----------------------------------------------------------------------- - A veces, cuando un proxy esta abierto, parece que informa de ello - dos veces. La casuistica es sencilla: si se inician dos conexiones - desde un proxy abierto, como cuando se inicia la verificacion - todavia no sabemos el resultado, haremos dos verificaciones y, por - tanto, dos informes. - - La solucion es sencilla: antes de imprimir el informe, hay que ver - si ya tenemos su valor en la cache. Si es asi, no informa en - absoluto, porque se acaba de hacer. - - Lo malo es que la segunda vez suele indicar la IP resuelta, y con - esto lo perdemos. - -* 2000/01/17 jc...@ar... (clones6) FEATURE - ----------------------------------------------------------------------- - Cuando se dice que el resultado de una verificacion - SOCKS esta "cached", debe indicarse tambien - cuanto tiempo de vida le queda. - -* 2000/01/17 jc...@ar... (clones5) FIX - ----------------------------------------------------------------------- - ?Corrige el problema de core dump?. - -* 2000/01/17 jc...@ar... (NoProxy12) FEATURE - ----------------------------------------------------------------------- - Dado que ahora se hace cache tanto del resultado positivo como negativo - de la verificacion de proxy, ya no tiene sentido tener una cache - separada para no hacer "flood" de mensajes de aviso (NoProxy10). - -* 2000/01/17 jc...@ar... (indent5) CLEANUP - ----------------------------------------------------------------------- - "make indent". - -* 2000/01/17 jc...@ar... (NoProxy11) FEATURE - ----------------------------------------------------------------------- - Despliego una cache negativa de proxies abiertos. Si un proxy esta - abierto, y tiene iline, le doy 30 minutos de cache. Si no tiene - iline, le pongo 4 horas. - - El efecto es comparable a tener una gline local. - -* 2000/01/17 jc...@ar... (NoProxy10) FEATURE - ----------------------------------------------------------------------- - No muestra mensajes repetidos de proxy inseguro (NoProxy9) si - las conexiones se producen en menos de 10 minutos. - -* 2000/01/17 jc...@ar... (clones4) FEATURE - ----------------------------------------------------------------------- - Si una conexion tiene clones reconocidos, no hereda "target". - -* 2000/01/14 jc...@ar... (NoProxy9) FEATURE - ----------------------------------------------------------------------- - Cuando se detecta la entrada desde un proxy inseguro, el servidor en - cuestion debe anunciarlo en el canal "#opers". - -* 2000/01/14 jc...@ar... (VIP9) FIX - ----------------------------------------------------------------------- - Completa VIP8. - -* 2000/01/14 jc...@ar... (VIP8) FEATURE - ----------------------------------------------------------------------- - "Lazy Virtual Host". - - Calcula el Virtual Host solo la primera vez que alguien solicita - informacion sobre ese usuario. De esta forma nos ahorramos calcular - host virtuales de forma innecesaria, ademas de repartir el cifrado - a lo largo del tiempo, en vez de concentrarlo en, por ejemplo, - el BURST. - - La casuistica es: - - + Activar +x - - Cuando se conecta un usuario con nick registrado - - Cuando un usuario se pone +x - - Cuando nos llega un usuario con +x remoto - - + Desactivar +x - - Cuando un usuario de pone -x - - Cuando el nick se desregistra desde la red - -* 2000/01/14 jc...@ar... (VIP7) FIX - ----------------------------------------------------------------------- - Si a un usuario se le va a cifrar su IP, pero la clave de cifrado no - esta en la base de datos, se pone el host ""no.hay.clave.de.cifrado". - - Incluyo algunos "Sanity Checks" en el trabajo con la base de datos - de IPs virtuales. - -* 2000/01/11 jc...@ar... (VIP6) FEATURE - ----------------------------------------------------------------------- - Un "UserIP" sobre un usuario con IP protegida debe mostar "0.0.0.0", no - "127.0.0.1". - -* 2000/01/11 jc...@ar... (VIP5) FEATURE - ----------------------------------------------------------------------- - No permite que un servidor remoto ponga en un usuario arbitrario los - modos +h, +x, o +X. - - Si un nick no esta registrado (o se desregistra), no tolera +h, +x, +X. - -* 2000/01/11 jc...@ar... (Undernet16) SYNC - ----------------------------------------------------------------------- - Sincronizacion con parches Undernet. - -* 2000/01/10 jc...@ar... (db67) FIX - ----------------------------------------------------------------------- - Los cambios efectuados no tenian en cuenta que pudiese llegar por - la red un registro no normalizado. - -* 2000/01/10 jc...@ar... (indent4) CLEANUP - ----------------------------------------------------------------------- - "make indent". - -* 2000/01/10 jc...@ar... (db66) FEATURE - ----------------------------------------------------------------------- - Sigo preparando la gestion directa de las BDD a partir de su MMAP. En - esta ocasion, paso la responsabilidad de la escritura en disco a - "db_alta()". - -* 2000/01/10 jc...@ar... (db65) FEATURE - ----------------------------------------------------------------------- - Cuando se busca un registro, devolvemos una copia, y no el registro - real. De esta forma vamos preparando el camino para eliminar los - registros de memoria y leerlos directamente de MMAP. - - Como el resto del programa no sabe esto, trabajamos con una pequen~a - cache de registros (32 valores), en la que se van copiando los - registros que se piden, sobreescribiendo los registros antiguos - en un anillo. - -* 2000/01/10 jc...@ar... (db64) FEATURE - ----------------------------------------------------------------------- - No almacenamos el destinatario en memoria. - -* 2000/01/10 jc...@ar... (db63) FEATURE - ----------------------------------------------------------------------- - Ya no se usan "malloc/free" para trabajar con la memoria temporal - necesaria para normalizar datos en la base de datos; cuando se va a - realizar una operacion, vemos si el bloque que tenemos es suficiente. - Si no lo es, lo libera y pide otro mas grande. - - De esta forma eliminamos muchas llamadas de gestion de memoria, y - reducimos la fragmentacion. - - Tambien se corrigen un par de BUGS en la gestion de memoria de las BDD. - -* 2000/01/10 jc...@ar... (clones3) FEATURE - ----------------------------------------------------------------------- - El mensaje cuando se supera el limite de clones - deberia publicitar la pagina web de compra. - - El mensaje a imprimir se referencia como el registro ".." en BDD - 'i'. - -* 2000/01/10 jc...@ar... (db62) FEATURE - ----------------------------------------------------------------------- - Cuando el servidor muere por culpa de la base de datos, se guarda en - el SYSLOG el PATH al directorio con la base de datos problematica. - -* 2000/01/10 jc...@ar... (db61) FIX - ----------------------------------------------------------------------- - En la instalacion "make install" se usaba IRCDOWN/IRCDGRP para fijar - los permisos de la base de datos, cuando deberia utilizarse - IRC_UID/IRC_GID. En todo caso, ambos valores deberian ser equivalentes, - salvo por el hecho de que uno es informacisn textual y el otro es - numerico. - -* 2000/01/05 jc...@ar... (undernet15) SYNC - ----------------------------------------------------------------------- - Sincronizacion con parches Undernet. - -* 2000/01/04 jc...@ar... (db60) CLEANUP - ----------------------------------------------------------------------- - Mas aislamiento de BDD y borrado de una rutina que ya no se utiliza. - -* 2000/01/03 jc...@ar... (db59) FIX - ----------------------------------------------------------------------- - Es importante recordar que cuando se an~ade la gestion de una nueva BDD - hay que modificar el "make install", para que no la borre cada vez - que se instala una nueva version del servidor. - - Eso era lo que pasaba con la base de datos "t". - -* 2000/01/03 jc...@ar... (db58) FIX - ----------------------------------------------------------------------- - [13:03] <YaW> Si un usuario tiene el nick registrado en la DB y al conectar se identifica (/server servidor - puerto nick pass). El servidor primero hace un MODE en P9 y posteriormente un NICK en P10. -[13:03] <YaW> solucion: pasarlo todo en la linea NICK - - JCEA: - Cuando se introduce la clave en el nick, se envia - inmediatamente el modo sin que se haya propagado - aun el nuevo usuario, ya que todavia no se ha - registrado contestando al PING - - Si la clave se introduce como "pass", pasa lo mismo. - - La solucion es sencilla: cuando se van a propagar los modos por la red, - solo lo hace si el USUARIO esta registrado. Es decir, si se ha conectado, - ha introducido sus datos y ha respondido al PING. - -* 2000/01/03 jc...@ar... (db57) FEATURE - ----------------------------------------------------------------------- - Parche complementario al anterior, verificando tambien las BDD leidas - desde disco. Este parche no deberia ser necesario si no fuera porque - ya se han propagado bases de datos corruptas, antes de desplegar DB56. - -* 2000/01/03 jc...@ar... (db56) FEATURE - ----------------------------------------------------------------------- - Solo acepta un registro nuevo cuando referencia una BDD correcta. Es - decir, cuando la BDD referenciada es 'a'-'z' o 'N'. - - En particular, no acepta registros cuyo campo de base de datos conste - de mas de un caracter. De esa forma se pretende limitar el peligro - de cometer un error si se utilizan comandos "RAW". - -* 2000/01/03 jc...@ar... (db55) FEATURE - ----------------------------------------------------------------------- - Aumenta la informacion que proporciona la respuesta al comando "Q" - de las bases de datos distribuidas. Ahora proporciona tambien el numero - de registros que contiene. - - Este cambio es compatible con el protocolo previo, a nivel de servidores. - No asi a nivel de SERVICES que implementen "Q". - -* 2000/01/03 jc...@ar... (db54) CLEANUP - ----------------------------------------------------------------------- - Concentra todas las operaciones "internas" (menos el hashing) de las - bases de datos en el modulo de bases de datos. Entre otras cosas, eso - supone exportar menos entorno en el *.h - -* 2000/01/03 jc...@ar... (undernet14) SYNC - ----------------------------------------------------------------------- - Fix Y2K proveniente de Undernet. En realidad el problema ocurre todos - los an~os, entre el periodo en que la zona local ha cambiado de an~o, - pero GMT todavia no lo ha hecho. - -* 1999/12/21 jc...@ar... (patch.global7) FIX - ----------------------------------------------------------------------- - Cuando un global se pasaba de nodo en nodo, se perdia el texto del mensaje. - -* 1999/12/20 jc...@ar... (patch.clones2) FIX - ----------------------------------------------------------------------- - Si tiene permiso de clones, nunca debe bloquear las conexiones con - "Throttled". - - En la version anterior, solo se eliminaba la posibilidad de throttle - cuando se superaba el numero maximo de conexiones, no cuando se - entraba y salia repetidamente. - -* 1999/12/16 jc...@ar... (patch.global6) FIX - ----------------------------------------------------------------------- - Por alguna extran~a razon, borre un parametro de una funcion con - parametros variables, provocando core dump. - -* 1999/12/16 jc...@ar... (patch.global5) FIX - ----------------------------------------------------------------------- - Se iban an~adiendo prefijos "Mensaje Global" en cada "hop". - -* 1999/12/16 jc...@ar... (patch.NoProxy8) FEATURE - ----------------------------------------------------------------------- - En la cache NoProxy, si la conexion proviene de una IP con clones, - se le dan cuatro horas de validez, en lugar de los 30 minutos. - -* 1999/12/13 jc...@ar... (undernet13.patch) SYNC - ----------------------------------------------------------------------- - Fix proveniente de Undernet. - -* 1999/12/13 jc...@ar... (patch.indent3) SYNC - ----------------------------------------------------------------------- - "make indent". - -* 1999/12/13 jc...@ar... (patch.global4) FIX - ----------------------------------------------------------------------- - Soluciona "Target Left IRC". - -* 1999/12/13 jc...@ar... (patch.global3) FIX - ----------------------------------------------------------------------- - Corregido Core Dump. - -* 1999/12/10 jc...@ar... (patch.global2) FEATURE - ----------------------------------------------------------------------- - Con el cambio anterior, ya no se reconocen los mensajes globales. - An~adimos el texto "MENSAJE GLOBAL", asi como el nick del remitente - y la mascara de destino. - -* 1999/12/10 jc...@ar... (patch.global1) FEATURE - ----------------------------------------------------------------------- - Para evitar que el mIRC meta los globales en la ventana de status, - hacemos que cada usuario vea el global como un mensaje privado - dirigido a el personalmente. - - Por cierto, un privado con destino "$..." se distribuye entre los usuarios - conectados a los servidores que cumplen la mascara. - - Si el destino es "#...", el global se distribuye entre los usuarios de - la red cuya IP/Hostname cumple la mascara. - - Si se requiere una personalizacion mayor, se puede recurrir al envio - de mensajes personales o, mejor, /privmsg n1,n2,n3,n4,n5... - -* 1999/12/10 jc...@ar... (patch.NoProxy7) FIX - ----------------------------------------------------------------------- - Los servidores no tienen entrada en IPcheck, asi que no debemos hacer - "SetIPChecked()" de forma indiscriminada en "IPcheck_proxy_cache_set()". - -* 1999/12/10 sa...@ap... (patch.dbh17) FIX - ----------------------------------------------------------------------- - El pseudoBot de nicks nos habla por NOTICE en lugar de PRIVMSG, lo hago - pensando en no liar mucho la migración de cara a los scripts. - -* 1999/12/09 jc...@ar... (patch.NoProxy6) FIX - ----------------------------------------------------------------------- - El parche "NoProxy5" no hacia cache dependiendo del tipo de error en el - intento de conexion para verificar. - -* 1999/12/09 jc...@ar... (patch.NoProxy5) FEATURE - ----------------------------------------------------------------------- - Mantiene una cache del resultado de las comprobaciones de PROXY abierto. - Si el proxy estaba cerrado, le da una validez de 30 minutos. Si el - PROXY estaba abierto, realiza la comprobacion de nuevo siempre. - -* 1999/12/09 jc...@ar... (undernet12.patch) SYNC - ----------------------------------------------------------------------- - Incluimos los tres primeros parches de Undernet para 2.10.07 - - Algunos detalles: - - - Uno de los parches permite que los IRCops no tengan limitado el - numero de canales en los que puede entrar simultaneamente. Eso ya - estaba implementado en nuestro codigo. - - - Otros parches conceden numerosos privilegios a los IRCops, dentro - de canales locales. Nosotros hacemos lo mismo, pero para todos - los canales, no solo los locales. - -* 1999/11/19 sa...@ap... (patch.db53) FIX - ----------------------------------------------------------------------- - Linux 2.0/libc5 no contiene algunas definiciones en mman.h, como són - MAP_NORESERVE y MAP_FAILED. Digital Unix no contiene MAP_NORESERVE, - los he incorporado en s_bdd.h, MAP_NORESERVE=0 y MAP_FAILED=((void*)-1) - -* 1999/11/18 sa...@ap... (patch.db52) FIX - ----------------------------------------------------------------------- - Si está corrupta una tabla, al hacer REHASH (o kill -1) muere el daemon - al desconectar de los hubs, pk un puntero keda invalidado. Se ha - corregido con este patch. - -* 1999/11/18 sa...@ap... (patch.dbh16) FEATURE - ----------------------------------------------------------------------- - Los textos referentes a autenticación de usuario se enviaran con origen - nombe.de.server y NOTICE , excepto si existe un registro 'nickserv' en - la tabla 'b', en cuyo caso se enviaran con origen el contenido de dicho - registro mediante PRIVMSG. Resumiendo: - - :jupiter.irc-hispano.org NOTICE usuario :*** Utiliza /NICK usuari... - - o bien: - - :NiCK PRIVMSG usuario :*** Utiliza /NICK usuario:clave para ident... - -* INICIO de CAMBIOS para "ircu2.10.07" Index: ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_H_01 diff -u ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_H_01:1.1.1.1 ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_H_01:removed --- ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_H_01:1.1.1.1 Mon Sep 8 03:34:26 2003 +++ ircd-ircdev/doc/history/IRC-Hispano/CAMBIOS2_10_H_01 Fri Apr 22 09:53:26 2005 @@ -1,147 +0,0 @@ -$Id: CAMBIOS2_10_H_01,v 1.1.1.1 2003/09/08 10:34:26 zolty Exp $ - - -* 2000/11/16 jc...@ar... (VIP18 - u2.10.H.01.28) FIX - ----------------------------------------------------------------------- - Cuando un usuario cambia de nick registrado a no registrado, y al - reves, y el nick registrado tiene IP virtual propia, la IP virtual del - usuario no cambia. - - Ahora se verifican posibles cambios en la IP virtual cuando el - usuario gana o pierde el flag "+r". - -* 2000/11/16 jc...@ar... (u2.10.H.01.27) CLEANUP - ----------------------------------------------------------------------- - "make indent" - -* 2000/11/16 jc...@ar... (VIP17 - u2.10.H.01.26) FIX - ----------------------------------------------------------------------- - Modificamos el servidor para que una red hibrida con nodos con IP - virtual para todo el mundo, y nodos con IP virtual solo para registrados - puedan convivir sin problemas. - - Los nodos mas restrictivos no pondran el +x a sus usuarios, pero deben - aceptar el +x que les llegue de otro nodo. - -* 2000/11/16 jc...@ar... (VIP16 - u2.10.H.01.24) FIX - ----------------------------------------------------------------------- - Aparecian algunos usuarios ajenos con modo "+x" de forma aleatoria. - El problema se producia cuando un usuario externo cambiaba de nick, - que siempre se le ponia el "+x", aunque el nodo original no enviase - dicho modo. - -* 2000/11/16 jc...@ar... (VIP15 - u2.10.H.01.23) FEATURE - ----------------------------------------------------------------------- - Solo debe verificar la clave de nick registrado cuando se trata de - conexiones locales. - - Solo acude a la base de datos para ver si un nick esta registrado - si se trata de una conexion local. - - Esto incrementa el rendimiento de forma notable, sobre todo en los - "net join". - -* 2000/11/15 jc...@ar... (u2.10.H.01.22) FEATURE - ----------------------------------------------------------------------- - Cuando se produce un "connect", solo se informa del mismo a los - IRCops y Helpers. - -* 2000/11/15 jc...@ar... (u2.10.H.01.21) FEATURE - ----------------------------------------------------------------------- - Cuando un usuario esta siendo bloqueado por "silence", - deberia salirle algo en pantalla. - - Esto afecta a "invite", "message" y "notice". - - Tambien afecta a "cnotice" y "cprivmsg". - - Los mensajes cuyo destinatario es un canal, no informan si hay - un silence en algunos usuarios de un canal. - -* 2000/11/15 jc...@ar... (u2.10.H.01.20) FEATURE - ----------------------------------------------------------------------- - Los Helpers pueden solicitar listados largos "who", y ven los modos - "i", "w" y "g" de los usuarios, como se fueran IRCops. - -* 2000/11/15 jc...@ar... (u2.10.H.01.19) FEATURE - ----------------------------------------------------------------------- - Los opers deberian tener acceso al flag "x" del - comando /who. - -* 2000/11/15 jc...@ar... (VIP14 - u2.19.H.01.18) FEATURE - ----------------------------------------------------------------------- - Todos los usuarios tienen IP virtual. - -* 2000/11/06 jc...@ar... (u2.10.H.01.16) FEATURE - ----------------------------------------------------------------------- - Define un par de flags nuevos para no mezclar demasiado el tema de - los informes de "rename". - - Documentado en http://www.argo.es/~jcea/irc/modos.htm - -* 2000/10/19 jc...@ar... (u2.10.H.01.15) FEATURE - ----------------------------------------------------------------------- - Un "/who" a un Oper (Helper) tambien devuelve el asterisco marcador - de IRCop, de forma que algunos scripts te sacan con colorines :-). - -* 2000/10/19 jc...@ar... (u2.10.H.01.14) FEATURE - ----------------------------------------------------------------------- - Cuando un usuario hace un "/who 0 o" tambien le salen los Opers, ya - que los IRCops son una especie en extenc... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-04-22 16:51:36
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-22 16:51:26 UTC Modified files: configure Log message: ups, el configure ---------------------- diff included ---------------------- Index: ircd-ircdev/configure diff -u ircd-ircdev/configure:1.16 ircd-ircdev/configure:1.17 --- ircd-ircdev/configure:1.16 Fri Apr 22 09:22:11 2005 +++ ircd-ircdev/configure Fri Apr 22 09:51:16 2005 @@ -1,11 +1,11569 @@ -./configure --prefix=/home/zoltan/ircd \ - --bindir=/home/zoltan/ircd \ - --libdir=/home/zoltan/ircd/data \ - --enable-debug \ - --enable-profile \ - --enable-pedantic \ - --enable-warnings \ - --with-symlink=ircd.zoltan \ - --with-dpath=/home/zoltan/ircd/data \ - --with-maxxcon=100 \ - --with-ddb-environment +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 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+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="ircd/ircd.c" +ac_default_prefix=$HOME +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#if HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#if STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# if HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#if HAVE_STRINGS_H +# include <strings.h> +#endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif +#if HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AWK SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S RMPROG SHPROG LEX LEXLIB LEX_OUTPUT_ROOT YACC ENGINE_C INSTALL_RULE SYMLINK IRCDMODE IRCDOWN IRCDGRP DPATH ENVIRONMENT LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-poll Force poll to be used regardless of whether or not + it is a system call + --enable-debug Turn on debugging mode + --disable-asserts Disable assertion checking + --disable-symbols Disable debugging symbols (remove -g from CFLAGS) + --enable-profile Enable profiling support (add -pg to CFLAGS) + --enable-pedantic Enable pedantic warnings (add -pedantic to CFLAGS) + --enable-warnings Enable warnings (add -Wall to CFLAGS) + --disable-inlines Disable inlining for a few critical functions + --disable-devpoll Disable the /dev/poll-based engine + --disable-kqueue Disable the kqueue-based engine + --disable-epoll Disable the epoll-based engine + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-optimization=-O2 Explicitly set the compiler optimization flags + (default: -O3) + --with-leak-detect Turn on the leak detector(requires patched boehm) + --without-ipv6 disable IPv6 support (default is autodetect) + --with-symlink=name Name to give the symlink; if name is "no," no + symlink will be created. + --with-mode=mode Permissions (in octal) to give the binary + --with-owner=owner Specify owner of the installed binary + --with-group=group Specify group owner of the installed binary + --with-domain=domain Domain name to use in local statistics gathering + --with-chroot=dir Specify that the server will be operated under + a different root directory given by dir. See + doc/readme.chroot for more information. + --with-dpath=dir Directory for all server data files + --with-cpath=file Set server configuration file + --with-lpath=file Set the debugging log file + --with-maxcon=maxcon Maximum number of connections server will accept + --with-ddb-environment Use the DDB Environment (Distributed DataBase) + --with-services-environment Use the Services Environment (Ex TerraIRCU) + --with-undernet-environment Use the Undernet Environment + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have + headers in a nonstandard directory <include dir> + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + +echo "$as_me:$LINENO: checking for installation prefix" >&5 +echo $ECHO_N "checking for installation prefix... $ECHO_C" >&6 +if test "${unet_cv_prefix+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + unet_cv_prefix=$HOME +fi + +if test x"$prefix" != xNONE; then + unet_cv_prefix=$prefix +fi +echo "$as_me:$LINENO: result: $unet_cv_prefix" >&5 +echo "${ECHO_T}$unet_cv_prefix" >&6 +ac_default_prefix=$unet_cv_prefix + + ac_config_headers="$ac_config_headers config.h" + + + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; ... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-04-22 16:22:34
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-22 16:22:24 UTC Modified files: ChangeLog ChangeLog.es configure configure.in doc/ircd.sample-en.conf doc/ircd.sample-es.conf include/patchlevel.h include/s_conf.h ircd/channel.c ircd/class.c ircd/gline.c ircd/ircd.c ircd/ircd_parser.y ircd/m_kick.c ircd/m_whowas.c ircd/match.c ircd/numnicks.c ircd/s_conf.c ircd/s_err.c ircd/s_stats.c ircd/s_user.c tools/convert-conf.py tools/linesync/linesync.conf tools/linesync/linesync.sh Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-22 Toni García <zo...@ir...> 1.0.alpha27 * Sincronización Undernet ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.28 ircd-ircdev/ChangeLog:1.29 --- ircd-ircdev/ChangeLog:1.28 Thu Apr 14 03:28:05 2005 +++ ircd-ircdev/ChangeLog Fri Apr 22 09:22:11 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.28 2005/04/14 10:28:05 zolty Exp $ +# $Id: ChangeLog,v 1.29 2005/04/22 16:22:11 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-22 Toni García <zo...@ir...> 1.0.alpha27 + * Undernet synchronization + 2005-04-14 Toni García <zo...@ir...> 1.0.alpha26 * DDB Events Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.28 ircd-ircdev/ChangeLog.es:1.29 --- ircd-ircdev/ChangeLog.es:1.28 Thu Apr 14 03:28:05 2005 +++ ircd-ircdev/ChangeLog.es Fri Apr 22 09:22:11 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.28 2005/04/14 10:28:05 zolty Exp $ +# $Id: ChangeLog.es,v 1.29 2005/04/22 16:22:11 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-22 Toni García <zo...@ir...> 1.0.alpha27 + * Sincronización Undernet + 2005-04-14 Toni García <zo...@ir...> 1.0.alpha26 * Eventos de DDB Index: ircd-ircdev/configure diff -u ircd-ircdev/configure:1.15 ircd-ircdev/configure:1.16 --- ircd-ircdev/configure:1.15 Mon Apr 11 01:44:56 2005 +++ ircd-ircdev/configure Fri Apr 22 09:22:11 2005 @@ -1,11569 +1,11 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59. -# -# Copyright (C) 2003 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+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="ircd/ircd.c" -ac_default_prefix=$HOME -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#if HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#if HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#if STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# if HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#if HAVE_STRINGS_H -# include <strings.h> -#endif -#if HAVE_INTTYPES_H -# include <inttypes.h> -#else -# if HAVE_STDINT_H -# include <stdint.h> -# endif -#endif -#if HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AWK SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S RMPROG SHPROG LEX LEXLIB LEX_OUTPUT_ROOT YACC ENGINE_C INSTALL_RULE SYMLINK IRCDMODE IRCDOWN IRCDGRP DPATH ENVIRONMENT LIBOBJS LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-poll Force poll to be used regardless of whether or not - it is a system call - --enable-debug Turn on debugging mode - --disable-asserts Disable assertion checking - --disable-symbols Disable debugging symbols (remove -g from CFLAGS) - --enable-profile Enable profiling support (add -pg to CFLAGS) - --enable-pedantic Enable pedantic warnings (add -pedantic to CFLAGS) - --enable-warnings Enable warnings (add -Wall to CFLAGS) - --disable-inlines Disable inlining for a few critical functions - --disable-devpoll Disable the /dev/poll-based engine - --disable-kqueue Disable the kqueue-based engine - --disable-epoll Disable the epoll-based engine - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-optimization=-O2 Explicitly set the compiler optimization flags - (default: -O3) - --with-leak-detect Turn on the leak detector(requires patched boehm) - --without-ipv6 disable IPv6 support (default is autodetect) - --with-symlink=name Name to give the symlink; if name is "no," no - symlink will be created. - --with-mode=mode Permissions (in octal) to give the binary - --with-owner=owner Specify owner of the installed binary - --with-group=group Specify group owner of the installed binary - --with-domain=domain Domain name to use in local statistics gathering - --with-chroot=dir Specify that the server will be operated under - a different root directory given by dir. See - doc/readme.chroot for more information. - --with-dpath=dir Directory for all server data files - --with-cpath=file Set server configuration file - --with-lpath=file Set the debugging log file - --with-maxcon=maxcon Maximum number of connections server will accept - --with-ddb-environment Use the DDB Environment (Distributed DataBase) - --with-services-environment Use the Services Environment (Ex TerraIRCU) - --with-undernet-environment Use the Undernet Environment - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have - headers in a nonstandard directory <include dir> - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd "$ac_popdir" - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF - -Copyright (C) 2003 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - -echo "$as_me:$LINENO: checking for installation prefix" >&5 -echo $ECHO_N "checking for installation prefix... $ECHO_C" >&6 -if test "${unet_cv_prefix+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - unet_cv_prefix=$HOME -fi - -if test x"$prefix" != xNONE; then - unet_cv_prefix=$prefix -fi -echo "$as_me:$LINENO: result: $unet_cv_prefix" >&5 -echo "${ECHO_T}$unet_cv_prefix" >&6 -ac_default_prefix=$unet_cv_prefix - - ac_config_headers="$ac_config_headers config.h" - - - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-04-20 22:10:03
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-20 22:09:56 UTC Modified files: TODO.es Log message: actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.19 ircd-ircdev/TODO.es:1.20 --- ircd-ircdev/TODO.es:1.19 Sun Apr 17 11:38:04 2005 +++ ircd-ircdev/TODO.es Wed Apr 20 15:09:46 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.19 2005/04/17 18:38:04 zolty Exp $ +# $Id: TODO.es,v 1.20 2005/04/20 22:09:46 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -56,7 +56,6 @@ - [G] Soporte RC4 para server<->server. - [G] Soporte SSL para client<->server. - [G] Mirar si el aviso de invites lo haga con wallchops o con raw. - - [D] Documentar para Doxygen el Watch y el DDB - [G] Soporte de +e (exceptions) de canales - [G] Modo de canal +u de esconder mensajes de quit y part (evitar publicidad) @@ -65,11 +64,37 @@ - [G] Estudiar la remodelación del esquema de "hubs" y "leafs" a un basandonos en el calculo de topologia que realiza OSPF solo que en cuanto a coste, ancho de banda y retardo. - - [G] Documentar en el RELEASE.NOTES lo relacionado con DDB y Services. - [G] Mirar el tema de control de Ilines por rangos, el tema es que con un /64 actualmente deja X clones para cada IP de ese rango, deberia haber alguna forma de que sea por rango. + +DOCUMENTACION PENDIENTE +-------------------------------------------------------------------------------------- + - [G] Documentar para Doxygen el Watch y el DDB + - [G] Traducir comentarios DDB al ingles + - [G] Documentar en el RELEASE.NOTES lo relacionado con DDB y Services. + - [G] Traducir el archivo Authors. + - [G] Traducir el archivo chroot.txt + - [G] Traducir el archivo crules.txt + - [G] Traducir el archivo cvs.txt + - [G] Traducir el archivo features.txt + - [G] Traducir el archivo freebsd.txt + - [G] Traducir el archivo gline.txt + - [G] Traducir el archivo iauth.txt + - [G] Traducir el archivo indent.txt + - [G] Traducir el archivo irc.1 + - [G] Traducir el archivo ircd.8 + - [G] Traducir el archivo jupe.txt + - [G] Traducir el archivo log.txt + - [G] Traducir el archivo rfc1413.txt + - [G] Traducir el archivo snomask.txt + - [G] Traducir el archivo string.txt + - [G] Traducir el archivo who.txt + - [G] Traducir el archivo www.txt + - [G] Traducir el directorio api + + BUGS CONOCIDOS -------------------------------------------------------------------------------------- 15/Mar/2005 @@ -77,6 +102,8 @@ entrar clientes al IRCD. Investigar eso. 31/Mar/2005 - [D] No se propaga el modo cuando estamos autentificando al conectar. +20/Abr/2005 + - [D] A veces un nick forbid puede tener +r. Leyenda: [G] General @@ -84,6 +111,7 @@ [D] DDB [S] Services + RESERVA DE MODOS: Se muestran aqui modos para evitar incompatibilidades Canal: ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-17 22:30:55
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-17 22:30:49 UTC Added files: doc/es/asll.txt Log message: mas documentacion en espaol ---------------------- diff included ---------------------- Index: ircd-ircdev/doc/es/asll.txt diff -u /dev/null ircd-ircdev/doc/es/asll.txt:1.1 --- /dev/null Sun Apr 17 15:30:49 2005 +++ ircd-ircdev/doc/es/asll.txt Sun Apr 17 15:30:39 2005 @@ -0,0 +1,27 @@ +$Id: asll.txt,v 1.1 2005/04/17 22:30:39 zolty Exp $ + +Documentacion preliminar de AsLL, última actualización 13 Jun 2002 + +Formato del ping de servidor-a-servidor: + +<prefijo> G !<ts-local> <target> <ts-local> + +prefijo = numérico del servidor de origen +ts-local = timestamp local, como "segundos.milisegundos" +target = númerico del servidor de destino + +El timestamp local se envía también en vez del campo de origen, +la información RTT puede ser recogida desde servidores sin AsLL, +mientras se preserva compatibilidad hacia atrás. + + +Formato del pong de servidor-a-servidor + +<prefijo> Z <origen> <target> <ts-remoto> <diff> <ts-local> + +prefijo = numérico del servidor de origen +origen = numérico del servidor de origen +target = númerico del servidor de destino +ts-remoto = timestamp remoto recibido desde un PING AsLL +diff = diferencia entre ts-local y ts-remoto en milisegundos (número entero) +ts-local = timestamp local, como "segundos.milisegundos" ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-17 18:38:20
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-17 18:38:14 UTC Modified files: TODO.es Log message: actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.18 ircd-ircdev/TODO.es:1.19 --- ircd-ircdev/TODO.es:1.18 Thu Apr 14 03:48:05 2005 +++ ircd-ircdev/TODO.es Sun Apr 17 11:38:04 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.18 2005/04/14 10:48:05 zolty Exp $ +# $Id: TODO.es,v 1.19 2005/04/17 18:38:04 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -65,6 +65,10 @@ - [G] Estudiar la remodelación del esquema de "hubs" y "leafs" a un basandonos en el calculo de topologia que realiza OSPF solo que en cuanto a coste, ancho de banda y retardo. + - [G] Documentar en el RELEASE.NOTES lo relacionado con DDB y Services. + - [G] Mirar el tema de control de Ilines por rangos, el tema es que con un /64 + actualmente deja X clones para cada IP de ese rango, deberia haber alguna + forma de que sea por rango. BUGS CONOCIDOS -------------------------------------------------------------------------------------- ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-17 18:35:27
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-17 18:35:17 UTC Added files: RELEASE.NOTES RELEASE.NOTES.es Log message: Agregado mas documentacion ---------------------- diff included ---------------------- Index: ircd-ircdev/RELEASE.NOTES diff -u /dev/null ircd-ircdev/RELEASE.NOTES:1.1 --- /dev/null Sun Apr 17 11:35:17 2005 +++ ircd-ircdev/RELEASE.NOTES Sun Apr 17 11:35:07 2005 @@ -0,0 +1,421 @@ +Release notes for IRC-Dev IRCD version 1.0 +Last updated: 17 Apr 2005 +Written by Toni Garcia <zo...@ir...> +Based on earlier documents by Kev <kl...@mi...>, +Braden <db...@ya...> and Michael Poole <md...@tr...> + +This document briefly describes changes in IRC-Dev ircd relative to +ircu2.10.07 (based on IRC-Hispano ircdh and Terraircu). IRC-Dev ircd +is only compatible with servers that implement the P10 protocol. It +has been tested to link against old ircds, but some features (notably +IPv6 support) are not supported by old ircds. + + +Enhancements: + +The configuration file format has changed to one that is easier to +read. It is based on the configuration parser found in ircd-hybrid. +As usual, an example configuration file can be found in the doc +subdirectory. + +IRC-Dev ircd now supports IPv6 clients. If your operating system +provides IPv6 socket support, IRC-Dev ircd can accept connections +on IPv6 addresses. Even if your operating system does not support IPv6 +sockets, you can link (using IPv4) to a server that has IPv6 clients, +and IRC-Dev ircd will treat the IPv6 clients correctly. + +The DNS resolver has been replaced with a streamlined version (also +from ircd-hybrid) that avoids some of the complications from using +the full libresolv or adns libraries. + +The server can query an IAUTH external authorization server. The +protocol is described in doc/en/iauth.txt. This allows an external +program to accept or reject any client that connects to the server +and allows that external program to assign an account stamp to the +incoming user. + +More than one hashing mechanism is now supported for oper passwords, +and a new tool (ircd/umkpasswd) is provided to generate them. + +Commands that send messages to specified services may be defined in +the configuration file by using Pseudo blocks. This lets users use +commands like /X or /CHANSERV from their client, without tying the +admin to a particular arrangement or naming of services. + +Clients may negotiate extensions and changes to the standard IRC +client protocol by using the CAP command during registration. There +does not appear to be any documentation for the protocol, which should +not matter since IRC-Dev ircd does not currently implement capabilities +that affect the protocol. + +The /stats command accepts string identifiers in addition to +single-character identifiers. For example, "/stats access" shows the +same data as "/stats i". Supported names are shown by /stats. New +/stats options are: /stats a (nameservers), to list DNS nameservers in +use; /stats L (modules), to list loaded modules; and /stats R +(mappings), to list privmsg helper commands defined by Pseudo blocks. +By default, all of these are hidden from normal users. + +Client blocks (previously I: lines), Operator blocks (previously O: +and o: lines), channel bans and silences may use CIDR notation instead +of simple wildcards. You may also have silence exceptions by putting +'-' before the mask; for example, if you wish to silence everyone +except X, you could use SILENCE *!*@*,-X!cse...@ir.... + +The server will no longer kick "net riders" in keyed (+k) channels if +both sides of the net join have the same key. + +GLINE has been extended to allow IRC operators to issue global +G-lines; see doc/en/gline.txt for more information about how to use +this feature. + +A new JUPE command has been added to permit servers to be juped in a +more reliable fashion. + +Two new channel mode manipulation commands, OPMODE and CLEARMODE, have +been added. OPMODE works exactly like MODE, except that 1) only IRC +operators can use it; 2) it ignores whether or not the operator is a +channel operator. CLEARMODE is a reliable means of eradicating +certain channel modes; it is given an argument string consisting of +the modes to clear. If that argument string is not given, it defaults +to "ovpsmikbl." + +When a channel MODE command from a remote user must be bounced, a +"MODE -o" for the user will also be sent, in order to attempt to +"heal" the desync. Also, the old anti-hack code has been removed, +since servers never send MODEs except for bounces. + +Most compile-time options have been converted to run-time options +which may be set through the configuration file or through the use of +the new commands SET, RESET, and GET; for more information about +these, please refer to doc/ircd.sample-en.conf (for configuration file +information), doc/en/features.txt (for a list and description of the +options), and doc/en/log.txt (for a description of the logging +subsystem configuration). + +A new logging subsystem has been written, making it much easier to get +ircd to write out log files, or to use syslog if that's desired. + +The old chroot() code has been removed; that should now be handled via +an external wrapper. Such a wrapper has been included in the tools +subdirectory. PLEASE READ doc/en/chroot.txt IF YOU WISH TO USE +CHROOT-STYLE JAILS WITH IRCD. + +The build system has been completely revamped; since most compile-time +options are now run-time, the few remaining ones can be placed in +./configure and set with --with-* and --enable-*. Please read INSTALL +for more information on how to compile and install the daemon. + +All of the old select()- and poll()-based event loop has been +completely ripped out and replaced, enabling ircd to use kqueue(), +epoll() and /dev/poll, on systems that support those interfaces. + +The server now uses extended numerics exclusively. + +A large number of code clean-ups, changes, and fixes have been made. +Some of these should hopefully increase performance; others will make +it easier to maintain the code. + +All server to server communications use tokenization and numeric id's, +this reduces the bandwidth requirements approximately 10-20%. + +Much of the network code has been rewritten and many old bugs relating +to the networking core of the server have been fixed. + +The port handling code has been rewritten to allow much better control +over listeners. + +The server supports extended numerics which theoretically would allow +the entire population of the planet to participate on a network without +running out of unique values. + +Added ISUPPORT messages on client connects to allow client coders to +detect network specific enhancements to the client protocol. + +Server aliasing and virtual hosting (port forwarding) are available for +larger DoS attack prone networks. + +Status messages are sent to connecting clients so connections don't +seem to hang during client registration. + +The server now uses a bit less memory and cpu under full load, we +estimate around a 10% improvement in resource usage over the previous +version. + +IRC-Dev ircd now uses 3 environment to choose; DDB Environment of +Distributed DataBases based on ESNET ircd, Undernet Environment based +on Undernet and Services Environment based on Terraircu. + + +DDB Environment: +TODO. + + +Services Environment: +TODO. + + +Undernet Environment: + +A new feature called "oplevels" has been added. It uses new channel +keys (+A for the administrator, +U for users) to grant chanop status +when you join using those keys. Part of this channel protection is +that you cannot be deopped in channel by someone who you opped. + + +Configuration Changes: + +As mentioned above, the configuration file format has changed +radically. Please consult doc/ircd.sample-en.conf for details on the +new format. Some prominent changes follow. + +The old contents of H: lines have been merged into the Connect block +that describes the peer server(s) that should be allowed to hub. + +Two default virtual host addresses may be specified, one for IPv4 +sockets and one for IPv6 sockets. + +Nickname jupes have their own blocks, and do not share structure with +UWorld server declarations. + +Operator connection classes and individual operator blocks may be +assigned privileges, rather than having them controlled globally. +Because of this, the feature settings that controlled the privileges +globally have been removed. + +The maximum number of clients allowed per IP may be set in a Client +block (the equivalent of I: lines). + +Most compile-time options are now run-time configurable features, and +can be set through the daemon configuration file. Please see +doc/ircd.sample-en.conf for an illustration of the format (search for +Features block). Documentation for the logging subsystem is in +doc/en/log.txt, and the list and description of all the features is +located in doc/en/features.txt. + + +Compile Time Options: + +A listing of supported compile-time options may be seen by running +"./configure --help". The defaults should be sane. In particular, +you should NOT compile with --enable-debug or with --disable-symbols +on a production network. + +Again, most compile-time options are now set in the configuration +file. The remaining options are set through arguments to +./configure. A list of these options is available with ./configure +--help; a more detailed description follows: + +--enable-poll + The configure script attempts to only use poll on systems where that +is a direct system call. Sometimes, however, it will not properly +detect this. This option is meant to force ircd to use poll on +systems where ./configure does not detect that it is a system call. + +--enable-debug + This option turns on DEBUGMODE, which enables code useful for +debugging the server. THIS FEATURE SHOULD NOT BE USED ON A PRODUCTION +NETWORK; it represents a severe privacy risk. + +--disable-asserts + Assertions are a means of checking that certain underlying +assumptions are met. This option disables those assertions. + +--disable-symbols + By default, the -g compiler option is used to enable symbols on the +binary. These symbols are useful when attempting to track down the +cause of a crash. Please do not use this option. + +--enable-profile + This option simply adds the -pg compiler option to enable profiling +support. + +--enable-pedantic +--enable-warnings + The Coder Committee attempts to release code that generates no +compile-time warnings or errors. These two options add gcc-specific +warning flags to the compiler flags. These options should not be used +if your compiler is not gcc. + +--disable-inlines + Some critical functions are forcefully inlined. This flag disables +that behavior. It should not be used for performance reasons. + +--disable-devpoll + On systems that have /dev/poll, the /dev/poll-based engine is +automatically enabled. This option inhibits that behavior. + +--disable-kqueue + On systems that have kqueue(), the kqueue()-based engine is +automatically enabled. This option inhibits that behavior. + +--disable-epoll + On systems that have epoll(), the epoll()-based engine is +automatically enabled. This option inhibits that behavior. + +--with-symlink=name + When "make install" is executed, the daemon is installed in such a +way that old versions are kept, and a symlink is made to the latest +installed version. This option selects the name given to that +symlink. Specify a symlink name of "no" or use "--without-symlink" to +disable this behavior. + +--with-mode=mode + The daemon binary is installed with permissions 711 by default; this +option may be used to specify a different permission set for the +binary. + +--with-owner=owner + By default, the owner of the installed binary will be the same as +the person that compiled it; this option permits a different owner to +be specified. + +--with-group=group + By default, the group owner of the installed binary will be the same +as the primary group of the person that compiled it (at the time it +was compiled); this option permits a different group owner to be +specified. + +--with-domain=domain + The daemon attempts to keep some statistics on the server's user +load, including how many local users connect to the server. A local +user is determined by comparing the user's host name to a domain +name. The domain name can be set through the feature subsystem, as +documented in doc/es/features.txt; however, it will default either to +the domain specified with this flag, or to a name extracted from +/etc/resolv.conf, if it exists. + +--with-chroot=dir + Some admins may wish to run ircd within a chroot "jail," to enhance +the security of their systems. Although the chroot() code was removed +from ircd, the build system still supports operation of this form. If +you wish to use chroot-based jails, read doc/en/chroot.txt and give +this option to ./configure. + +--with-dpath=dir + This option simply specifies the path to the data directory for the +daemon. If --with-chroot has been given, this path must be compatible +with the chroot directory. See doc/en/chroot.txt for more information +about this restriction. + +--with-cpath=file + This option simply specifies the path to the configuration file for +the daemon, and may be either a relative or absolute path name. If it +is an absolute path, and if --with-chroot has been given, this path +must be compatible with the chroot directory. See doc/en/chroot.txt +for more information about this restriction. + +--with-lpath=file + When the server is compiled in DEBUGMODE (--enable-debug), the +debugging logs will be sent to the file specified here (defaulting to +"ircd.log" in the data directory). If this is an absolute path, +--with-chroot has been given, and if that path is not compatible with +the chroot directory, then a warning will be issued and the default +will be used. See doc/en/chroot.txt for more information about this +restriction. + +--with-maxcon=maxcon + The maximum number of sockets that the server may open is normally +derived from the hard limit on the number of file descriptors. If +desired, a higher value may be used by specifying this option to +./configure. + +--with-ddb-environment + This option allows to choose DDB environment for ircd. It is the +value by default. + +--with-services-environment + This option allows to choose Services environment for ircd. If not +it especifies, will be used DDB environment. + +--with-undernet-environment + This option allows to choose Undernet environment for ircd. If not +it especifies, will be used DDB environment. + +Otherwise Undocumented Features: + +Despite our preferences to keep these undocumented, they are +occasionally useful, and are described here for users who may +need them. + +To enable these, you need to add them to CFLAGS prior to running +./configure, usually as in: CFLAGS="-O2 -D<option>" ./configure + +-DNICKLEN=20 + This allows you change the maximum nick length from 15 to 20 (or +whatever number you use at the end). It MUST be the same on all +servers on your network, or bad things will happen. You should also +use the NICKLEN feature in ircd.conf. + +-DNOTHROTTLE + This disables the throttling code. This is used for debugging +*only*. It lets you connect up to 255 clients from one host with no +time considerations. If this is enabled on a production server Kev will +personally drive your server into the ground. You have been warned. + + +Operating System and Kernel Requirements: + +If you plan allowing more than 1000 clients on your server, you may +need to adjust your kernel resource limits for networking and +I/O. There are two things you will need to pay particular attention +to, the number of file descriptors available and the number of buffers +the kernel has available to read and write data to the file +descriptors. + +To calculate kernel buffer requirements a good place to start is to +multiply the expected number connections expected on the machine by +the amount of data we buffer for each connection. Doubling the result +of the above calculation and dividing it by the size of the buffers +the kernel uses for I/O should give you a starting place. + +The server uses 2K kernel buffers for clients, and 64K kernel buffers +for servers (actual use may be somewhat higher). + +c_count - number of clients expected +c_q - number of bytes buffered for each client +s_count - number of servers expected +s_q - number of bytes buffered for each server + +buffer count = (2 * (c_count * c_q + s_count * s_q)) / kernel buffer size + +If the client count is 2000 and the server count is 1 (normal leaf) +and your server uses 2K as an I/O buffer size: + +You need (2 * (2000 * 2048 + 1 * 65536)) / 2048 or a minimum of 4064 +buffers available, if the kernel uses 512 byte buffers you will need a +minimum of 16256 kernel buffers. + +These settings may be a bit light for net-breaks under full client +load you will need to experiment a bit to find the right settings for +your server. + +FreeBSD --WildThang + +You may want to increase your kernel resources if you want to put a +lot of clients on your machine here are a few values to start with: + +CHILD_MAX=4096 +OPEN_MAX=4096 +FD_SETSIZE=4096 +NMBCLUSTERS=8096 + +If you have trouble connecting *out* from your machine try: + sysctl -w net.inet.ip.portrange.last=10000 + +Solaris 2.6 --Tar + +Increase the default hard limit for file descriptors in /etc/system: + +set rlim_fd_max = 4096 + +The server will raise the soft limit to the hard limit. + +Linux 2.2 -- [Tri]/Isomer + +The kernel has a kernel destination cache size of 4096. If the kernel +sees more than 4096 IP's in 60s it warns 'dst cache overflow'. This +limit can be changed by modifying /proc/sys/net/ipv4/route/max_size. + +A patch to select is also recommended if you have regular poll/select +errors. Index: ircd-ircdev/RELEASE.NOTES.es diff -u /dev/null ircd-ircdev/RELEASE.NOTES.es:1.1 --- /dev/null Sun Apr 17 11:35:17 2005 +++ ircd-ircdev/RELEASE.NOTES.es Sun Apr 17 11:35:07 2005 @@ -0,0 +1,431 @@ +Notas de lanzamiento para IRCD de IRC-Dev version 1.0 +Ultima actualización: 17 Abril 2005 +Escrito y traducido por Toni Garcia <zo...@ir...> +Basado en anteriores documentos por Kev <kl...@mi...>, +Braden <db...@ya...> y Michael Poole <md...@tr...> + +Este documento describe brevemente los cambios del ircd de IRC-Dev en +relación con el ircu2.10.07 (basado en el ircdh de IRC-Hispano y en +Terraircu). El ircd de IRC-Dev es compatible solamente con servidores +que tengan implementado el protocolo P10. Ha sido probado el link con +ircds antiguos, pero muchas caracteristicas (notablemente el soporte +IPv6) no están soportadas por ircds viejos. + + +Implementaciones: + +El formato del archivo de la configuración ha cambiado a uno que es +más fácil de leer. Está basado en el programa de análisis de la +configuración de ircd-hybrid. Como de costumbre, un ejemplo del +archivo de la configuración se encuentra en el subdirectorio doc. + +El ircd de IRC-Dev soporta ahora los clientes IPv6. Si tu sistema +operativo proporciona el soporte de sockets IPv6, el ircd de IRC-DEV +puede aceptar conexiones con direcciones IPv6. Incluso si su sistema +operativo no soporta los sockets IPv6, usted puede linkar (con IPv4) +a un servidor que tenga clientes IPv6, y el ircd de IRC-Dev trata +correctamente a los clientes IPv6. + +El resolvedor DNS se ha substituido por una versión "streamlined" +(también del ircd-hybrid) que evita las complicaciones de usar las +bibliotecas completas del "libresolv" o de "adns". + +El servidor puede preguntar a un servidor externo de autorización IAUTH. +El protocolo se describe en doc/es/iauth.txt. Esto permite un programa +externo para aceptar o para rechazar a cualquier cliente eso conecta con +el servidor y permite que ese programa externo asigne una cuenta de +acceso al usuario entrante. + +Más de un mecanismo del hashing está soportado ahora para las +contraseñas de operador (IRCOP), y se proporciona una herramienta nueva +(ircd/umkpasswd) para generarlas. + +Comandos que envían mensajes a los servicios especificados se pueden +definir en el archivo de la configuración usando bloques "Pseudo" Esto +deja a los usuarios utilizar los comandos como /X o /CHANSERV de su +cliente, sin atar a los cambios de nick de los servicios. + +Los clientes pueden negociar extensiones y cambios al protocolo de clientes +del IRC estándar usando el comando CAP durante el registro. Allí no hay +ninguna documentación para el protocolo, puesto que el ircd actualmente +no implementa capacidades que afectan al protocolo. + +El comando /stats acepta identificadores de texto además de indentificadores +de un solo caracter. Por ejemplo, "/stats access" muestra los mismos +datos que "/stats i". Los nombres soportados son mostrados por "/stats". +Nuevas opciones de /stats son: /stats a (nameservers), para listar los +nameservers del DNS en uso; /stats L (modules), para listar de módulos +cargados; y /stats R (mappings), para listar los comandos definidos de +privmsg de ayuda por los bloques "Pseudo". +Por defecto, todos son ocultados para usuarios normales. + +Los bloques "Client" (previamente líneas I:), bloques "Operator" +(previamente líneas O: y o:), bans de canales y los sileces pueden +utilizar la notación de CIDR en lugar de comodines simples. Puedes +también tener excepciones de silencie poniendo '-' antes de la máscara; +por ejemplo, si deseas silenciar de todo el mundo excepto X, puedes +utilizar SILENCE *!*@*,-X!cse...@bo.... + +El servidor no puede kickear por "net riders" en los canales con llave +(+k) si ambos lados de la red al unirse tienen la misma llave. + +GLINE se ha ampliado para permitir a los Operadores de IRC (IRCops) +publicar G-lines globales; vea doc/es/gline.txt para más información sobre +cómo utilizar esta característica. + +Un nuevo comando JUPE se ha agregado para permitir los servidores a ser +jupeados en una manera más confiable. + +Dos nuevos comandos de gestión de canales, OPMODE y CLEARMODE han sido +agregados. OPMODE trabaja exactamente igual que MODE, excepto esto 1) +solamente IRCops pueden utilizarlo; 2) se ignora o no si el operador es +un operador del canal. CLEARMODE es un medio confiable para la supresión +de ciertos modos del canal; si se da un argumento, consiste en los modos +para borrar. Si no se da el argumento, por defecto usa "ovpsmikbl." + +Cuando un comando MODE de canal desde un usuario remoto debe ser devuelto, +un "MODE -o" para el usuario también se envía para procurar a "curar" la +desincronización (desync). También, el viejo código anti-hack se ha +eliminado, desde que los servidores nunca envían MODEs a excepción de las +devoluciones (bounces). + +La mayoría de las opciones de en tiempo de compilación han sido convertidas +a las opciones en tiempo de ejecución, de las cuales se pueden fijar con +el archivo de configuración o con el uso de los nuevos comandos SET, RESET y +GET; para más información sobre éstos, por favor lea doc/ircd.sample-es.conf +(para información del archivo de configuración), doc/es/features.txt (para +la lista y descripción de las opciones), y doc/es/log.txt (para la descripción +de la configuración del subsistema de registro (log)). + +Se ha escrito un nuevo subsistema de registración, haciéndolo mucho más fácil +para conseguir que el ircd escriba archivos de registro, o para usar syslog si +se desea. + +Se ha quitado el viejo código del chroot(); eso ahora se debe hacerlo con un +programa externo. Dicho programa está incluido en el directorio tools. +POR FAVOR LEER doc/es/chroot.txt SI DESEAS UTILIZAR JAULAS (JAIL) DE CHROOT-STYLE +con IRCD. + +El sistema de compilación ha sido completamente mejorado; desde que la +mayoría de las opciones de en tiempo de compilación son ahora de en tiempo de +ejecución, las pocas restantes se pueden colocar dentro del ./configure y +ajustar con --with-* y -enable-*. Por favor leer INSTALL.es para más información +sobre cómo compilar y instalar el demonio (daemon). + +Todo el sistema de gestión de eventos viejo select() - y poll() ha sido eliminado y +sustituido, permitiendo al ircd utilizar kqueue(), epoll() y /dev/poll, en los +sistemas que soportan esas interfaces. + +Se haa hecho una gran cantidad de limpieza, cambios y correcciones del códig. +Algunos de éstos deben aumentar el rendimiento; otros harán más facil el +mantenimiento del código. + +El servidor utiliza ahora exclusivamente numéricos extendidos. + +Toda la comunicación servidor a servidor utiliza numéricos y tokens, esto +reduce los requisitos de ancho de banda aproximadamente 10-20%. + +Mucho código de networking se ha reescrito y muchos de los viejos bugs +relacionados con la base del networking del servidor han sido arreglados. + +Se ha reescrito el código de escucha de los puertos para permitir un control +mucho mejor de los excesivos oyentes. + +El servidor soporta los numéricos extendidos que teóricamente permitiría toda +la población entera del planeta a participar en una red sin el funcionamiento +de valores únicos. + +Los mensajes de ISUPPORT agregados en la conexión del cliente, para permitir a +los programadores de los programas clientes detectar las características +específicasde la red al protocolo del cliente. + +El Aliasing y virtual hosting (redireccionado del puerto) del servidor está +disponible para redes propensas de ataques DoS grandes. + +Los mensajes del estado se envían al conectar los clientes así que no parezcan +que las conexiones cuelgan durante el registro del cliente. + +El servidor utiliza ahora menos memoria y CPU, nosotros estimamos alrededor +de una mejora del 10% de uso de recursos sobre la anterior versión. + +El ircd IRC-Dev, ahora usa 3 entornos a elegir; Entorno DDB de Bases de Datos +Distribuidas basado en el ircd de ESNET, Entorno Undernet basado en Undernet +y Entorno Services basado en Terraircu. + + +Entorno DDB: +TODO + + +Entorno Services: +TODO + + +Entorno Undernet: + +Se ha agregado una nueva característica llamada "oplevels". Utiliza el +nuevo canal llaves de acceso "key" (+A para el administrador, +U para +usuarios) para conceder estado del auto op cuando se entra utilizando +esas llaves. Parte de esta protección del canal es que no puedes ser +deopeado en el canal por alguien que le has opeado. + + +Cambios de configuración: + +Según lo mencionado arriba, el archivo de la configuración el formato +ha cambiado radicalmente. Consulte por favor doc/ircd.sample-es.conf +para los detalles en el nuevo formato. Algunos cambios prominentes siguen. + +El viejo contenido de las líneas H: han sido combinado en el bloque "Connect" +eso describe el servidor(s) que debe ser permitido a hub. + +Dos direcciones de host virtuales (vhost) por defecto pueden ser especificado, +uno para sockets IPv4 y uno para sockets IPv6. + +Los jupes de nicks tienen sus propios bloques, y no comparte la estructura con +declaraciones de servidores de UWorld. + +Las clases de conexion de Operador y bloques de "Operator" individuales pueden +ser privilegios asignados, más bien que el tener que controlar globalmente. +Debido a esto los ajustes que controlaba los privilegios globales se han quitado. + +El número máximo de los clientes permitidos por IP se puede fijar en un bloque +"Client" (el equivalente de líneas I:). + +La mayoría de las opciones de en tiempo de compilación ahora son características +configurables en tiempo de ejecución. Por favor vea doc/ircd.sample-es.conf +para una ilustración del formato (busca por bloque Features). La documentación +para el subsistema de registro está dentro de doc/es/log.txt, y la lista y la +descripción de todas las características se encuentra en doc/es/features.txt. + + +Opciones de en tiempo de compilación: + +Un listado de opciones de en tiempo de compilación soportadas puede ser +visto ejecutando "./configure -- help ". Los valores por defecto deben +ser sanos. En particular, no debes usar con --enable-debug o con +--disable-symbols en una red en producción. + +Una vez más, la mayoría de las opciones de en tiempo de compilación ahora se +ajustan en el archivo de configuración. Las opciones restantes se fijan con +argumentos en ./configure. Una lista de estas opciones está disponible con +./configure --help; una descripción más detallada sigue: + +--enable-poll + El script de configure procura utilizar solamente poll en sistemas donde ese +es una llamada directa del sistema. A veces, sin embargo, no se detecta +correctamente. Esta opción significa para forzar al ircd para utilizar poll +en los sistemas donde ./configure no detecta que es una llamada del sistema. + +--enable-debug + Esta opción gira en el DEBUGMODE, que permite el código útil para eliminar +errores (debugging) del servidor. ESTA CARACTERÍSTICA NO DEBE SER UTILIZADO +EN UNA RED EN PRODUCCIÓN; representa un riesgo severo de privacidad. + +--disable-asserts + Las aserciones es el medio de comprobar que se encuentran ciertas incumbencias +de código. Esta opción deshabilita esas aserciones. + +--disable-symbols + Por defecto, la opción -g del compilador es usar para habilitar símbolos en +el binario. Estos símbolos son útiles cuando se trata de seguir la causa de +un desplome (crash). No utilice por favor esta opción. + +--enable-profile + Esta opción simplemente agrega la opción -pg del compilador para permitir el +soporte de profiling. + +--enable-pedantic +--enable-warnings + El comité de programadores procura lanzar código que genere sin errores o +advertencias de en tiempo de compilación. Estas dos opciones agregan flags +específicos del gcc a los flags del compilador. Estas opciones no deben ser +utilizadas si tu compilador no es gcc. + +--disable-ilines + Algunas funciones críticas están "ilined" forzosamente. Este flag +deshabilita ese comportamiento. Esto no debe ser utilizado para razones +de rendimiento. + +--disable-devpoll + En los sistemas que tienen /dev/poll, el gestionador de eventos basado +en /dev/poll es permitido automáticamente. Esta opción inhibe ese +funcionamiento. + +--disable-kqueue + En los sistemas que tienen kqueue() el gestionador de eventos basado +en kqueue() es permitido automáticamente. Esta opción inhibe ese +funcionamiento. + +--disable-epoll + En los sistemas que tienen epoll(), el gestionador de eventos basado +en epoll() es permitido automáticamente. Esta opción inhibe ese +funcionamiento. + +--witch-symlink=nombre + Cuando se ejecuta "make install", el demonio está instalado de tal manera +que las versiones viejas están guardadas, y el acceso directo (symlink) se +hace a la última versión instalada. Esta opción selecciona el nombre para +el symlink. Especifique un nombre del symlink o utilice "--without-symlink" +para deshabilitar esto. + +--with-mode=permisos + El binario del demonio está instalado con permisos 711 por defecto; esta +opción se puede utilizar para especificar un permiso diferente para el binario. + +--with-owner=propietario + Por defecto, el propietario del binario instalado es el mismo que la +persona que lo compiló; esta opción permite especificar un propietario +diferente. + +--with-group=grupo + Por defecto, el grupo de propietarios del binario instalado será el mismo +que el grupo principal de la persona que lo compiló; esta opción permite +especificar un grupo de propietarios diferente. + +--with-domain=dominio + El dominio procura guardar estadísticas sobre la carga de usuarios del +servidor, incluyendo cuántos usuarios locales conecta con el servidor. Un +usuario local es determinando comparando el hostname del usuario con un +nombre de dominio. El nombre de dominio se puede fijar a través del +subsistema de "Features", documentado en doc/es/features.txt; sin embargo, +si no se especifica ningún dominio, el nombre será extraído de +/etc/resolv.conf, si existe. + +--with-chroot=directorio + Algunos admins pueden desear hacer funcionar el ircd dentro de una +jaula (jail) chroot, para aumentar la seguridad de sus sistemas. Aunque el +código del chroot() fue quitado del ircd, la función del sistema todavía +soporta la operación de esta forma. Si deseas utilizar jaulas basados en +chroot, lea doc/es/chroot.txt y usa esta opción en el ./configure. + +--with-dpath=directorio + Esta opción especifica simplemente la ruta del directorio de datos para +el demonio. Si se usa --with-chroot, esta ruta debe ser compatible +con el directorio del chroot. Vea doc/es/chroot.txt para más información +sobre esta restricción. + +--with-cpath=archivo + Esta opción especifica simplemente la ruta del archivo de configuración +para el demonio, y puede ser una ruta relativa o absoluta. Si es una ruta +absoluta, y si se usa --with-chroot, esta ruta debe ser compatible con el +directorio del chroot. Vea doc/es/chroot.txt para más información +sobre esta restricción. + +--with-lpath=archivo + Cuando el servidor se compila en DEBUGMODE (--enable-debug), los +archivos de debugging serán enviados al archivo especificado aquí (por +defecto "ircd.log" en el directorio de datos). Si es una ruta absoluta, +se usa --with-chroot, y si esa ruta no es compatible con el directorio +del chroot, entonces saldrá una advertencia y se utilizará el valor por +defecto. Vea doc/es/chroot.txt para más información +sobre esta restricción. + +--with-maxcon=maxconexiones + El número máximo de las conexiones que el servidor puede tener normalmente +está derivado del límite de hardware en el número de descriptores del +fichero. Si deseas, se puede utilizar un valor más alto para especificar +esta opción en el ./configure. + +--with-ddb-environment + Esta opción permite escoger el entorno DDB para el ircd. Es el valor por +defecto. + +--with-services-environment + Esta opción permite escoger el entorno Services para el ircd. Si no se +especifica, se usará el entorno DDB. + +--with-undernet-environment + Esta opción permite escoger el entorno Undernet para el ircd. Si no se +especifica, se usará el entorno DDB. + + +Características no documentadas: + +A pesar de nuestras preferencias para guardar estas indocumentadas, son +de vez en cuando útiles, y se describen aquí para los usuarios que puedan +necesitarlas. + +Para permitir esto, necesita agregarlos a los "CFLAGS" antes de ejecutar +./configure, generalmente como en: CFLAGS="-o2 - D<option>" ./configure + +-DNICKLEN=20 + Esto permite cambiar la longitud máxima del nick a partir del 15 a 20 +(o cualquier número que utilices en el extremo). Esto DEBE ser igual en +todos los servidores de tu red, o sucederán cosas malas. Debes también +utilizar la característica de NICKLEN en el ircd.conf. + +-DNOTHROTTLE + Esto inhabilita el código de "throttling". Esto se utiliza *solamente* +para debug. Le deja conectar hasta 255 clientes desde un host sin limites +de tiempo. Si esto se habilita en un servidor en producción, Kev puede +conducir personalmente tu servidor en tierra. Estás advertido. + + +Requisitos del sistema operativo: + +Si planeas permitir a más de 1000 clientes en tu servidor, puedes necesitar +ajustar sus límites de recursos del núcleo (kernel) para networking y I/O +(entradas/salidas de dispositivos). Hay dos cosas que necesitará tener que +poner atención particular, el número de los descriptores de ficheros +disponibles y el número de almacenadores (buffers) que el núcleo tiene +disponibles para leer y para escribir datos al fichero de descriptores. + +Para calcular los requisitos de los almacenadores del núcleo para empezar +está en multiplicar las conexiones previstas en la máquina con la cantidad de +datos que guardamos para cada conexión. Doblar el resultado del cálculo +anterior y divide por el tamaño de los almacenadores que el núcleo usa para +I/O deben dar para empezar. + +El servidor utiliza 2K para almacenadores del núcleo para clientes, y 64K +para almacenadores núcleo para los servidores (el uso real puede estar algo más). + +c_count - número de clientes esperados +c_q - número de bytes guardados para cada cliente +s_count - número de servidores esperados +s_q - número de bytes guardados para cada servidor + +Tamaño de buffer = (2 * (c_count * c_q + s_count * s_q)) / tamaño almacenador del núcleo + +Si la cuenta del cliente es 2000 y la cuenta del servidor es 1 (leaf normal) +y tu servidor usa 2K como almacenador de I/O: + +Necesitas (2 * (2000 * 2048 + 1 * 65536)) / 2048 o un mínimo de 4064 de +buffers disponibles, si el kernel utiliza 512 bytes para los almacenadores +necesitarás un mínimo de 16256 almacenadores del núcleo. + +Estos ajustes pueden ser una luz del pedacito para romper la red debajo +de una carga de un cliente que necesitarás experimentar un pedacito para +encontrar los ajustes perfectos para tu servidor. + +FreeBSD -- WildThang + +Puedes desear aumentar los recursos del núcleo si deseas poner muchos +clientes en tu máquina aqui tienes unos pocos valores para empezar con: + +CHILD_MAX=4096 +OPEN_MAX=4096 +FD_SETSIZE=4096 +NMBCLUSTERS=8096 + +Si tienes problemas para conectar *hacia fuera* de tu máquina, intenta: + sysctl -w net.inet.ip.portrange.last=10000 + +Solaris 2.6 -- Alquitrán + +Aumente el límite de hardware por defecto para el archivo de los descriptores +en /etc/system: + +set rlim_fd_max = 4096 + +El servidor subirá el límite por software al límite por hardware. + +Linux 2.2 -- [ Tri]/Isomer + +El núcleo tiene un tamaño del cache destino del núcleo de 4096. Si el +núcleo ve que más de 4096 IP en 60s él advierte 'dst cache overflow'. +Este límite puede ser cambiado modificándose /proc/sys/net/ipv4/route/max_size. + +Un parche para el select también se recomienda si usted tiene errores del +poll/select regularmente. + ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-14 10:48:24
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-14 10:48:16 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.17 ircd-ircdev/TODO.es:1.18 --- ircd-ircdev/TODO.es:1.17 Wed Apr 13 07:37:31 2005 +++ ircd-ircdev/TODO.es Thu Apr 14 03:48:05 2005 @@ -1,14 +1,14 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.17 2005/04/13 14:37:31 zolty Exp $ +# $Id: TODO.es,v 1.18 2005/04/14 10:48:05 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # URGENTE -------------------------------------------------------------------------------------- - - [D] Implementar el protocolo DDB (ddb_events y ddb_db). + - [D] Implementar el protocolo DDB (ddb_db). - [D] Implementar tabla i de Ilines - [D] Implementar tabla o de Operadores - [D] Implementar tabla p de Privilegios @@ -73,7 +73,6 @@ entrar clientes al IRCD. Investigar eso. 31/Mar/2005 - [D] No se propaga el modo cuando estamos autentificando al conectar. - - [D] Dejan quitar modos -R y -S cuando los tienes. Leyenda: [G] General ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-14 10:28:38
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-14 10:28:17 UTC Modified files: ChangeLog ChangeLog.es include/ddb.h include/patchlevel.h ircd/Makefile.in ircd/ddb.c Added files: ircd/ddb_events.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-14 Toni García <zo...@ir...> 1.0.alpha26 * Eventos de DDB ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.27 ircd-ircdev/ChangeLog:1.28 --- ircd-ircdev/ChangeLog:1.27 Mon Apr 11 01:44:55 2005 +++ ircd-ircdev/ChangeLog Thu Apr 14 03:28:05 2005 @@ -1,10 +1,13 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.27 2005/04/11 08:44:55 zolty Exp $ +# $Id: ChangeLog,v 1.28 2005/04/14 10:28:05 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-14 Toni García <zo...@ir...> 1.0.alpha26 + * DDB Events + 2005-04-11 Toni García <zo...@ir...> 1.0.alpha25 * CAPAB command * Undernet synchronization Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.27 ircd-ircdev/ChangeLog.es:1.28 --- ircd-ircdev/ChangeLog.es:1.27 Mon Apr 11 01:44:55 2005 +++ ircd-ircdev/ChangeLog.es Thu Apr 14 03:28:05 2005 @@ -1,10 +1,13 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.27 2005/04/11 08:44:55 zolty Exp $ +# $Id: ChangeLog.es,v 1.28 2005/04/14 10:28:05 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-14 Toni García <zo...@ir...> 1.0.alpha26 + * Eventos de DDB + 2005-04-11 Toni García <zo...@ir...> 1.0.alpha25 * Comando CAPAB totalmente funcional * Sincronización Undernet Index: ircd-ircdev/include/ddb.h diff -u ircd-ircdev/include/ddb.h:1.4 ircd-ircdev/include/ddb.h:1.5 --- ircd-ircdev/include/ddb.h:1.4 Thu Mar 31 04:58:02 2005 +++ ircd-ircdev/include/ddb.h Thu Apr 14 03:28:06 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ddb.h,v 1.4 2005/03/31 12:58:02 zolty Exp $ + * $Id: ddb.h,v 1.5 2005/04/14 10:28:06 zolty Exp $ * */ #ifndef INCLUDED_ddb_h @@ -109,6 +109,7 @@ } #endif + #define DdbMalloc(x) MyMalloc(x) #define DdbFree(x) MyFree(x) @@ -119,6 +120,8 @@ extern unsigned int ddb_resident_table[DDB_TABLE_MAX]; extern unsigned int ddb_count_table[DDB_TABLE_MAX]; extern unsigned int ddb_id_table[DDB_TABLE_MAX]; +typedef void (*ddb_events_table_t)(char *, char *, int); +extern ddb_events_table_t ddb_events_table[DDB_TABLE_MAX]; extern unsigned int ddb_hashtable_hi[DDB_TABLE_MAX]; extern unsigned int ddb_hashtable_lo[DDB_TABLE_MAX]; extern int ddb_hash_register(char *key, int hash_size); @@ -128,7 +131,7 @@ extern unsigned int ddb_count_in_table(unsigned char table); extern void ddb_init(void); - +extern void ddb_events_init(void); /* extern int ddb_read(struct ddb_memory_table *dump, char *buf); Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.26 ircd-ircdev/include/patchlevel.h:1.27 --- ircd-ircdev/include/patchlevel.h:1.26 Sat Apr 2 11:47:34 2005 +++ ircd-ircdev/include/patchlevel.h Thu Apr 14 03:28:06 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.26 2005/04/02 19:47:34 zolty Exp $ + * $Id: patchlevel.h,v 1.27 2005/04/14 10:28:06 zolty Exp $ * */ -#define PATCHLEVEL ".alpha24" +#define PATCHLEVEL ".alpha26" #define RELEASE "1.0" Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.22 ircd-ircdev/ircd/Makefile.in:1.23 --- ircd-ircdev/ircd/Makefile.in:1.22 Mon Apr 11 01:44:59 2005 +++ ircd-ircdev/ircd/Makefile.in Thu Apr 14 03:28:06 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.22 2005/04/11 08:44:59 zolty Exp $ +# $Id: Makefile.in,v 1.23 2005/04/14 10:28:06 zolty Exp $ #### Start of system configuration section. #### @@ -94,6 +94,7 @@ DDB_SRC = \ ddb.c \ ddb_db_template.c \ + ddb_events.c\ m_db.c \ m_dbq.c \ m_ghost.c \ Index: ircd-ircdev/ircd/ddb.c diff -u ircd-ircdev/ircd/ddb.c:1.4 ircd-ircdev/ircd/ddb.c:1.5 --- ircd-ircdev/ircd/ddb.c:1.4 Wed Mar 23 10:34:46 2005 +++ ircd-ircdev/ircd/ddb.c Thu Apr 14 03:28:06 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of Distributed DataBase. - * @version $Id: ddb.c,v 1.4 2005/03/23 18:34:46 zolty Exp $ + * @version $Id: ddb.c,v 1.5 2005/04/14 10:28:06 zolty Exp $ */ #include "config.h" @@ -67,8 +67,8 @@ static int ddb_iterator_hash_len = 0; static void ddb_table_init(unsigned char table); -static void ddb_add_key(unsigned char table, char *key, char *content); -static void ddb_del_key(unsigned char table, char *key); +static int ddb_add_key(unsigned char table, char *key, char *content); +static int ddb_del_key(unsigned char table, char *key); int ddb_table_is_resident(unsigned char table) @@ -152,7 +152,7 @@ { unsigned char table; - /* ddb_events_init(); */ + ddb_events_init(); memset(ddb_resident_table, 0, sizeof(ddb_resident_table)); @@ -215,6 +215,7 @@ if (!match(mask, cli_name(&me))) { int i = 0; + int update = 0; /* pasamos el key en minusculas */ if ((strlen(key) + 1 > key_len) || (!keytemp)) @@ -234,29 +235,29 @@ } if (content) - ddb_add_key(table, keytemp, content); + update = ddb_add_key(table, keytemp, content); else ddb_del_key(table, keytemp); -#if 0 /* Ejecutamos los eventos */ - if (!cptr && ddb_event_tables[table]) - ddb_event_parse[table](key, content); -#endif + /* if (!cptr && ddb_events_table[table]) */ + if (ddb_events_table[table]) + ddb_events_table[table](key, content, update); } } -static void +static int ddb_add_key(unsigned char table, char *key, char *content) { struct Ddb *ddb; char *k, *c; int hashi; + int delete = 0; ddb_iterator_key = NULL; - ddb_del_key(table, key); + delete = ddb_del_key(table, key); ddb = DdbMalloc(sizeof(struct Ddb) + strlen(key) + strlen(content) + 2); assert(0 != ddb); @@ -278,8 +279,6 @@ ddb->key = k; ddb->content = c; -// strcpy(ddb->key, key); -// strcpy(ddb->content, content); ddb->next = NULL; hashi = ddb_hash_register(ddb->key, ddb_resident_table[table]); @@ -290,14 +289,15 @@ ddb_data_table[table][hashi] = ddb; ddb_count_table[table]++; - /* EVENTOS DE ALTA */ + return delete; } -static void +static int ddb_del_key(unsigned char table, char *key) { struct Ddb *ddb, *ddb2, **ddb3; int hashi; + int delete = 0; ddb_iterator_key = NULL; @@ -310,13 +310,14 @@ if (!strcmp(ddb->key, key)) { *ddb3 = ddb2; - /* EVENTOS de BAJA */ + delete = 1; DdbFree(ddb); ddb_count_table[table]--; break; } ddb3 = &(ddb->next); } + return delete; } @@ -354,10 +355,10 @@ for (ddb = ddb_data_table[table][i]; ddb; ddb = ddb2) { ddb2 = ddb->next; -#if 0 - if (events && ddb_event_tables[table]) - ddb_event_parse[table](ddb->key, NULL); -#endif + + if (events && ddb_events_table[table]) + ddb_events_table[table](ddb->key, NULL, 0); + DdbFree(ddb); } } Index: ircd-ircdev/ircd/ddb_events.c diff -u /dev/null ircd-ircdev/ircd/ddb_events.c:1.1 --- /dev/null Thu Apr 14 03:28:26 2005 +++ ircd-ircdev/ircd/ddb_events.c Thu Apr 14 03:28:07 2005 @@ -0,0 +1,176 @@ +/* + * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/ddb_events.c + * + * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> + * Copyright (C) 2004-2005 Toni Garcia (zoltan) <zo...@ir...> + * + * 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 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 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/** @file + * @brief Events of Distributed DataBase. + * @version $Id: ddb_events.c,v 1.1 2005/04/14 10:28:07 zolty Exp $ + */ +#include "config.h" + +#include "ddb.h" +#include "client.h" +#include "hash.h" +#include "ircd.h" +#include "ircd_tea.h" +#include "msg.h" +#include "numnicks.h" +#include "s_user.h" +#include "send.h" + +#include <stdio.h> +#include <string.h> + + +static int events_init = 0; +static void ddb_events_table_n(char *key, char *content, int update); + +ddb_events_table_t ddb_events_table[DDB_TABLE_MAX]; + + +void +ddb_events_init(void) +{ + if (events_init) + return; + + ddb_events_table[DDB_NICKDB] = ddb_events_table_n; + + events_init = 1; +} + + +static void +ddb_events_table_n(char *key, char *content, int update) +{ + struct Client *cptr; + char *botname; + int nick_renames = 0; + + /* Only my clients */ + if ((cptr = FindUser(key)) && MyConnect(cptr)) + { + botname = ddb_get_botname(DDB_NICKSERV); + /* Droping Key */ + if (!content && (IsNickRegistered(cptr) || IsNickSuspended(cptr))) + { + struct Flags oldflags; + + oldflags = cli_flags(cptr); + ClearNickRegistered(cptr); + ClearNickSuspended(cptr); + + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %C is droping", cptr, cptr); + + send_umode_out(cptr, cptr, &oldflags, IsRegistered(cptr)); + } + else + { + /* New Key or Update Key */ + char c = content[strlen(content) - 1]; + int nick_suspend = 0; + int nick_forbid = 0; + + if (c == '+') + nick_suspend = 1; + else if (c == '*') + nick_forbid = 1; + + if (nick_forbid) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %C has been forbided, cannot be used", cptr, cptr); + nick_renames = 1; + } + else if (nick_suspend && update && IsNickRegistered(cptr)) + { + struct Flags oldflags; + + oldflags = cli_flags(cptr); + ClearNickRegistered(cptr); + SetNickSuspended(cptr); + + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %C has been suspended", cptr, cptr); + + send_umode_out(cptr, cptr, &oldflags, IsRegistered(cptr)); + } + else if (!nick_suspend && update && IsNickSuspended(cptr)) + { + struct Flags oldflags; + + oldflags = cli_flags(cptr); + ClearNickSuspended(cptr); + SetNickRegistered(cptr); + + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %C has been unsuspended", cptr, cptr); + + send_umode_out(cptr, cptr, &oldflags, IsRegistered(cptr)); + } + else if (!update) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %C has been registered", cptr, cptr); + nick_renames = 1; + } + } + + if (nick_renames) + { + struct Client *acptr; + unsigned int v[2], k[2], x[2]; + char newnick[NICKLEN + 2]; + char tmp[100]; + char *parv[3]; + int flags = 0; + + k[0] = k[1] = x[0] = x[1] = 0; + + v[0] = base64toint(cli_yxx(cptr)); + v[1] = base64toint(cli_yxx(&me)); + + acptr = cptr; + + do + { + ircd_tea(v, k, x); + v[1] += 4096; + + if (x[0] >= 4294000000ul) + continue; + + sprintf(newnick, "Guest%.6d", (int)(x[0] % 1000000)); + acptr = FindUser(newnick); + } + while (acptr); + + SetRenamed(flags); + + parv[0] = cli_name(cptr); + parv[1] = newnick; + sprintf(tmp, "%lu", TStime()); + parv[2] = tmp; + + set_nick_name(cptr, cptr, newnick, 3, parv, flags); + } + } +} ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-13 14:37:48
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-13 14:37:42 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.16 ircd-ircdev/TODO.es:1.17 --- ircd-ircdev/TODO.es:1.16 Sat Apr 2 11:49:09 2005 +++ ircd-ircdev/TODO.es Wed Apr 13 07:37:31 2005 @@ -1,14 +1,14 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.16 2005/04/02 19:49:09 zolty Exp $ +# $Id: TODO.es,v 1.17 2005/04/13 14:37:31 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # URGENTE -------------------------------------------------------------------------------------- - - [D] Implementar el protocolo DDB. + - [D] Implementar el protocolo DDB (ddb_events y ddb_db). - [D] Implementar tabla i de Ilines - [D] Implementar tabla o de Operadores - [D] Implementar tabla p de Privilegios @@ -62,6 +62,9 @@ publicidad) - [G] Sistema de modulos dinámicos - [G] Bloque Logging en el .conf + - [G] Estudiar la remodelación del esquema de "hubs" y "leafs" a un + basandonos en el calculo de topologia que realiza OSPF solo que + en cuanto a coste, ancho de banda y retardo. BUGS CONOCIDOS -------------------------------------------------------------------------------------- ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-11 08:45:37
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-11 08:45:11 UTC Modified files: ChangeLog ChangeLog.es acinclude.m4 aclocal.m4 config.h.in configure configure.in doc/ircd.sample-en.conf doc/ircd.sample-es.conf include/capab.h include/client.h include/numeric.h include/s_conf.h ircd/Makefile.in ircd/channel.c ircd/ircd.c ircd/ircd_parser.y ircd/ircd_string.c ircd/m_burst.c ircd/m_cap.c ircd/m_whowas.c ircd/s_conf.c ircd/s_err.c ircd/s_user.c tools/convert-conf.py Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-11 Toni García <zo...@ir...> 1.0.alpha25 * Comando CAPAB totalmente funcional * Sincronización Undernet ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.26 ircd-ircdev/ChangeLog:1.27 --- ircd-ircdev/ChangeLog:1.26 Sat Apr 2 11:47:33 2005 +++ ircd-ircdev/ChangeLog Mon Apr 11 01:44:55 2005 @@ -1,10 +1,14 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.26 2005/04/02 19:47:33 zolty Exp $ +# $Id: ChangeLog,v 1.27 2005/04/11 08:44:55 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-11 Toni García <zo...@ir...> 1.0.alpha25 + * CAPAB command + * Undernet synchronization + 2005-04-02 Toni García <zo...@ir...> 1.0.alpha24 * STATS J for jupe nicks * PRIVS remote Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.26 ircd-ircdev/ChangeLog.es:1.27 --- ircd-ircdev/ChangeLog.es:1.26 Sat Apr 2 11:47:33 2005 +++ ircd-ircdev/ChangeLog.es Mon Apr 11 01:44:55 2005 @@ -1,10 +1,14 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.26 2005/04/02 19:47:33 zolty Exp $ +# $Id: ChangeLog.es,v 1.27 2005/04/11 08:44:55 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-11 Toni García <zo...@ir...> 1.0.alpha25 + * Comando CAPAB totalmente funcional + * Sincronización Undernet + 2005-04-02 Toni García <zo...@ir...> 1.0.alpha24 * STATS J para jupe de nicks * PRIVS remoto Index: ircd-ircdev/acinclude.m4 diff -u ircd-ircdev/acinclude.m4:1.2 ircd-ircdev/acinclude.m4:1.3 --- ircd-ircdev/acinclude.m4:1.2 Wed Nov 24 08:11:30 2004 +++ ircd-ircdev/acinclude.m4 Mon Apr 11 01:44:56 2005 @@ -1,28 +1,4 @@ dnl -dnl Macro: unet_PIPE_CFLAGS -dnl -dnl If the compiler understands -pipe, add it to CFLAGS if not already -dnl there. -dnl -AC_DEFUN(unet_PIPE_CFLAGS, -[AC_MSG_CHECKING([if the compiler understands -pipe]) -unet_cv_pipe_flags="$ac_cv_prog_gcc" -if test "$ac_cv_prog_gcc" = no; then - OLDCFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -pipe" - AC_TRY_COMPILE(,,unet_cv_pipe_flags=yes,) - CFLAGS="$OLDCFLAGS" -fi -AC_MSG_RESULT($unet_cv_pipe_flags) -if test "$unet_cv_pipe_flags" = yes ; then - x=`echo $CFLAGS | grep 'pipe' 2>/dev/null` - if test "$x" = "" ; then - CFLAGS="$CFLAGS -pipe" - fi -fi -]) - -dnl dnl Macro: unet_NONBLOCKING dnl dnl Check whether we have posix, bsd or sysv non-blocking sockets and Index: ircd-ircdev/aclocal.m4 diff -u ircd-ircdev/aclocal.m4:1.3 ircd-ircdev/aclocal.m4:1.4 --- ircd-ircdev/aclocal.m4:1.3 Wed Nov 24 08:11:30 2004 +++ ircd-ircdev/aclocal.m4 Mon Apr 11 01:44:56 2005 @@ -11,30 +11,6 @@ dnl PARTICULAR PURPOSE. dnl -dnl Macro: unet_PIPE_CFLAGS -dnl -dnl If the compiler understands -pipe, add it to CFLAGS if not already -dnl there. -dnl -AC_DEFUN(unet_PIPE_CFLAGS, -[AC_MSG_CHECKING([if the compiler understands -pipe]) -unet_cv_pipe_flags="$ac_cv_prog_gcc" -if test "$ac_cv_prog_gcc" = no; then - OLDCFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -pipe" - AC_TRY_COMPILE(,,unet_cv_pipe_flags=yes,) - CFLAGS="$OLDCFLAGS" -fi -AC_MSG_RESULT($unet_cv_pipe_flags) -if test "$unet_cv_pipe_flags" = yes ; then - x=`echo $CFLAGS | grep 'pipe' 2>/dev/null` - if test "$x" = "" ; then - CFLAGS="$CFLAGS -pipe" - fi -fi -]) - -dnl dnl Macro: unet_NONBLOCKING dnl dnl Check whether we have posix, bsd or sysv non-blocking sockets and Index: ircd-ircdev/config.h.in diff -u ircd-ircdev/config.h.in:1.7 ircd-ircdev/config.h.in:1.8 --- ircd-ircdev/config.h.in:1.7 Wed Mar 23 10:34:16 2005 +++ ircd-ircdev/config.h.in Mon Apr 11 01:44:56 2005 @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: config.h.in,v 1.7 2005/03/23 18:34:16 zolty Exp $ + * $Id: config.h.in,v 1.8 2005/04/11 08:44:56 zolty Exp $ * */ #ifndef INCLUDED_config_h @@ -169,6 +169,9 @@ /* Define to 1 if you have the <sys/param.h> header file. */ #undef HAVE_SYS_PARAM_H +/* Define to 1 if you have the <sys/resource.h> header file. */ +#undef HAVE_SYS_RESOURCE_H + /* Define to 1 if you have the <sys/socket.h> header file. */ #undef HAVE_SYS_SOCKET_H @@ -232,9 +235,6 @@ /* Define if you have POSIX signals. */ #undef POSIX_SIGNALS -/* Services Environment (Ex-TerraIRCU) */ -#undef SERVICES - /* The size of a `int', as computed by sizeof. */ #undef SIZEOF_INT @@ -268,9 +268,6 @@ /* Define to 1 if your <sys/time.h> declares `struct tm'. */ #undef TM_IN_SYS_TIME -/* UnderNet Environment */ -#undef UNDERNET - /* Define to enable the /dev/poll engine */ #undef USE_DEVPOLL Index: ircd-ircdev/configure diff -u ircd-ircdev/configure:1.14 ircd-ircdev/configure:1.15 --- ircd-ircdev/configure:1.14 Wed Mar 23 10:34:18 2005 +++ ircd-ircdev/configure Mon Apr 11 01:44:56 2005 @@ -310,7 +310,7 @@ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AWK SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S RMPROG SHPROG LEX LEXLIB LEX_OUTPUT_ROOT YACC ENGINE_C INSTALL_RULE SYMLINK IRCDMODE IRCDOWN IRCDGRP DPATH LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP AWK SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S RMPROG SHPROG LEX LEXLIB LEX_OUTPUT_ROOT YACC ENGINE_C INSTALL_RULE SYMLINK IRCDMODE IRCDOWN IRCDGRP DPATH ENVIRONMENT LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -861,6 +861,8 @@ Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-optimization=-O2 Explicitly set the compiler optimization flags + (default: -O3) --with-leak-detect Turn on the leak detector(requires patched boehm) --without-ipv6 disable IPv6 support (default is autodetect) --with-symlink=name Name to give the symlink; if name is "no," no @@ -876,6 +878,9 @@ --with-cpath=file Set server configuration file --with-lpath=file Set the debugging log file --with-maxcon=maxcon Maximum number of connections server will accept + --with-ddb-environment Use the DDB Environment (Distributed DataBase) + --with-services-environment Use the Services Environment (Ex TerraIRCU) + --with-undernet-environment Use the Undernet Environment Some influential environment variables: CC C compiler command @@ -2462,11 +2467,28 @@ *) CC="$CC $am_cv_prog_cc_stdc" ;; esac -if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e 's/-O2/-O3/'` + +# Check whether --with-optimization or --without-optimization was given. +if test "${with_optimization+set}" = set; then + withval="$with_optimization" + unet_cv_optimization=$withval +else + unet_cv_optimization='-O3' +fi; +echo "$as_me:$LINENO: checking optimization level" >&5 +echo $ECHO_N "checking optimization level... $ECHO_C" >&6 +if test "${unet_cv_optimization+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + unet_cv_optimization='-O3' +fi +echo "$as_me:$LINENO: result: $unet_cv_optimization" >&5 +echo "${ECHO_T}$unet_cv_optimization" >&6 +if test "x$unet_cv_optimization" = "xno" ; then + unet_cv_optimization="" fi if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pipe//g'` + CFLAGS=`echo "$CFLAGS" | sed -e s/-O2/$unet_cv_optimization/` fi if test x"$CFLAGS" != x; then unet_old_cflags=$CFLAGS @@ -3757,7 +3779,8 @@ -for ac_header in crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/socket.h + +for ac_header in crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/resource.h sys/socket.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then @@ -8864,7 +8887,6 @@ echo "$as_me: WARNING: $YACC may not work as yacc." >&2;} fi - echo "$as_me:$LINENO: checking for posix non-blocking" >&5 echo $ECHO_N "checking for posix non-blocking... $ECHO_C" >&6 if test "${unet_cv_sys_nonblocking_posix+set}" = set; then @@ -9153,67 +9175,6 @@ fi fi -echo "$as_me:$LINENO: checking if the compiler understands -pipe" >&5 -echo $ECHO_N "checking if the compiler understands -pipe... $ECHO_C" >&6 -unet_cv_pipe_flags="$ac_cv_c_compiler_gnu" -if test "$ac_cv_c_compiler_gnu" = no; then - OLDCFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -pipe" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - unet_cv_pipe_flags=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$OLDCFLAGS" -fi -echo "$as_me:$LINENO: result: $unet_cv_pipe_flags" >&5 -echo "${ECHO_T}$unet_cv_pipe_flags" >&6 -if test "$unet_cv_pipe_flags" = yes ; then - x=`echo $CFLAGS | grep 'pipe' 2>/dev/null` - if test "$x" = "" ; then - CFLAGS="$CFLAGS -pipe" - fi -fi - - echo "$as_me:$LINENO: checking for OS-dependent information" >&5 echo $ECHO_N "checking for OS-dependent information... $ECHO_C" >&6 case "$host" in @@ -10195,15 +10156,85 @@ +ircdev_cv_environment_ddb=yes; + +echo "$as_me:$LINENO: checking whether to use DDB Environment (Distributed DataBase)" >&5 +echo $ECHO_N "checking whether to use DDB Environment (Distributed DataBase)... $ECHO_C" >&6 + +# Check whether --with-ddb-environment or --without-ddb-environment was given. +if test "${with_ddb_environment+set}" = set; then + withval="$with_ddb_environment" + ircdev_cv_environment_ddb=$with_ddb_environment +else + if test "${ircdev_cv_environment_ddb+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ircdev_cv_environment_ddb=no +fi + +fi; +echo "$as_me:$LINENO: result: $ircdev_cv_environment_ddb" >&5 +echo "${ECHO_T}$ircdev_cv_environment_ddb" >&6 + +echo "$as_me:$LINENO: checking whether to use Services Environment (Ex TerraIRCU)" >&5 +echo $ECHO_N "checking whether to use Services Environment (Ex TerraIRCU)... $ECHO_C" >&6 + +# Check whether --with-services-environment or --without-services-environment was given. +if test "${with_services_environment+set}" = set; then + withval="$with_services_environment" + ircdev_cv_environment_services=$with_services_environment +else + if test "${ircdev_cv_environment_services+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ircdev_cv_environment_services=no +fi + +fi; +echo "$as_me:$LINENO: result: $ircdev_cv_environment_services" >&5 +echo "${ECHO_T}$ircdev_cv_environment_services" >&6 +echo "$as_me:$LINENO: checking whether to use Undernet Environment" >&5 +echo $ECHO_N "checking whether to use Undernet Environment... $ECHO_C" >&6 +# Check whether --with-undernet-environment or --without-undernet-environment was given. +if test "${with_undernet_environment+set}" = set; then + withval="$with_undernet_environment" + ircdev_cv_environment_undernet=$with_undernet_environment +else + if test "${ircdev_cv_environment_undernet+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ircdev_cv_environment_undernet=no +fi +fi; +echo "$as_me:$LINENO: result: $ircdev_cv_environment_undernet" >&5 +echo "${ECHO_T}$ircdev_cv_environment_undernet" >&6 +if test x"$ircdev_cv_environment_ddb" != "xno" ; then cat >>confdefs.h <<\_ACEOF #define DDB _ACEOF + ENVIRONMENT=DDB +elif test x"$ircdev_cv_environment_services" != "xno" ; then + +cat >>confdefs.h <<\_ACEOF +#define SERVICES +_ACEOF + + ENVIRONMENT=SERVICES +elif test x"$ircdev_cv_environment_undernet" != "xno" ; then + +cat >>confdefs.h <<\_ACEOF +#define UNDERNET +_ACEOF + + ENVIRONMENT=UNDERNET +fi + ac_config_files="$ac_config_files Makefile ircd/Makefile ircd/test/Makefile doc/Makefile" @@ -10871,6 +10902,7 @@ s,@IRCDOWN@,$IRCDOWN,;t t s,@IRCDGRP@,$IRCDGRP,;t t s,@DPATH@,$DPATH,;t t +s,@ENVIRONMENT@,$ENVIRONMENT,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF @@ -11535,5 +11567,3 @@ fi echo "" echo "Type \"make\" to compile IRC-Dev IRCD" - - Index: ircd-ircdev/configure.in diff -u ircd-ircdev/configure.in:1.14 ircd-ircdev/configure.in:1.15 --- ircd-ircdev/configure.in:1.14 Wed Mar 23 10:34:23 2005 +++ ircd-ircdev/configure.in Mon Apr 11 01:44:57 2005 @@ -22,7 +22,7 @@ dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA dnl -dnl $Id: configure.in,v 1.14 2005/03/23 18:34:23 zolty Exp $ +dnl $Id: configure.in,v 1.15 2005/04/11 08:44:57 zolty Exp $ dnl dnl Make sure we are in the correct directory (someone could have run @@ -46,7 +46,7 @@ dnl Define the input and output configuration header file. AC_CONFIG_HEADER([config.h]) -dnl Demand at least version 2.50 of autoconf +dnl Demand at least version 2.59 of autoconf (for AS_HELP_STRING) AC_PREREQ(2.59) dnl Find out what type of system we are @@ -57,13 +57,17 @@ dnl ANSIfy the C compiler whenever possible. AM_PROG_CC_STDC -dnl Use -O3 instead of -O2. -if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e 's/-O2/-O3/'` +dnl Allow specification of optimization level. +AC_ARG_WITH([optimization], + AS_HELP_STRING([--with-optimization=[-O2]], [Explicitly set the compiler optimization flags (default: -O3)]), + [unet_cv_optimization=$withval], + [unet_cv_optimization='-O3']) +AC_CACHE_CHECK([optimization level], [unet_cv_optimization], [unet_cv_optimization='-O3']) +if test "x$unet_cv_optimization" = "xno" ; then + unet_cv_optimization="" fi -dnl Remove -pipe during configure if test x"$CFLAGS" != x; then - CFLAGS=`echo "$CFLAGS" | sed -e 's/-pipe//g'` + CFLAGS=`echo "$CFLAGS" | sed -e s/-O2/$unet_cv_optimization/` fi dnl Notice the -g flag and deal accordingly if test x"$CFLAGS" != x; then @@ -113,7 +117,7 @@ dnl Checks for header files. AC_HEADER_STDC -AC_CHECK_HEADERS(crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/socket.h) +AC_CHECK_HEADERS(crypt.h poll.h inttypes.h stdint.h sys/devpoll.h sys/epoll.h sys/event.h sys/param.h sys/resource.h sys/socket.h) dnl Checks for typedefs, structures, and compiler characteristics dnl AC_C_CONST @@ -177,13 +181,9 @@ AC_MSG_WARN([$YACC may not work as yacc.]) fi - unet_NONBLOCKING unet_SIGNALS -dnl Add -pipe when possible -unet_PIPE_CFLAGS - dnl Check OS for os_dep files. AC_MSG_CHECKING(for OS-dependent information) case "$host" in @@ -760,43 +760,46 @@ dnl IRC Network environment dnl Default DDB -dnl ircdev_cv_environment_ddb=yes; +ircdev_cv_environment_ddb=yes; dnl --with-ddb-environment allows us to use DDB Environment -dnl AC_MSG_CHECKING([whether to use DDB Environment (Distributed DataBase)]) -dnl AC_ARG_WITH([ddb-environment], -dnl [ --with-ddb-environment Use the DDB Environment (Distributed DataBase)], -dnl [ircdev_cv_environment_ddb=$with_ddb_environment], -dnl [AC_CACHE_VAL(ircdev_cv_environment_ddb, -dnl [ircdev_cv_environment_ddb=no])]) -dnl AC_MSG_RESULT([$ircdev_cv_environment_ddb]) +AC_MSG_CHECKING([whether to use DDB Environment (Distributed DataBase)]) +AC_ARG_WITH([ddb-environment], +[ --with-ddb-environment Use the DDB Environment (Distributed DataBase)], +[ircdev_cv_environment_ddb=$with_ddb_environment], +[AC_CACHE_VAL(ircdev_cv_environment_ddb, +[ircdev_cv_environment_ddb=no])]) +AC_MSG_RESULT([$ircdev_cv_environment_ddb]) -dnl LO COMENTO PORQUE NO EXISTE AUN! dnl --with-services-environment allows us to use Services Environment -dnl AC_MSG_CHECKING([whether to use Services Environment (Ex TerraIRCU)]) -dnl AC_ARG_WITH([services-environment], -dnl [ --with-services-environment Use the Services Environment (Ex TerraIRCU)], -dnl [ircdev_cv_environment_services=$with_services_environment], -dnl [AC_CACHE_VAL(ircdev_cv_environment_services, -dnl [ircdev_cv_environment_services=no])]) -dnl AC_MSG_RESULT([$ircdev_cv_environment_services]) +AC_MSG_CHECKING([whether to use Services Environment (Ex TerraIRCU)]) +AC_ARG_WITH([services-environment], +[ --with-services-environment Use the Services Environment (Ex TerraIRCU)], +[ircdev_cv_environment_services=$with_services_environment], +[AC_CACHE_VAL(ircdev_cv_environment_services, +[ircdev_cv_environment_services=no])]) +AC_MSG_RESULT([$ircdev_cv_environment_services]) dnl --with-undernet-environment allows us to use Undernet Environment -dnl AC_MSG_CHECKING([whether to use Undernet Environment]) -dnl AC_ARG_WITH([undernet-environment], -dnl [ --with-undernet-environment Use the Undernet Environment], -dnl [ircdev_cv_environment_undernet=$with_undernet_environment], -dnl [AC_CACHE_VAL(ircdev_cv_environment_undernet, -dnl [ircdev_cv_environment_undernet=no])]) -dnl AC_MSG_RESULT([$ircdev_cv_environment_undernet]) +AC_MSG_CHECKING([whether to use Undernet Environment]) +AC_ARG_WITH([undernet-environment], +[ --with-undernet-environment Use the Undernet Environment], +[ircdev_cv_environment_undernet=$with_undernet_environment], +[AC_CACHE_VAL(ircdev_cv_environment_undernet, +[ircdev_cv_environment_undernet=no])]) +AC_MSG_RESULT([$ircdev_cv_environment_undernet]) -dnl if test x"$ircdev_cv_environment_ddb" != "xno" ; then +if test x"$ircdev_cv_environment_ddb" != "xno" ; then AC_DEFINE([DDB], , [DDB Environment (Distributed DataBase)]) -dnl else if x"$ircdev_cv_environment_services" != "xno" ; then -dnl AC_DEFINE([SERVICES], , [Services Environment (Ex-TerraIRCU)]) -dnl else if if x"$ircdev_cv_environment_undernet" != "xno" ; then -dnl AC_DEFINE([UNDERNET], , [UnderNet Environment]) -dnl fi + ENVIRONMENT=DDB +elif test x"$ircdev_cv_environment_services" != "xno" ; then + AC_DEFINE([SERVICES], , [Services Environment (Ex-TerraIRCU)]) + ENVIRONMENT=SERVICES +elif test x"$ircdev_cv_environment_undernet" != "xno" ; then + AC_DEFINE([UNDERNET], , [UnderNet Environment]) + ENVIRONMENT=UNDERNET +fi +AC_SUBST(ENVIRONMENT) dnl Finally really generate all output files: AC_CONFIG_FILES([Makefile ircd/Makefile ircd/test/Makefile doc/Makefile]) @@ -855,5 +858,3 @@ fi echo "" echo "Type \"make\" to compile IRC-Dev IRCD" - - Index: ircd-ircdev/doc/ircd.sample-en.conf diff -u ircd-ircdev/doc/ircd.sample-en.conf:1.16 ircd-ircdev/doc/ircd.sample-en.conf:1.17 --- ircd-ircdev/doc/ircd.sample-en.conf:1.16 Sat Apr 2 11:47:33 2005 +++ ircd-ircdev/doc/ircd.sample-en.conf Mon Apr 11 01:44:58 2005 @@ -428,11 +428,13 @@ # It is possible to Jupe nicks. Jupe { - nick = "EuWorld,E,StatServ,NoteServ"; - nick = "UWorld2,ChanSvr,ChanSaver,ChanServ"; - nick = "Uworld,NickSvr,NickSaver,NickServ"; - nick = "LPT1,X,login,LPT2,W,Undernet,COM1,V,protocol,COM2"; - nick = "U,pass,COM3,Y,AUX,COM4,Z,newpass"; + nick = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,{,|,},~,-,_,`"; + nick = "EuWorld,UWorld,UWorld2"; + nick = "login,undernet,protocol,pass,newpass,org"; + nick = "StatServ,NoteServ"; + nick = "ChanSvr,ChanSaver,ChanServ"; + nick = "NickSvr,NickSaver,NickServ"; + nick = "LPT1,LPT2,COM1,COM2,COM3,COM4,AUX"; }; # [Kill] Index: ircd-ircdev/doc/ircd.sample-es.conf diff -u ircd-ircdev/doc/ircd.sample-es.conf:1.12 ircd-ircdev/doc/ircd.sample-es.conf:1.13 --- ircd-ircdev/doc/ircd.sample-es.conf:1.12 Sat Apr 2 11:47:33 2005 +++ ircd-ircdev/doc/ircd.sample-es.conf Mon Apr 11 01:44:58 2005 @@ -447,11 +447,13 @@ # Esto es posible para prohibir (Jupe) nicks. Jupe { - nick = "EuWorld,E,StatServ,NoteServ"; - nick = "UWorld2,ChanSvr,ChanSaver,ChanServ"; - nick = "Uworld,NickSvr,NickSaver,NickServ"; - nick = "LPT1,X,login,LPT2,W,Undernet,COM1,V,protocol,COM2"; - nick = "U,pass,COM3,Y,AUX,COM4,Z,newpass"; + nick = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,{,|,},~,-,_,`"; + nick = "EuWorld,UWorld,UWorld2"; + nick = "login,undernet,protocol,pass,newpass,org"; + nick = "StatServ,NoteServ"; + nick = "ChanSvr,ChanSaver,ChanServ"; + nick = "NickSvr,NickSaver,NickServ"; + nick = "LPT1,LPT2,COM1,COM2,COM3,COM4,AUX"; }; # [Kill] Index: ircd-ircdev/include/capab.h diff -u ircd-ircdev/include/capab.h:1.2 ircd-ircdev/include/capab.h:1.3 --- ircd-ircdev/include/capab.h:1.2 Mon Jan 10 04:21:59 2005 +++ ircd-ircdev/include/capab.h Mon Apr 11 01:44:59 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Interface and public definitions for capabilities extension - * @version $Id: capab.h,v 1.2 2005/01/10 12:21:59 zolty Exp $ + * @version $Id: capab.h,v 1.3 2005/04/11 08:44:59 zolty Exp $ */ #ifndef INCLUDED_capab_h #define INCLUDED_capab_h @@ -33,615 +33,14 @@ #define CAPFL_HIDDEN 0x0001 /**< Do not advertize this capability */ #define CAPFL_PROHIBIT 0x0002 /**< Client may not set this capability */ #define CAPFL_PROTO 0x0004 /**< Cap must be acknowledged by client */ +#define CAPFL_STICKY 0x0008 /**< Cap may not be cleared once set */ + /* XXX You can safely ignore all of these; they're only for testing purposes, * XXX and don't result in any behavioral change. */ -#define CAPLIST \ - _CAP(USERPFX, 0, "undernet.org/userpfx"), \ - _CAP(FOO, CAPFL_HIDDEN, "x-foo"), \ - _CAP(BAR, CAPFL_PROHIBIT, "x-bar"), \ - _CAP(BINK, CAPFL_PROTO, "x-bink"), \ - _CAP(CAP000, 0, "x-cap000"), \ - _CAP(CAP001, 0, "x-cap001"), \ - _CAP(CAP002, 0, "x-cap002"), \ - _CAP(CAP003, 0, "x-cap003"), \ - _CAP(CAP004, 0, "x-cap004"), \ - _CAP(CAP005, 0, "x-cap005"), \ - _CAP(CAP006, 0, "x-cap006"), \ - _CAP(CAP007, 0, "x-cap007"), \ - _CAP(CAP008, 0, "x-cap008"), \ - _CAP(CAP009, 0, "x-cap009"), \ - _CAP(CAP010, 0, "x-cap010"), \ - _CAP(CAP011, 0, "x-cap011"), \ - _CAP(CAP012, 0, "x-cap012"), \ - _CAP(CAP013, 0, "x-cap013"), \ - _CAP(CAP014, 0, "x-cap014"), \ - _CAP(CAP015, 0, "x-cap015"), \ - _CAP(CAP016, 0, "x-cap016"), \ - _CAP(CAP017, 0, "x-cap017"), \ - _CAP(CAP018, 0, "x-cap018"), \ - _CAP(CAP019, 0, "x-cap019"), \ - _CAP(CAP020, 0, "x-cap020"), \ - _CAP(CAP021, 0, "x-cap021"), \ - _CAP(CAP022, 0, "x-cap022"), \ - _CAP(CAP023, 0, "x-cap023"), \ - _CAP(CAP024, 0, "x-cap024"), \ - _CAP(CAP025, 0, "x-cap025"), \ - _CAP(CAP026, 0, "x-cap026"), \ - _CAP(CAP027, 0, "x-cap027"), \ - _CAP(CAP028, 0, "x-cap028"), \ - _CAP(CAP029, 0, "x-cap029"), \ - _CAP(CAP030, 0, "x-cap030"), \ - _CAP(CAP031, 0, "x-cap031"), \ - _CAP(CAP032, 0, "x-cap032"), \ - _CAP(CAP033, 0, "x-cap033"), \ - _CAP(CAP034, 0, "x-cap034"), \ - _CAP(CAP035, 0, "x-cap035"), \ - _CAP(CAP036, 0, "x-cap036"), \ - _CAP(CAP037, 0, "x-cap037"), \ - _CAP(CAP038, 0, "x-cap038"), \ - _CAP(CAP039, 0, "x-cap039"), \ - _CAP(CAP040, 0, "x-cap040"), \ - _CAP(CAP041, 0, "x-cap041"), \ - _CAP(CAP042, 0, "x-cap042"), \ - _CAP(CAP043, 0, "x-cap043"), \ - _CAP(CAP044, 0, "x-cap044"), \ - _CAP(CAP045, 0, "x-cap045"), \ - _CAP(CAP046, 0, "x-cap046"), \ - _CAP(CAP047, 0, "x-cap047"), \ - _CAP(CAP048, 0, "x-cap048"), \ - _CAP(CAP049, 0, "x-cap049"), \ - _CAP(CAP050, 0, "x-cap050"), \ - _CAP(CAP051, 0, "x-cap051"), \ - _CAP(CAP052, 0, "x-cap052"), \ - _CAP(CAP053, 0, "x-cap053"), \ - _CAP(CAP054, 0, "x-cap054"), \ - _CAP(CAP055, 0, "x-cap055"), \ - _CAP(CAP056, 0, "x-cap056"), \ - _CAP(CAP057, 0, "x-cap057"), \ - _CAP(CAP058, 0, "x-cap058"), \ - _CAP(CAP059, 0, "x-cap059"), \ - _CAP(CAP060, 0, "x-cap060"), \ - _CAP(CAP061, 0, "x-cap061"), \ - _CAP(CAP062, 0, "x-cap062"), \ - _CAP(CAP063, 0, "x-cap063"), \ - _CAP(CAP064, 0, "x-cap064"), \ - _CAP(CAP065, 0, "x-cap065"), \ - _CAP(CAP066, 0, "x-cap066"), \ - _CAP(CAP067, 0, "x-cap067"), \ - _CAP(CAP068, 0, "x-cap068"), \ - _CAP(CAP069, 0, "x-cap069"), \ - _CAP(CAP070, 0, "x-cap070"), \ - _CAP(CAP071, 0, "x-cap071"), \ - _CAP(CAP072, 0, "x-cap072"), \ - _CAP(CAP073, 0, "x-cap073"), \ - _CAP(CAP074, 0, "x-cap074"), \ - _CAP(CAP075, 0, "x-cap075"), \ - _CAP(CAP076, 0, "x-cap076"), \ - _CAP(CAP077, 0, "x-cap077"), \ - _CAP(CAP078, 0, "x-cap078"), \ - _CAP(CAP079, 0, "x-cap079"), \ - _CAP(CAP080, 0, "x-cap080"), \ - _CAP(CAP081, 0, "x-cap081"), \ - _CAP(CAP082, 0, "x-cap082"), \ - _CAP(CAP083, 0, "x-cap083"), \ - _CAP(CAP084, 0, "x-cap084"), \ - _CAP(CAP085, 0, "x-cap085"), \ - _CAP(CAP086, 0, "x-cap086"), \ - _CAP(CAP087, 0, "x-cap087"), \ - _CAP(CAP088, 0, "x-cap088"), \ - _CAP(CAP089, 0, "x-cap089"), \ - _CAP(CAP090, 0, "x-cap090"), \ - _CAP(CAP091, 0, "x-cap091"), \ - _CAP(CAP092, 0, "x-cap092"), \ - _CAP(CAP093, 0, "x-cap093"), \ - _CAP(CAP094, 0, "x-cap094"), \ - _CAP(CAP095, 0, "x-cap095"), \ - _CAP(CAP096, 0, "x-cap096"), \ - _CAP(CAP097, 0, "x-cap097"), \ - _CAP(CAP098, 0, "x-cap098"), \ - _CAP(CAP099, 0, "x-cap099"), \ - _CAP(CAP100, 0, "x-cap100"), \ - _CAP(CAP101, 0, "x-cap101"), \ - _CAP(CAP102, 0, "x-cap102"), \ - _CAP(CAP103, 0, "x-cap103"), \ - _CAP(CAP104, 0, "x-cap104"), \ - _CAP(CAP105, 0, "x-cap105"), \ - _CAP(CAP106, 0, "x-cap106"), \ - _CAP(CAP107, 0, "x-cap107"), \ - _CAP(CAP108, 0, "x-cap108"), \ - _CAP(CAP109, 0, "x-cap109"), \ - _CAP(CAP110, 0, "x-cap110"), \ - _CAP(CAP111, 0, "x-cap111"), \ - _CAP(CAP112, 0, "x-cap112"), \ - _CAP(CAP113, 0, "x-cap113"), \ - _CAP(CAP114, 0, "x-cap114"), \ - _CAP(CAP115, 0, "x-cap115"), \ - _CAP(CAP116, 0, "x-cap116"), \ - _CAP(CAP117, 0, "x-cap117"), \ - _CAP(CAP118, 0, "x-cap118"), \ - _CAP(CAP119, 0, "x-cap119"), \ - _CAP(CAP120, 0, "x-cap120"), \ - _CAP(CAP121, 0, "x-cap121"), \ - _CAP(CAP122, 0, "x-cap122"), \ - _CAP(CAP123, 0, "x-cap123"), \ - _CAP(CAP124, 0, "x-cap124"), \ - _CAP(CAP125, 0, "x-cap125"), \ - _CAP(CAP126, 0, "x-cap126"), \ - _CAP(CAP127, 0, "x-cap127"), \ - _CAP(CAP128, 0, "x-cap128"), \ - _CAP(CAP129, 0, "x-cap129"), \ - _CAP(CAP130, 0, "x-cap130"), \ - _CAP(CAP131, 0, "x-cap131"), \ - _CAP(CAP132, 0, "x-cap132"), \ - _CAP(CAP133, 0, "x-cap133"), \ - _CAP(CAP134, 0, "x-cap134"), \ - _CAP(CAP135, 0, "x-cap135"), \ - _CAP(CAP136, 0, "x-cap136"), \ - _CAP(CAP137, 0, "x-cap137"), \ - _CAP(CAP138, 0, "x-cap138"), \ - _CAP(CAP139, 0, "x-cap139"), \ - _CAP(CAP140, 0, "x-cap140"), \ - _CAP(CAP141, 0, "x-cap141"), \ - _CAP(CAP142, 0, "x-cap142"), \ - _CAP(CAP143, 0, "x-cap143"), \ - _CAP(CAP144, 0, "x-cap144"), \ - _CAP(CAP145, 0, "x-cap145"), \ - _CAP(CAP146, 0, "x-cap146"), \ - _CAP(CAP147, 0, "x-cap147"), \ - _CAP(CAP148, 0, "x-cap148"), \ - _CAP(CAP149, 0, "x-cap149"), \ - _CAP(CAP150, 0, "x-cap150"), \ - _CAP(CAP151, 0, "x-cap151"), \ - _CAP(CAP152, 0, "x-cap152"), \ - _CAP(CAP153, 0, "x-cap153"), \ - _CAP(CAP154, 0, "x-cap154"), \ - _CAP(CAP155, 0, "x-cap155"), \ - _CAP(CAP156, 0, "x-cap156"), \ - _CAP(CAP157, 0, "x-cap157"), \ - _CAP(CAP158, 0, "x-cap158"), \ - _CAP(CAP159, 0, "x-cap159"), \ - _CAP(CAP160, 0, "x-cap160"), \ - _CAP(CAP161, 0, "x-cap161"), \ - _CAP(CAP162, 0, "x-cap162"), \ - _CAP(CAP163, 0, "x-cap163"), \ - _CAP(CAP164, 0, "x-cap164"), \ - _CAP(CAP165, 0, "x-cap165"), \ - _CAP(CAP166, 0, "x-cap166"), \ - _CAP(CAP167, 0, "x-cap167"), \ - _CAP(CAP168, 0, "x-cap168"), \ - _CAP(CAP169, 0, "x-cap169"), \ - _CAP(CAP170, 0, "x-cap170"), \ - _CAP(CAP171, 0, "x-cap171"), \ - _CAP(CAP172, 0, "x-cap172"), \ - _CAP(CAP173, 0, "x-cap173"), \ - _CAP(CAP174, 0, "x-cap174"), \ - _CAP(CAP175, 0, "x-cap175"), \ - _CAP(CAP176, 0, "x-cap176"), \ - _CAP(CAP177, 0, "x-cap177"), \ - _CAP(CAP178, 0, "x-cap178"), \ - _CAP(CAP179, 0, "x-cap179"), \ - _CAP(CAP180, 0, "x-cap180"), \ - _CAP(CAP181, 0, "x-cap181"), \ - _CAP(CAP182, 0, "x-cap182"), \ - _CAP(CAP183, 0, "x-cap183"), \ - _CAP(CAP184, 0, "x-cap184"), \ - _CAP(CAP185, 0, "x-cap185"), \ - _CAP(CAP186, 0, "x-cap186"), \ - _CAP(CAP187, 0, "x-cap187"), \ - _CAP(CAP188, 0, "x-cap188"), \ - _CAP(CAP189, 0, "x-cap189"), \ - _CAP(CAP190, 0, "x-cap190"), \ - _CAP(CAP191, 0, "x-cap191"), \ - _CAP(CAP192, 0, "x-cap192"), \ - _CAP(CAP193, 0, "x-cap193"), \ - _CAP(CAP194, 0, "x-cap194"), \ - _CAP(CAP195, 0, "x-cap195"), \ - _CAP(CAP196, 0, "x-cap196"), \ - _CAP(CAP197, 0, "x-cap197"), \ - _CAP(CAP198, 0, "x-cap198"), \ - _CAP(CAP199, 0, "x-cap199"), \ - _CAP(CAP200, 0, "x-cap200"), \ - _CAP(CAP201, 0, "x-cap201"), \ - _CAP(CAP202, 0, "x-cap202"), \ - _CAP(CAP203, 0, "x-cap203"), \ - _CAP(CAP204, 0, "x-cap204"), \ - _CAP(CAP205, 0, "x-cap205"), \ - _CAP(CAP206, 0, "x-cap206"), \ - _CAP(CAP207, 0, "x-cap207"), \ - _CAP(CAP208, 0, "x-cap208"), \ - _CAP(CAP209, 0, "x-cap209"), \ - _CAP(CAP210, 0, "x-cap210"), \ - _CAP(CAP211, 0, "x-cap211"), \ - _CAP(CAP212, 0, "x-cap212"), \ - _CAP(CAP213, 0, "x-cap213"), \ - _CAP(CAP214, 0, "x-cap214"), \ - _CAP(CAP215, 0, "x-cap215"), \ - _CAP(CAP216, 0, "x-cap216"), \ - _CAP(CAP217, 0, "x-cap217"), \ - _CAP(CAP218, 0, "x-cap218"), \ - _CAP(CAP219, 0, "x-cap219"), \ - _CAP(CAP220, 0, "x-cap220"), \ - _CAP(CAP221, 0, "x-cap221"), \ - _CAP(CAP222, 0, "x-cap222"), \ - _CAP(CAP223, 0, "x-cap223"), \ - _CAP(CAP224, 0, "x-cap224"), \ - _CAP(CAP225, 0, "x-cap225"), \ - _CAP(CAP226, 0, "x-cap226"), \ - _CAP(CAP227, 0, "x-cap227"), \ - _CAP(CAP228, 0, "x-cap228"), \ - _CAP(CAP229, 0, "x-cap229"), \ - _CAP(CAP230, 0, "x-cap230"), \ - _CAP(CAP231, 0, "x-cap231"), \ - _CAP(CAP232, 0, "x-cap232"), \ - _CAP(CAP233, 0, "x-cap233"), \ - _CAP(CAP234, 0, "x-cap234"), \ - _CAP(CAP235, 0, "x-cap235"), \ - _CAP(CAP236, 0, "x-cap236"), \ - _CAP(CAP237, 0, "x-cap237"), \ - _CAP(CAP238, 0, "x-cap238"), \ - _CAP(CAP239, 0, "x-cap239"), \ - _CAP(CAP240, 0, "x-cap240"), \ - _CAP(CAP241, 0, "x-cap241"), \ - _CAP(CAP242, 0, "x-cap242"), \ - _CAP(CAP243, 0, "x-cap243"), \ - _CAP(CAP244, 0, "x-cap244"), \ - _CAP(CAP245, 0, "x-cap245"), \ - _CAP(CAP246, 0, "x-cap246"), \ - _CAP(CAP247, 0, "x-cap247"), \ - _CAP(CAP248, 0, "x-cap248"), \ - _CAP(CAP249, 0, "x-cap249"), \ - _CAP(CAP250, 0, "x-cap250"), \ - _CAP(CAP251, 0, "x-cap251"), \ - _CAP(CAP252, 0, "x-cap252"), \ - _CAP(CAP253, 0, "x-cap253"), \ - _CAP(CAP254, 0, "x-cap254"), \ - _CAP(CAP255, 0, "x-cap255"), \ - _CAP(CAP256, 0, "x-cap256"), \ - _CAP(CAP257, 0, "x-cap257"), \ - _CAP(CAP258, 0, "x-cap258"), \ - _CAP(CAP259, 0, "x-cap259"), \ - _CAP(CAP260, 0, "x-cap260"), \ - _CAP(CAP261, 0, "x-cap261"), \ - _CAP(CAP262, 0, "x-cap262"), \ - _CAP(CAP263, 0, "x-cap263"), \ - _CAP(CAP264, 0, "x-cap264"), \ - _CAP(CAP265, 0, "x-cap265"), \ - _CAP(CAP266, 0, "x-cap266"), \ - _CAP(CAP267, 0, "x-cap267"), \ - _CAP(CAP268, 0, "x-cap268"), \ - _CAP(CAP269, 0, "x-cap269"), \ - _CAP(CAP270, 0, "x-cap270"), \ - _CAP(CAP271, 0, "x-cap271"), \ - _CAP(CAP272, 0, "x-cap272"), \ - _CAP(CAP273, 0, "x-cap273"), \ - _CAP(CAP274, 0, "x-cap274"), \ - _CAP(CAP275, 0, "x-cap275"), \ - _CAP(CAP276, 0, "x-cap276"), \ - _CAP(CAP277, 0, "x-cap277"), \ - _CAP(CAP278, 0, "x-cap278"), \ - _CAP(CAP279, 0, "x-cap279"), \ - _CAP(CAP280, 0, "x-cap280"), \ - _CAP(CAP281, 0, "x-cap281"), \ - _CAP(CAP282, 0, "x-cap282"), \ - _CAP(CAP283, 0, "x-cap283"), \ - _CAP(CAP284, 0, "x-cap284"), \ - _CAP(CAP285, 0, "x-cap285"), \ - _CAP(CAP286, 0, "x-cap286"), \ - _CAP(CAP287, 0, "x-cap287"), \ - _CAP(CAP288, 0, "x-cap288"), \ - _CAP(CAP289, 0, "x-cap289"), \ - _CAP(CAP290, 0, "x-cap290"), \ - _CAP(CAP291, 0, "x-cap291"), \ - _CAP(CAP292, 0, "x-cap292"), \ - _CAP(CAP293, 0, "x-cap293"), \ - _CAP(CAP294, 0, "x-cap294"), \ - _CAP(CAP295, 0, "x-cap295"), \ - _CAP(CAP296, 0, "x-cap296"), \ - _CAP(CAP297, 0, "x-cap297"), \ - _CAP(CAP298, 0, "x-cap298"), \ - _CAP(CAP299, 0, "x-cap299"), \ - _CAP(CAP300, 0, "x-cap300"), \ - _CAP(CAP301, 0, "x-cap301"), \ - _CAP(CAP302, 0, "x-cap302"), \ - _CAP(CAP303, 0, "x-cap303"), \ - _CAP(CAP304, 0, "x-cap304"), \ - _CAP(CAP305, 0, "x-cap305"), \ - _CAP(CAP306, 0, "x-cap306"), \ - _CAP(CAP307, 0, "x-cap307"), \ - _CAP(CAP308, 0, "x-cap308"), \ - _CAP(CAP309, 0, "x-cap309"), \ - _CAP(CAP310, 0, "x-cap310"), \ - _CAP(CAP311, 0, "x-cap311"), \ - _CAP(CAP312, 0, "x-cap312"), \ - _CAP(CAP313, 0, "x-cap313"), \ - _CAP(CAP314, 0, "x-cap314"), \ - _CAP(CAP315, 0, "x-cap315"), \ - _CAP(CAP316, 0, "x-cap316"), \ - _CAP(CAP317, 0, "x-cap317"), \ - _CAP(CAP318, 0, "x-cap318"), \ - _CAP(CAP319, 0, "x-cap319"), \ - _CAP(CAP320, 0, "x-cap320"), \ - _CAP(CAP321, 0, "x-cap321"), \ - _CAP(CAP322, 0, "x-cap322"), \ - _CAP(CAP323, 0, "x-cap323"), \ - _CAP(CAP324, 0, "x-cap324"), \ - _CAP(CAP325, 0, "x-cap325"), \ - _CAP(CAP326, 0, "x-cap326"), \ - _CAP(CAP327, 0, "x-cap327"), \ - _CAP(CAP328, 0, "x-cap328"), \ - _CAP(CAP329, 0, "x-cap329"), \ - _CAP(CAP330, 0, "x-cap330"), \ - _CAP(CAP331, 0, "x-cap331"), \ - _CAP(CAP332, 0, "x-cap332"), \ - _CAP(CAP333, 0, "x-cap333"), \ - _CAP(CAP334, 0, "x-cap334"), \ - _CAP(CAP335, 0, "x-cap335"), \ - _CAP(CAP336, 0, "x-cap336"), \ - _CAP(CAP337, 0, "x-cap337"), \ - _CAP(CAP338, 0, "x-cap338"), \ - _CAP(CAP339, 0, "x-cap339"), \ - _CAP(CAP340, 0, "x-cap340"), \ - _CAP(CAP341, 0, "x-cap341"), \ - _CAP(CAP342, 0, "x-cap342"), \ - _CAP(CAP343, 0, "x-cap343"), \ - _CAP(CAP344, 0, "x-cap344"), \ - _CAP(CAP345, 0, "x-cap345"), \ - _CAP(CAP346, 0, "x-cap346"), \ - _CAP(CAP347, 0, "x-cap347"), \ - _CAP(CAP348, 0, "x-cap348"), \ - _CAP(CAP349, 0, "x-cap349"), \ - _CAP(CAP350, 0, "x-cap350"), \ - _CAP(CAP351, 0, "x-cap351"), \ - _CAP(CAP352, 0, "x-cap352"), \ - _CAP(CAP353, 0, "x-cap353"), \ - _CAP(CAP354, 0, "x-cap354"), \ - _CAP(CAP355, 0, "x-cap355"), \ - _CAP(CAP356, 0, "x-cap356"), \ - _CAP(CAP357, 0, "x-cap357"), \ - _CAP(CAP358, 0, "x-cap358"), \ - _CAP(CAP359, 0, "x-cap359"), \ - _CAP(CAP360, 0, "x-cap360"), \ - _CAP(CAP361, 0, "x-cap361"), \ - _CAP(CAP362, 0, "x-cap362"), \ - _CAP(CAP363, 0, "x-cap363"), \ - _CAP(CAP364, 0, "x-cap364"), \ - _CAP(CAP365, 0, "x-cap365"), \ - _CAP(CAP366, 0, "x-cap366"), \ - _CAP(CAP367, 0, "x-cap367"), \ - _CAP(CAP368, 0, "x-cap368"), \ - _CAP(CAP369, 0, "x-cap369"), \ - _CAP(CAP370, 0, "x-cap370"), \ - _CAP(CAP371, 0, "x-cap371"), \ - _CAP(CAP372, 0, "x-cap372"), \ - _CAP(CAP373, 0, "x-cap373"), \ - _CAP(CAP374, 0, "x-cap374"), \ - _CAP(CAP375, 0, "x-cap375"), \ - _CAP(CAP376, 0, "x-cap376"), \ - _CAP(CAP377, 0, "x-cap377"), \ - _CAP(CAP378, 0, "x-cap378"), \ - _CAP(CAP379, 0, "x-cap379"), \ - _CAP(CAP380, 0, "x-cap380"), \ - _CAP(CAP381, 0, "x-cap381"), \ - _CAP(CAP382, 0, "x-cap382"), \ - _CAP(CAP383, 0, "x-cap383"), \ - _CAP(CAP384, 0, "x-cap384"), \ - _CAP(CAP385, 0, "x-cap385"), \ - _CAP(CAP386, 0, "x-cap386"), \ - _CAP(CAP387, 0, "x-cap387"), \ - _CAP(CAP388, 0, "x-cap388"), \ - _CAP(CAP389, 0, "x-cap389"), \ - _CAP(CAP390, 0, "x-cap390"), \ - _CAP(CAP391, 0, "x-cap391"), \ - _CAP(CAP392, 0, "x-cap392"), \ - _CAP(CAP393, 0, "x-cap393"), \ - _CAP(CAP394, 0, "x-cap394"), \ - _CAP(CAP395, 0, "x-cap395"), \ - _CAP(CAP396, 0, "x-cap396"), \ - _CAP(CAP397, 0, "x-cap397"), \ - _CAP(CAP398, 0, "x-cap398"), \ - _CAP(CAP399, 0, "x-cap399"), \ - _CAP(CAP400, 0, "x-cap400"), \ - _CAP(CAP401, 0, "x-cap401"), \ - _CAP(CAP402, 0, "x-cap402"), \ - _CAP(CAP403, 0, "x-cap403"), \ - _CAP(CAP404, 0, "x-cap404"), \ - _CAP(CAP405, 0, "x-cap405"), \ - _CAP(CAP406, 0, "x-cap406"), \ - _CAP(CAP407, 0, "x-cap407"), \ - _CAP(CAP408, 0, "x-cap408"), \ - _CAP(CAP409, 0, "x-cap409"), \ - _CAP(CAP410, 0, "x-cap410"), \ - _CAP(CAP411, 0, "x-cap411"), \ - _CAP(CAP412, 0, "x-cap412"), \ - _CAP(CAP413, 0, "x-cap413"), \ - _CAP(CAP414, 0, "x-cap414"), \ - _CAP(CAP415, 0, "x-cap415"), \ - _CAP(CAP416, 0, "x-cap416"), \ - _CAP(CAP417, 0, "x-cap417"), \ - _CAP(CAP418, 0, "x-cap418"), \ - _CAP(CAP419, 0, "x-cap419"), \ - _CAP(CAP420, 0, "x-cap420"), \ - _CAP(CAP421, 0, "x-cap421"), \ - _CAP(CAP422, 0, "x-cap422"), \ - _CAP(CAP423, 0, "x-cap423"), \ - _CAP(CAP424, 0, "x-cap424"), \ - _CAP(CAP425, 0, "x-cap425"), \ - _CAP(CAP426, 0, "x-cap426"), \ - _CAP(CAP427, 0, "x-cap427"), \ - _CAP(CAP428, 0, "x-cap428"), \ - _CAP(CAP429, 0, "x-cap429"), \ - _CAP(CAP430, 0, "x-cap430"), \ - _CAP(CAP431, 0, "x-cap431"), \ - _CAP(CAP432, 0, "x-cap432"), \ - _CAP(CAP433, 0, "x-cap433"), \ - _CAP(CAP434, 0, "x-cap434"), \ - _CAP(CAP435, 0, "x-cap435"), \ - _CAP(CAP436, 0, "x-cap436"), \ - _CAP(CAP437, 0, "x-cap437"), \ - _CAP(CAP438, 0, "x-cap438"), \ - _CAP(CAP439, 0, "x-cap439"), \ - _CAP(CAP440, 0, "x-cap440"), \ - _CAP(CAP441, 0, "x-cap441"), \ - _CAP(CAP442, 0, "x-cap442"), \ - _CAP(CAP443, 0, "x-cap443"), \ - _CAP(CAP444, 0, "x-cap444"), \ - _CAP(CAP445, 0, "x-cap445"), \ - _CAP(CAP446, 0, "x-cap446"), \ - _CAP(CAP447, 0, "x-cap447"), \ - _CAP(CAP448, 0, "x-cap448"), \ - _CAP(CAP449, 0, "x-cap449"), \ - _CAP(CAP450, 0, "x-cap450"), \ - _CAP(CAP451, 0, "x-cap451"), \ - _CAP(CAP452, 0, "x-cap452"), \ - _CAP(CAP453, 0, "x-cap453"), \ - _CAP(CAP454, 0, "x-cap454"), \ - _CAP(CAP455, 0, "x-cap455"), \ - _CAP(CAP456, 0, "x-cap456"), \ - _CAP(CAP457, 0, "x-cap457"), \ - _CAP(CAP458, 0, "x-cap458"), \ - _CAP(CAP459, 0, "x-cap459"), \ - _CAP(CAP460, 0, "x-cap460"), \ - _CAP(CAP461, 0, "x-cap461"), \ - _CAP(CAP462, 0, "x-cap462"), \ - _CAP(CAP463, 0, "x-cap463"), \ - _CAP(CAP464, 0, "x-cap464"), \ - _CAP(CAP465, 0, "x-cap465"), \ - _CAP(CAP466, 0, "x-cap466"), \ - _CAP(CAP467, 0, "x-cap467"), \ - _CAP(CAP468, 0, "x-cap468"), \ - _CAP(CAP469, 0, "x-cap469"), \ - _CAP(CAP470, 0, "x-cap470"), \ - _CAP(CAP471, 0, "x-cap471"), \ - _CAP(CAP472, 0, "x-cap472"), \ - _CAP(CAP473, 0, "x-cap473"), \ - _CAP(CAP474, 0, "x-cap474"), \ - _CAP(CAP475, 0, "x-cap475"), \ - _CAP(CAP476, 0, "x-cap476"), \ - _CAP(CAP477, 0, "x-cap477"), \ - _CAP(CAP478, 0, "x-cap478"), \ - _CAP(CAP479, 0, "x-cap479"), \ - _CAP(CAP480, 0, "x-cap480"), \ - _CAP(CAP481, 0, "x-cap481"), \ - _CAP(CAP482, 0, "x-cap482"), \ - _CAP(CAP483, 0, "x-cap483"), \ - _CAP(CAP484, 0, "x-cap484"), \ - _CAP(CAP485, 0, "x-cap485"), \ - _CAP(CAP486, 0, "x-cap486"), \ - _CAP(CAP487, 0, "x-cap487"), \ - _CAP(CAP488, 0, "x-cap488"), \ - _CAP(CAP489, 0, "x-cap489"), \ - _CAP(CAP490, 0, "x-cap490"), \ - _CAP(CAP491, 0, "x-cap491"), \ - _CAP(CAP492, 0, "x-cap492"), \ - _CAP(CAP493, 0, "x-cap493"), \ - _CAP(CAP494, 0, "x-cap494"), \ - _CAP(CAP495, 0, "x-cap495"), \ - _CAP(CAP496, 0, "x-cap496"), \ - _CAP(CAP497, 0, "x-cap497"), \ - _CAP(CAP498, 0, "x-cap498"), \ - _CAP(CAP499, 0, "x-cap499"), \ - _CAP(CAP500, 0, "x-cap500"), \ - _CAP(CAP501, 0, "x-cap501"), \ - _CAP(CAP502, 0, "x-cap502"), \ - _CAP(CAP503, 0, "x-cap503"), \ - _CAP(CAP504, 0, "x-cap504"), \ - _CAP(CAP505, 0, "x-cap505"), \ - _CAP(CAP506, 0, "x-cap506"), \ - _CAP(CAP507, 0, "x-cap507"), \ - _CAP(CAP508, 0, "x-cap508"), \ - _CAP(CAP509, 0, "x-cap509"), \ - _CAP(CAP510, 0, "x-cap510"), \ - _CAP(CAP511, 0, "x-cap511"), \ - _CAP(CAP512, 0, "x-cap512"), \ - _CAP(CAP513, 0, "x-cap513"), \ - _CAP(CAP514, 0, "x-cap514"), \ - _CAP(CAP515, 0, "x-cap515"), \ - _CAP(CAP516, 0, "x-cap516"), \ - _CAP(CAP517, 0, "x-cap517"), \ - _CAP(CAP518, 0, "x-cap518"), \ - _CAP(CAP519, 0, "x-cap519"), \ - _CAP(CAP520, 0, "x-cap520"), \ - _CAP(CAP521, 0, "x-cap521"), \ - _CAP(CAP522, 0, "x-cap522"), \ - _CAP(CAP523, 0, "x-cap523"), \ - _CAP(CAP524, 0, "x-cap524"), \ - _CAP(CAP525, 0, "x-cap525"), \ - _CAP(CAP526, 0, "x-cap526"), \ - _CAP(CAP527, 0, "x-cap527"), \ - _CAP(CAP528, 0, "x-cap528"), \ - _CAP(CAP529, 0, "x-cap529"), \ - _CAP(CAP530, 0, "x-cap530"), \ - _CAP(CAP531, 0, "x-cap531"), \ - _CAP(CAP532, 0, "x-cap532"), \ - _CAP(CAP533, 0, "x-cap533"), \ - _CAP(CAP534, 0, "x-cap534"), \ - _CAP(CAP535, 0, "x-cap535"), \ - _CAP(CAP536, 0, "x-cap536"), \ - _CAP(CAP537, 0, "x-cap537"), \ - _CAP(CAP538, 0, "x-cap538"), \ - _CAP(CAP539, 0, "x-cap539"), \ - _CAP(CAP540, 0, "x-cap540"), \ - _CAP(CAP541, 0, "x-cap541"), \ - _CAP(CAP542, 0, "x-cap542"), \ - _CAP(CAP543, 0, "x-cap543"), \ - _CAP(CAP544, 0, "x-cap544"), \ - _CAP(CAP545, 0, "x-cap545"), \ - _CAP(CAP546, 0, "x-cap546"), \ - _CAP(CAP547, 0, "x-cap547"), \ - _CAP(CAP548, 0, "x-cap548"), \ - _CAP(CAP549, 0, "x-cap549"), \ - _CAP(CAP550, 0, "x-cap550"), \ - _CAP(CAP551, 0, "x-cap551"), \ - _CAP(CAP552, 0, "x-cap552"), \ - _CAP(CAP553, 0, "x-cap553"), \ - _CAP(CAP554, 0, "x-cap554"), \ - _CAP(CAP555, 0, "x-cap555"), \ - _CAP(CAP556, 0, "x-cap556"), \ - _CAP(CAP557, 0, "x-cap557"), \ - _CAP(CAP558, 0, "x-cap558"), \ - _CAP(CAP559, 0, "x-cap559"), \ - _CAP(CAP560, 0, "x-cap560"), \ - _CAP(CAP561, 0, "x-cap561"), \ - _CAP(CAP562, 0, "x-cap562"), \ - _CAP(CAP563, 0, "x-cap563"), \ - _CAP(CAP564, 0, "x-cap564"), \ - _CAP(CAP565, 0, "x-cap565"), \ - _CAP(CAP566, 0, "x-cap566"), \ - _CAP(CAP567, 0, "x-cap567"), \ - _CAP(CAP568, 0, "x-cap568"), \ - _CAP(CAP569, 0, "x-cap569"), \ - _CAP(CAP570, 0, "x-cap570"), \ - _CAP(CAP571, 0, "x-cap571"), \ - _CAP(CAP572, 0, "x-cap572"), \ - _CAP(CAP573, 0, "x-cap573"), \ - _CAP(CAP574, 0, "x-cap574"), \ - _CAP(CAP575, 0, "x-cap575"), \ - _CAP(CAP576, 0, "x-cap576"), \ - _CAP(CAP577, 0, "x-cap577"), \ - _CAP(CAP578, 0, "x-cap578"), \ - _CAP(CAP579, 0, "x-cap579"), \ - _CAP(CAP580, 0, "x-cap580"), \ - _CAP(CAP581, 0, "x-cap581"), \ - _CAP(CAP582, 0, "x-cap582"), \ - _CAP(CAP583, 0, "x-cap583"), \ - _CAP(CAP584, 0, "x-cap584"), \ - _CAP(CAP585, 0, "x-cap585"), \ - _CAP(CAP586, 0, "x-cap586"), \ - _CAP(CAP587, 0, "x-cap587"), \ - _CAP(CAP588, 0, "x-cap588"), \ - _CAP(CAP589, 0, "x-cap589"), \ - _CAP(CAP590, 0, "x-cap590"), \ - _CAP(CAP591, 0, "x-cap591"), \ - _CAP(CAP592, 0, "x-cap592"), \ - _CAP(CAP593, 0, "x-cap593"), \ - _CAP(CAP594, 0, "x-cap594"), \ - _CAP(CAP595, 0, "x-cap595"), \ - _CAP(CAP596, 0, "x-cap596"), \ - _CAP(CAP597, 0, "x-cap597"), \ - _CAP(CAP598, 0, "x-cap598"), \ - _CAP(CAP599, 0, "x-cap599") +#define CAPLIST \ + _CAP(USERPFX, 0, "undernet.org/userpfx") /** Client capabilities */ enum Capab { Index: ircd-ircdev/include/client.h diff -u ircd-ircdev/include/client.h:1.14 ircd-ircdev/include/client.h:1.15 --- ircd-ircdev/include/client.h:1.14 Sat Apr 2 11:47:34 2005 +++ ircd-ircdev/include/client.h Mon Apr 11 01:44:59 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Structures and functions for handling local clients. - * @version $Id: client.h,v 1.14 2005/04/02 19:47:34 zolty Exp $ + * @version $Id: client.h,v 1.15 2005/04/11 08:44:59 zolty Exp $ */ #ifndef INCLUDED_client_h #define INCLUDED_client_h @@ -248,8 +248,8 @@ struct Timer con_proc; /**< process latent messages from client */ struct Privs con_privs; /**< Oper privileges */ - struct CapSet con_capab; /**< Client capabilities */ - struct CapSet con_active; /**< Active client capabilities */ + struct CapSet con_capab; /**< Client capabilities (from us) */ + struct CapSet con_active; /**< Active capabilities (to us) */ struct AuthRequest* con_auth; /**< auth request for client */ struct IAuthRequest* con_iauth; /**< iauth request for client */ }; Index: ircd-ircdev/include/numeric.h diff -u ircd-ircdev/include/numeric.h:1.11 ircd-ircdev/include/numeric.h:1.12 --- ircd-ircdev/include/numeric.h:1.11 Sat Apr 2 11:47:34 2005 +++ ircd-ircdev/include/numeric.h Mon Apr 11 01:44:59 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Declarations of numeric replies and supporting functions. - * @version $Id: numeric.h,v 1.11 2005/04/02 19:47:34 zolty Exp $ + * @version $Id: numeric.h,v 1.12 2005/04/11 08:44:59 zolty Exp $ */ #ifndef INCLUDED_numeric_h #define INCLUDED_numeric_h @@ -66,9 +66,9 @@ #define RPL_MAP 15 /* Undernet extension */ #define RPL_MAPMORE 16 /* Undernet extension */ #define RPL_MAPEND 17 /* Undernet extension */ -#if defined(UNDERNET) -#define RPL_APASSWARN 30 /* Undernet extension */ -#endif +#define RPL_APASSWARN_SET 30 /* Undernet extension */ +#define RPL_APASSWARN_SECRET 31 /* Undernet extension */ +#define RPL_APASSWARN_CLEAR 32 /* Undernet extension */ /* RPL_YOURID 42 IRCnet extension */ /* RPL_ATTEMPTINGJUNC 50 aircd extension */ /* RPL_ATTEMPTINGREROUTE 51 aircd extension */ @@ -462,13 +462,13 @@ ERR_WHOLIMEXCEED 523 dalnet */ #define ERR_QUARANTINED 524 /* Undernet extension -Vampire */ -#if defined(UNDERNET) #define ERR_NOTLOWEROPLEVEL 550 /* Undernet extension */ #define ERR_NOTMANAGER 551 /* Undernet extension */ #define ERR_CHANSECURED 552 /* Undernet extension */ #define ERR_UPASSSET 553 /* Undernet extension */ #define ERR_UPASSNOTSET 554 /* Undernet extension */ -#endif +#define ERR_NOMANAGER_LONG 555 /* Undernet extension */ +#define ERR_NOMANAGER_SHORT 556 /* Undernet extension */ #define RPL_LOGON 600 /* Dalnet extension */ #define RPL_LOGOFF 601 /* Dalnet extension */ Index: ircd-ircdev/include/s_conf.h diff -u ircd-ircdev/include/s_conf.h:1.9 ircd-ircdev/include/s_conf.h:1.10 --- ircd-ircdev/include/s_conf.h:1.9 Sat Apr 2 11:47:34 2005 +++ ircd-ircdev/include/s_conf.h Mon Apr 11 01:44:59 2005 @@ -21,7 +21,7 @@ */ /** @file s_conf.h * @brief ircd configuration file API. - * @version $Id: s_conf.h,v 1.9 2005/04/02 19:47:34 zolty Exp $ + * @version $Id: s_conf.h,v 1.10 2005/04/11 08:44:59 zolty Exp $ */ #ifndef INCLUDED_s_conf_h #define INCLUDED_s_conf_h @@ -205,6 +205,7 @@ extern const char *find_quarantine(const char* chname); extern void lookup_confhost(struct ConfItem *aconf); extern void conf_parse_userhost(struct ConfItem *aconf, char *host); +extern struct ConfItem *conf_debug_iline(const char *client); extern void yyerror(const char *msg); Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.21 ircd-ircdev/ircd/Makefile.in:1.22 --- ircd-ircdev/ircd/Makefile.in:1.21 Thu Mar 31 04:58:03 2005 +++ ircd-ircdev/ircd/Makefile.in Mon Apr 11 01:44:59 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.21 2005/03/31 12:58:03 zolty Exp $ +# $Id: Makefile.in,v 1.22 2005/04/11 08:44:59 zolty Exp $ #### Start of system configuration section. #### @@ -45,6 +45,7 @@ LEX = @LEX@ YACC = @YACC@ ENGINE_C = @ENGINE_C@ +ENVIRONMENT = @ENVIRONMENT@ @SET_MAKE@ BINDIR = @bindir@ @@ -234,6 +235,18 @@ whowas.c \ y.tab.c + +#@if [ENVIRONMENT = "DDB"]; then \ +# SRC = ${IRCD_SRC} ${DDB_SRC} ${ENGINE_C} ${CRYPTO_SRC} \ +#else \ +# if [ENVIRONMENT = "SERVICES"]; then \ +# SRC = ${IRCD_SRC} ${SERVICES_SRC} ${ENGINE_C} ${CRYPTO_SRC} \ +# else \ +# if [ENVIRONMENT = "UNDERNET"]; then \ +# SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${ENGINE_C} ${CRYPTO_SRC} \ +# fi \ +# fi \ +#fi #TODO Arreglar esto #Para undernet #SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${ENGINE_C} ${CRYPTO_SRC} Index: ircd-ircdev/ircd/channel.c diff -u ircd-ircdev/ircd/channel.c:1.16 ircd-ircdev/ircd/channel.c:1.17 --- ircd-ircdev/ircd/channel.c:1.16 Sat Apr 2 11:47:34 2005 +++ ircd-ircdev/ircd/channel.c Mon Apr 11 01:45:00 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Channel management and maintanance - * @version $Id: channel.c,v 1.16 2005/04/02 19:47:34 zolty Exp $ + * @version $Id: channel.c,v 1.17 2005/04/11 08:45:00 zolty Exp $ */ #include "config.h" @@ -2579,7 +2579,7 @@ if (state->flags & MODE_PARSE_FORCE && MyUser(state->sptr) && !HasPriv(state->sptr, PRIV_APASS_OPMODE)) { send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Use /JOIN", state->chptr->chname, " <AdminPass>."); + state->chptr->chname); return; } @@ -2587,16 +2587,15 @@ if (MyUser(state->sptr) && !(state->flags & MODE_PARSE_FORCE || IsChannelManager(state->member))) { if (*state->chptr->mode.apass) { send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Use /JOIN", state->chptr->chname, "<AdminPass>."); + state->chptr->chname); + } else if (TStime() - state->chptr->creationtime >= 171000) { + send_reply(state->sptr, ERR_NOMANAGER_LONG, state->chptr->chname); } else { - send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Re-create the channel. The channel must be *empty* for", - TStime() - state->chptr->creationtime >= 171000 ? "48 contiguous hours" : "a minute or two", - "before it can be recreated."); + send_reply(state->sptr, ERR_NOMANAGER_SHORT, state->chptr->chname); } return; } - + if (state->done & DONE_UPASS) /* allow upass to be set only once */ return; state->done |= DONE_UPASS; @@ -2619,7 +2618,7 @@ if (!state->mbuf) return; - if (!(state->flags & MODE_PARSE_FORCE)) + if (!(state->flags & MODE_PARSE_FORCE)) { /* can't add the upass while apass is not set */ if (state->dir == MODE_ADD && !*state->chptr->mode.apass) { send_reply(state->sptr, ERR_UPASSNOTSET, state->chptr->chname, state->chptr->chname); @@ -2632,6 +2631,7 @@ send_reply(state->sptr, ERR_KEYSET, state->chptr->chname); return; } + } if (!(state->flags & MODE_PARSE_WIPEOUT) && state->dir == MODE_ADD && !ircd_strcmp(state->chptr->mode.upass, t_str)) @@ -2687,7 +2687,7 @@ if (state->flags & MODE_PARSE_FORCE && MyUser(state->sptr) && !HasPriv(state->sptr, PRIV_APASS_OPMODE)) { send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Use /JOIN", state->chptr->chname, " <AdminPass>."); + state->chptr->chname); return; } @@ -2701,15 +2701,15 @@ if (MyUser(state->sptr) && !(state->flags & MODE_PARSE_FORCE || IsChannelManager(state->member))) { if (*state->chptr->mode.apass) { send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Use /JOIN", state->chptr->chname, "<AdminPass>."); + state->chptr->chname); + } else if (TStime() - state->chptr->creationtime >= 171000) { + send_reply(state->sptr, ERR_NOMANAGER_LONG, state->chptr->chname); } else { - send_reply(state->sptr, ERR_NOTMANAGER, state->chptr->chname, - "Re-create the channel. The channel must be *empty* for", - "at least a whole minute", "before it can be recreated."); + send_reply(state->sptr, ERR_NOMANAGER_SHORT, state->chptr->chname); } return; } - + if (state->done & DONE_APASS) /* allow apass to be set only once */ return; state->done |= DONE_APASS; @@ -2764,25 +2764,14 @@ /* Make it VERY clear to the user that this is a one-time password */ ircd_strncpy(state->chptr->mode.apass, t_str, PASSLEN); if (MyUser(state->sptr)) { - send_reply(state->sptr, RPL_APASSWARN, - "Channel Admin password (+A) set to '", state->chptr->mode.apass, "'. ", - "Are you SURE you want to use this as Admin password? ", - "You will NOT be able to change this password anymore once the channel is more than 48 hours old!"); - send_reply(state->sptr, RPL_APASSWARN, - "Use \"/MODE ", state->chptr->chname, " -A ", state->chptr->mode.apass, - "\" to remove the password and then immediately set a new one. " - "IMPORTANT: YOU CANNOT RECOVER THIS PASSWORD, EVER; " - "WRITE THE PASSWORD DOWN (don't store this rescue password on disk)! " - "Now set the channel user password (+U)."); + send_reply(state->sptr, RPL_APASSWARN_SET, state->chptr->mode.apass); + send_reply(state->sptr, RPL_APASSWARN_SECRET, state->chptr->chname, + state->chptr->mode.apass); } } else { /* remove the old apass */ *state->chptr->mode.apass = '\0'; if (MyUser(state->sptr)) - send_reply(state->sptr, RPL_APASSWARN, - "WARNING: You removed the channel Admin password MODE (+A). ", - "If you would disconnect or leave the channel without setting a new password then you will ", - "not be able to set it again and lose ownership of this channel! ", - "SET A NEW PASSWORD NOW!", ""); + send_reply(state->sptr, RPL_APASSWARN_CLEAR); } } } Index: ircd-ircdev/ircd/ircd.c diff -u ircd-ircdev/ircd/ircd.c:1.14 ircd-ircdev/ircd/ircd.c:1.15 --- ircd-ircdev/ircd/ircd.c:1.14 Wed Mar 23 10:34:47 2005 +++ ircd-ircdev/ircd/ircd.c Mon Apr 11 01:45:00 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Entry point and other initialization functions for the daemon. - * @version $Id: ircd.c,v 1.14 2005/03/23 18:34:47 zolty Exp $ + * @version $Id: ircd.c,v 1.15 2005/04/11 08:45:00 zolty Exp $ */ #include "config.h" @@ -72,6 +72,9 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#ifdef HAVE_SYS_RESOURCE_H +#include <sys/resource.h> +#endif #include <sys/socket.h> #include <sys/stat.h> #include <sys/types.h> @@ -111,6 +114,7 @@ int debuglevel = -1; /**< Server debug level */ char *debugmode = ""; /**< Server debug level */ static ... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-04-02 19:49:26
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-02 19:49:20 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.15 ircd-ircdev/TODO.es:1.16 --- ircd-ircdev/TODO.es:1.15 Thu Mar 31 05:12:02 2005 +++ ircd-ircdev/TODO.es Sat Apr 2 11:49:09 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.15 2005/03/31 13:12:02 zolty Exp $ +# $Id: TODO.es,v 1.16 2005/04/02 19:49:09 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -9,6 +9,7 @@ URGENTE -------------------------------------------------------------------------------------- - [D] Implementar el protocolo DDB. + - [D] Implementar tabla i de Ilines - [D] Implementar tabla o de Operadores - [D] Implementar tabla p de Privilegios - [D] Implementar tabla f de Features @@ -57,7 +58,6 @@ - [G] Mirar si el aviso de invites lo haga con wallchops o con raw. - [D] Documentar para Doxygen el Watch y el DDB - [G] Soporte de +e (exceptions) de canales - - [G] STATS J para listar nicks en jupe - [G] Modo de canal +u de esconder mensajes de quit y part (evitar publicidad) - [G] Sistema de modulos dinámicos ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-04-02 19:47:56
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-04-02 19:47:45 UTC Modified files: ChangeLog ChangeLog.es doc/ircd.sample-en.conf doc/ircd.sample-es.conf include/client.h include/handlers.h include/hash.h include/ircd_features.h include/msg.h include/numeric.h include/patchlevel.h include/s_conf.h include/struct.h ircd/channel.c ircd/engine_kqueue.c ircd/hash.c ircd/ircd_events.c ircd/ircd_features.c ircd/ircd_lexer.l ircd/ircd_parser.y ircd/ircd_res.c ircd/m_burst.c ircd/m_part.c ircd/m_privs.c ircd/m_server.c ircd/parse.c ircd/s_bsd.c ircd/s_err.c ircd/s_misc.c ircd/s_serv.c ircd/s_stats.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-04-02 Toni García <zo...@ir...> 1.0.alpha24 * STATS J para jupe de nicks * PRIVS remoto * Correccion de Bugs * Sincronización Undernet ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.25 ircd-ircdev/ChangeLog:1.26 --- ircd-ircdev/ChangeLog:1.25 Thu Mar 31 04:58:01 2005 +++ ircd-ircdev/ChangeLog Sat Apr 2 11:47:33 2005 @@ -1,10 +1,16 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.25 2005/03/31 12:58:01 zolty Exp $ +# $Id: ChangeLog,v 1.26 2005/04/02 19:47:33 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-04-02 Toni García <zo...@ir...> 1.0.alpha24 + * STATS J for jupe nicks + * PRIVS remote + * Fix bugs + * Undernet synchronization + 2005-03-30 Toni García <zo...@ir...> 1.0.alpha23 * Table n (NICKDB) support * Usermode +r Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.25 ircd-ircdev/ChangeLog.es:1.26 --- ircd-ircdev/ChangeLog.es:1.25 Thu Mar 31 04:58:01 2005 +++ ircd-ircdev/ChangeLog.es Sat Apr 2 11:47:33 2005 @@ -1,10 +1,16 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.25 2005/03/31 12:58:01 zolty Exp $ +# $Id: ChangeLog.es,v 1.26 2005/04/02 19:47:33 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-04-02 Toni García <zo...@ir...> 1.0.alpha24 + * STATS J para jupe de nicks + * PRIVS remoto + * Correccion de Bugs + * Sincronización Undernet + 2005-03-30 Toni García <zo...@ir...> 1.0.alpha23 * Soporte de tabla n (NICKDB) * Modo de usuario +r Index: ircd-ircdev/doc/ircd.sample-en.conf diff -u ircd-ircdev/doc/ircd.sample-en.conf:1.15 ircd-ircdev/doc/ircd.sample-en.conf:1.16 --- ircd-ircdev/doc/ircd.sample-en.conf:1.15 Mon Mar 21 09:26:29 2005 +++ ircd-ircdev/doc/ircd.sample-en.conf Sat Apr 2 11:47:33 2005 @@ -811,6 +811,7 @@ # "HIS_STATS_h" = "TRUE"; # "HIS_STATS_i" = "TRUE"; # "HIS_STATS_j" = "TRUE"; +# "HIS_STATS_J" = "TRUE"; # "HIS_STATS_k" = "TRUE"; # "HIS_STATS_l" = "TRUE"; # "HIS_STATS_L" = "TRUE"; Index: ircd-ircdev/doc/ircd.sample-es.conf diff -u ircd-ircdev/doc/ircd.sample-es.conf:1.11 ircd-ircdev/doc/ircd.sample-es.conf:1.12 --- ircd-ircdev/doc/ircd.sample-es.conf:1.11 Mon Mar 21 09:26:31 2005 +++ ircd-ircdev/doc/ircd.sample-es.conf Sat Apr 2 11:47:33 2005 @@ -848,6 +848,7 @@ # "HIS_STATS_h" = "TRUE"; # "HIS_STATS_i" = "TRUE"; # "HIS_STATS_j" = "TRUE"; +# "HIS_STATS_J" = "TRUE"; # "HIS_STATS_k" = "TRUE"; # "HIS_STATS_l" = "TRUE"; # "HIS_STATS_L" = "TRUE"; Index: ircd-ircdev/include/client.h diff -u ircd-ircdev/include/client.h:1.13 ircd-ircdev/include/client.h:1.14 --- ircd-ircdev/include/client.h:1.13 Thu Mar 31 04:58:02 2005 +++ ircd-ircdev/include/client.h Sat Apr 2 11:47:34 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Structures and functions for handling local clients. - * @version $Id: client.h,v 1.13 2005/03/31 12:58:02 zolty Exp $ + * @version $Id: client.h,v 1.14 2005/04/02 19:47:34 zolty Exp $ */ #ifndef INCLUDED_client_h #define INCLUDED_client_h @@ -277,7 +277,7 @@ struct irc_in_addr cli_ip; /**< Real IP of client */ short cli_status; /**< Client type */ char cli_name[HOSTLEN + 1]; /**< Unique name of the client, nick or host */ - char cli_username[USERLEN + 1]; /**< username here now for auth stuff */ + char cli_username[USERLEN + 1]; /**< Username determined by ident lookup */ char cli_info[REALLEN + 1]; /**< Free form additional client information */ }; Index: ircd-ircdev/include/handlers.h diff -u ircd-ircdev/include/handlers.h:1.11 ircd-ircdev/include/handlers.h:1.12 --- ircd-ircdev/include/handlers.h:1.11 Thu Mar 31 04:58:02 2005 +++ ircd-ircdev/include/handlers.h Sat Apr 2 11:47:34 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Declarations for all protocol message handler functions. - * @version $Id: handlers.h,v 1.11 2005/03/31 12:58:02 zolty Exp $ + * @version $Id: handlers.h,v 1.12 2005/04/02 19:47:34 zolty Exp $ */ #ifndef INCLUDED_handlers_h #define INCLUDED_handlers_h @@ -229,6 +229,7 @@ extern int ms_ping(struct Client*, struct Client*, int, char*[]); extern int ms_pong(struct Client*, struct Client*, int, char*[]); extern int ms_privmsg(struct Client*, struct Client*, int, char*[]); +extern int ms_privs(struct Client*, struct Client*, int, char*[]); extern int ms_quit(struct Client*, struct Client*, int, char*[]); extern int ms_rping(struct Client*, struct Client*, int, char*[]); extern int ms_rpong(struct Client*, struct Client*, int, char*[]); Index: ircd-ircdev/include/hash.h diff -u ircd-ircdev/include/hash.h:1.6 ircd-ircdev/include/hash.h:1.7 --- ircd-ircdev/include/hash.h:1.6 Wed Mar 23 10:34:25 2005 +++ ircd-ircdev/include/hash.h Sat Apr 2 11:47:34 2005 @@ -22,13 +22,14 @@ */ /** @file * @brief Hash table management APIs. - * @version $Id: hash.h,v 1.6 2005/03/23 18:34:25 zolty Exp $ + * @version $Id: hash.h,v 1.7 2005/04/02 19:47:34 zolty Exp $ */ #ifndef INCLUDED_hash_h #define INCLUDED_hash_h struct Client; struct Channel; +struct StatDesc; struct Watch; /* @@ -98,6 +99,8 @@ extern int isNickJuped(const char *nick); extern int addNickJupes(const char *nicks); extern void clearNickJupes(void); +extern void stats_nickjupes(struct Client* to, const struct StatDesc* sd, + char* param); extern void list_next_channels(struct Client *cptr); #endif /* INCLUDED_hash_h */ Index: ircd-ircdev/include/ircd_features.h diff -u ircd-ircdev/include/ircd_features.h:1.11 ircd-ircdev/include/ircd_features.h:1.12 --- ircd-ircdev/include/ircd_features.h:1.11 Thu Mar 31 04:58:02 2005 +++ ircd-ircdev/include/ircd_features.h Sat Apr 2 11:47:34 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Public interfaces and declarations for dealing with configurable features. - * @version $Id: ircd_features.h,v 1.11 2005/03/31 12:58:02 zolty Exp $ + * @version $Id: ircd_features.h,v 1.12 2005/04/02 19:47:34 zolty Exp $ */ #ifndef INCLUDED_features_h #define INCLUDED_features_h @@ -112,28 +112,29 @@ FEAT_HIS_MAP, FEAT_HIS_LINKS, FEAT_HIS_TRACE, - FEAT_HIS_STATS_l, - FEAT_HIS_STATS_L, FEAT_HIS_STATS_a, #if defined(DDB) FEAT_HIS_STATS_b, #endif FEAT_HIS_STATS_c, + FEAT_HIS_STATS_d, + FEAT_HIS_STATS_e, + FEAT_HIS_STATS_f, FEAT_HIS_STATS_g, FEAT_HIS_STATS_h, - FEAT_HIS_STATS_k, - FEAT_HIS_STATS_f, FEAT_HIS_STATS_i, FEAT_HIS_STATS_j, - FEAT_HIS_STATS_M, + FEAT_HIS_STATS_J, + FEAT_HIS_STATS_k, + FEAT_HIS_STATS_l, + FEAT_HIS_STATS_L, FEAT_HIS_STATS_m, + FEAT_HIS_STATS_M, FEAT_HIS_STATS_o, FEAT_HIS_STATS_p, FEAT_HIS_STATS_q, - FEAT_HIS_STATS_R, FEAT_HIS_STATS_r, - FEAT_HIS_STATS_d, - FEAT_HIS_STATS_e, + FEAT_HIS_STATS_R, FEAT_HIS_STATS_t, FEAT_HIS_STATS_T, FEAT_HIS_STATS_u, Index: ircd-ircdev/include/msg.h diff -u ircd-ircdev/include/msg.h:1.11 ircd-ircdev/include/msg.h:1.12 --- ircd-ircdev/include/msg.h:1.11 Thu Mar 31 04:58:02 2005 +++ ircd-ircdev/include/msg.h Sat Apr 2 11:47:34 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Command and token declarations and structures. - * @version $Id: msg.h,v 1.11 2005/03/31 12:58:02 zolty Exp $ + * @version $Id: msg.h,v 1.12 2005/04/02 19:47:34 zolty Exp $ */ #ifndef INCLUDED_msg_h #define INCLUDED_msg_h @@ -360,7 +360,8 @@ #define TOK_GET "GET" #define MSG_PRIVS "PRIVS" /* PRIV */ -#define TOK_PRIVS "PRIVS" +#define TOK_PRIVS "PR" +#define CMD_PRIVS MSG_PRIVS, TOK_PRIVS #define MSG_CAP "CAP" #define TOK_CAP "CAP" Index: ircd-ircdev/include/numeric.h diff -u ircd-ircdev/include/numeric.h:1.10 ircd-ircdev/include/numeric.h:1.11 --- ircd-ircdev/include/numeric.h:1.10 Thu Mar 31 04:58:02 2005 +++ ircd-ircdev/include/numeric.h Sat Apr 2 11:47:34 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Declarations of numeric replies and supporting functions. - * @version $Id: numeric.h,v 1.10 2005/03/31 12:58:02 zolty Exp $ + * @version $Id: numeric.h,v 1.11 2005/04/02 19:47:34 zolty Exp $ */ #ifndef INCLUDED_numeric_h #define INCLUDED_numeric_h @@ -97,7 +97,7 @@ #define RPL_STATSNLINE 214 /* unused */ #define RPL_STATSILINE 215 #define RPL_STATSKLINE 216 -#define RPL_STATSPLINE 217 /* Undernet extenstion */ +#define RPL_STATSPLINE 217 /* Undernet extension */ /* RPL_STATSQLINE 217 Various */ #define RPL_STATSYLINE 218 #define RPL_ENDOFSTATS 219 /* See also RPL_STATSDLINE */ @@ -106,6 +106,7 @@ /* RPL_STATSBLINE 220 Numerics List: Dalnet,unreal */ #define RPL_UMODEIS 221 /* RPL_SQLINE_NICK 222 Numerics List: Dalnet */ +#define RPL_STATSJLINE 222 /* Undernet extension */ /* RPL_STATSELINE 223 dalnet */ /* RPL_STATSGLINE 223 unreal */ /* RPL_STATSFLINE 224 Hybrid extension,Dalnet */ Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.25 ircd-ircdev/include/patchlevel.h:1.26 --- ircd-ircdev/include/patchlevel.h:1.25 Thu Mar 31 04:58:03 2005 +++ ircd-ircdev/include/patchlevel.h Sat Apr 2 11:47:34 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.25 2005/03/31 12:58:03 zolty Exp $ + * $Id: patchlevel.h,v 1.26 2005/04/02 19:47:34 zolty Exp $ * */ -#define PATCHLEVEL ".alpha23" +#define PATCHLEVEL ".alpha24" #define RELEASE "1.0" Index: ircd-ircdev/include/s_conf.h diff -u ircd-ircdev/include/s_conf.h:1.8 ircd-ircdev/include/s_conf.h:1.9 --- ircd-ircdev/include/s_conf.h:1.8 Mon Jan 10 04:22:00 2005 +++ ircd-ircdev/include/s_conf.h Sat Apr 2 11:47:34 2005 @@ -21,7 +21,7 @@ */ /** @file s_conf.h * @brief ircd configuration file API. - * @version $Id: s_conf.h,v 1.8 2005/01/10 12:22:00 zolty Exp $ + * @version $Id: s_conf.h,v 1.9 2005/04/02 19:47:34 zolty Exp $ */ #ifndef INCLUDED_s_conf_h #define INCLUDED_s_conf_h @@ -156,6 +156,8 @@ char nick[1]; /**< start of nick\@server string */ }; +#define SMAP_FAST 1 /**< Command does not have MFLG_SLOW. */ + /** Target set for a service pseudo-command. */ struct s_map { struct s_map *next; /**< Next element in #GlobalServiceMapList. */ @@ -163,6 +165,7 @@ char *name; /**< Text name of the mapping. */ char *command; /**< Command name to use. */ char *prepend; /**< Extra text to prepend to user's text. */ + unsigned int flags; /**< Bitwise map of SMAP_* flags. */ struct nick_host *services; /**< Linked list of possible targets. */ }; Index: ircd-ircdev/include/struct.h diff -u ircd-ircdev/include/struct.h:1.8 ircd-ircdev/include/struct.h:1.9 --- ircd-ircdev/include/struct.h:1.8 Wed Mar 23 10:34:27 2005 +++ ircd-ircdev/include/struct.h Sat Apr 2 11:47:34 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief Structure definitions for users and servers. - * @version $Id: struct.h,v 1.8 2005/03/23 18:34:27 zolty Exp $ + * @version $Id: struct.h,v 1.9 2005/04/02 19:47:34 zolty Exp $ */ #ifndef INCLUDED_struct_h #define INCLUDED_struct_h @@ -82,7 +82,12 @@ unsigned int joined; /**< number of channels joined */ unsigned int invites; /**< Number of channels we've been invited to */ unsigned int watches; /**< Number of entrances in the watch list */ - char username[USERLEN + 1]; /**< remote account name */ + /** Remote account name. Before registration is complete, this is + * either empty or contains the username from the USER command. + * After registration, that may be prefixed with ~ or it may be + * overwritten with the ident response. + */ + char username[USERLEN + 1]; char host[HOSTLEN + 1]; /**< displayed hostname */ char realhost[HOSTLEN + 1]; /**< actual hostname */ #if defined(UNDERNET) Index: ircd-ircdev/ircd/channel.c diff -u ircd-ircdev/ircd/channel.c:1.15 ircd-ircdev/ircd/channel.c:1.16 --- ircd-ircdev/ircd/channel.c:1.15 Mon Mar 21 10:39:05 2005 +++ ircd-ircdev/ircd/channel.c Sat Apr 2 11:47:34 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Channel management and maintanance - * @version $Id: channel.c,v 1.15 2005/03/21 18:39:05 zolty Exp $ + * @version $Id: channel.c,v 1.16 2005/04/02 19:47:34 zolty Exp $ */ #include "config.h" @@ -996,7 +996,7 @@ * Do we have a nick with a new mode ? * Or are we starting a new BURST line? */ - if (new_mode || !feat_oplevels) + if (new_mode) { /* * This means we are at the _first_ member that has only @@ -1024,7 +1024,7 @@ msgq_append(&me, mb, tbuf); new_mode = 0; } - else if (flag_cnt > 1 && last_oplevel != member->oplevel) + else if (feat_oplevels && flag_cnt > 1 && last_oplevel != member->oplevel) { /* * This can't be the first member of a (continued) BURST Index: ircd-ircdev/ircd/engine_kqueue.c diff -u ircd-ircdev/ircd/engine_kqueue.c:1.6 ircd-ircdev/ircd/engine_kqueue.c:1.7 --- ircd-ircdev/ircd/engine_kqueue.c:1.6 Wed Jan 26 09:19:47 2005 +++ ircd-ircdev/ircd/engine_kqueue.c Sat Apr 2 11:47:35 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief FreeBSD kqueue()/kevent() event engine. - * @version $Id: engine_kqueue.c,v 1.6 2005/01/26 17:19:47 zolty Exp $ + * @version $Id: engine_kqueue.c,v 1.7 2005/04/02 19:47:35 zolty Exp $ */ #include "config.h" @@ -301,11 +301,6 @@ dellist[1].data = 0; dellist[1].udata = 0; - /* make it all go away */ - if (kevent(kqueue_id, dellist, 2, 0, 0, 0) < 0) - log_write(LS_SOCKET, L_WARNING, 0, - "Unable to delete kevent items for socket %d", s_fd(sock)); - sockList[s_fd(sock)] = 0; } Index: ircd-ircdev/ircd/hash.c diff -u ircd-ircdev/ircd/hash.c:1.8 ircd-ircdev/ircd/hash.c:1.9 --- ircd-ircdev/ircd/hash.c:1.8 Wed Mar 23 10:34:47 2005 +++ ircd-ircdev/ircd/hash.c Sat Apr 2 11:47:35 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief Hash table management. - * @version $Id: hash.c,v 1.8 2005/03/23 18:34:47 zolty Exp $ + * @version $Id: hash.c,v 1.9 2005/04/02 19:47:35 zolty Exp $ * * This file used to use some very complicated hash function. Now it * uses CRC-32, but effectively remaps each input byte according to a @@ -479,6 +479,21 @@ jupeTable[i][0] = '\000'; } +/** Report all nick jupes to a user. + * @param[in] to Client requesting statistics. + * @param[in] sd Stats descriptor for request (ignored). + * @param[in] param Extra parameter from user (ignored). + */ +void +stats_nickjupes(struct Client* to, const struct StatDesc* sd, char* param) +{ + int i; + + for (i = 0; i < JUPEHASHSIZE; i++) + if (jupeTable[i][0]) + send_reply(to, RPL_STATSJLINE, jupeTable[i]); +} + /** Send more channels to a client in mid-LIST. * @param[in] cptr Client to send the list to. */ Index: ircd-ircdev/ircd/ircd_events.c diff -u ircd-ircdev/ircd/ircd_events.c:1.6 ircd-ircdev/ircd/ircd_events.c:1.7 --- ircd-ircdev/ircd/ircd_events.c:1.6 Mon Jan 10 04:22:59 2005 +++ ircd-ircdev/ircd/ircd_events.c Sat Apr 2 11:47:35 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of event loop mid-layer. - * @version $Id: ircd_events.c,v 1.6 2005/01/10 12:22:59 zolty Exp $ + * @version $Id: ircd_events.c,v 1.7 2005/04/02 19:47:35 zolty Exp $ */ #include "config.h" @@ -528,12 +528,20 @@ "timeout %Tu", timer, timer_to_name(timer->t_type), timer->t_value, timer_to_name(type), value)); - gen_dequeue(timer); /* remove the timer from the queue */ - timer->t_type = type; /* Set the new type and value */ timer->t_value = value; timer->t_expire = 0; + /* If the timer expiration callback tries to change the timer + * expiration, flag the timer but do not dequeue it yet. + */ + if (timer->t_header.gh_flags & GEN_MARKED) + { + timer->t_header.gh_flags |= GEN_READD; + return; + } + gen_dequeue(timer); /* remove the timer from the queue */ + timer_enqueue(timer); /* re-queue the timer */ } Index: ircd-ircdev/ircd/ircd_features.c diff -u ircd-ircdev/ircd/ircd_features.c:1.13 ircd-ircdev/ircd/ircd_features.c:1.14 --- ircd-ircdev/ircd/ircd_features.c:1.13 Thu Mar 31 04:58:04 2005 +++ ircd-ircdev/ircd/ircd_features.c Sat Apr 2 11:47:35 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of configurable feature support. - * @version $Id: ircd_features.c,v 1.13 2005/03/31 12:58:04 zolty Exp $ + * @version $Id: ircd_features.c,v 1.14 2005/04/02 19:47:35 zolty Exp $ */ #include "config.h" @@ -352,28 +352,29 @@ F_B(HIS_MAP, 0, 1, 0), F_B(HIS_LINKS, 0, 1, 0), F_B(HIS_TRACE, 0, 1, 0), - F_B(HIS_STATS_l, 0, 1, 0), - F_B(HIS_STATS_L, 0, 1, 0), F_B(HIS_STATS_a, 0, 1, 0), #if defined(DDB) F_B(HIS_STATS_b, 0, 1, 0), #endif F_B(HIS_STATS_c, 0, 1, 0), + F_B(HIS_STATS_d, 0, 1, 0), + F_B(HIS_STATS_e, 0, 1, 0), + F_B(HIS_STATS_f, 0, 1, 0), F_B(HIS_STATS_g, 0, 1, 0), F_B(HIS_STATS_h, 0, 1, 0), - F_B(HIS_STATS_k, 0, 1, 0), - F_B(HIS_STATS_f, 0, 1, 0), F_B(HIS_STATS_i, 0, 1, 0), F_B(HIS_STATS_j, 0, 1, 0), - F_B(HIS_STATS_M, 0, 1, 0), + F_B(HIS_STATS_J, 0, 1, 0), + F_B(HIS_STATS_k, 0, 1, 0), + F_B(HIS_STATS_l, 0, 1, 0), + F_B(HIS_STATS_L, 0, 1, 0), F_B(HIS_STATS_m, 0, 1, 0), + F_B(HIS_STATS_M, 0, 1, 0), F_B(HIS_STATS_o, 0, 1, 0), F_B(HIS_STATS_p, 0, 1, 0), F_B(HIS_STATS_q, 0, 1, 0), - F_B(HIS_STATS_R, 0, 1, 0), F_B(HIS_STATS_r, 0, 1, 0), - F_B(HIS_STATS_d, 0, 1, 0), - F_B(HIS_STATS_e, 0, 1, 0), + F_B(HIS_STATS_R, 0, 1, 0), F_B(HIS_STATS_t, 0, 1, 0), F_B(HIS_STATS_T, 0, 1, 0), F_B(HIS_STATS_u, 0, 0, 0), Index: ircd-ircdev/ircd/ircd_lexer.l diff -u ircd-ircdev/ircd/ircd_lexer.l:1.10 ircd-ircdev/ircd/ircd_lexer.l:1.11 --- ircd-ircdev/ircd/ircd_lexer.l:1.10 Wed Mar 9 10:12:34 2005 +++ ircd-ircdev/ircd/ircd_lexer.l Sat Apr 2 11:47:35 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_lexer.l,v 1.10 2005/03/09 18:12:34 zolty Exp $ + * $Id: ircd_lexer.l,v 1.11 2005/04/02 19:47:35 zolty Exp $ * */ @@ -100,6 +100,7 @@ TOKEN(PSEUDO), TOKEN(PREPEND), TOKEN(USERMODE), + TOKEN(FAST), #undef TOKEN { "administrator", ADMIN }, { "apass_opmode", TPRIV_APASS_OPMODE }, Index: ircd-ircdev/ircd/ircd_parser.y diff -u ircd-ircdev/ircd/ircd_parser.y:1.15 ircd-ircdev/ircd/ircd_parser.y:1.16 --- ircd-ircdev/ircd/ircd_parser.y:1.15 Mon Mar 21 10:39:07 2005 +++ ircd-ircdev/ircd/ircd_parser.y Sat Apr 2 11:47:35 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ircd_parser.y,v 1.15 2005/03/21 18:39:07 zolty Exp $ + * $Id: ircd_parser.y,v 1.16 2005/04/02 19:47:35 zolty Exp $ * */ %{ @@ -158,6 +158,7 @@ %token USERMODE %token IAUTH %token TIMEOUT +%token FAST /* and now a lot of privileges... */ %token TPRIV_CHAN_LIMIT TPRIV_MODE_LCHAN TPRIV_DEOP_LCHAN TPRIV_WALK_LCHAN %token TPRIV_LOCAL_KILL TPRIV_REHASH TPRIV_RESTART TPRIV_DIE @@ -945,7 +946,7 @@ }; pseudoitems: pseudoitem pseudoitems | pseudoitem; -pseudoitem: pseudoname | pseudoprepend | pseudonick | error; +pseudoitem: pseudoname | pseudoprepend | pseudonick | pseudoflags | error; pseudoname: NAME '=' QSTRING ';' { DupString(smap->name, $3); @@ -967,6 +968,10 @@ smap->services = nh; } }; +pseudoflags: FAST ';' +{ + smap->flags |= SMAP_FAST; +}; iauthblock: IAUTH '{' { Index: ircd-ircdev/ircd/ircd_res.c diff -u ircd-ircdev/ircd/ircd_res.c:1.7 ircd-ircdev/ircd/ircd_res.c:1.8 --- ircd-ircdev/ircd/ircd_res.c:1.7 Mon Mar 21 10:39:08 2005 +++ ircd-ircdev/ircd/ircd_res.c Sat Apr 2 11:47:35 2005 @@ -41,7 +41,7 @@ */ /** @file * @brief IRC resolver functions. - * @version $Id: ircd_res.c,v 1.7 2005/03/21 18:39:08 zolty Exp $ + * @version $Id: ircd_res.c,v 1.8 2005/04/02 19:47:35 zolty Exp $ */ #include "client.h" #include "ircd_alloc.h" @@ -300,23 +300,30 @@ { if (when > CurrentTime + AR_TTL) when = CurrentTime + AR_TTL; - if (!t_active(&res_timeout) || !t_onqueue(&res_timeout)) + /* TODO after 2.10.12: Rewrite the timer API because there should be + * no need for clients to know this kind of implementation detail. */ + if (when > t_expire(&res_timeout)) + /* do nothing */; + else if (t_onqueue(&res_timeout) && !(res_timeout.t_header.gh_flags & GEN_MARKED)) + timer_chg(&res_timeout, TT_ABSOLUTE, when); + else timer_add(&res_timeout, timeout_resolver, NULL, TT_ABSOLUTE, when); - else if (when < t_expire(&res_timeout)) - timer_chg(&res_timeout, TT_ABSOLUTE, when); } /** Drop pending DNS lookups which have timed out. - * @param[in] notused Timer event data (ignored). + * @param[in] ev Timer event data (ignored). */ static void -timeout_resolver(struct Event *notused) +timeout_resolver(struct Event *ev) { struct dlink *ptr, *next_ptr; struct reslist *request; time_t next_time = 0; time_t timeout = 0; + if (ev_type(ev) != ET_EXPIRE) + return; + for (ptr = request_list.next; ptr != &request_list; ptr = next_ptr) { next_ptr = ptr->next; @@ -531,6 +538,7 @@ if (request == NULL) { request = make_request(query); + request->state= REQ_PTR; request->type = T_PTR; memcpy(&request->addr, addr, sizeof(request->addr)); request->name = (char *)MyMalloc(HOSTLEN + 1); @@ -822,7 +830,7 @@ * If a bad error was returned, we stop here and don't send * send any more (no retries granted). */ - Debug((DEBUG_DNS, "Request %p has bad response (state %d type %d)", request, request->state, request->type)); + Debug((DEBUG_DNS, "Request %p has bad response (state %d type %d rcode %d)", request, request->state, request->type, header->rcode)); (*request->query.callback)(request->query.vptr, 0); rem_request(request); } Index: ircd-ircdev/ircd/m_burst.c diff -u ircd-ircdev/ircd/m_burst.c:1.8 ircd-ircdev/ircd/m_burst.c:1.9 --- ircd-ircdev/ircd/m_burst.c:1.8 Mon Mar 21 10:39:08 2005 +++ ircd-ircdev/ircd/m_burst.c Sat Apr 2 11:47:35 2005 @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_burst.c,v 1.8 2005/03/21 18:39:08 zolty Exp $ + * $Id: m_burst.c,v 1.9 2005/04/02 19:47:35 zolty Exp $ * */ @@ -300,6 +300,26 @@ modebuf_mode(mbuf, MODE_DEL | chptr->mode.mode); /* wipeout modes */ chptr->mode.mode &= MODE_BURSTADDED | MODE_WASDELJOINS; + /* wipe out modes not represented in chptr->mode.mode */ + if (chptr->mode.limit) { + modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, chptr->mode.limit); + chptr->mode.limit = 0; + } + if (chptr->mode.key[0]) { + modebuf_mode_string(mbuf, MODE_DEL | MODE_KEY, chptr->mode.key, 0); + chptr->mode.key[0] = '\0'; + } +#if defined(UNDERNET) + if (chptr->mode.upass[0]) { + modebuf_mode_string(mbuf, MODE_DEL | MODE_UPASS, chptr->mode.upass, 0); + chptr->mode.upass[0] = '\0'; + } + if (chptr->mode.apass[0]) { + modebuf_mode_string(mbuf, MODE_DEL | MODE_APASS, chptr->mode.apass, 0); + chptr->mode.apass[0] = '\0'; + } +#endif + parse_flags |= (MODE_PARSE_SET | MODE_PARSE_WIPEOUT); /* wipeout keys */ /* mark bans for wipeout */ @@ -489,7 +509,12 @@ if (current_mode & CHFL_VOICE) nickstr[nickpos++] = 'v'; if (current_mode & CHFL_CHANOP) - nickpos += ircd_snprintf(0, nickstr + nickpos, sizeof(nickstr) - nickpos, "%u", oplevel); + { + if (chptr->mode.apass[0]) + nickpos += ircd_snprintf(0, nickstr + nickpos, sizeof(nickstr) - nickpos, "%u", oplevel); + else + nickstr[nickpos++] = 'o'; + } } else if (current_mode & CHFL_CHANOP && oplevel != last_oplevel) { /* if just op level changed... */ nickstr[nickpos++] = ':'; /* add a specifier */ nickpos += ircd_snprintf(0, nickstr + nickpos, sizeof(nickstr) - nickpos, "%u", oplevel - last_oplevel); Index: ircd-ircdev/ircd/m_part.c diff -u ircd-ircdev/ircd/m_part.c:1.6 ircd-ircdev/ircd/m_part.c:1.7 --- ircd-ircdev/ircd/m_part.c:1.6 Mon Jan 10 04:23:02 2005 +++ ircd-ircdev/ircd/m_part.c Sat Apr 2 11:47:35 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_part.c,v 1.6 2005/01/10 12:23:02 zolty Exp $ + * $Id: m_part.c,v 1.7 2005/04/02 19:47:35 zolty Exp $ * */ @@ -200,14 +200,6 @@ if (IsDelayedJoin(member)) flags |= CHFL_DELAYED; - /* - * XXX BUG: If a client /part's with a part notice, on channels where - * he's banned, local clients will not see the part notice, but remote - * clients will. - */ - if (!member_can_send_to_channel(member, 0)) - flags |= CHFL_BANNED; - /* part user from channel */ joinbuf_join(&parts, chptr, flags); } Index: ircd-ircdev/ircd/m_privs.c diff -u ircd-ircdev/ircd/m_privs.c:1.4 ircd-ircdev/ircd/m_privs.c:1.5 --- ircd-ircdev/ircd/m_privs.c:1.4 Mon Jan 10 04:23:02 2005 +++ ircd-ircdev/ircd/m_privs.c Sat Apr 2 11:47:35 2005 @@ -18,65 +18,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_privs.c,v 1.4 2005/01/10 12:23:02 zolty Exp $ - * */ - -/* - * m_functions execute protocol messages on this server: - * - * cptr is always NON-NULL, pointing to a *LOCAL* client - * structure (with an open socket connected!). This - * identifies the physical socket where the message - * originated (or which caused the m_function to be - * executed--some m_functions may call others...). - * - * sptr is the source of the message, defined by the - * prefix part of the message if present. If not - * or prefix not found, then sptr==cptr. - * - * (!IsServer(cptr)) => (cptr == sptr), because - * prefixes are taken *only* from servers... - * - * (IsServer(cptr)) - * (sptr == cptr) => the message didn't - * have the prefix. - * - * (sptr != cptr && IsServer(sptr) means - * the prefix specified servername. (?) - * - * (sptr != cptr && !IsServer(sptr) means - * that message originated from a remote - * user (not local). - * - * combining - * - * (!IsServer(sptr)) means that, sptr can safely - * taken as defining the target structure of the - * message in this server. - * - * *Always* true (if 'parse' and others are working correct): - * - * 1) sptr->from == cptr (note: cptr->from == cptr) - * - * 2) MyConnect(sptr) <=> sptr == cptr (e.g. sptr - * *cannot* be a local connection, unless it's - * actually cptr!). [MyConnect(x) should probably - * be defined as (x == x->from) --msa ] - * - * parc number of variable parameter strings (if zero, - * parv is allowed to be NULL) - * - * parv a NULL terminated list of parameter pointers, - * - * parv[0], sender (prefix string), if not present - * this points to an empty string. - * parv[1]...parv[parc-1] - * pointers to additional parameters - * parv[parc] == NULL, *always* - * - * note: it is guaranteed that parv[0]..parv[parc-1] are all - * non-NULL pointers. +/** @file + * @brief Report operators' privileges to others + * @version $Id: m_privs.c,v 1.5 2005/04/02 19:47:35 zolty Exp $ */ #include "config.h" @@ -86,14 +31,19 @@ #include "ircd_log.h" #include "ircd_reply.h" #include "ircd_string.h" +#include "msg.h" #include "numeric.h" #include "numnicks.h" #include "send.h" /* #include <assert.h> -- Now using assert in ircd_log.h */ -/* - * mo_privs - report operator privileges +/** Handle a local operator's privilege query. + * @param[in] cptr Client that sent us the message. + * @param[in] sptr Original source of message. + * @param[in] parc Number of arguments. + * @param[in] parv Argument vector. + * @see \ref m_functions */ int mo_privs(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { @@ -108,10 +58,46 @@ for (i = 1; i < parc; i++) { for (name = ircd_strtok(&p, parv[i], " "); name; name = ircd_strtok(&p, 0, " ")) { - if ((acptr = FindUser(name))) + if (!(acptr = FindUser(name))) + continue; + else if (MyUser(acptr)) client_report_privs(sptr, acptr); + else + sendcmdto_one(cptr, CMD_PRIVS, acptr, "%s%s", NumNick(acptr)); } } return 0; } + +/** Handle a remote user's privilege query. + * @param[in] cptr Client that sent us the message. + * @param[in] sptr Original source of message. + * @param[in] parc Number of arguments. + * @param[in] parv Argument vector. + * @see \ref m_functions + */ +int ms_privs(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) +{ + struct Client *acptr; + char *numnick, *p = 0; + int i; + + if (parc < 2) + return protocol_violation(cptr, "PRIVS with no arguments"); + + for (i = 1; i < parc; i++) { + for (numnick = ircd_strtok(&p, parv[i], " "); numnick; + numnick = ircd_strtok(&p, 0, " ")) { + if (!(acptr = findNUser(numnick))) + continue; + else if (MyUser(acptr)) + client_report_privs(sptr, acptr); + else + sendcmdto_one(cptr, CMD_PRIVS, acptr, "%s%s", NumNick(acptr)); + } + } + + return 0; +} + Index: ircd-ircdev/ircd/m_server.c diff -u ircd-ircdev/ircd/m_server.c:1.7 ircd-ircdev/ircd/m_server.c:1.8 --- ircd-ircdev/ircd/m_server.c:1.7 Mon Mar 21 10:39:08 2005 +++ ircd-ircdev/ircd/m_server.c Sat Apr 2 11:47:35 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Handlers for the SERVER command. - * @version $Id: m_server.c,v 1.7 2005/03/21 18:39:08 zolty Exp $ + * @version $Id: m_server.c,v 1.8 2005/04/02 19:47:35 zolty Exp $ */ #include "config.h" @@ -477,6 +477,20 @@ } } +/** Interpret a server's flags. + * + * @param[in] cptr New server structure. + * @param[in] flags String listing server's P10 flags. + */ +void set_server_flags(struct Client *cptr, const char *flags) +{ + while (*flags) switch (*flags++) { + case 'h': SetHub(cptr); break; + case 's': SetService(cptr); break; + case '6': SetIPv6(cptr); break; + } +} + /** Handle a SERVER message from an unregistered connection. * * \a parv has the following elements: @@ -497,7 +511,6 @@ */ int mr_server(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { - char* ch; char* host; struct ConfItem* aconf; struct Jupe* ajupe; @@ -615,17 +628,8 @@ /* Attach any necessary UWorld config items. */ attach_confs_byhost(cptr, host, CONF_UWORLD); - if (*parv[7] == '+') { - for (ch = parv[7] + 1; *ch; ch++) - switch (*ch) { - case 'h': - SetHub(cptr); - break; - case 's': - SetService(cptr); - break; - } - } + if (*parv[7] == '+') + set_server_flags(cptr, parv[7] + 1); recv_time = TStime(); check_start_timestamp(cptr, timestamp, start_timestamp, recv_time); @@ -664,7 +668,6 @@ */ int ms_server(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { - char* ch; int i; char* host; struct Client* acptr; @@ -739,17 +742,8 @@ /* Attach any necessary UWorld config items. */ attach_confs_byhost(cptr, host, CONF_UWORLD); - if (*parv[7] == '+') { - for (ch = parv[7] + 1; *ch; ch++) - switch (*ch) { - case 'h': - SetHub(acptr); - break; - case 's': - SetService(acptr); - break; - } - } + if (*parv[7] == '+') + set_server_flags(acptr, parv[7] + 1); Count_newremoteserver(UserStats); if (Protocol(acptr) < 10) @@ -759,9 +753,13 @@ if (*parv[5] == 'J') { SetBurst(acptr); - sendto_opmask_butone(0, SNO_NETWORK, "Net junction: %s %s", - cli_name(sptr), cli_name(acptr)); SetJunction(acptr); + for (bcptr = cli_serv(acptr)->up; !IsMe(bcptr); bcptr = cli_serv(bcptr)->up) + if (IsBurstOrBurstAck(bcptr)) + break; + if (IsMe(bcptr)) + sendto_opmask_butone(0, SNO_NETWORK, "Net junction: %s %s", + cli_name(sptr), cli_name(acptr)); } /* * Old sendto_serv_but_one() call removed because we now need to send @@ -774,10 +772,11 @@ continue; if (0 == match(cli_name(&me), cli_name(acptr))) continue; - sendcmdto_one(sptr, CMD_SERVER, bcptr, "%s %d 0 %s %s %s%s +%s%s :%s", + sendcmdto_one(sptr, CMD_SERVER, bcptr, "%s %d 0 %s %s %s%s +%s%s%s :%s", cli_name(acptr), hop + 1, parv[4], parv[5], NumServCap(acptr), IsHub(acptr) ? "h" : "", - IsService(acptr) ? "s" : "", cli_info(acptr)); + IsService(acptr) ? "s" : "", IsIPv6(acptr) ? "6" : "", + cli_info(acptr)); } return 0; } Index: ircd-ircdev/ircd/parse.c diff -u ircd-ircdev/ircd/parse.c:1.14 ircd-ircdev/ircd/parse.c:1.15 --- ircd-ircdev/ircd/parse.c:1.14 Thu Mar 31 04:58:04 2005 +++ ircd-ircdev/ircd/parse.c Sat Apr 2 11:47:35 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Parse input from IRC clients and other servers. - * @version $Id: parse.c,v 1.14 2005/03/31 12:58:04 zolty Exp $ + * @version $Id: parse.c,v 1.15 2005/04/02 19:47:35 zolty Exp $ */ #include "config.h" @@ -609,7 +609,7 @@ TOK_PRIVS, 0, MAXPARA, MFLG_SLOW, 0, NULL, /* UNREG, CLIENT, SERVER, OPER, SERVICE */ - { m_unregistered, m_not_oper, m_ignore, mo_privs, m_ignore } + { m_unregistered, m_not_oper, ms_privs, mo_privs, m_ignore } }, #if defined(UNDERNET) { @@ -792,18 +792,18 @@ msg->tok = map->command; msg->count = 0; msg->parameters = 2; - msg->flags = MFLG_SLOW | MFLG_EXTRA; + msg->flags = MFLG_EXTRA; + if (!(map->flags & SMAP_FAST)) + msg->flags |= MFLG_SLOW; msg->bytes = 0; msg->extra = map; msg->handlers[UNREGISTERED_HANDLER] = m_ignore; msg->handlers[CLIENT_HANDLER] = m_pseudo; msg->handlers[SERVER_HANDLER] = m_ignore; - msg->handlers[OPER_HANDLER] = m_pseudo; + msg->handlers[OPER_HANDLER] = m_pseudo; msg->handlers[SERVICE_HANDLER] = m_ignore; - /* Service mappings are only applicable to clients; insert the - pseudocommand into the command tree only. */ add_msg_element(&msg_tree, msg, msg->cmd); map->msg = msg; @@ -907,7 +907,7 @@ paramcount = mptr->parameters; i = bufend - ((s) ? s : ch); mptr->bytes += i; - if ((mptr->flags & MFLG_SLOW)) + if ((mptr->flags & MFLG_SLOW) || !IsAnOper(cptr)) cli_since(cptr) += (2 + i / 120); /* * Allow only 1 msg per 2 seconds Index: ircd-ircdev/ircd/s_bsd.c diff -u ircd-ircdev/ircd/s_bsd.c:1.12 ircd-ircdev/ircd/s_bsd.c:1.13 --- ircd-ircdev/ircd/s_bsd.c:1.12 Wed Mar 23 10:34:52 2005 +++ ircd-ircdev/ircd/s_bsd.c Sat Apr 2 11:47:35 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Functions that now (or in the past) relied on BSD APIs. - * @version $Id: s_bsd.c,v 1.12 2005/03/23 18:34:52 zolty Exp $ + * @version $Id: s_bsd.c,v 1.13 2005/04/02 19:47:35 zolty Exp $ */ #include "config.h" @@ -907,6 +907,11 @@ cli_error(cptr) = ev_data(ev); if (s_state(&(con_socket(con))) == SS_CONNECTING) { completed_connection(cptr); + /* for some reason, the os_get_sockerr() in completed_connect() + * can return 0 even when ev_data(ev) indicates a real error, so + * re-assign the client error here. + */ + cli_error(cptr) = ev_data(ev); break; } /*FALLTHROUGH*/ Index: ircd-ircdev/ircd/s_err.c diff -u ircd-ircdev/ircd/s_err.c:1.14 ircd-ircdev/ircd/s_err.c:1.15 --- ircd-ircdev/ircd/s_err.c:1.14 Thu Mar 31 04:58:04 2005 +++ ircd-ircdev/ircd/s_err.c Sat Apr 2 11:47:35 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Error handling support. - * @version $Id: s_err.c,v 1.14 2005/03/31 12:58:04 zolty Exp $ + * @version $Id: s_err.c,v 1.15 2005/04/02 19:47:35 zolty Exp $ */ #include "config.h" @@ -483,7 +483,7 @@ /* 221 */ { RPL_UMODEIS, "%s", "221" }, /* 222 */ - { 0 }, + { RPL_STATSJLINE, "J %s", "222" }, /* 223 */ { 0 }, /* 224 */ Index: ircd-ircdev/ircd/s_misc.c diff -u ircd-ircdev/ircd/s_misc.c:1.8 ircd-ircdev/ircd/s_misc.c:1.9 --- ircd-ircdev/ircd/s_misc.c:1.8 Mon Mar 21 10:39:12 2005 +++ ircd-ircdev/ircd/s_misc.c Sat Apr 2 11:47:35 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Miscellaneous support functions. - * @version $Id: s_misc.c,v 1.8 2005/03/21 18:39:12 zolty Exp $ + * @version $Id: s_misc.c,v 1.9 2005/04/02 19:47:35 zolty Exp $ */ #include "config.h" @@ -164,16 +164,12 @@ { static char nbuf[HOSTLEN * 2 + USERLEN + 5]; - if (MyConnect(sptr)) { - if (showip) - ircd_snprintf(0, nbuf, sizeof(nbuf), "%s[%s@%s]", cli_name(sptr), - IsIdented(sptr) ? cli_username(sptr) : "unknown", - cli_sock_ip(sptr)); - else - return cli_name(sptr); - return nbuf; - } - return cli_name(sptr); + if (!MyConnect(sptr) || !showip) + return cli_name(sptr); + ircd_snprintf(0, nbuf, sizeof(nbuf), "%s[%s@%s]", cli_name(sptr), + IsIdented(sptr) ? cli_username(sptr) : "", + cli_sock_ip(sptr)); + return nbuf; } /** Set cli_sockhost(cptr) from \a host. Index: ircd-ircdev/ircd/s_serv.c diff -u ircd-ircdev/ircd/s_serv.c:1.9 ircd-ircdev/ircd/s_serv.c:1.10 --- ircd-ircdev/ircd/s_serv.c:1.9 Wed Mar 23 10:34:52 2005 +++ ircd-ircdev/ircd/s_serv.c Sat Apr 2 11:47:35 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Miscellaneous server support functions. - * @version $Id: s_serv.c,v 1.9 2005/03/23 18:34:52 zolty Exp $ + * @version $Id: s_serv.c,v 1.10 2005/04/02 19:47:35 zolty Exp $ */ #include "config.h" @@ -203,10 +203,10 @@ if (!match(cli_name(&me), cli_name(cptr))) continue; sendcmdto_one(&me, CMD_SERVER, acptr, - "%s 2 0 %Tu J%02u %s%s +%s%s :%s", cli_name(cptr), + "%s 2 0 %Tu J%02u %s%s +%s%s%s :%s", cli_name(cptr), cli_serv(cptr)->timestamp, Protocol(cptr), NumServCap(cptr), IsHub(cptr) ? "h" : "", IsService(cptr) ? "s" : "", - cli_info(cptr)); + IsIPv6(cptr) ? "6" : "", cli_info(cptr)); } /* Send these as early as possible so that glined users/juped servers can @@ -246,11 +246,11 @@ if (0 == match(cli_name(&me), cli_name(acptr))) continue; sendcmdto_one(cli_serv(acptr)->up, CMD_SERVER, cptr, - "%s %d 0 %Tu %s%u %s%s +%s%s :%s", cli_name(acptr), + "%s %d 0 %Tu %s%u %s%s +%s%s%s :%s", cli_name(acptr), cli_hopcount(acptr) + 1, cli_serv(acptr)->timestamp, protocol_str, Protocol(acptr), NumServCap(acptr), IsHub(acptr) ? "h" : "", IsService(acptr) ? "s" : "", - cli_info(acptr)); + IsIPv6(acptr) ? "6" : "", cli_info(acptr)); } } Index: ircd-ircdev/ircd/s_stats.c diff -u ircd-ircdev/ircd/s_stats.c:1.10 ircd-ircdev/ircd/s_stats.c:1.11 --- ircd-ircdev/ircd/s_stats.c:1.10 Wed Mar 23 10:34:52 2005 +++ ircd-ircdev/ircd/s_stats.c Sat Apr 2 11:47:35 2005 @@ -22,7 +22,7 @@ /** @file * @brief Report configuration lines and other statistics from this * server. - * @version $Id: s_stats.c,v 1.10 2005/03/23 18:34:52 zolty Exp $ + * @version $Id: s_stats.c,v 1.11 2005/04/02 19:47:35 zolty Exp $ * * Note: The info is reported in the order the server uses * it--not reversed as in ircd.conf! @@ -34,6 +34,7 @@ #include "client.h" #include "ddb.h" #include "gline.h" +#include "hash.h" #include "ircd.h" #include "ircd_chattr.h" #include "ircd_crypt.h" @@ -532,9 +533,12 @@ { 'i', "access", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM), FEAT_HIS_STATS_i, stats_access, CONF_CLIENT, "Connection authorization lines." }, - { 'j', "histogram", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_j, + { 'j', "histogram", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_j, msgq_histogram, 0, "Message length histogram." }, + { 'J', "jupes", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_J, + stats_nickjupes, 0, + "Nickname jupes." }, { 'k', "klines", (STAT_FLAG_OPERFEAT | STAT_FLAG_VARPARAM), FEAT_HIS_STATS_k, stats_klines, 0, "Local bans (K-Lines)." }, @@ -574,7 +578,7 @@ "Local connection statistics (Total SND/RCV, etc)." }, { 'U', "uworld", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_U, stats_configured_links, CONF_UWORLD, - "Service server & nick jupes information." }, + "Service server information." }, { 'u', "uptime", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_u, stats_uptime, 0, "Current uptime & highest connection count." }, ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-03-31 13:12:33
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-03-31 13:12:12 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.14 ircd-ircdev/TODO.es:1.15 --- ircd-ircdev/TODO.es:1.14 Mon Mar 28 04:35:55 2005 +++ ircd-ircdev/TODO.es Thu Mar 31 05:12:02 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.14 2005/03/28 12:35:55 zolty Exp $ +# $Id: TODO.es,v 1.15 2005/03/31 13:12:02 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -9,8 +9,10 @@ URGENTE -------------------------------------------------------------------------------------- - [D] Implementar el protocolo DDB. - - [D] Nicks registrados y protegidos. - + - [D] Implementar tabla o de Operadores + - [D] Implementar tabla p de Privilegios + - [D] Implementar tabla f de Features + - [D] Implementar tabla (a definir) de diversas configuraciones ALTA PRIORIDAD -------------------------------------------------------------------------------------- @@ -21,10 +23,8 @@ - [G] Poner uuna Feature para elegir entre salir o no el nombre del servidor en los notices de auth y dnslookup al conectar. - [G] Completar el MAP, salir numeric, nº de usuarios, porcentajes. - - [D] Comando GHOST. - [D] Virtualhost personalizado a traves de la DDB. - [D] U-lines a traves de la DDB. - - [D] F-lines (features) a traves de la DDB. PRIORIDAD MEDIA @@ -39,7 +39,6 @@ - [G] Si un global lo manda un ircop, que salga el prefijo de Mensaje global con la mascara o avisar mediante wallops global. - [S] Buscar una forma para cifrar IPs con un cambio de clave de cifrado incluido. - - [S] Comando SVSNICK. - [S] Comando SVSMODE. - [S] Comando SVSVHOST para cambiar la virtualhost. Estudiar alguna forma de propagarse en el burst. @@ -66,9 +65,12 @@ BUGS CONOCIDOS -------------------------------------------------------------------------------------- -1/Nov/2003 +15/Mar/2005 - [G] Bajo en ciertas circunstancias desconocidas del ircd.conf no pueden entrar clientes al IRCD. Investigar eso. +31/Mar/2005 + - [D] No se propaga el modo cuando estamos autentificando al conectar. + - [D] Dejan quitar modos -R y -S cuando los tienes. Leyenda: [G] General ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-03-31 12:58:23
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-03-31 12:58:15 UTC Modified files: ChangeLog ChangeLog.es include/client.h include/ddb.h include/handlers.h include/ircd_features.h include/msg.h include/numeric.h include/patchlevel.h include/s_user.h include/send.h ircd/Makefile.in ircd/ircd_features.c ircd/m_nick.c ircd/m_whois.c ircd/parse.c ircd/s_err.c ircd/s_user.c ircd/send.c ircd/whocmds.c Added files: ircd/m_ghost.c ircd/m_svsnick.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-03-30 Toni García <zo...@ir...> 1.0.alpha23 * Soporte de tabla n (NICKDB) * Modo de usuario +r * Modo de usuario +S * Modificaciones en comando NICK * Comando GHOST * Comando SVSNICK ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.24 ircd-ircdev/ChangeLog:1.25 --- ircd-ircdev/ChangeLog:1.24 Wed Mar 23 10:34:15 2005 +++ ircd-ircdev/ChangeLog Thu Mar 31 04:58:01 2005 @@ -1,10 +1,18 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.24 2005/03/23 18:34:15 zolty Exp $ +# $Id: ChangeLog,v 1.25 2005/03/31 12:58:01 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-03-30 Toni García <zo...@ir...> 1.0.alpha23 + * Table n (NICKDB) support + * Usermode +r + * Usermode +S + * NICK command modifies + * GHOST command + * SVSNICK command + 2005-03-23 Toni García <zo...@ir...> 1.0.alpha22 * Distributed DataBase support in memory * DB command Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.24 ircd-ircdev/ChangeLog.es:1.25 --- ircd-ircdev/ChangeLog.es:1.24 Wed Mar 23 10:34:15 2005 +++ ircd-ircdev/ChangeLog.es Thu Mar 31 04:58:01 2005 @@ -1,10 +1,18 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.24 2005/03/23 18:34:15 zolty Exp $ +# $Id: ChangeLog.es,v 1.25 2005/03/31 12:58:01 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-03-30 Toni García <zo...@ir...> 1.0.alpha23 + * Soporte de tabla n (NICKDB) + * Modo de usuario +r + * Modo de usuario +S + * Modificaciones en comando NICK + * Comando GHOST + * Comando SVSNICK + 2005-03-23 Toni García <zo...@ir...> 1.0.alpha22 * Soporte de Bases de Datos Distribuidas en memoria * Comando DB Index: ircd-ircdev/include/client.h diff -u ircd-ircdev/include/client.h:1.12 ircd-ircdev/include/client.h:1.13 --- ircd-ircdev/include/client.h:1.12 Wed Mar 23 10:34:24 2005 +++ ircd-ircdev/include/client.h Thu Mar 31 04:58:02 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Structures and functions for handling local clients. - * @version $Id: client.h,v 1.12 2005/03/23 18:34:24 zolty Exp $ + * @version $Id: client.h,v 1.13 2005/03/31 12:58:02 zolty Exp $ */ #ifndef INCLUDED_client_h #define INCLUDED_client_h @@ -93,7 +93,11 @@ #define FlagClr(set,flag) ((set)->bits[FLAGSET_INDEX(flag)] &= ~FLAGSET_MASK(flag)) /** String containing valid user modes, in no particular order. */ +#if defined(DDB) || defined(SERVICES) +#define infousermodes "dioswkgxrS" +#else #define infousermodes "dioswkgx" +#endif /** Operator privileges. */ enum Priv @@ -173,6 +177,9 @@ FLAG_DEBUG, /**< send global debug/anti-hack info */ #if defined(UNDERNET) FLAG_ACCOUNT, /**< account name has been set */ +#elif defined(DDB) || defined(SERVICES) + FLAG_NICKREG, /**< nick registered */ + FLAG_NICKSUSPEND, /**< nick suspended */ #endif FLAG_HIDDENHOST, /**< user's host is hidden */ FLAG_LAST_FLAG, /**< number of flags */ @@ -614,12 +621,20 @@ #define IsIPv6(x) HasFlag(x, FLAG_IPV6) /** Return non-zero if the client claims to be a services server. */ #define IsService(x) HasFlag(x, FLAG_SERVICE) +#if defined(UNDERNET) /** Return non-zero if the client has an account stamp. */ #define IsAccount(x) HasFlag(x, FLAG_ACCOUNT) +#endif /** Return non-zero if the client has set mode +x (hidden host). */ #define IsHiddenHost(x) HasFlag(x, FLAG_HIDDENHOST) /** Return non-zero if the client has an active PING request. */ #define IsPingSent(x) HasFlag(x, FLAG_PINGSENT) +#if defined(DDB) || defined(SERVICES) +/** Return non-zero if the client has set mode +r (nick registered) */ +#define IsNickRegistered(x) HasFlag(x, FLAG_NICKREG) +/** Return non-zero if the client has set mode +S (nick suspended) */ +#define IsNickSuspended(x) HasFlag(x, FLAG_NICKSUSPEND) +#endif /** Return non-zero if the client has operator or server privileges. */ #define IsPrivileged(x) (IsAnOper(x) || IsServer(x)) @@ -666,12 +681,20 @@ #define SetIPv6(x) SetFlag(x, FLAG_IPV6) /** Mark a client as being a services server. */ #define SetService(x) SetFlag(x, FLAG_SERVICE) +#if defined(UNDERNET) /** Mark a client as having an account stamp. */ #define SetAccount(x) SetFlag(x, FLAG_ACCOUNT) +#endif /** Mark a client as having mode +x (hidden host). */ #define SetHiddenHost(x) SetFlag(x, FLAG_HIDDENHOST) /** Mark a client as having a pending PING. */ #define SetPingSent(x) SetFlag(x, FLAG_PINGSENT) +#if defined(DDB) || defined(SERVICES) +/** Mark a client as having mode +r (nick registered) */ +#define SetNickRegistered(x) SetFlag(x, FLAG_NICKREG) +/** Mark a client as having mode +S (nick suspended) */ +#define SetNickSuspended(x) SetFlag(x, FLAG_NICKSUSPEND) +#endif /** Return non-zero if \a sptr sees \a acptr as an operator. */ #define SeeOper(sptr,acptr) (IsAnOper(acptr) && (HasPriv(acptr, PRIV_DISPLAY) \ @@ -705,6 +728,12 @@ #define ClearHiddenHost(x) ClrFlag(x, FLAG_HIDDENHOST) /** Clear the client's pending PING flag. */ #define ClearPingSent(x) ClrFlag(x, FLAG_PINGSENT) +#if defined(DDB) || defined(SERVICES) +/** Remove mode +r (nick registered) from the client */ +#define ClearNickRegistered(x) ClrFlag(x, FLAG_NICKREG) +/** Remode mode +S (nick suspended) from the client */ +#define ClearNickSuspended(x) ClrFlag(x, FLAG_NICKSUSPEND) +#endif /* free flags */ #define FREEFLAG_SOCKET 0x0001 /**< socket needs to be freed */ Index: ircd-ircdev/include/ddb.h diff -u ircd-ircdev/include/ddb.h:1.3 ircd-ircdev/include/ddb.h:1.4 --- ircd-ircdev/include/ddb.h:1.3 Wed Mar 23 10:34:25 2005 +++ ircd-ircdev/include/ddb.h Thu Mar 31 04:58:02 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ddb.h,v 1.3 2005/03/23 18:34:25 zolty Exp $ + * $Id: ddb.h,v 1.4 2005/03/31 12:58:02 zolty Exp $ * */ #ifndef INCLUDED_ddb_h @@ -51,6 +51,12 @@ /* + * PseudoBots + */ +#define DDB_NICKSERV "NickServ" + + +/* * Structures */ struct Ddb { @@ -136,7 +142,7 @@ extern struct Ddb *ddb_iterator_first(unsigned char table); extern struct Ddb *ddb_iterator_next(void); extern struct Ddb *ddb_find_key(unsigned char table, char *key); -extern char *ddb_get_botname(char *bot); +extern char *ddb_get_botname(char *botname); extern void ddb_splithubs_butone(struct Client *cptr, char *exitmsg); extern void ddb_reload(void); Index: ircd-ircdev/include/handlers.h diff -u ircd-ircdev/include/handlers.h:1.10 ircd-ircdev/include/handlers.h:1.11 --- ircd-ircdev/include/handlers.h:1.10 Mon Jan 10 04:21:59 2005 +++ ircd-ircdev/include/handlers.h Thu Mar 31 04:58:02 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Declarations for all protocol message handler functions. - * @version $Id: handlers.h,v 1.10 2005/01/10 12:21:59 zolty Exp $ + * @version $Id: handlers.h,v 1.11 2005/03/31 12:58:02 zolty Exp $ */ #ifndef INCLUDED_handlers_h #define INCLUDED_handlers_h @@ -96,6 +96,7 @@ extern int m_cap(struct Client*, struct Client*, int, char*[]); extern int m_cnotice(struct Client*, struct Client*, int, char*[]); extern int m_cprivmsg(struct Client*, struct Client*, int, char*[]); +extern int m_ghost(struct Client*, struct Client*, int, char*[]); extern int m_gline(struct Client*, struct Client*, int, char*[]); extern int m_help(struct Client*, struct Client*, int, char*[]); extern int m_ignore(struct Client*, struct Client*, int, char*[]); @@ -236,6 +237,7 @@ extern int ms_silence(struct Client*, struct Client*, int, char*[]); extern int ms_squit(struct Client*, struct Client*, int, char*[]); extern int ms_stats(struct Client*, struct Client*, int, char*[]); +extern int ms_svsnick(struct Client*, struct Client*, int, char*[]); extern int ms_topic(struct Client*, struct Client*, int, char*[]); extern int ms_trace(struct Client*, struct Client*, int, char*[]); extern int ms_uping(struct Client*, struct Client*, int, char*[]); Index: ircd-ircdev/include/ircd_features.h diff -u ircd-ircdev/include/ircd_features.h:1.10 ircd-ircdev/include/ircd_features.h:1.11 --- ircd-ircdev/include/ircd_features.h:1.10 Wed Mar 23 10:34:25 2005 +++ ircd-ircdev/include/ircd_features.h Thu Mar 31 04:58:02 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Public interfaces and declarations for dealing with configurable features. - * @version $Id: ircd_features.h,v 1.10 2005/03/23 18:34:25 zolty Exp $ + * @version $Id: ircd_features.h,v 1.11 2005/03/31 12:58:02 zolty Exp $ */ #ifndef INCLUDED_features_h #define INCLUDED_features_h @@ -88,6 +88,9 @@ FEAT_MPATH, FEAT_RPATH, FEAT_PPATH, +#if defined(DDB) + FEAT_DDBPATH, +#endif /* Networking features */ FEAT_TOS_SERVER, Index: ircd-ircdev/include/msg.h diff -u ircd-ircdev/include/msg.h:1.10 ircd-ircdev/include/msg.h:1.11 --- ircd-ircdev/include/msg.h:1.10 Wed Mar 23 10:34:26 2005 +++ ircd-ircdev/include/msg.h Thu Mar 31 04:58:02 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Command and token declarations and structures. - * @version $Id: msg.h,v 1.10 2005/03/23 18:34:26 zolty Exp $ + * @version $Id: msg.h,v 1.11 2005/03/31 12:58:02 zolty Exp $ */ #ifndef INCLUDED_msg_h #define INCLUDED_msg_h @@ -377,6 +377,15 @@ #define TOK_DBQ "DBQ" #define CMD_DBQ MSG_DBQ, TOK_DBQ +#define MSG_GHOST "GHOST" /* GHOST */ +#define TOK_GHOST "GHOST" +#define CMD_GHOST MSG_GHOST, TOK_GHOST + +#define MSG_SVSNICK "SVSNICK" /* SVSN */ +#define TOK_SVSNICK "SN" +#define CMD_SVSNICK MSG_SVSNICK, TOK_SVSNICK + + /* * Constants Index: ircd-ircdev/include/numeric.h diff -u ircd-ircdev/include/numeric.h:1.9 ircd-ircdev/include/numeric.h:1.10 --- ircd-ircdev/include/numeric.h:1.9 Mon Jan 10 04:22:00 2005 +++ ircd-ircdev/include/numeric.h Thu Mar 31 04:58:02 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Declarations of numeric replies and supporting functions. - * @version $Id: numeric.h,v 1.9 2005/01/10 12:22:00 zolty Exp $ + * @version $Id: numeric.h,v 1.10 2005/03/31 12:58:02 zolty Exp $ */ #ifndef INCLUDED_numeric_h #define INCLUDED_numeric_h @@ -213,7 +213,7 @@ #define RPL_UNAWAY 305 #define RPL_NOWAWAY 306 /* NotAway, aircd */ -/* RPL_WHOISREGNICK 307 Numeric List: Dalnet */ +#define RPL_WHOISREGNICK 307 /* IRC-Dev, Dalnet, Unreal extension */ /* RPL_SUSERHOST 307 austnet */ /* RPL_NOTIFYACTION 308 aircd */ /* RPL_WHOISADMIN 308 Numeric List: Dalnet */ @@ -296,6 +296,7 @@ /* RPL_SPAM 377 austnet */ /* RPL_BANEXPIRED 378 aircd */ /* RPL_KICKLINKED 379 aircd */ +#define RPL_WHOISMODES 379 /* IRC-Dev, Unreal extension */ /* RPL_BANLINKED 380 aircd */ #define RPL_YOUREOPER 381 @@ -307,7 +308,8 @@ /* RPL_ENDOFQLIST 387 unreal */ /* RPL_ALIST 388 unreal */ /* RPL_ENDOFALIST 389 unreal */ - + +#define RPL_WHOISSUSPEND 390 /* IRC-Dev extension */ #define RPL_TIME 391 /* RPL_START_USERS 392 Dalnet/EFnet/IRCnet */ /* RPL_USERS 393 Dalnet/EFnet/IRCnet */ Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.24 ircd-ircdev/include/patchlevel.h:1.25 --- ircd-ircdev/include/patchlevel.h:1.24 Wed Mar 23 10:34:26 2005 +++ ircd-ircdev/include/patchlevel.h Thu Mar 31 04:58:03 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.24 2005/03/23 18:34:26 zolty Exp $ + * $Id: patchlevel.h,v 1.25 2005/03/31 12:58:03 zolty Exp $ * */ -#define PATCHLEVEL ".alpha22" +#define PATCHLEVEL ".alpha23" #define RELEASE "1.0" Index: ircd-ircdev/include/s_user.h diff -u ircd-ircdev/include/s_user.h:1.6 ircd-ircdev/include/s_user.h:1.7 --- ircd-ircdev/include/s_user.h:1.6 Mon Jan 10 04:22:00 2005 +++ ircd-ircdev/include/s_user.h Thu Mar 31 04:58:03 2005 @@ -21,7 +21,7 @@ */ /** @file s_user.h * @brief Miscellaneous user-related helper functions. - * @version $Id: s_user.h,v 1.6 2005/01/10 12:22:00 zolty Exp $ + * @version $Id: s_user.h,v 1.7 2005/03/31 12:58:03 zolty Exp $ */ #ifndef INCLUDED_s_user_h #define INCLUDED_s_user_h @@ -74,6 +74,25 @@ #define COOKIE_VERIFIED 0xffffffff /**< value for cli_cookie() to show completion */ +/* used in set_nick_name */ +#define NICK_EQUIVALENT 0x01 /** < Equivalent */ +#define NICK_RENAMED 0x02 /** < Rename */ +#if defined(DDB) +#define NICK_GHOST 0x04 /** < Ghost */ +#define NICK_IDENTIFY 0x08 /** < Identify */ +#endif /* defined(DDB) */ + +#define SetNickEquivalent(x) ((x) |= NICK_EQUIVALENT) +#define IsNickEquivalent(x) ((x) & NICK_EQUIVALENT) +#define SetRenamed(x) ((x) |= NICK_RENAMED) +#define IsRenamed(x) ((x) & NICK_RENAMED) +#if defined(DDB) +#define SetGhost(x) ((x) |= NICK_GHOST) +#define IsGhost(x) ((x) & NICK_GHOST) +#define SetIdentify(x) ((x) |= NICK_IDENTIFY) +#define IsIdentify(x) ((x) & NICK_IDENTIFY) +#endif /* defined(DDB) */ + /** Formatter function for send_user_info(). * @param who Client being displayed. * @param sptr Client requesting information. @@ -91,8 +110,12 @@ extern void user_count_memory(size_t* count_out, size_t* bytes_out); +#if defined(DDB) +extern int verify_pass_nick(char *nick, char *cryptpass, char *pass); +#endif +extern int do_nick_name(char* nick); extern int set_nick_name(struct Client* cptr, struct Client* sptr, - const char* nick, int parc, char* parv[]); + const char* nick, int parc, char* parv[], int flags); extern void send_umode_out(struct Client* cptr, struct Client* sptr, struct Flags* old, int prop); extern int whisper(struct Client* source, const char* nick, Index: ircd-ircdev/include/send.h diff -u ircd-ircdev/include/send.h:1.6 ircd-ircdev/include/send.h:1.7 --- ircd-ircdev/include/send.h:1.6 Mon Jan 10 04:22:00 2005 +++ ircd-ircdev/include/send.h Thu Mar 31 04:58:03 2005 @@ -21,7 +21,7 @@ */ /** @file send.h * @brief Send messages to certain targets. - * @version $Id: send.h,v 1.6 2005/01/10 12:22:00 zolty Exp $ + * @version $Id: send.h,v 1.7 2005/03/31 12:58:03 zolty Exp $ */ #ifndef INCLUDED_send_h #define INCLUDED_send_h @@ -56,6 +56,11 @@ */ extern void sendrawto_one(struct Client *to, const char *pattern, ...); +/* Send a bot command to one client */ +extern void sendcmdbotto_one(char *botname, const char *cmd, + const char *tok, struct Client *to, + const char *pattern, ...); + /* Send a command to one client */ extern void sendcmdto_one(struct Client *from, const char *cmd, const char *tok, struct Client *to, Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.20 ircd-ircdev/ircd/Makefile.in:1.21 --- ircd-ircdev/ircd/Makefile.in:1.20 Wed Mar 23 10:34:27 2005 +++ ircd-ircdev/ircd/Makefile.in Thu Mar 31 04:58:03 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.20 2005/03/23 18:34:27 zolty Exp $ +# $Id: Makefile.in,v 1.21 2005/03/31 12:58:03 zolty Exp $ #### Start of system configuration section. #### @@ -94,7 +94,12 @@ ddb.c \ ddb_db_template.c \ m_db.c \ - m_dbq.c + m_dbq.c \ + m_ghost.c \ + m_svsnick.c + +SERVICES_SRC = \ + m_svsnick.c IRCD_SRC = \ IPcheck.c \ @@ -229,15 +234,19 @@ whowas.c \ y.tab.c -#SRC = ${IRCD_SRC} ${ENGINE_C} ${CRYPTO_SRC} +#TODO Arreglar esto +#Para undernet #SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${ENGINE_C} ${CRYPTO_SRC} +#Para DDb SRC = ${IRCD_SRC} ${DDB_SRC} ${ENGINE_C} ${CRYPTO_SRC} +#Para Services +#SRC = ${IRCD_SRC} ${SERVICES_SRC} ${ENGINE_C} ${CRYPTO_SRC} OBJS = ${SRC:%.c=%.o} UMKPASSWD_OBJS = ${UMKPASSWD_SRC:%.c=%.o} -DEP_SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${DDB} ${ENGINE_SRC} ${CRYPTO_SRC} +DEP_SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${DDB_SRC} ${SERVICES_SRC} ${ENGINE_SRC} ${CRYPTO_SRC} all: ( cd ..; make -f Makefile ) Index: ircd-ircdev/ircd/ircd_features.c diff -u ircd-ircdev/ircd/ircd_features.c:1.12 ircd-ircdev/ircd/ircd_features.c:1.13 --- ircd-ircdev/ircd/ircd_features.c:1.12 Wed Mar 23 10:34:48 2005 +++ ircd-ircdev/ircd/ircd_features.c Thu Mar 31 04:58:04 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of configurable feature support. - * @version $Id: ircd_features.c,v 1.12 2005/03/23 18:34:48 zolty Exp $ + * @version $Id: ircd_features.c,v 1.13 2005/03/31 12:58:04 zolty Exp $ */ #include "config.h" @@ -328,6 +328,9 @@ F_S(MPATH, FEAT_CASE | FEAT_MYOPER, "ircd.motd", motd_init), F_S(RPATH, FEAT_CASE | FEAT_MYOPER, "remote.motd", motd_init), F_S(PPATH, FEAT_CASE | FEAT_MYOPER | FEAT_READ, "ircd.pid", 0), +#if defined(DDB) + F_S(DDBPATH, FEAT_CASE | FEAT_MYOPER, "database", 0), +#endif /* Networking features */ F_I(TOS_SERVER, 0, 0x08, 0), Index: ircd-ircdev/ircd/m_ghost.c diff -u /dev/null ircd-ircdev/ircd/m_ghost.c:1.1 --- /dev/null Thu Mar 31 04:58:15 2005 +++ ircd-ircdev/ircd/m_ghost.c Thu Mar 31 04:58:04 2005 @@ -0,0 +1,125 @@ +/* + * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/m_ghost.c + * + * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> + * Copyright (C) 2004 Toni Garcia (zoltan) <zo...@ir...> + * + * 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 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 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/** @file + * @brief Handlers for GHOST command. + * @version $Id: m_ghost.c,v 1.1 2005/03/31 12:58:04 zolty Exp $ + */ +#include "config.h" + +#include "client.h" +#include "ddb.h" +#include "hash.h" +#include "ircd.h" +#include "ircd_log.h" +#include "ircd_reply.h" +#include "msg.h" +#include "numnicks.h" +#include "s_misc.h" +#include "s_user.h" +#include "send.h" + +/* #include <assert.h> -- Now using assert in ircd_log.h */ +#include <string.h> + + +/** Handle a GHOST command from a client. + * See @ref m_functions for general discussion of parameters. + * + * \a parv[1] is a nick + * \a parv[2] is a password (optional) + * + * @param[in] cptr Client that sent us the message. + * @param[in] sptr Original source of message. + * @param[in] parc Number of arguments. + * @param[in] parv Argument vector. + */ +int m_ghost(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) +{ + struct Client *acptr; + struct Ddb *ddb; + char *botname; + char *passwd; + + assert(0 != cptr); + assert(sptr == cptr); + + botname = ddb_get_botname(DDB_NICKSERV); + + if (parc < 2) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Sintaxis: /GHOST <nick> [password]", cptr); + return need_more_params(cptr, "GHOST"); + } + + if (parc < 3) + { + passwd = strchr(parv[1], ':'); + if (passwd) + *passwd++ = '\0'; + else + passwd = cli_passwd(cptr); + } + else + passwd = parv[2]; + + if (!(acptr = FindUser(parv[1]))) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** The nick %s is not in use.", cptr, parv[1]); + return 0; + } + + if (!(ddb = ddb_find_key(DDB_NICKDB, parv[1]))) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** The nick %s is not registered", cptr, parv[1]); + return 0; + } + + if (!(verify_pass_nick(ddb->key, ddb->content, passwd))) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Password incorrect", cptr); + return 0; + } + + sendto_opmask_butone(0, SNO_SERVKILL, + "Received KILL message for %C. From %C, Reason: GHOST kill", acptr, cptr); + + sendcmdto_serv_butone(&me, CMD_KILL, acptr, "%C :GHOST session released by %C", + acptr, cptr); + + if (MyConnect(acptr)) + { + sendcmdto_one(acptr, CMD_QUIT, cptr, ":Killed (GHOST session " + "released by %C)", cptr); + sendcmdto_one(&me, CMD_KILL, acptr, "%C :GHOST session released by %C", + acptr, cptr); + } + sendcmdbotto_one(botname, CMD_NOTICE, cptr, "%C :*** %C GHOST session has been " + "released", acptr, cptr); + exit_client_msg(cptr, acptr, &me, "Killed (GHOST session released by %C)", + cptr); + return 0; + +} Index: ircd-ircdev/ircd/m_nick.c diff -u ircd-ircdev/ircd/m_nick.c:1.8 ircd-ircdev/ircd/m_nick.c:1.9 --- ircd-ircdev/ircd/m_nick.c:1.8 Mon Mar 21 10:39:08 2005 +++ ircd-ircdev/ircd/m_nick.c Thu Mar 31 04:58:04 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_nick.c,v 1.8 2005/03/21 18:39:08 zolty Exp $ + * $Id: m_nick.c,v 1.9 2005/03/31 12:58:04 zolty Exp $ * */ @@ -82,6 +82,7 @@ #include "IPcheck.h" #include "client.h" +#include "ddb.h" #include "hash.h" #include "ircd.h" #include "ircd_chattr.h" @@ -116,7 +117,7 @@ * The '~'-character should be allowed, but a change should be global, * some confusion would result if only few servers allowed it... */ -static int do_nick_name(char* nick) +int do_nick_name(char* nick) { char* ch = nick; char* end = ch + NICKLEN; @@ -148,6 +149,11 @@ char* arg; char* s; const char* client_name; + int flags = 0; +#if defined(DDB) + struct Ddb *ddb; + char *p; +#endif assert(0 != cptr); assert(cptr == sptr); @@ -157,10 +163,48 @@ */ client_name = (*(cli_name(sptr))) ? cli_name(sptr) : "*"; +#if 0 + /* + * Not change nick several times BEFORE to have completed your entrance + * in the network. + */ + if (MyConnect(sptr) && (!IsRegistered(sptr)) && (sptr->cookie != 0) && + (sptr->cookie != COOKIE_VERIFIED)) + return 0; +#endif + if (parc < 2) { send_reply(sptr, ERR_NONICKNAMEGIVEN); return 0; } + +#if defined(DDB) + p = strchr(parv[1], ':'); + if (p) + { + *p++ = '\0'; + parc = 3; + parv[2] = p; + } + else if ((p = strchr(parv[1], '!'))) + { + /* GHOST nick !password Support */ + SetGhost(flags); + if (strlen(p) > 1) + { + *p++ = '\0'; + parc = 3; + parv[2] = p; + } + } + else if (parc > 2 && (*parv[2] == '!')) + { + /* GHOST nick !password Support */ + SetGhost(flags); + *parv[2]++ = '\0'; + } +#endif /* defined(DDB) */ + /* * Don't let them send make us send back a really long string of * garbage @@ -169,8 +213,11 @@ if (strlen(arg) > IRCD_MIN(NICKLEN, feature_int(FEAT_NICKLEN))) arg[IRCD_MIN(NICKLEN, feature_int(FEAT_NICKLEN))] = '\0'; +#if 1 + /* Soporte de nicks ~ */ if ((s = strchr(arg, '~'))) *s = '\0'; +#endif strcpy(nick, arg); @@ -182,6 +229,20 @@ return 0; } +#if defined(DDB) + if (strlen(nick) == 11) + { + if ((strcmp(nick, "Guest000000") >= 0) && (strcmp(nick, "Guest999999") <= 0)) + { + if (FindClient(nick)) + send_reply(sptr, ERR_NICKNAMEINUSE, nick); + else + send_reply(sptr, ERR_ERRONEUSNICKNAME, nick); + return 0; /* NICK message ignored */ + } + } +#endif /* defined(DDB) */ + /* * Check if this is a LOCAL user trying to use a reserved (Juped) * nick, if so tell him that it's a nick in use... @@ -195,7 +256,7 @@ /* * No collisions, all clear... */ - return set_nick_name(cptr, sptr, nick, parc, parv); + return set_nick_name(cptr, sptr, nick, parc, parv, flags); } if (IsServer(acptr)) { @@ -216,11 +277,16 @@ * is concerned (user is changing the case of his/her * nickname or somesuch) */ +#if defined(DDB) + if (IsNickRegistered(sptr) || IsNickSuspended(sptr)) +#endif + SetNickEquivalent(flags); + if (0 != strcmp(cli_name(acptr), nick)) { /* * Allows change of case in his/her nick */ - return set_nick_name(cptr, sptr, nick, parc, parv); + return set_nick_name(cptr, sptr, nick, parc, parv, flags); } /* * This is just ':old NICK old' type thing. @@ -253,8 +319,69 @@ ServerStats->is_ref++; IPcheck_connect_fail(acptr); exit_client(cptr, acptr, &me, "Overridden by other sign on"); - return set_nick_name(cptr, sptr, nick, parc, parv); + return set_nick_name(cptr, sptr, nick, parc, parv, flags); + } + +#if defined(DDB) + /* + * GHOST through NICK nick!password Support + * Verify if nick is registered, if a local user, do not flooding + * and put a ! + * + * If puts the correct password, kill to the user with ghost session and + * propagates the KILL by the network, and put the nick; in opposite case, + * follows and leave the nick not available message. + * --zoltan + */ + ddb = ddb_find_key(DDB_NICKDB, parv[1]); + if (IsGhost(flags) && (ddb) && (CurrentTime >= cli_nextnick(cptr))) + { + if (verify_pass_nick(ddb->key, ddb->content, + (parc >= 3 ? parv[2] : cli_passwd(cptr)))) + { + char *botname = ddb_get_botname(DDB_NICKSERV); + char nickwho[NICKLEN + 2]; + + SetIdentify(flags); + + if (cli_name(cptr)[0] == '\0') + { + /* Ghost during the establishment of the connection + * do not have old nick information, it is added ! to the nick + */ + strncpy(nickwho, nick, sizeof(nickwho)); + nickwho[strlen(nickwho)] = '!'; + } + else + { + /* Ponemos su antiguo nick */ + strncpy(nickwho, cli_name(cptr), sizeof(nickwho)); + } + + /* Matamos al usuario con un kill */ + sendto_opmask_butone(0, SNO_SERVKILL, + "Received KILL message for %C. From %s, Reason: GHOST kill", acptr, nickwho); + + sendcmdto_serv_butone(&me, CMD_KILL, acptr, "%C :GHOST session released by %s", + acptr, nickwho); + + if (MyConnect(acptr)) + { + sendcmdto_one(acptr, CMD_QUIT, cptr, ":Killed (GHOST session " + "released by %s)", nickwho); + sendcmdto_one(&me, CMD_KILL, acptr, "%C :GHOST session released by %s", + acptr, nickwho); + } + sendcmdbotto_one(botname, CMD_NOTICE, cptr, "%C :*** %C GHOST session has been " + "released", acptr, cptr); + exit_client_msg(cptr, acptr, &me, "Killed (GHOST session released by %s)", + nickwho); + + return set_nick_name(cptr, sptr, nick, parc, parv, flags); + } } +#endif /* defined(DDB) */ + /* * NICK is coming from local client connection. Just * send error reply and ignore the command. @@ -349,7 +476,7 @@ /* Check against nick name collisions. */ if ((acptr = FindClient(nick)) == NULL) /* No collisions, all clear... */ - return set_nick_name(cptr, sptr, nick, parc, parv); + return set_nick_name(cptr, sptr, nick, parc, parv, 0); /* * If acptr == sptr, then we have a client doing a nick @@ -361,7 +488,7 @@ { if (strcmp(cli_name(acptr), nick) != 0) /* Allows change of case in his/her nick */ - return set_nick_name(cptr, sptr, nick, parc, parv); + return set_nick_name(cptr, sptr, nick, parc, parv, 0); else /* Setting their nick to what it already is? Ignore it. */ return 0; @@ -383,7 +510,7 @@ ServerStats->is_ref++; IPcheck_connect_fail(acptr); exit_client(cptr, acptr, &me, "Overridden by other sign on"); - return set_nick_name(cptr, sptr, nick, parc, parv); + return set_nick_name(cptr, sptr, nick, parc, parv, 0); } /* * Decide, we really have a nick collision and deal with it @@ -504,5 +631,5 @@ return 0; if (sptr == NULL) return 0; - return set_nick_name(cptr, sptr, nick, parc, parv); + return set_nick_name(cptr, sptr, nick, parc, parv, 0); } Index: ircd-ircdev/ircd/m_svsnick.c diff -u /dev/null ircd-ircdev/ircd/m_svsnick.c:1.1 --- /dev/null Thu Mar 31 04:58:15 2005 +++ ircd-ircdev/ircd/m_svsnick.c Thu Mar 31 04:58:04 2005 @@ -0,0 +1,150 @@ +/* + * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/m_svsnick.c + * + * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> + * Copyright (C) 2004 Toni Garcia (zoltan) <zo...@ir...> + * + * 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 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 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/** @file + * @brief Handlers for SVSNICK command. + * @version $Id: m_svsnick.c,v 1.1 2005/03/31 12:58:04 zolty Exp $ + */ +#include "config.h" + +#include "client.h" +#include "ddb.h" +#include "hash.h" +#include "ircd.h" +#include "ircd_features.h" +#include "ircd_log.h" +#include "ircd_string.h" +#include "ircd_tea.h" +#include "msg.h" +#include "numnicks.h" +#include "s_conf.h" +#include "s_user.h" +#include "send.h" +#include "sys.h" + +/* #include <assert.h> -- Now using assert in ircd_log.h */ +#include <stdio.h> +#include <string.h> + + +/** Handle a SVSNICK command from a server. + * See @ref m_functions for general discussion of parameters. + * + * \a parv[1] is a nick + * \a parv[2] is a new nick (* random nick) + * + * @param[in] cptr Client that sent us the message. + * @param[in] sptr Original source of message. + * @param[in] parc Number of arguments. + * @param[in] parv Argument vector. + */ +int ms_svsnick(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) +{ + struct Client *acptr; + struct Client *bcptr; + char newnick[NICKLEN + 2]; + char *arg; + int flags = 0; + + assert(0 != IsServer(cptr)); + + if (parc < 2) + return 0; + + if (!find_conf_byhost(cli_confs(cptr), cli_name(sptr), CONF_UWORLD)) + { + sendcmdto_serv_butone(&me, CMD_DESYNCH, 0, + ":HACK(2): Fail SVSNICK for %s. From %C", parv[1], sptr); + sendto_opmask_butone(0, SNO_HACK2, + "Fail SVSNICK for %s. From %C", parv[1], sptr); + return 0; + } + + sendcmdto_serv_butone(sptr, CMD_SVSNICK, cptr, "%s :%s", parv[1], parv[2]); + + acptr = findNUser(parv[1]); + + if (!acptr || !MyUser(acptr)) + return 0; + + if (ircd_strcmp(parv[2], "*")) + { + /* + * Don't let them send make us send back a really long string of + * garbage + */ + arg = parv[2]; + if (strlen(arg) > IRCD_MIN(NICKLEN, feature_int(FEAT_NICKLEN))) + arg[IRCD_MIN(NICKLEN, feature_int(FEAT_NICKLEN))] = '\0'; + + strcpy(newnick, arg); + + if (0 == do_nick_name(newnick)) + return 0; + + if (FindUser(newnick)) + return 0; + } + else + { + unsigned int v[2], k[2], x[2]; + + k[0] = k[1] = x[0] = x[1] = 0; + + v[0] = base64toint(cli_yxx(acptr)); + v[1] = base64toint(cli_yxx(&me)); + + bcptr = acptr; + + do + { + ircd_tea(v, k, x); + v[1] += 4096; + + if (x[0] >= 4294000000ul) + continue; + + sprintf(newnick, "Guest%.6d", (int)(x[0] % 1000000)); + bcptr = FindUser(newnick); + } + while (bcptr); + } + + sendto_opmask_butone(0, SNO_HACK4, + "SVSNICK for %C, new nick %s. From %C", acptr, newnick, sptr); + + SetRenamed(flags); +#if defined(DDB) + if (ddb_find_key(DDB_NICKDB, newnick)) + SetIdentify(flags); +#endif + + parv[0] = cli_name(acptr); + parv[1] = newnick; + { + char tmp[100]; + sprintf(tmp, "%lu", TStime()); + parv[2] = tmp; + } + + return set_nick_name(acptr, acptr, newnick, parc , parv, flags); + +} Index: ircd-ircdev/ircd/m_whois.c diff -u ircd-ircdev/ircd/m_whois.c:1.12 ircd-ircdev/ircd/m_whois.c:1.13 --- ircd-ircdev/ircd/m_whois.c:1.12 Mon Mar 21 10:39:10 2005 +++ ircd-ircdev/ircd/m_whois.c Thu Mar 31 04:58:04 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_whois.c,v 1.12 2005/03/21 18:39:10 zolty Exp $ + * $Id: m_whois.c,v 1.13 2005/03/31 12:58:04 zolty Exp $ */ /* @@ -210,6 +210,13 @@ if (user->away) send_reply(sptr, RPL_AWAY, name, user->away); +#if defined(DDB) || defined(SERVICES) + if (IsNickRegistered(acptr)) + send_reply(sptr, RPL_WHOISREGNICK, name); + else if (IsNickSuspended(acptr)) + send_reply(sptr, RPL_WHOISSUSPEND, name); +#endif /* defined(DDB) || defined(SERVICES) */ + if (SeeOper(sptr,acptr)) send_reply(sptr, RPL_WHOISOPERATOR, name); @@ -218,9 +225,15 @@ send_reply(sptr, RPL_WHOISACCOUNT, name, user->account); #endif - if (HasHiddenHost(acptr) && (IsAnOper(sptr) || acptr == sptr)) - send_reply(sptr, RPL_WHOISACTUALLY, name, user->username, - user->realhost, ircd_ntoa(&cli_ip(acptr))); + if (IsAnOper(sptr) || (acptr == sptr)) + { + char *modes = umode_str(acptr); + + if (HasHiddenHost(acptr)) + send_reply(sptr, RPL_WHOISACTUALLY, name, user->username, + user->realhost, ircd_ntoa(&cli_ip(acptr))); + send_reply(sptr, RPL_WHOISMODES, name, *modes ? modes : ""); + } /* Hint: if your looking to add more flags to a user, eg +h, here's * probably a good place to add them :) Index: ircd-ircdev/ircd/parse.c diff -u ircd-ircdev/ircd/parse.c:1.13 ircd-ircdev/ircd/parse.c:1.14 --- ircd-ircdev/ircd/parse.c:1.13 Wed Mar 23 10:34:51 2005 +++ ircd-ircdev/ircd/parse.c Thu Mar 31 04:58:04 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Parse input from IRC clients and other servers. - * @version $Id: parse.c,v 1.13 2005/03/23 18:34:51 zolty Exp $ + * @version $Id: parse.c,v 1.14 2005/03/31 12:58:04 zolty Exp $ */ #include "config.h" @@ -656,6 +656,22 @@ /* UNREG, CLIENT, SERVER, OPER, SERVICE */ { m_unregistered, m_not_oper, ms_dbq, mo_dbq, m_ignore } }, + { + MSG_GHOST, + TOK_GHOST, + 0, MAXPARA, MFLG_SLOW, 0, NULL, + /* UNREG, CLIENT, SERVER, OPER, SERVICE */ + { m_unregistered, m_ghost, m_ignore, m_ignore, m_ignore } + }, +#endif +#if defined(DDB) || defined(SERVICES) + { + MSG_SVSNICK, + TOK_SVSNICK, + 0, MAXPARA, MFLG_SLOW, 0, NULL, + /* UNREG, CLIENT, SERVER, OPER, SERVICE */ + { m_ignore, m_ignore, ms_svsnick, m_ignore, m_ignore } + }, #endif /* This command is an alias for QUIT during the unregistered part of Index: ircd-ircdev/ircd/s_err.c diff -u ircd-ircdev/ircd/s_err.c:1.13 ircd-ircdev/ircd/s_err.c:1.14 --- ircd-ircdev/ircd/s_err.c:1.13 Mon Mar 21 10:39:12 2005 +++ ircd-ircdev/ircd/s_err.c Thu Mar 31 04:58:04 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Error handling support. - * @version $Id: s_err.c,v 1.13 2005/03/21 18:39:12 zolty Exp $ + * @version $Id: s_err.c,v 1.14 2005/03/31 12:58:04 zolty Exp $ */ #include "config.h" @@ -653,7 +653,7 @@ /* 306 */ { RPL_NOWAWAY, ":You have been marked as being away", "306" }, /* 307 */ - { 0 }, + { RPL_WHOISREGNICK, "%s :is a registered and protected nick", "307" }, /* 308 */ { 0 }, /* 309 */ @@ -801,7 +801,7 @@ /* 378 */ { 0 }, /* 379 */ - { 0 }, + { RPL_WHOISMODES, "%s :is using modes %s", "379" }, /* 380 */ { 0 }, /* 381 */ @@ -823,7 +823,7 @@ /* 389 */ { 0 }, /* 390 */ - { 0 }, + { RPL_WHOISSUSPEND, "%s :is a suspended nick", "390" }, /* 391 */ { RPL_TIME, "%s %Tu %ld :%s", "391" }, /* 392 */ Index: ircd-ircdev/ircd/s_user.c diff -u ircd-ircdev/ircd/s_user.c:1.12 ircd-ircdev/ircd/s_user.c:1.13 --- ircd-ircdev/ircd/s_user.c:1.12 Mon Mar 21 10:39:12 2005 +++ ircd-ircdev/ircd/s_user.c Thu Mar 31 04:58:04 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Miscellaneous user-related helper functions. - * @version $Id: s_user.c,v 1.12 2005/03/21 18:39:12 zolty Exp $ + * @version $Id: s_user.c,v 1.13 2005/03/31 12:58:04 zolty Exp $ */ #include "config.h" @@ -30,6 +30,7 @@ #include "channel.h" #include "class.h" #include "client.h" +#include "ddb.h" #include "hash.h" #include "ircd.h" #include "ircd_alloc.h" @@ -40,6 +41,7 @@ #include "ircd_reply.h" #include "ircd_snprintf.h" #include "ircd_string.h" +#include "ircd_tea.h" #include "list.h" #include "match.h" #include "motd.h" @@ -702,6 +704,9 @@ { FLAG_DEBUG, 'g' }, #if defined(UNDERNET) { FLAG_ACCOUNT, 'r' }, +#elif defined(DDB) || defined(SERVICES) + { FLAG_NICKREG, 'r' }, + { FLAG_NICKSUSPEND, 'S' }, #endif { FLAG_HIDDENHOST, 'x' } }; @@ -715,6 +720,59 @@ /** Nasty global buffer used for communications with umode_str() and others. */ static char umodeBuf[BUFSIZE]; +#if defined(DDB) +/** Verify the passwords + * @param[in] nick Nickname + * @param[in] cryptpass Crypt password + * @param[in] password Password + * @return 1 if a correct password, else 0. + */ +int verify_pass_nick(char *nick, char *cryptpass, char *pass) +{ + unsigned int v[2], k[2], x[2]; + int cont = (NICKLEN + 8) / 8; + char tmpnick[8 * ((NICKLEN + 8) / 8) + 1]; + char tmppass[12 + 1]; + unsigned int *p = (unsigned int *)tmpnick; /* int == 32bits */ + unsigned int numpass[2]; + + memset(tmpnick, 0, sizeof(tmpnick)); + strncpy(tmpnick, nick, sizeof(tmpnick) - 1); + + memset(tmppass, 0, sizeof(tmppass)); + strncpy(tmppass, cryptpass, sizeof(tmppass) - 1); + + numpass[1] = base64toint(tmppass + 6); + tmppass[6] = '\0'; + numpass[0] = base64toint(tmppass); + + memset(tmppass, 0, sizeof(tmppass)); + + strncpy(tmppass, pass, sizeof(tmppass) - 1); + + /* relleno -> 123456789012 */ + strncat(tmppass, "AAAAAAAAAAAA", sizeof(tmppass) - strlen(tmppass) - 1); + + x[0] = x[1] = 0; + + k[1] = base64toint(tmppass + 6); + tmppass[6] = '\0'; + k[0] = base64toint(tmppass); + + while (cont--) + { + v[0] = ntohl(*p++); /* 32 bits */ + v[1] = ntohl(*p++); /* 32 bits */ + ircd_tea(v, k, x); + } + + if ((x[0] == numpass[0]) && (x[1] == numpass[1])) + return 1; + + return 0; +} +#endif /* defined(DDB) */ + /** Try to set a user's nickname. * If \a sptr is a server, the client is being introduced for the first time. * @param[in] cptr Client to set nickname. @@ -722,11 +780,116 @@ * @param[in] nick New nickname. * @param[in] parc Number of arguments to NICK. * @param[in] parv Argument list to NICK. + * @param[in] flags * @return CPTR_KILLED if \a cptr was killed, else 0. */ int set_nick_name(struct Client* cptr, struct Client* sptr, - const char* nick, int parc, char* parv[]) + const char* nick, int parc, char* parv[], int flags) { +#if defined(DDB) + struct Ddb *ddb; + int nick_suspend = 0; + char *botname = 0; + + /* + * Comprueba si el nick esta registrado, y + * si lo esta que se ponga la clave correcta + * + * Esta comprobacion solo se va a hacer si + * el usuario es local y no esta haciendo nick flood. + */ + if (MyConnect(sptr) && !IsIdentify(flags) && (ddb = ddb_find_key(DDB_NICKDB, (char *)nick)) + && (CurrentTime >= cli_nextnick(cptr))) + { + const char *name; + int nick_forbid = 0; + char c; + + botname = ddb_get_botname(DDB_NICKSERV); + /* + * Si el ultimo caracter de la clave (bdd->content) contiene: + * '+' El nick esta suspendido. + * '*' El nick esta prohibido (forbid). + * Cualquier otro caracter, el nick esta activo. + */ + c = ddb->content[strlen(ddb->content) - 1]; + if (c == '+') + nick_suspend = 1; + else if (c == '*') + nick_forbid = 1; + + /* + * Si el usuario ha hecho ghost, no se necesita + * verificar la clave de nuevo ya que se ha hecho + * antes al hacer el ghost. En un nick prohibido + * tampoco. + */ + if (!(IsGhost(flags) && !IsIdentify(flags) && !nick_forbid)) + { + if ((IsNickRegistered(sptr) || IsNickSuspended(sptr)) + && (0 == ircd_strcmp(parv[0], nick))) + { + SetNickEquivalent(flags); + SetIdentify(flags); + } + else if (verify_pass_nick(ddb->key, ddb->content, + (parc >= 3 ? parv[2] : cli_passwd(cptr)))) + SetIdentify(flags); + } + + if (*parv[0]) + name = parv[0]; + else + name = nick; + + if (IsIdentify(flags)) + { + /* + * Si no tiene nick anterior (acaba de conectarse) + * mandar este notice. + * El notice de autentificacion de cuando cambia nick + * esta mas abajo. + */ + if (!cli_name(cptr)[0] && !IsNickEquivalent(flags)) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%s :*** Password accepted. Welcome to %s", + nick, feature_str(FEAT_NETWORK)); + if (nick_suspend) + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%s :*** Your nick %s is suspended", + nick, nick); + } + } + else if (nick_forbid) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%s :*** The nick %s is forbided, cannot be used", + name, nick); + send_reply(cptr, ERR_NICKNAMEINUSE, nick); + return 0; + } + else + { + if (parc < 3) + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%s :*** The nick %s is Registered, you need password", + name, nick); + else + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%s :*** Incorrect password for nick %s", + name, nick); + + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%s :*** It uses \002/NICK %s%spassword\002 for identify", + name, nick, IsGhost(flags) ? "!" : ":"); + + send_reply(cptr, ERR_NICKNAMEINUSE, nick); + return 0; + } + } +#endif /* defined(DDB) */ + if (IsServer(sptr)) { int i; #if defined(UNDERNET) @@ -811,7 +974,8 @@ * if client is on any channels where it is currently * banned. If so, do not allow the nick change to occur. */ - if (MyUser(sptr)) { + if (MyUser(sptr) && !IsRenamed(flags)) + { const char* channel_name; struct Membership *member; if ((channel_name = find_no_nickchange_channel(sptr))) { @@ -847,6 +1011,20 @@ member = member->next_channel) ClearBanValid(member); } + +#if defined(DDB) + if (IsIdentify(flags) && !IsNickEquivalent(flags)) + { + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Password accepted. Welcome to %s", + cptr, feature_str(FEAT_NETWORK)); + + if (nick_suspend) + sendcmdbotto_one(botname, CMD_NOTICE, cptr, + "%C :*** Your nick %s is suspended", cptr, nick); + } +#endif + /* * Also set 'lastnick' to current time, if changed. */ @@ -859,6 +1037,23 @@ * on that channel. Propagate notice to other servers. */ if (IsUser(sptr)) { + if (!IsNickEquivalent(flags)) + { +#if defined(DDB) + struct Flags oldflags; +#endif + + /* Notify exit user */ + check_status_watch(sptr, RPL_LOGOFF); + +#if defined(DDB) + oldflags = cli_flags(sptr); + ClearNickRegistered(sptr); + ClearNickSuspended(sptr); + + send_umode_out(cptr, sptr, &oldflags, IsRegistered(sptr)); +#endif + } sendcmdto_common_channels_butone(sptr, CMD_NICK, NULL, ":%s", nick); add_history(sptr, 1); sendcmdto_serv_butone(sptr, CMD_NICK, cptr, "%s %Tu", nick, @@ -871,6 +1066,7 @@ hRemClient(sptr); strcpy(cli_name(sptr), nick); hAddClient(sptr); + } else { /* Local client setting NICK the first time */ @@ -906,8 +1102,30 @@ } } - /* Notify change nick local/remote user */ - check_status_watch(sptr, RPL_LOGON); + if (!IsNickEquivalent(flags)) + { +#if defined(DDB) + if (MyConnect(sptr)) + { + struct Flags oldflags; + + if (IsIdentify(flags)) + { + oldflags = cli_flags(sptr); + + if (nick_suspend) + SetNickSuspended(sptr); + else + SetNickRegistered(sptr); + + send_umode_out(cptr, sptr, &oldflags, IsRegistered(sptr)); + } + } +#endif /* defined(DDB) */ + + /* Notify change nick local/remote user */ + check_status_watch(sptr, RPL_LOGON); + } return 0; } @@ -1146,9 +1364,7 @@ int hide_hostmask(struct Client *cptr, unsigned int flag) { -#if defined(UNDERNET) struct Membership *chan; -#endif switch (flag) { case FLAG_HIDDENHOST: @@ -1168,14 +1384,21 @@ return 0; } -#if defined(UNDERNET) SetFlag(cptr, flag); +#if defined(UNDERNET) if (!HasFlag(cptr, FLAG_HIDDENHOST) || !HasFlag(cptr, FLAG_ACCOUNT)) +#else + if (!HasFlag(cptr, FLAG_HIDDENHOST)) +#endif return 0; sendcmdto_common_channels_butone(cptr, CMD_QUIT, cptr, ":Registered"); ircd_snprintf(0, cli_user(cptr)->host, HOSTLEN, "%s.%s", +#if defined(UNDERNET) cli_user(cptr)->account, feature_str(FEAT_HIDDEN_HOST)); +#else + cli_yxx(cptr), feature_str(FEAT_HIDDEN_HOST)); +#endif /* ok, the client is now fully hidden, so let them know -- hikari */ if (MyConnect(cptr)) @@ -1201,7 +1424,6 @@ sendcmdto_channel_butserv_butone(&me, CMD_MODE, chan->channel, cptr, 0, "%H +%c %C", chan->channel, IsChanOp(chan) ? 'o' : 'v', cptr); } -#endif return 0; } @@ -1371,6 +1593,20 @@ if (what == MODE_ADD) do_host_hiding = 1; break; +#if defined(DDB) || defined(SERVICES) + case 'r': + if (what == MODE_ADD) + SetNickRegistered(sptr); + else + ClearNickRegistered(sptr); + break; + case 'S': + if (what == MODE_ADD) + SetNickSuspended(sptr); + else + ClearNickSuspended(sptr); + break; +#endif /* defined(DDB) || defined(SERVICES) */ /* if none of the given case is valid then compain by * sending raw 501 ( ERR_UMODEUNKNOWNFLAG ) */ @@ -1413,6 +1649,12 @@ if (feature_bool(FEAT_HIS_DEBUG_OPER_ONLY) && !IsAnOper(sptr) && !FlagHas(&setflags, FLAG_DEBUG)) ClearDebug(sptr); +#if defined(DDB) || defined(SERVICES) + if (!FlagHas(&setflags, FLAG_NICKREG) && IsNickRegistered(sptr)) + ClearNickRegistered(sptr); + if (!FlagHas(&setflags, FLAG_NICKSUSPEND) && IsNickSuspended(sptr)) + ClearNickSuspended(sptr); +#endif /* defined(DDB) || defined(SERVICES) */ } if (MyConnect(sptr)) Index: ircd-ircdev/ircd/send.c diff -u ircd-ircdev/ircd/send.c:1.6 ircd-ircdev/ircd/send.c:1.7 --- ircd-ircdev/ircd/send.c:1.6 Mon Jan 10 04:23:04 2005 +++ ircd-ircdev/ircd/send.c Thu Mar 31 04:58:04 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Send messages to certain targets. - * @version $Id: send.c,v 1.6 2005/01/10 12:23:04 zolty Exp $ + * @version $Id: send.c,v 1.7 2005/03/31 12:58:04 zolty Exp $ */ #include "config.h" @@ -308,6 +308,34 @@ msgq_clean(mb); } +/** Send a bot command to a single client. + * @param[in] botname Bot sending the command. + * @param[in] cmd Long name of command (used if \a to is a user). + * @param[in] tok Short name of command (used if \a to is a server). + * @param[in] to Destination of command. + * @param[in] pattern Format string for command arguments. + */ +void sendcmdbotto_one(char *botname, const char *cmd, const char *tok, + struct Client *to, const char *pattern, ...) +{ + struct VarData vd; + struct MsgBuf *mb; + + to = cli_from(to); + + vd.vd_format = pattern; /* set up the struct VarData for %v */ + va_start(vd.vd_args, pattern); + + mb = msgq_make(to, ":%s %s %v", botname, cmd, &vd); + + va_end(vd.vd_args); + + send_buffer(to, mb, 0); + + msgq_clean(mb); + +} + /** Send a (prefixed) command to a single client. * @param[in] from Client sending the command. * @param[in] cmd Long name of command (used if \a to is a user). Index: ircd-ircdev/ircd/whocmds.c diff -u ircd-ircdev/ircd/whocmds.c:1.7 ircd-ircdev/ircd/whocmds.c:1.8 --- ircd-ircdev/ircd/whocmds.c:1.7 Mon Jan 10 04:23:04 2005 +++ ircd-ircdev/ircd/whocmds.c Thu Mar 31 04:58:04 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Support functions for /WHO-like commands. - * @version $Id: whocmds.c,v 1.7 2005/01/10 12:23:04 zolty Exp $ + * @version $Id: whocmds.c,v 1.8 2005/03/31 12:58:04 zolty Exp $ */ #include "config.h" @@ -198,6 +198,12 @@ if (SendDebug(acptr)) *(p1++) = 'g'; } +#if defined(DDB) || defined(SERVICES) + if (IsNickRegistered(acptr)) + *(p1++) = 'r'; + if (IsNickSuspended(acptr)) + *(p1++) = 'S'; +#endif if (HasHiddenHost(acptr)) *(p1++) = 'x'; } ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-03-28 12:36:15
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-03-28 12:36:05 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.13 ircd-ircdev/TODO.es:1.14 --- ircd-ircdev/TODO.es:1.13 Wed Mar 23 10:36:06 2005 +++ ircd-ircdev/TODO.es Mon Mar 28 04:35:55 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.13 2005/03/23 18:36:06 zolty Exp $ +# $Id: TODO.es,v 1.14 2005/03/28 12:35:55 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -38,7 +38,6 @@ la mascara. - [G] Si un global lo manda un ircop, que salga el prefijo de Mensaje global con la mascara o avisar mediante wallops global. - - [G] Modo de canal +D para conferencias. Mirar Asuka o Universal ircu de Run. - [S] Buscar una forma para cifrar IPs con un cambio de clave de cifrado incluido. - [S] Comando SVSNICK. - [S] Comando SVSMODE. @@ -58,17 +57,150 @@ - [G] Soporte SSL para client<->server. - [G] Mirar si el aviso de invites lo haga con wallchops o con raw. - [D] Documentar para Doxygen el Watch y el DDB + - [G] Soporte de +e (exceptions) de canales + - [G] STATS J para listar nicks en jupe + - [G] Modo de canal +u de esconder mensajes de quit y part (evitar + publicidad) + - [G] Sistema de modulos dinámicos + - [G] Bloque Logging en el .conf BUGS CONOCIDOS -------------------------------------------------------------------------------------- 1/Nov/2003 - - [G] Bug en nicks Jupeados en el ircd.conf. - [G] Bajo en ciertas circunstancias desconocidas del ircd.conf no pueden entrar clientes al IRCD. Investigar eso. - Leyenda: [G] General [U] Undernet [D] DDB [S] Services + +RESERVA DE MODOS: +Se muestran aqui modos para evitar incompatibilidades +Canal: +a hace admin de canal (Unreal) +A solo Admins (Unreal) +A APASS (Undernet) +c No ansi y mirc colores (Quakenet, Unreal, Bahamut) +C No CTCP (Quakenet, Unreal) +D Conferencias (Undernet, Quakenet) +e Excepciones (Unreal) +f Modo para controlar flood (Unreal) +G censura con badword (Unreal) +h da halfop (Unreal) +I exceptions de invite (Unreal) +j join throttling (Unreal) +K No knock (Unreal) +L envia a otro canal si ta lleno (Unreal) +M Solo +r pueden hablar (Unreal, Bahamut) +N No notices (Quakenet) +N No cambios de nick (Unreal) +O solo IRcops pueden entrar (Unreal) +q Founder de canal (Unreal) +Q solo uline pueden kickear (Unreal) +r Canal registrado (Dalnet) +R No entrada sin +r (Quakenet, Undernet) +S quita los colores (Unreal) +T No notices (Unreal) +u Esconder razon QUIT/PART (Quakenet) +u Auditorium (Unreal) +U UPASS (Undernet) +V No se permite /invite (Unreal) +z Solo pueden entrar +z SSL (Unreal) + +Incompatibilidades de modos de canales: +N QuakeNet con T de Unreal +D Undernet, QuakeNet con u de Unreal + + + +Usuarios: +A Server Admin (Unreal, Bahamut) +a Services Admin (Unreal, Bahamut) +B Bot (Unreal) +C Co-Admin (Unreal) +d dead no recibe msg canales (Undernet, Unreal) +g send y recv globops (Unreal, Bahamut) +G No badwords (Unreal) +h (sethost) (Quakenet) +h HelpOp (Unreal, Bahamut) +H Hide IRCOP status (Unreal) +I solo ops, esconder idle (Quakenet) +I Invisible oper (Bahamut) +n esconder canales whois/who (Quakenet) +N Network Admin (Unreal) +p esconder canales whois (Unreal) +q Solo pueden kickearle ulines (Unreal) +R Solo hablan +r (Quakenet, Unreal) +S proteccion de Services (Unreal) +t usar /vhost (Unreal) +T No recibir ctcps (Unreal) +v Notices sobre rechazos de DCC por virus (Unreal) +V WebTv User (Unreal) +W ver quien te hace whois (Unreal) +X solo ops, equivalente a JOIN #canal OPER (Quakenet) +z SSL client (Unreal) + +Incompatibilidades de modos de usuarios: +n QuakeNet con p de Unreal +h QuakeNet con t de Unreal + + +CURIOSIDADES: +Quakenet + * Command /check + Allows opers to see information about a channel, user or server. + Syntax: Check Channel: /check <#channel> [-i|-o|-u] + Check Server: /check <server> + Check User: /check <nick|hostmask|CIDR> [-c] + + Performing a /check on a server returns its status: + * bursting + ! awaiting burst acknowledgement + = network service + + network hub + +F:HIS_GLINE + * Type: boolean + * Default: TRUE + + As per QuakeNet Security, this removes the reason for GLINE from quit +messages. + +F:USER_HIDECHANS + * Type: boolean + * Default: FALSE + + This allows normal users to set the +n usermode (hide channels from +whois/who), + this is only recommended in special circumstances. + +F:AUTOINVISIBLE + * Type: boolean + * Default: TRUE + + As per QuakeNet Security, this option sets user mode +i on all +connecting clients + automatically. + +F:HIS_USERIP + * Type: boolean + * Default: TRUE + + As per QuakeNet Security, add the ability to disable the /USERIP +command for users. + +F:AUTOCHANMODES + * Type: boolean + * Default: TRUE + + Enable or disable auto (default) channel modes for new channels. + +F:AUTOCHANMODES_LIST + * Type: string + * Default: "ntCN" + + AUTOCHANMODES_LIST should contain the default channelmodes (e.g. +"ntCN") which will + be set by default on new channels. ----------------------- End of diff ----------------------- |
From: Toni G. <zo...@us...> - 2005-03-23 18:37:07
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-03-23 18:35:03 UTC Modified files: ChangeLog ChangeLog.es config.h.in configure configure.in include/client.h include/ddb.h include/hash.h include/ircd_features.h include/ircd_log.h include/msg.h include/patchlevel.h include/struct.h ircd/Makefile.in ircd/ddb.c ircd/hash.c ircd/ircd.c ircd/ircd_features.c ircd/ircd_log.c ircd/m_account.c ircd/m_db.c ircd/m_dbq.c ircd/parse.c ircd/s_bsd.c ircd/s_debug.c ircd/s_serv.c ircd/s_stats.c Added files: ircd/ddb_db_template.c Log message: Author: zoltan <zo...@ir...> Log message: 2005-03-23 Toni García <zo...@ir...> 1.0.alpha22 * Soporte de Bases de Datos Distribuidas en memoria * Comando DB * Comando DBQ * STATS B ---------------------- diff included ---------------------- Index: ircd-ircdev/ChangeLog diff -u ircd-ircdev/ChangeLog:1.23 ircd-ircdev/ChangeLog:1.24 --- ircd-ircdev/ChangeLog:1.23 Mon Mar 21 10:38:47 2005 +++ ircd-ircdev/ChangeLog Wed Mar 23 10:34:15 2005 @@ -1,10 +1,16 @@ # # ChangeLog for ircd-ircdev # -# $Id: ChangeLog,v 1.23 2005/03/21 18:38:47 zolty Exp $ +# $Id: ChangeLog,v 1.24 2005/03/23 18:34:15 zolty Exp $ # # Insert new changes at beginning of the change list. # +2005-03-23 Toni García <zo...@ir...> 1.0.alpha22 + * Distributed DataBase support in memory + * DB command + * DBQ command + * STATS B + 2005-03-21 Toni García <zo...@ir...> 1.0.alpha21 * Spelling correction in commentaries * Undernet synchronization Index: ircd-ircdev/ChangeLog.es diff -u ircd-ircdev/ChangeLog.es:1.23 ircd-ircdev/ChangeLog.es:1.24 --- ircd-ircdev/ChangeLog.es:1.23 Mon Mar 21 10:38:47 2005 +++ ircd-ircdev/ChangeLog.es Wed Mar 23 10:34:15 2005 @@ -1,10 +1,16 @@ # # Log de Cambios para ircd-ircdev # -# $Id: ChangeLog.es,v 1.23 2005/03/21 18:38:47 zolty Exp $ +# $Id: ChangeLog.es,v 1.24 2005/03/23 18:34:15 zolty Exp $ # # Insertar los nuevos cambios al principio de esta lista de cambios. # +2005-03-23 Toni García <zo...@ir...> 1.0.alpha22 + * Soporte de Bases de Datos Distribuidas en memoria + * Comando DB + * Comando DBQ + * STATS B + 2005-03-21 Toni García <zo...@ir...> 1.0.alpha21 * Corrección de ortografía en comentarios * Sincronización Undernet Index: ircd-ircdev/config.h.in diff -u ircd-ircdev/config.h.in:1.6 ircd-ircdev/config.h.in:1.7 --- ircd-ircdev/config.h.in:1.6 Mon Jan 10 04:32:42 2005 +++ ircd-ircdev/config.h.in Wed Mar 23 10:34:16 2005 @@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: config.h.in,v 1.6 2005/01/10 12:32:42 zolty Exp $ + * $Id: config.h.in,v 1.7 2005/03/23 18:34:16 zolty Exp $ * */ #ifndef INCLUDED_config_h @@ -93,6 +93,9 @@ /* Configuration file name */ #undef CPATH +/* DDB Environment (Distributed DataBase) */ +#undef DDB + /* Enable debugging code */ #undef DEBUGMODE @@ -229,6 +232,9 @@ /* Define if you have POSIX signals. */ #undef POSIX_SIGNALS +/* Services Environment (Ex-TerraIRCU) */ +#undef SERVICES + /* The size of a `int', as computed by sizeof. */ #undef SIZEOF_INT @@ -262,6 +268,9 @@ /* Define to 1 if your <sys/time.h> declares `struct tm'. */ #undef TM_IN_SYS_TIME +/* UnderNet Environment */ +#undef UNDERNET + /* Define to enable the /dev/poll engine */ #undef USE_DEVPOLL Index: ircd-ircdev/configure diff -u ircd-ircdev/configure:1.13 ircd-ircdev/configure:1.14 --- ircd-ircdev/configure:1.13 Wed Mar 9 10:12:30 2005 +++ ircd-ircdev/configure Wed Mar 23 10:34:18 2005 @@ -1326,6 +1326,7 @@ + echo "$as_me:$LINENO: checking for installation prefix" >&5 echo $ECHO_N "checking for installation prefix... $ECHO_C" >&6 if test "${unet_cv_prefix+set}" = set; then @@ -10193,8 +10194,21 @@ _ACEOF + + + + + + +cat >>confdefs.h <<\_ACEOF +#define DDB +_ACEOF + + ac_config_files="$ac_config_files Makefile ircd/Makefile ircd/test/Makefile doc/Makefile" + ac_config_commands="$ac_config_commands default" + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -10714,9 +10728,16 @@ _ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets @@ -11502,10 +11523,17 @@ echo "" echo " Maximum connections: $unet_cv_with_maxcon" echo " Domain: $unet_cv_with_domain" -#echo " IRC Environment: DDB (Distributed DataBase)" -#echo " IRC Environment: Services (Ex TerraIRCU)" -#echo " IRC Environment: Undernet" -#echo " IRC Environment: None (BUG, mail to zo...@ir...)" echo "" +if test x"$ircdev_cv_environment_ddb" = xyes; then +echo " IRC Environment: DDB (Distributed DataBase)" +elif test x"$ircdev_cv_environment_services" = xyes; then +echo " IRC Environment: Services (Ex TerraIRCU)" +elif test x"$ircdev_cv_environment_unet" = xyes; then +echo " IRC Environment: Undernet" +else +echo " IRC Environment: None (BUG, mail to zo...@ir...)" +fi +echo "" +echo "Type \"make\" to compile IRC-Dev IRCD" Index: ircd-ircdev/configure.in diff -u ircd-ircdev/configure.in:1.13 ircd-ircdev/configure.in:1.14 --- ircd-ircdev/configure.in:1.13 Wed Mar 9 10:12:30 2005 +++ ircd-ircdev/configure.in Wed Mar 23 10:34:23 2005 @@ -22,12 +22,13 @@ dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA dnl -dnl $Id: configure.in,v 1.13 2005/03/09 18:12:30 zolty Exp $ +dnl $Id: configure.in,v 1.14 2005/03/23 18:34:23 zolty Exp $ dnl dnl Make sure we are in the correct directory (someone could have run dnl 'configure' with a wrong '--srcdir'). -AC_INIT(ircd/ircd.c) +AC_INIT +AC_CONFIG_SRCDIR([ircd/ircd.c]) dnl Set the default prefix AC_PREFIX_DEFAULT([$HOME]) @@ -46,7 +47,7 @@ AC_CONFIG_HEADER([config.h]) dnl Demand at least version 2.50 of autoconf -AC_PREREQ(2.50) +AC_PREREQ(2.59) dnl Find out what type of system we are AC_CANONICAL_HOST @@ -756,8 +757,51 @@ AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $unet_cv_with_maxcon, [Maximum number of network connections]) + +dnl IRC Network environment +dnl Default DDB +dnl ircdev_cv_environment_ddb=yes; + +dnl --with-ddb-environment allows us to use DDB Environment +dnl AC_MSG_CHECKING([whether to use DDB Environment (Distributed DataBase)]) +dnl AC_ARG_WITH([ddb-environment], +dnl [ --with-ddb-environment Use the DDB Environment (Distributed DataBase)], +dnl [ircdev_cv_environment_ddb=$with_ddb_environment], +dnl [AC_CACHE_VAL(ircdev_cv_environment_ddb, +dnl [ircdev_cv_environment_ddb=no])]) +dnl AC_MSG_RESULT([$ircdev_cv_environment_ddb]) + +dnl LO COMENTO PORQUE NO EXISTE AUN! +dnl --with-services-environment allows us to use Services Environment +dnl AC_MSG_CHECKING([whether to use Services Environment (Ex TerraIRCU)]) +dnl AC_ARG_WITH([services-environment], +dnl [ --with-services-environment Use the Services Environment (Ex TerraIRCU)], +dnl [ircdev_cv_environment_services=$with_services_environment], +dnl [AC_CACHE_VAL(ircdev_cv_environment_services, +dnl [ircdev_cv_environment_services=no])]) +dnl AC_MSG_RESULT([$ircdev_cv_environment_services]) + +dnl --with-undernet-environment allows us to use Undernet Environment +dnl AC_MSG_CHECKING([whether to use Undernet Environment]) +dnl AC_ARG_WITH([undernet-environment], +dnl [ --with-undernet-environment Use the Undernet Environment], +dnl [ircdev_cv_environment_undernet=$with_undernet_environment], +dnl [AC_CACHE_VAL(ircdev_cv_environment_undernet, +dnl [ircdev_cv_environment_undernet=no])]) +dnl AC_MSG_RESULT([$ircdev_cv_environment_undernet]) + +dnl if test x"$ircdev_cv_environment_ddb" != "xno" ; then + AC_DEFINE([DDB], , [DDB Environment (Distributed DataBase)]) +dnl else if x"$ircdev_cv_environment_services" != "xno" ; then +dnl AC_DEFINE([SERVICES], , [Services Environment (Ex-TerraIRCU)]) +dnl else if if x"$ircdev_cv_environment_undernet" != "xno" ; then +dnl AC_DEFINE([UNDERNET], , [UnderNet Environment]) +dnl fi + dnl Finally really generate all output files: -AC_OUTPUT(Makefile ircd/Makefile ircd/test/Makefile doc/Makefile, [echo timestamp > stamp-h]) +AC_CONFIG_FILES([Makefile ircd/Makefile ircd/test/Makefile doc/Makefile]) +AC_CONFIG_COMMANDS([default],[[echo timestamp > stamp-h]],[[]]) +AC_OUTPUT dnl Report configuration echo "IRC-Dev ircd is now hopefully configured for your system." @@ -799,10 +843,17 @@ echo "" echo " Maximum connections: $unet_cv_with_maxcon" echo " Domain: $unet_cv_with_domain" -#echo " IRC Environment: DDB (Distributed DataBase)" -#echo " IRC Environment: Services (Ex TerraIRCU)" -#echo " IRC Environment: Undernet" -#echo " IRC Environment: None (BUG, mail to zo...@ir...)" echo "" +if test x"$ircdev_cv_environment_ddb" = xyes; then +echo " IRC Environment: DDB (Distributed DataBase)" +elif test x"$ircdev_cv_environment_services" = xyes; then +echo " IRC Environment: Services (Ex TerraIRCU)" +elif test x"$ircdev_cv_environment_unet" = xyes; then +echo " IRC Environment: Undernet" +else +echo " IRC Environment: None (BUG, mail to zo...@ir...)" +fi +echo "" +echo "Type \"make\" to compile IRC-Dev IRCD" Index: ircd-ircdev/include/client.h diff -u ircd-ircdev/include/client.h:1.11 ircd-ircdev/include/client.h:1.12 --- ircd-ircdev/include/client.h:1.11 Wed Mar 9 10:12:33 2005 +++ ircd-ircdev/include/client.h Wed Mar 23 10:34:24 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Structures and functions for handling local clients. - * @version $Id: client.h,v 1.11 2005/03/09 18:12:33 zolty Exp $ + * @version $Id: client.h,v 1.12 2005/03/23 18:34:24 zolty Exp $ */ #ifndef INCLUDED_client_h #define INCLUDED_client_h @@ -128,6 +128,9 @@ PRIV_LIST_CHAN, /**< oper can list secret channels */ PRIV_FORCE_OPMODE, /**< can hack modes on quarantined channels */ PRIV_FORCE_LOCAL_OPMODE, /**< can hack modes on quarantined local channels */ +#if defined(DDB) + PRIV_DBQ, /**< oper can use DBQ (DataBase Query) */ +#endif PRIV_APASS_OPMODE, /**< can hack modes +A/-A/+U/-U */ PRIV_LAST_PRIV /**< number of privileges */ }; Index: ircd-ircdev/include/ddb.h diff -u ircd-ircdev/include/ddb.h:1.2 ircd-ircdev/include/ddb.h:1.3 --- ircd-ircdev/include/ddb.h:1.2 Mon Jan 10 04:21:59 2005 +++ ircd-ircdev/include/ddb.h Wed Mar 23 10:34:25 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ddb.h,v 1.2 2005/01/10 12:21:59 zolty Exp $ + * $Id: ddb.h,v 1.3 2005/03/23 18:34:25 zolty Exp $ * */ #ifndef INCLUDED_ddb_h @@ -27,13 +27,17 @@ #include "config.h" #include "client.h" +#include <sys/stat.h> + #if defined(DDB) /* * General defines */ - +/* Las tablas con los registros, serie, version */ #define DDB_TABLE_MAX 256 +/*Numero de peticiones de registros antes de que haya que empezar a reciclar */ +#define DDB_BUF_CACHE 32 /* * Distributed DataBase Tables @@ -55,48 +59,98 @@ struct Ddb *next; }; +#if 0 +struct portable_stat +{ + dev_t dev; /* ID of device containing a directory entry for this file */ + ino_t ino; /* Inode number */ + off_t size; /* File size in bytes */ + time_t mtime; /* Time of last data modification */ +} +#endif + + struct ddb_memory_table { - char *position; - unsigned int len; - char *point_r; - char *point_w; + struct stat status; + char *position; /* Posicion */ + char *point_r; /* Lectura */ +#if 0 + char *point_w; /* Escritura */ +#endif }; +#if 0 +struct db_file__ { + char *map_p; lo mismo que position + struct stat estado; + char *read_p; +}; +estado.st_size + +struct stat +{ + st_size + st_mtime +} + +struct portable_stat +{ + dev_t dev; /* ID of device containing a directory +entry for this file */ + ino_t ino; /* Inode number */ + off_t size; /* File size in bytes */ + time_t mtime; /* Time of last data modification */ +} +#endif + +#define DdbMalloc(x) MyMalloc(x) +#define DdbFree(x) MyFree(x) /* * Prototypes */ extern struct Ddb **ddb_data_table[DDB_TABLE_MAX]; -extern int ddb_resident_table[DDB_TABLE_MAX]; -extern unsigned long int ddb_count_table[DDB_TABLE_MAX]; -extern unsigned long int ddb_id_table[DDB_TABLE_MAX]; -extern unsigned long int ddb_hashtable_hi[DDB_TABLE_MAX]; -extern unsigned long int ddb_hashtable_lo[DDB_TABLE_MAX]; +extern unsigned int ddb_resident_table[DDB_TABLE_MAX]; +extern unsigned int ddb_count_table[DDB_TABLE_MAX]; +extern unsigned int ddb_id_table[DDB_TABLE_MAX]; +extern unsigned int ddb_hashtable_hi[DDB_TABLE_MAX]; +extern unsigned int ddb_hashtable_lo[DDB_TABLE_MAX]; +extern int ddb_hash_register(char *key, int hash_size); extern int ddb_table_is_resident(unsigned char table); -extern unsigned long int ddb_id_in_table(unsigned char table); -extern unsigned long int ddb_count_in_table(unsigned char table); +extern unsigned int ddb_id_in_table(unsigned char table); +extern unsigned int ddb_count_in_table(unsigned char table); extern void ddb_init(void); -extern int ddb_open(unsigned int registry, char *buf, unsigned char table, - struct ddb_memory_table *dump); + + +/* extern int ddb_read(struct ddb_memory_table *dump, char *buf); -extern void ddb_add(char *registry, unsigned char table, int save_disk); -extern void ddb_del(char *registry, unsigned char table); +*/ +extern void ddb_new_register(struct Client *cptr, unsigned char table, char *mask, unsigned int id, char *key, char *content); extern void ddb_drop(unsigned char table); -extern void ddb_close(struct ddb_memory_table *dump); -extern void ddb_hash_write(unsigned char table); -extern struct Ddb *ddb_find_reg(unsigned char table, char *key); -extern int ddb_is_member(unsigned char table, char *key, char *subcadena); -extern char *ddb_get_botname(char *bot); +extern void ddb_drop_memory(unsigned char table, int events); +extern void ddb_burst(struct Client *cptr); +extern int ddb_table_burst(struct Client *cptr, unsigned char table, unsigned int id); -extern struct Ddb *ddb_iterator_init(unsigned char table); -extern struct Ddb *ddb_iterator_next(void); +extern struct Ddb *ddb_iterator_first(unsigned char table); +extern struct Ddb *ddb_iterator_next(void); +extern struct Ddb *ddb_find_key(unsigned char table, char *key); +extern char *ddb_get_botname(char *bot); +extern void ddb_splithubs_butone(struct Client *cptr, char *exitmsg); extern void ddb_reload(void); -extern void ddb_die(char *msg, unsigned char table); -extern void ddb_burst(struct Client *cptr); -extern void report_ddb(struct Client *cptr); +extern void ddb_die(const char *pattern, ...); +extern void ddb_report_stats(struct Client* to, const struct StatDesc* sd, char* param); + +/* Externs de ddb_db_*.c */ +extern int ddb_db_open(unsigned char table, unsigned int id, struct ddb_memory_table *mt); +extern void ddb_db_close(struct ddb_memory_table *mt); +extern void ddb_db_write(unsigned char table, char *mask, unsigned int id, char *key, char *content); +extern void ddb_db_drop(unsigned char table); +extern void ddb_compact(unsigned char table, char *mask, unsigned int id, char *comment); +extern void ddb_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo); +extern void ddb_hash_write(unsigned char table); #endif /* defined(DDB) */ Index: ircd-ircdev/include/hash.h diff -u ircd-ircdev/include/hash.h:1.5 ircd-ircdev/include/hash.h:1.6 --- ircd-ircdev/include/hash.h:1.5 Mon Jan 10 04:21:59 2005 +++ ircd-ircdev/include/hash.h Wed Mar 23 10:34:25 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief Hash table management APIs. - * @version $Id: hash.h,v 1.5 2005/01/10 12:21:59 zolty Exp $ + * @version $Id: hash.h,v 1.6 2005/03/23 18:34:25 zolty Exp $ */ #ifndef INCLUDED_hash_h #define INCLUDED_hash_h @@ -38,7 +38,7 @@ /** Size of client and channel hash tables. * Both must be of the same size. */ -#define HASHSIZE 32000 +#define HASHSIZE 32768 /* * Structures Index: ircd-ircdev/include/ircd_features.h diff -u ircd-ircdev/include/ircd_features.h:1.9 ircd-ircdev/include/ircd_features.h:1.10 --- ircd-ircdev/include/ircd_features.h:1.9 Mon Jan 10 04:21:59 2005 +++ ircd-ircdev/include/ircd_features.h Wed Mar 23 10:34:25 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Public interfaces and declarations for dealing with configurable features. - * @version $Id: ircd_features.h,v 1.9 2005/01/10 12:21:59 zolty Exp $ + * @version $Id: ircd_features.h,v 1.10 2005/03/23 18:34:25 zolty Exp $ */ #ifndef INCLUDED_features_h #define INCLUDED_features_h @@ -112,6 +112,9 @@ FEAT_HIS_STATS_l, FEAT_HIS_STATS_L, FEAT_HIS_STATS_a, +#if defined(DDB) + FEAT_HIS_STATS_b, +#endif FEAT_HIS_STATS_c, FEAT_HIS_STATS_g, FEAT_HIS_STATS_h, Index: ircd-ircdev/include/ircd_log.h diff -u ircd-ircdev/include/ircd_log.h:1.5 ircd-ircdev/include/ircd_log.h:1.6 --- ircd-ircdev/include/ircd_log.h:1.5 Mon Jan 10 04:22:00 2005 +++ ircd-ircdev/include/ircd_log.h Wed Mar 23 10:34:25 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief IRC logging interface. - * @version $Id: ircd_log.h,v 1.5 2005/01/10 12:22:00 zolty Exp $ + * @version $Id: ircd_log.h,v 1.6 2005/03/23 18:34:25 zolty Exp $ */ #ifndef INCLUDED_ircd_log_h #define INCLUDED_ircd_log_h @@ -61,6 +61,9 @@ LS_JUPE, /**< Adding, (de-)activating or removing JUPEs. */ LS_WHO, /**< Use of extended WHO privileges. */ LS_NETWORK, /**< New server connections. */ +#ifdef DDB + LS_DDB, /**< Distributed DataBase errors and warnings */ +#endif LS_OPERKILL, /**< Kills by IRC operators. */ LS_SERVKILL, /**< Kills by servers. */ LS_USER, /**< User exits. */ Index: ircd-ircdev/include/msg.h diff -u ircd-ircdev/include/msg.h:1.9 ircd-ircdev/include/msg.h:1.10 --- ircd-ircdev/include/msg.h:1.9 Mon Jan 10 04:22:00 2005 +++ ircd-ircdev/include/msg.h Wed Mar 23 10:34:26 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Command and token declarations and structures. - * @version $Id: msg.h,v 1.9 2005/01/10 12:22:00 zolty Exp $ + * @version $Id: msg.h,v 1.10 2005/03/23 18:34:26 zolty Exp $ */ #ifndef INCLUDED_msg_h #define INCLUDED_msg_h @@ -371,9 +371,11 @@ #define MSG_DB "DB" /* DB */ #define TOK_DB "DB" +#define CMD_DB MSG_DB, TOK_DB #define MSG_DBQ "DBQ" /* DBQ */ #define TOK_DBQ "DBQ" +#define CMD_DBQ MSG_DBQ, TOK_DBQ /* Index: ircd-ircdev/include/patchlevel.h diff -u ircd-ircdev/include/patchlevel.h:1.23 ircd-ircdev/include/patchlevel.h:1.24 --- ircd-ircdev/include/patchlevel.h:1.23 Mon Mar 21 10:39:04 2005 +++ ircd-ircdev/include/patchlevel.h Wed Mar 23 10:34:26 2005 @@ -17,10 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: patchlevel.h,v 1.23 2005/03/21 18:39:04 zolty Exp $ + * $Id: patchlevel.h,v 1.24 2005/03/23 18:34:26 zolty Exp $ * */ -#define PATCHLEVEL ".alpha21" +#define PATCHLEVEL ".alpha22" #define RELEASE "1.0" Index: ircd-ircdev/include/struct.h diff -u ircd-ircdev/include/struct.h:1.7 ircd-ircdev/include/struct.h:1.8 --- ircd-ircdev/include/struct.h:1.7 Mon Jan 10 04:22:00 2005 +++ ircd-ircdev/include/struct.h Wed Mar 23 10:34:27 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief Structure definitions for users and servers. - * @version $Id: struct.h,v 1.7 2005/01/10 12:22:00 zolty Exp $ + * @version $Id: struct.h,v 1.8 2005/03/23 18:34:27 zolty Exp $ */ #ifndef INCLUDED_struct_h #define INCLUDED_struct_h @@ -61,6 +61,10 @@ int asll_to; /**< AsLL upstream lag */ int asll_from; /**< AsLL downstream lag */ +#if defined(DDB) + unsigned long ddb_open; /**< DDB database open */ +#endif + char *last_error_msg; /**< Allocated memory with last message receive with an ERROR */ char by[NICKLEN + 1]; /**< Numnick of client who requested the link */ }; Index: ircd-ircdev/ircd/Makefile.in diff -u ircd-ircdev/ircd/Makefile.in:1.19 ircd-ircdev/ircd/Makefile.in:1.20 --- ircd-ircdev/ircd/Makefile.in:1.19 Mon Mar 21 10:39:05 2005 +++ ircd-ircdev/ircd/Makefile.in Wed Mar 23 10:34:27 2005 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA -# $Id: Makefile.in,v 1.19 2005/03/21 18:39:05 zolty Exp $ +# $Id: Makefile.in,v 1.20 2005/03/23 18:34:27 zolty Exp $ #### Start of system configuration section. #### @@ -57,6 +57,7 @@ MPATH = ${DPATH}/ircd.motd RPATH = ${DPATH}/remote.motd + CC = @CC@ CFLAGS = @CFLAGS@ CPPFLAGS = -I. -I.. -I${top_srcdir}/include @CPPFLAGS@ @@ -86,6 +87,15 @@ memdebug.c \ umkpasswd.c +UNDERNET_SRC = \ + m_account.c \ + +DDB_SRC = \ + ddb.c \ + ddb_db_template.c \ + m_db.c \ + m_dbq.c + IRCD_SRC = \ IPcheck.c \ channel.c \ @@ -93,7 +103,6 @@ client.c \ crule.c \ dbuf.c \ - ddb.c \ destruct_event.c \ fileio.c \ gline.c \ @@ -117,7 +126,6 @@ lex.yy.c \ list.c \ listener.c \ - m_account.c \ m_admin.c \ m_asll.c \ m_away.c \ @@ -128,8 +136,6 @@ m_connect.c \ m_cprivmsg.c \ m_create.c \ - m_db.c \ - m_dbq.c \ m_defaults.c \ m_destruct.c \ m_desynch.c \ @@ -223,13 +229,15 @@ whowas.c \ y.tab.c -SRC = ${IRCD_SRC} ${ENGINE_C} ${CRYPTO_SRC} +#SRC = ${IRCD_SRC} ${ENGINE_C} ${CRYPTO_SRC} +#SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${ENGINE_C} ${CRYPTO_SRC} +SRC = ${IRCD_SRC} ${DDB_SRC} ${ENGINE_C} ${CRYPTO_SRC} OBJS = ${SRC:%.c=%.o} UMKPASSWD_OBJS = ${UMKPASSWD_SRC:%.c=%.o} -DEP_SRC = ${IRCD_SRC} ${ENGINE_SRC} ${CRYPTO_SRC} +DEP_SRC = ${IRCD_SRC} ${UNDERNET_SRC} ${DDB} ${ENGINE_SRC} ${CRYPTO_SRC} all: ( cd ..; make -f Makefile ) Index: ircd-ircdev/ircd/ddb.c diff -u ircd-ircdev/ircd/ddb.c:1.3 ircd-ircdev/ircd/ddb.c:1.4 --- ircd-ircdev/ircd/ddb.c:1.3 Mon Jan 10 04:22:58 2005 +++ ircd-ircdev/ircd/ddb.c Wed Mar 23 10:34:46 2005 @@ -18,7 +18,634 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: ddb.c,v 1.3 2005/01/10 12:22:58 zolty Exp $ - * + */ +/** @file + * @brief Implementation of Distributed DataBase. + * @version $Id: ddb.c,v 1.4 2005/03/23 18:34:46 zolty Exp $ */ #include "config.h" + +#include "ddb.h" +#include "ircd.h" +#include "ircd_alloc.h" +#include "ircd_chattr.h" +#include "ircd_log.h" +#include "ircd_reply.h" +#include "ircd_string.h" +#include "ircd_tea.h" +#include "list.h" +#include "match.h" +#include "msg.h" +#include "numeric.h" +#include "s_bsd.h" +#include "s_debug.h" +#include "s_misc.h" +#include "send.h" + +/* #include <assert.h> -- Now using assert in ircd_log.h */ +#include <stdarg.h> +#include <stdio.h> +/*#include <stdlib.h> */ +#include <string.h> +#include <time.h> + +static struct Ddb ddb_buf_cache[DDB_BUF_CACHE]; +static int ddb_buf_cache_i = 0; + +struct Ddb **ddb_data_table[DDB_TABLE_MAX]; +short ddb_corrupt_table[DDB_TABLE_MAX]; +unsigned int ddb_resident_table[DDB_TABLE_MAX]; +unsigned int ddb_count_table[DDB_TABLE_MAX]; +unsigned int ddb_id_table[DDB_TABLE_MAX]; +unsigned int ddb_hashtable_hi[DDB_TABLE_MAX]; +unsigned int ddb_hashtable_lo[DDB_TABLE_MAX]; +struct ddb_memory_table ddb_memorytable[DDB_TABLE_MAX]; + +static struct Ddb *ddb_iterator_key = NULL; +static struct Ddb **ddb_iterator_content = NULL; +static int ddb_iterator_hash_pos = 0; +static int ddb_iterator_hash_len = 0; + +static void ddb_table_init(unsigned char table); +static void ddb_add_key(unsigned char table, char *key, char *content); +static void ddb_del_key(unsigned char table, char *key); + + +int ddb_table_is_resident(unsigned char table) +{ + return ddb_resident_table[table] ? 1 : 0; +} + +/* +unsigned int ddb_id_in_table(unsigned char table) +{ + return ddb_id_in_table[table]; +} + +unsigned int ddb_count_in_table(unsigned char table) +{ + return ddb_count_in_table[table]; +} +*/ + +static void DdbCopyMalloc(char *buf, int len, char **p) +{ + char *p2; + + p2 = *p; + if ((p2) && (strlen(p2) < len)) + { + MyFree(p2); + p2 = NULL; + } + if (!p2) + { + p2 = MyMalloc(len + 1); /* El '\0' final */ + *p = p2; + } + memcpy(p2, buf, len); + p2[len] = '\0'; +} + +static void ddb_hash_calculate(unsigned char table, unsigned int id, char *mask, char *key, char *content) +{ + unsigned int buffer[129 * sizeof(unsigned int)]; + unsigned int *p = buffer; + unsigned int x[2], v[2], k[2]; + char *p2; + char buf[1024]; + + /* ID Mask Key Content */ + if (content) + sprintf(buf, "%u %s %s %s", id, mask, key, content); + else + sprintf(buf, "%u %s %s", id, mask, key); + memset(buffer, 0, sizeof(buffer)); + strncpy((char *)buffer, buf, sizeof(buffer) - 1); + + + /* Parece que no es necesario, comprobarlo */ + while ((p2 = strchr((char *)buffer, '\n'))) + *p2 = '\0'; + while ((p2 = strchr((char *)buffer, '\r'))) + *p2 = '\0'; + + k[0] = k[1] = 0; + x[0] = ddb_hashtable_hi[table]; + x[1] = ddb_hashtable_lo[table] = x[1]; + + while (*p) + { + v[0] = ntohl(*p++); + v[1] = ntohl(*p++); + ircd_tea(v, k, x); + } + ddb_hashtable_hi[table] = x[0]; + ddb_hashtable_lo[table] = x[1]; +} + + +/** initialize Distributed DataBase + */ +void +ddb_init(void) +{ + unsigned char table; + + /* ddb_events_init(); */ + + memset(ddb_resident_table, 0, sizeof(ddb_resident_table)); + + /* + * Las longitudes DEBEN ser potencias de 2, + * y no deben ser superiores a HASHSIZE, ya que ello + * solo desperdiciaria memoria. + */ + ddb_resident_table[DDB_NICKDB] = 32768; + + for (table = DDB_INIT; table <= DDB_END; table++) + ddb_table_init(table); + + /* + * La operacion anterior puede ser una operacion larga. + * Resincronizamos tiempo. + */ + CurrentTime = time(NULL); +} + +static void ddb_table_init(unsigned char table) +{ + + ddb_drop_memory(table, 0); + /* Leer Datos */ + + /* Leer Hash */ + +} + +void +ddb_new_register(struct Client *cptr, unsigned char table, char *mask, unsigned int id, char *key, char *content) +{ + static char *keytemp = NULL; + static int key_len = 0; + + assert(0 != table); + assert(0 != key); + + ddb_hash_calculate(table, id, mask, key, content); + + /* Al iniciar, cptr no existe y por lo tanto no se escribe */ + if (cptr) + { + ddb_db_write(table, mask, id, key, content); + ddb_hash_write(table); + } + + ddb_id_table[table] = id; + + /* Solo ponemos en memoria registros cuya mascara + * concuerda con el servidor. + * Y por supuesto, que sean residentes + */ + if (!ddb_resident_table[table]) + return; + + /* Usamos collapse+match por un bug en lastNNServer del find_match_server */ + collapse(mask); + if (!match(mask, cli_name(&me))) + { + int i = 0; + + /* pasamos el key en minusculas */ + if ((strlen(key) + 1 > key_len) || (!keytemp)) + { + key_len = strlen(key) + 1; + if (keytemp) + MyFree(keytemp); + keytemp = MyMalloc(key_len); + + assert(0 != keytemp); + } + strcpy(keytemp, key); + while (keytemp[i]) + { +/* keytemp[i] = toLower(keytemp[i]); */ + i++; + } + + if (content) + ddb_add_key(table, keytemp, content); + else + ddb_del_key(table, keytemp); + +#if 0 + /* Ejecutamos los eventos */ + if (!cptr && ddb_event_tables[table]) + ddb_event_parse[table](key, content); +#endif + } + +} + +static void +ddb_add_key(unsigned char table, char *key, char *content) +{ + struct Ddb *ddb; + char *k, *c; + int hashi; + + ddb_iterator_key = NULL; + + ddb_del_key(table, key); + + ddb = DdbMalloc(sizeof(struct Ddb) + strlen(key) + strlen(content) + 2); + assert(0 != ddb); + + k = (char *)ddb + sizeof(struct Ddb); + c = k + strlen(key) + 1; + + strcpy(k, key); + strcpy(c, content); + + /* paso a minusculas */ +/* + while (c[i] != 0) + { + k[i] = toLower(c[i]); + i++; + } +*/ + + ddb->key = k; + ddb->content = c; +// strcpy(ddb->key, key); +// strcpy(ddb->content, content); + ddb->next = NULL; + + hashi = ddb_hash_register(ddb->key, ddb_resident_table[table]); + + Debug((DEBUG_INFO, "Inserto T='%c' K='%s' C='%s' H=%u",table, ddb->key, ddb->content, hashi)); + + ddb->next = ddb_data_table[table][hashi]; + ddb_data_table[table][hashi] = ddb; + ddb_count_table[table]++; + + /* EVENTOS DE ALTA */ +} + +static void +ddb_del_key(unsigned char table, char *key) +{ + struct Ddb *ddb, *ddb2, **ddb3; + int hashi; + + ddb_iterator_key = NULL; + + hashi = ddb_hash_register(key, ddb_resident_table[table]); + ddb3 = &ddb_data_table[table][hashi]; + + for (ddb = *ddb3; ddb; ddb = ddb2) + { + ddb2 = ddb->next; + if (!strcmp(ddb->key, key)) + { + *ddb3 = ddb2; + /* EVENTOS de BAJA */ + DdbFree(ddb); + ddb_count_table[table]--; + break; + } + ddb3 = &(ddb->next); + } +} + + +void +ddb_drop(unsigned char table) +{ + + /* Borramos el fichero de la tabla */ + /* TODO-ZOLTAN: Comento, para only-read */ +/* ddb_db_drop(table); */ + + /* Borramos la tabla en la memoria */ + ddb_drop_memory(table, 0); + +/* TODO-ZOLTAN: Comento, para only-read */ +/* ddb_hash_write(table); */ + ddb_corrupt_table[table] = 0; +/* + tabla_modificado[tabla] = time(NULL); +*/ +} + +void ddb_drop_memory(unsigned char table, int events) +{ + struct Ddb *ddb, *ddb2; + int i; + + if (!ddb_resident_table[table]) + return; + + if (ddb_data_table[table]) + { + for (i = 0; i < ddb_resident_table[table]; i++) + { + for (ddb = ddb_data_table[table][i]; ddb; ddb = ddb2) + { + ddb2 = ddb->next; +#if 0 + if (events && ddb_event_tables[table]) + ddb_event_parse[table](ddb->key, NULL); +#endif + DdbFree(ddb); + } + } + } + else + { + ddb_data_table[table] = DdbMalloc(ddb_resident_table[table] * sizeof(struct Ddb *)); + assert(ddb_data_table[table]); + } + + for (i = 0; i < ddb_resident_table[table]; i++) + { + ddb_data_table[table][i] = NULL; + } + + ddb_count_table[table] = 0; + ddb_id_table[table] = 0; + ddb_hashtable_hi[table] = 0; + ddb_hashtable_lo[table] = 0; +/* + tabla_corrupta[tabla] = 0; + tabla_modificado[tabla] = time(NULL); +*/ +} + + +void +ddb_burst(struct Client *cptr) +{ + int i; + + for (i = DDB_INIT; i <= DDB_END; i++) + sendcmdto_one(&me, CMD_DB, cptr, "* 0 J %u %c", + ddb_id_table[i], i); +} + +int +ddb_table_burst(struct Client *cptr, unsigned char table, unsigned int id) +{ + return 1; + +#if 0 + int cont = 1000; + /* Leer Datos */ + + do + { + + if (content) + sendcmdto_one(&me, CMD_DB, cptr, "%s %u %s %s :%s", mask, id, table, key, content); + else + sendcmdto_one(&me, CMD_DB, cptr, "%s %u %s %s", mask, id, table, key); + + if (!(--cont)) + break; + } while (leer) + + if (cont) + { + cli_serv(cptr)->ddb_open |= ((unsigned int)1) << (table - DDB_INIT); + return 1; + } + else + sendcmdto_one(&me, CMD_DB, cptr, "%s 0 B %u %c", mask, ddb_id_table[table], table); + + return 0; +#endif +} + + +static struct Ddb * +ddb_iterator_init(void) +{ + struct Ddb *ddb; + + if (ddb_iterator_key) + { + ddb_iterator_key = ddb_iterator_key->next; + if (ddb_iterator_key) + { + return ddb_iterator_key; + } + } + + /* + * Indica el PROXIMO valor a utilizar. + */ + while (ddb_iterator_hash_pos < ddb_iterator_hash_len) + { + ddb = ddb_iterator_content[ddb_iterator_hash_pos++]; + if (ddb) { + ddb_iterator_key = ddb; + return ddb; + } + } + + ddb_iterator_key = NULL; + ddb_iterator_content = NULL; + ddb_iterator_hash_pos = 0; + ddb_iterator_hash_len = 0; + + return NULL; +} + +struct Ddb * +ddb_iterator_first(unsigned char table) +{ + assert((table >= DDB_INIT) && (table <= DDB_END)); + + ddb_iterator_hash_len = ddb_resident_table[table]; + assert(ddb_iterator_hash_len); + + ddb_iterator_hash_pos = 0; + ddb_iterator_content = ddb_data_table[table]; + ddb_iterator_key = NULL; + + return ddb_iterator_init(); +} + +struct Ddb * +ddb_iterator_next(void) +{ + assert(ddb_iterator_key); + assert(ddb_iterator_content); + assert(ddb_iterator_hash_len); + + return ddb_iterator_init(); +} + + +static struct Ddb *ddb_find_registry_table(unsigned char table, char *key) +{ + struct Ddb *ddb; + static char *k = 0; + static int k_len = 0; + int i, hashi; + + if ((strlen(key) + 1 > k_len) || (!k)) + { + k_len = strlen(key) + 1; + if (k) + MyFree(k); + k = MyMalloc(k_len); + if (!k) + return 0; + } + strcpy(k, key); + /* paso a minusculas */ + i = 0; + while (k[i]) + { +/* k[i] = ToLower(k[i]); */ + i++; + } + + hashi = ddb_hash_register(k, ddb_resident_table[table]); + + for (ddb = ddb_data_table[table][hashi]; ddb; ddb = ddb->next) + { +/* if (!strcmp(ddb->key, k)) */ + if (!ircd_strcmp(ddb->key, k)) + return ddb; + } + return NULL; +} + +struct Ddb *ddb_find_key(unsigned char table, char *key) +{ + struct Ddb *ddb; + char *key_init; + char *key_end; + char *content_init; + char *content_end; + + if (!ddb_resident_table[table]) + return NULL; + + ddb = ddb_find_registry_table(table, key); + if (!ddb) + return NULL; + + /* Lo que sigue lo sustituye */ + key_init = ddb->key; + key_end = key_init + strlen(key_init); + content_init = ddb->content; + content_end = content_init + strlen(content_init); + + DdbCopyMalloc(key_init, key_end - key_init, + &ddb_buf_cache[ddb_buf_cache_i].key); + DdbCopyMalloc(content_init, content_end - content_init, + &ddb_buf_cache[ddb_buf_cache_i].content); + if (++ddb_buf_cache_i >= DDB_BUF_CACHE) + ddb_buf_cache_i = 0; + + return ddb; +} + +char * +ddb_get_botname(char *bot) +{ + return cli_name(&me); +} + + +void +ddb_reload(void) +{ + sendto_opmask_butone(0, SNO_OLDSNO, "Reload Distributed DataBase..."); + log_write(LS_DDB, L_INFO, 0, "Reload Distributed DataBase..."); + + ddb_init(); +} + + +/** Split all Hubs but one. + * @param[in] cptr Client that is not closed. + * @param[in] exitmsg SQUIT message. + */ +void +ddb_splithubs_butone(struct Client *cptr, char *exitmsg) +{ + struct DLink *lp, *lp2; + struct Client *acptr; + + for (lp = cli_serv(&me)->down; lp; lp = lp2) + { + lp2 = lp->next; + + acptr = lp->value.cptr; + if ((acptr != cptr) && (IsHub(acptr))) + exit_client(acptr, acptr, &me, exitmsg); + } +} + +/** Die the server with an DDB error. + * @param[in] pattern Format string of message. + */ +void +ddb_die(const char *pattern, ...) +{ + struct Client *acptr; + char exitmsg[1024], exitmsg2[1024]; + va_list vl; + int i; + + va_start(vl, pattern); + vsprintf(exitmsg2, pattern, vl); + va_end(vl); + + sprintf(exitmsg, "DDB Error: %s", exitmsg2); + + for (i = 0; i <= HighestFd; i++) + { + if (!(acptr = LocalClientArray[i])) + continue; + if (IsUser(acptr)) + sendcmdto_one(&me, CMD_NOTICE, acptr, "%C :Server Terminating. %s", + acptr, exitmsg); + else if (IsServer(acptr)) + sendcmdto_one(&me, CMD_ERROR, acptr, ":Terminated by %s", exitmsg); + } + server_die(exitmsg); +} + + +/** Report all F-lines to a user. + * @param[in] to Client requesting statistics. + * @param[in] sd Stats descriptor for request (ignored). + * @param[in] param Extra parameter from user (ignored). + */ +void +ddb_report_stats(struct Client* to, const struct StatDesc* sd, char* param) +{ + unsigned char table; + + for (table = DDB_INIT; table <= DDB_END; table++) + { + if (ddb_table_is_resident(table)) + send_reply(to, SND_EXPLICIT | RPL_STATSDEBUG, + "b :Table '%c' S=%lu R=%lu", table, + (unsigned long)ddb_id_table[table], + (unsigned long)ddb_count_table[table]); + else + { + if (ddb_id_table[table]) + send_reply(to, SND_EXPLICIT | RPL_STATSDEBUG, + "b :Table '%c' S=%lu NoResident", table, + (unsigned long)ddb_id_table[table]); + } + } +} Index: ircd-ircdev/ircd/ddb_db_template.c diff -u /dev/null ircd-ircdev/ircd/ddb_db_template.c:1.1 --- /dev/null Wed Mar 23 10:36:27 2005 +++ ircd-ircdev/ircd/ddb_db_template.c Wed Mar 23 10:34:47 2005 @@ -0,0 +1,79 @@ +/* + * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/ddb_db_example.c + * + * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> + * Copyright (C) 2004-2005 Toni Garcia (zoltan) <zo...@ir...> + * Copyright (C) 1999-2003 Jesus Cea Avion <jc...@ar...> + * + * 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 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 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +/** @file + * @brief Implementation of Distributed DataBase. + * @version $Id: ddb_db_template.c,v 1.1 2005/03/23 18:34:47 zolty Exp $ + */ +#include "config.h" + +#include "ddb.h" +#include "numnicks.h" + +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/mman.h> +#include <sys/stat.h> +#include <unistd.h> + +int +ddb_db_open(unsigned char table, unsigned int id, struct ddb_memory_table *mt) +{ + return 1; +} + + +void ddb_db_close(struct ddb_memory_table *mt) +{ +} + +int ddb_db_read(struct ddb_memory_table *mt, char *mask, char *id, char *key, char *content) +{ + return 1; +} + +void ddb_db_write(unsigned char table, char *mask, unsigned int id, char *key, char *content) +{ +} + +void ddb_db_drop(unsigned char table) +{ +} + +void +ddb_db_compact(unsigned char table, char *mask, unsigned int id, char *comment) +{ + +} + + + +void ddb_hash_read(unsigned char table, unsigned int *hi, unsigned int *lo) +{ +} + +void ddb_hash_write(unsigned char table) +{ +} + Index: ircd-ircdev/ircd/hash.c diff -u ircd-ircdev/ircd/hash.c:1.7 ircd-ircdev/ircd/hash.c:1.8 --- ircd-ircdev/ircd/hash.c:1.7 Mon Mar 21 10:39:07 2005 +++ ircd-ircdev/ircd/hash.c Wed Mar 23 10:34:47 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief Hash table management. - * @version $Id: hash.c,v 1.7 2005/03/21 18:39:07 zolty Exp $ + * @version $Id: hash.c,v 1.8 2005/03/23 18:34:47 zolty Exp $ * * This file used to use some very complicated hash function. Now it * uses CRC-32, but effectively remaps each input byte according to a @@ -33,6 +33,7 @@ #include "hash.h" #include "client.h" #include "channel.h" +#include "ddb.h" #include "ircd_alloc.h" #include "ircd_chattr.h" #include "ircd_log.h" @@ -520,3 +521,14 @@ send_reply(cptr, RPL_LISTEND); } } + +#if defined(DDB) + +/** Calculates a hash of one key. + */ +int ddb_hash_register(char *key, int hash_size) +{ + return (unsigned int)(strhash(key) & (hash_size - 1)); +} + +#endif /* DDB */ Index: ircd-ircdev/ircd/ircd.c diff -u ircd-ircdev/ircd/ircd.c:1.13 ircd-ircdev/ircd/ircd.c:1.14 --- ircd-ircdev/ircd/ircd.c:1.13 Mon Mar 21 10:39:07 2005 +++ ircd-ircdev/ircd/ircd.c Wed Mar 23 10:34:47 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Entry point and other initialization functions for the daemon. - * @version $Id: ircd.c,v 1.13 2005/03/21 18:39:07 zolty Exp $ + * @version $Id: ircd.c,v 1.14 2005/03/23 18:34:47 zolty Exp $ */ #include "config.h" @@ -30,6 +30,7 @@ #include "class.h" #include "client.h" #include "crule.h" +#include "ddb.h" #include "destruct_event.h" #include "hash.h" #include "ircd_alloc.h" @@ -723,6 +724,10 @@ Debug((DEBUG_NOTICE, "Server ready...")); log_write(LS_SYSTEM, L_NOTICE, 0, "Server Ready"); +#if defined(DDB) + ddb_init(); +#endif + event_loop(); return 0; Index: ircd-ircdev/ircd/ircd_features.c diff -u ircd-ircdev/ircd/ircd_features.c:1.11 ircd-ircdev/ircd/ircd_features.c:1.12 --- ircd-ircdev/ircd/ircd_features.c:1.11 Mon Mar 21 10:39:07 2005 +++ ircd-ircdev/ircd/ircd_features.c Wed Mar 23 10:34:48 2005 @@ -21,7 +21,7 @@ */ /** @file * @brief Implementation of configurable feature support. - * @version $Id: ircd_features.c,v 1.11 2005/03/21 18:39:07 zolty Exp $ + * @version $Id: ircd_features.c,v 1.12 2005/03/23 18:34:48 zolty Exp $ */ #include "config.h" @@ -352,6 +352,9 @@ F_B(HIS_STATS_l, 0, 1, 0), F_B(HIS_STATS_L, 0, 1, 0), F_B(HIS_STATS_a, 0, 1, 0), +#if defined(DDB) + F_B(HIS_STATS_b, 0, 1, 0), +#endif F_B(HIS_STATS_c, 0, 1, 0), F_B(HIS_STATS_g, 0, 1, 0), F_B(HIS_STATS_h, 0, 1, 0), Index: ircd-ircdev/ircd/ircd_log.c diff -u ircd-ircdev/ircd/ircd_log.c:1.8 ircd-ircdev/ircd/ircd_log.c:1.9 --- ircd-ircdev/ircd/ircd_log.c:1.8 Mon Mar 21 10:39:07 2005 +++ ircd-ircdev/ircd/ircd_log.c Wed Mar 23 10:34:48 2005 @@ -22,7 +22,7 @@ */ /** @file * @brief IRC logging implementation. - * @version $Id: ircd_log.c,v 1.8 2005/03/21 18:39:07 zolty Exp $ + * @version $Id: ircd_log.c,v 1.9 2005/03/23 18:34:48 zolty Exp $ */ #include "config.h" @@ -156,6 +156,9 @@ S(JUPE, -1, SNO_NETWORK), S(WHO, -1, 0), S(NETWORK, -1, SNO_NETWORK), +#ifdef DDB + S(DDB, -1, 0), +#endif S(OPERKILL, -1, 0), S(SERVKILL, -1, 0), S(USER, -1, 0), Index: ircd-ircdev/ircd/m_account.c diff -u ircd-ircdev/ircd/m_account.c:1.8 ircd-ircdev/ircd/m_account.c:1.9 --- ircd-ircdev/ircd/m_account.c:1.8 Mon Mar 21 10:39:08 2005 +++ ircd-ircdev/ircd/m_account.c Wed Mar 23 10:34:49 2005 @@ -18,7 +18,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_account.c,v 1.8 2005/03/21 18:39:08 zolty Exp $ + * $Id: m_account.c,v 1.9 2005/03/23 18:34:49 zolty Exp $ * */ @@ -105,7 +105,6 @@ int ms_account(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { -#if defined(UNDERNET) struct Client *acptr; if (parc < 3) @@ -146,10 +145,4 @@ cli_user(acptr)->acc_create); return 0; - -#else /* !defined(UNDERNET) */ - - return protocol_violation(cptr, "ACCOUNT command is disabled (NO Undernet Environment)"); - -#endif /* defined(UNDERNET) */ } Index: ircd-ircdev/ircd/m_db.c diff -u ircd-ircdev/ircd/m_db.c:1.2 ircd-ircdev/ircd/m_db.c:1.3 --- ircd-ircdev/ircd/m_db.c:1.2 Mon Jan 10 04:23:01 2005 +++ ircd-ircdev/ircd/m_db.c Wed Mar 23 10:34:50 2005 @@ -2,7 +2,8 @@ * IRC-Dev IRCD - An advanced and innovative IRC Daemon, ircd/m_db.c * * Copyright (C) 2002-2005 IRC-Dev Development Team <de...@ir...> - * Copyright (C) 2004 Toni Garcia (zoltan) <zo...@ir...> + * Copyright (C) 2004-2005 Toni Garcia (zoltan) <zo...@ir...> + * Copyright (C) 1999-2003 Jesus Cea Avion <jc...@ar...> * * 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 @@ -18,111 +19,366 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_db.c,v 1.2 2005/01/10 12:23:01 zolty Exp $ */ - -/* - * m_functions execute protocol messages on this server: - * - * cptr is always NON-NULL, pointing to a *LOCAL* client - * structure (with an open socket connected!). This - * identifies the physical socket where the message - * originated (or which caused the m_function to be - * executed--some m_functions may call others...). - * - * sptr is the source of the message, defined by the - * prefix part of the message if present. If not - * or prefix not found, then sptr==cptr. - * - * (!IsServer(cptr)) => (cptr == sptr), because - * prefixes are taken *only* from servers... - * - * (IsServer(cptr)) - * (sptr == cptr) => the message didn't - * have the prefix. - * - * (sptr != cptr && IsServer(sptr) means - * the prefix specified servername. (?) - * - * (sptr != cptr && !IsServer(sptr) means - * that message originated from a remote - * user (not local). - * - * combining - * - * (!IsServer(sptr)) means that, sptr can safely - * taken as defining the target structure of the - * message in this server. - * - * *Always* true (if 'parse' and others are working correct): - * - * 1) sptr->from == cptr (note: cptr->from == cptr) - * - * 2) MyConnect(sptr) <=> sptr == cptr (e.g. sptr - * *cannot* be a local connection, unless it's - * actually cptr!). [MyConnect(x) should probably - * be defined as (x == x->from) --msa ] - * - * parc number of variable parameter strings (if zero, - * parv is allowed to be NULL) - * - * parv a NULL terminated list of parameter pointers, - * - * parv[0], sender (prefix string), if not present - * this points to an empty string. - * parv[1]...parv[parc-1] - * pointers to additional parameters - * parv[parc] == NULL, *always* - * - * note: it is guaranteed that parv[0]..parv[parc-1] are all - * non-NULL pointers. +/** @file + * @brief Handlers for DB command. + * @version $Id: m_db.c,v 1.3 2005/03/23 18:34:50 zolty Exp $ */ +/* TODO-ZOLTAN + * Traducidr los comentarios al ingles */ #include "config.h" -#if defined(DDB) #include "ddb.h" #include "client.h" -/*#include "ircd_log.h" */ -#include "ircd_reply.h" -#include "msg.h" - -/* #include "ircd.h" -#include "ircd_string.h" +#include "ircd_log.h" +#include "ircd_reply.h" #include "list.h" #include "match.h" #include "msg.h" #include "numnicks.h" -#include "s_bdd.h" -#include "s_conf.h" #include "send.h" +#include "s_debug.h" -#include <fcntl.h> +/* #include <assert.h> -- Now using assert in ircd_log.h */ +#include <stdio.h> #include <stdlib.h> #include <string.h> -#include <sys/stat.h> -#include <unistd.h> -*/ -/* - * ms_db - server message handler +/** Handle a DB command from a server. * - * parv[0] = sender - * parv[1] = ignored - * parv[2] = server to query + * \a parv has the following elements: + * \a parv[1] is the destin server o servermask + * \li If a command parv has the following elements + * \li \a parv[2] is not used + * \li \a parv[3] is the command (B, D, E, H, J, Q, R) + * \li \a parv[4] is the id or token + * \li \a parv[5] is the table of DDB + * \li If not a command, it is a new register + * \li \a parv[2] is the id + * \li \a parv[3] is the table of DDB + * \li \a parv[4] is a key of register + * \li \a parv[5] is a content of register (optional) + * + * See @ref m_functions for general discussion of parameters. + * @param[in] cptr Client that sent us the message. + * @param[in] sptr Original source of message. + * @param[in] parc Number of arguments. + * @param[in] parv Argument vector. */ int ms_db(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { - if (parc > 5) + struct Client *acptr; + struct DLink *lp; + char ddb_buf[1024]; + unsigned char table = 0; + unsigned int id, ddb_mask = 0; + + assert(0 != cptr); + assert(0 != sptr); + assert(IsServer(cptr)); + + if ((parc < 5) || (*(parv[3] + 1) != '\0')) + { + protocol_violation(sptr, "Too few parameters for DB"); + return 0; + } + + id = atoi(parv[2]); + if (!id) { - protocol_violation(sptr,"DDB, too many parameters"); - return 0; + /* No es un registro */ + id = atoi(parv[4]); + if (parc == 6) + { + table = *parv[5]; + if ((table < DDB_INIT) || (table > DDB_END)) + { + /* Se pide un HASH Global de todas las tablas */ + if ((table == '*') && ((*parv[3] == 'Q') || (*parv[3] == 'R'))) + table = '*'; +#if 1 + /* COMPATIBILIDAD IRC-HISPANO */ + else if (table == '2') + table = DDB_NICKDB; +#endif + else + return protocol_violation(sptr, "Incorrect table parameter for DB"); + } + } } + if ((table >= DDB_INIT) && (table <= DDB_END)) + ddb_mask = ((unsigned int)1) << (table - DDB_INIT); + + switch (*parv[3]) + { + /* Peticion de Burst (quedan registros) */ + case 'B': + if (IsHub(cptr)) + sendcmdto_one(&me, CMD_DB, cptr, "%s 0 J %u %c", parv[0], ddb_id_table[table], table); + break; + + /* Drop */ + case 'D': + { + if (!IsHub(cptr)) + break; + + /* Enviamos el mensaje al resto de servidores */ + for (lp = cli_serv(&me)->down; lp; lp = lp->next) + { + if (lp->value.cptr != cptr) + { + sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%s 0 D %s %c", + parv[1], parv[4], table); + /* TODO-ZOLTAN: Mirar si es necesario (IRC-Hispano) */ + /* cli_serv(lp->value.cptr)->ddb_open &= ~ddb_mask); */ + } + } + + /* Usamos collapse+match por un bug en lastNNServer del find_match_server() */ + collapse(parv[1]); + /* Si no es para nosotros, lo ignoramos */ + if (match(parv[1], cli_name(&me))) + break; + + /* Borramos la tabla en memoria y en disco */ + ddb_drop(table); + /* Desconectamos con todos los hubs menos el que nos envia la orden */ + log_write(LS_DDB, L_INFO, 0, "DB Drop Table %c from %#C", table, cptr); + sprintf(ddb_buf, "DB DROP Table %c from %s", table, cli_name(cptr)); + ddb_splithubs_butone(cptr, ddb_buf); + + /* Mandamos la respuesta de conformidad */ + sendcmdto_one(&me, CMD_DB, cptr, "%s 0 E %s %c", cli_name(cptr), + parv[4], table); + + /* TODO-ZOLTAN: Cosa de ryden. Creo que hay que mandar a todos */ + cli_serv(cptr)->ddb_open &= ~ddb_mask; + + /* Solicitamos de nuevo la tabla */ + sendcmdto_one(&me, CMD_DB, cptr, "%s 0 J %u %c", cli_name(cptr), + ddb_id_table[table], table); + break; + } + + /* Respuesta de Drop */ + case 'E': + /* Si no es para nosotros, lo pasamos a otros */ + if ((acptr = find_match_server(parv[1])) && (!IsMe(acptr))) + sendcmdto_one(sptr, CMD_DB, acptr, "%s 0 E %s %c", cli_name(acptr), + parv[4], table); + break; + + /* Comprobacion de Hash automatico leaf <=> hub */ + case 'H': + { + char *hash; + unsigned int hash_lo, hash_hi; + + if (IsHub(&me)) + return protocol_violation(cptr, "Don't HASH check to HUBs, table %c from %#C", table, cptr); + + hash = parv[4]; + if (strlen(hash) != 12) + return protocol_violation(cptr, "HASH check, erroneus parameters"); + + hash[6] = '\0'; + hash_lo = base64toint(hash); + hash[6] = parv[4][6]; + hash_hi = base64toint(hash + 6); + + if (!((hash_lo == ddb_hashtable_lo[table]) && (hash_hi == ddb_hashtable_hi[table]))) + { + /* El HASH es incorrecto, a borrar */ + sendto_opmask_butone(0, SNO_OLDSNO, "DB HASH Check failed, droping table %c", table); + log_write(LS_DDB, L_INFO, 0, "DB HASH Check failed, droping table %c", table); + + /* Borramos la tabla en memoria y en disco*/ + ddb_drop(table); + + /* Solicitamos de nuevo la tabla */ + sendcmdto_one(&me, CMD_DB, cptr, "%s 0 J %u %c", cli_name(cptr), + ddb_id_table[table], table); + } + break; + } + + /* Join */ + case 'J': + { + if (id >= ddb_id_table[table]) + { + /* Registros individuales */ + cli_serv(cptr)->ddb_open |= ddb_mask; + break; + } + else if ((cli_serv(cptr)->ddb_open) & ddb_mask) + { + /* Grifo abierto y registros antiguos. + * Ocurre si la copia de cptr de la DDB + * esta corrupta + */ + (cli_serv(cptr)->ddb_open) &= ~ddb_mask; + + /* Borramos su DDB para curarnos en salud */ + sendcmdto_one(&me, CMD_DB, cptr, "%s 0 D DDB_CORRUPT %c", + cli_name(cptr), table); + + break; + } + + /* En el Burst de tabla, se hacen rafagas de 1000 registros, + * se envia una en cada petición de JOIN. La funcion devuelve 1 + * si se han mandado todos los datos en el rafaga y 0 si aún hay + * datos pendientes. + * La comprobacion automatica de HASH solo se debe hacer a los + * leafs, NUNCA a HUBS, ya que si un HUB tiene la DB corrupta, + * toda la red se va a tomar por viento con un borrado masivo. + */ + if (ddb_table_burst(cptr, table, id)) + { + if (IsHub(cptr)) + break; + + inttobase64(ddb_buf, ddb_hashtable_hi[table], 6); + inttobase64(ddb_buf + 6, ddb_hashtable_lo[table], 6); + + sendcmdto_one(&me, CMD_DB, cptr, "%s 0 H %s %c", cli_name(cptr), ddb_buf, table); + } + break; + } + + /* Query de hash para comprobaciones desde un service */ + case 'Q': + { + if (!IsHub(cptr)) + break; + + /* Usamos collapse+match por un bug en lastNNServer del find_match_server() */ + collapse(parv[1]); + /* Solo si es para nosotros si lo ignoramos */ + if (!match(parv[1], cli_name(&me))) + { + if (table == '*') + { + /* HASH de todas las tablas */ + unsigned int hashes_hi = 0; + unsigned int hashes_lo = 0; + unsigned int id_tables = 1; + unsigned int count_tables = 1; + int i; + + for (i = DDB_INIT; i <= DDB_END; i++) + { + hashes_hi ^= ddb_hashtable_hi[i]; + hashes_lo ^= ddb_hashtable_lo[i]; + + id_tables = (id_tables * (ddb_id_table[i] + 1)) & 0xfffffffful; + count_tables = (count_tables * (ddb_count_table[i] + 1)) & 0xfffffffful; + } + inttobase64(ddb_buf, hashes_hi, 6); + inttobase64(ddb_buf + 6, hashes_lo, 6); + + sendcmdto_one(&me, CMD_DB, cptr, "%s 0 R %u-%u-%s-%s %c", + cli_name(cptr), id_tables, count_tables, + ddb_buf, parv[4], table); + } + else + { + /* Una tabla */ + inttobase64(ddb_buf, ddb_hashtable_hi[table], 6); + inttobase64(ddb_buf + 6, ddb_hashtable_lo[table], 6); + + sendcmdto_one(&me, CMD_DB, cptr, "%s 0 R %u-%u-%s-%s %c", + cli_name(cptr), ddb_id_table[table], ddb_count_table[table], + ddb_buf, parv[4], table); + } + } + + /* Enviamos la petición a los demas */ + for (lp = cli_serv(&me)->down; lp; lp = lp->next) + { + if (lp->value.cptr != cptr) + sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%s 0 Q %s %c", + parv[1], parv[4], table); + } + break; + } + + /* Respuesta de hash */ + case 'R': + /* Si no es para nosotros, lo pasamos a otros */ + if ((acptr = find_match_server(parv[1])) && (!IsMe(acptr))) + sendcmdto_one(sptr, CMD_DB, acptr, "%s 0 R %s %c", cli_name(acptr), + parv[4], table); + break; + + /* Registro nuevo, el parv[3] es la tabla */ + default: + { + int delete; + + /* Solo se aceptan registros procedentes de un HUB */ +/* Hablitarlo + if (!IsHub(cptr)) + return 0; +*/ + table = *parv[3]; + if (table < DDB_INIT || table > DDB_END) + { +#if 0 + /* COMPATIBILIDAD IRC-HISPANO */ + if (table == 'N') + table = DDB_NICKDB; +#endif + return 0; + } + + id = atoi(parv[2]); + /* Rechazamos registros con ID inferior al nuestro */ + if (id <= ddb_id_table[table]) + return 0; + + if (parc == 5) + /* Borrado del registro */ + delete = 1; + else if (parc > 5) + /* Insertado del registro */ + delete = 0; + else + /* No deberia ocurrir */ + return protocol_violation(sptr, "DB Incorrect parameters"); + + ddb_mask = ((unsigned int) 1) << (table - DDB_INIT); + /* Propagamos a nuestros servidores hijos */ + for (lp = cli_serv(&me)->down; lp; lp = lp->next) + { + if ((lp->value.cptr != cptr) && + (cli_serv(lp->value.cptr)->ddb_open & ddb_mask)) + { + if (!delete) + sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%s %u %c %s %s :%s", + parv[1], id, table, parv[4], parv[5]); + else + sendcmdto_one(&me, CMD_DB, lp->value.cptr, "%s %u %c %s %s", + parv[1], id, table, parv[4]); + } + } + + if (strcmp(parv[4], "*")) + ddb_new_register(cptr, table, parv[1], id, parv[4], (!delete ? parv[5] : NULL)); +/* + else + ddb_compact(table, parv[1], id, parv[5]); +*/ + + break; + } + } return 0; } - -#endif /* defined(DDB) */ Index: ircd-ircdev/ircd/m_dbq.c diff -u ircd-ircdev/ircd/m_dbq.c:1.2 ircd-ircdev/ircd/m_dbq.c:1.3 --- ircd-ircdev/ircd/m_dbq.c:1.2 Mon Jan 10 04:23:02 2005 +++ ircd-ircdev/ircd/m_dbq.c Wed Mar 23 10:34:51 2005 @@ -18,125 +18,207 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: m_dbq.c,v 1.2 2005/01/10 12:23:02 zolty Exp $ */ - -/* - * m_functions execute protocol messages on this server: - * - * cptr is always NON-NULL, pointing to a *LOCAL* client - * structure (with an open socket connected!). This - * identifies the physical socket where the message - * originated (or which caused the m_function to be - * executed--some m_functions may call others...). - * - * sptr is the source of the message, defined by the - * prefix part of the message if present. If not - * or prefix not found, then sptr==cptr. - * - * (!IsServer(cptr)) => (cptr == sptr), because - * prefixes are taken *only* from servers... - * - * (IsServer(cptr)) - * (sptr == cptr) => the message didn't - * have the prefix. - * - * (sptr != cptr && IsServer(sptr) means - * the prefix specified servername. (?) - * - * (sptr != cptr && !IsServer(sptr) means - * that message originated from a remote - * user (not local). - * - * combining - * - * (!IsServer(sptr)) means that, sptr can safely - * taken as defining the target structure of the - * message in this server. - * - * *Always* true (if 'parse' and others are working correct): - * - * 1) sptr->from == cptr (note: cptr->from == cptr) - * - * 2) MyConnect(sptr) <=> sptr == cptr (e.g. sptr - * *cannot* be a local connection, unless it's - * actually cptr!). [MyConnect(x) should probably - * be defined as (x == x->from) --msa ] - * - * parc number of variable parameter strings (if zero, - * parv is allowed to be NULL) - * - * parv a NULL terminated list of parameter pointers, - * - * parv[0], sender (prefix string), if not present - * this points to an empty string. - * parv[1]...parv[parc-1] - * pointers to additional parameters - * parv[parc] == NULL, *always* -... [truncated message content] |
From: Toni G. <zo...@us...> - 2005-03-23 18:36:31
|
CVSROOT : /cvsroot/irc-dev Module : ircd-ircdev Commit time: 2005-03-23 18:36:18 UTC Modified files: TODO.es Log message: Actualizacion TODO ---------------------- diff included ---------------------- Index: ircd-ircdev/TODO.es diff -u ircd-ircdev/TODO.es:1.12 ircd-ircdev/TODO.es:1.13 --- ircd-ircdev/TODO.es:1.12 Wed Mar 23 06:20:07 2005 +++ ircd-ircdev/TODO.es Wed Mar 23 10:36:06 2005 @@ -1,7 +1,7 @@ # # TODO para ircd-ircdev # -# $Id: TODO.es,v 1.12 2005/03/23 14:20:07 zolty Exp $ +# $Id: TODO.es,v 1.13 2005/03/23 18:36:06 zolty Exp $ # # Insertar las nuevas entradas al principio de la lista TODO. # @@ -9,7 +9,6 @@ URGENTE -------------------------------------------------------------------------------------- - [D] Implementar el protocolo DDB. - - [D] Comando de consulta de DDB. - [D] Nicks registrados y protegidos. ----------------------- End of diff ----------------------- |