diff -uNrd fq-ircd-1.2c/CHANGES fq-ircd-1.2d/CHANGES --- fq-ircd-1.2c/CHANGES 2003-10-25 20:07:50.000000000 +0200 +++ fq-ircd-1.2d/CHANGES 2004-03-31 20:58:49.000000000 +0200 @@ -1,6 +1,11 @@ ChangeLog for FreeQuest.net's optimization of Bahamut. This version of bahamut is modified by ph0x@freequest.net +- v1.2d +* Server Admins (+A) can now see +s/+p channels on /LIST (Thanks Doc!) +* Changed /LIST to /FQLIST and added a message which tells the user + that /LIST is deprecated and /FQLIST should be used instead + - v1.2c * Opers can now evade +b/+i/+k/+l channelmodes. Added for managing of abusing channels where opers might get banned. diff -uNrd fq-ircd-1.2c/Makefile.in fq-ircd-1.2d/Makefile.in --- fq-ircd-1.2c/Makefile.in 2003-08-15 17:45:31.000000000 +0200 +++ fq-ircd-1.2d/Makefile.in 2004-03-31 21:07:52.000000000 +0200 @@ -128,7 +128,7 @@ fi distclean: - ${RM} -f Makefile Makefile.tmp *~ *.rej *.orig core ircd.core *.tmp + ${RM} -f Makefile Makefile.tmp *~ *.rej *.orig core ircd.core *.tmp ircdssl.rnd ${RM} -f config.status config.cache config.log cd include; ${RM} -f setup.h gmp_irc.h *~ *.rej *.orig options.h; cd .. @for i in $(SUBDIRS); do \ diff -uNrd fq-ircd-1.2c/include/msg.h fq-ircd-1.2d/include/msg.h --- fq-ircd-1.2c/include/msg.h 2003-08-15 17:45:31.000000000 +0200 +++ fq-ircd-1.2d/include/msg.h 2004-03-31 20:18:11.000000000 +0200 @@ -32,6 +32,7 @@ #define MSG_NICK "NICK" /* NICK */ #define MSG_SERVER "SERVER" /* SERV */ #define MSG_LIST "LIST" /* LIST */ +#define MSG_FQLIST "FQLIST" /* LIST */ #define MSG_TOPIC "TOPIC" /* TOPI */ #define MSG_INVITE "INVITE" /* INVI */ #define MSG_VERSION "VERSION" /* VERS */ @@ -149,6 +150,7 @@ extern int m_whois(aClient *, aClient *, int, char **); extern int m_user(aClient *, aClient *, int, char **); extern int m_list(aClient *, aClient *, int, char **); +extern int m_listerror(aClient *, aClient *, int, char **); extern int m_server(aClient *, aClient *, int, char **); extern int m_info(aClient *, aClient *, int, char **); extern int m_links(aClient *, aClient *, int, char **); @@ -242,7 +244,8 @@ {MSG_WHOIS, m_whois, 0, MAXPARA, 1, 0, 0, 0L}, {MSG_WHO, m_who, 0, MAXPARA, 1, 0, 0, 0L}, {MSG_WHOWAS, m_whowas, 0, MAXPARA, 1, 0, 0, 0L}, - {MSG_LIST, m_list, 0, MAXPARA, 1, 0, 0, 0L}, + {MSG_FQLIST, m_list, 0, MAXPARA, 1, 0, 0, 0L}, + {MSG_LIST, m_listerror, 0, MAXPARA, 1, 0, 0, 0L}, {MSG_NAMES, m_names, 0, MAXPARA, 1, 0, 0, 0L}, {MSG_USERHOST, m_userhost, 0, 1, 1, 0, 0, 0L}, {MSG_TRACE, m_trace, 0, MAXPARA, 1, 0, 0, 0L}, diff -uNrd fq-ircd-1.2c/include/patchlevel.h fq-ircd-1.2d/include/patchlevel.h --- fq-ircd-1.2c/include/patchlevel.h 2003-10-25 20:11:53.000000000 +0200 +++ fq-ircd-1.2d/include/patchlevel.h 2004-03-31 20:52:28.000000000 +0200 @@ -35,7 +35,7 @@ #define MINOR 4 #define PATCH 35 -#define PATCH1 "+freequest(1.2c)" +#define PATCH1 "+freequest(1.2d)" #ifndef INET6 #define PATCH2 "" diff -uNrd fq-ircd-1.2c/src/channel.c fq-ircd-1.2d/src/channel.c --- fq-ircd-1.2c/src/channel.c 2003-10-23 20:30:16.000000000 +0200 +++ fq-ircd-1.2d/src/channel.c 2004-03-31 20:52:35.000000000 +0200 @@ -2325,7 +2325,7 @@ for (chptr = (aChannel *)hash_get_chan_bucket(hashnum); chptr; chptr = chptr->hnextch) { - if (SecretChannel(chptr) && !IsMember(cptr, chptr)) + if ((SecretChannel(chptr) && !IsMember(cptr, chptr)) && !IsAdmin(cptr)) continue; #ifdef USE_CHANMODE_L if (lopt->only_listed && !(chptr->mode.mode & MODE_LISTED)) @@ -2349,10 +2349,32 @@ !find_str_link(lopt->yeslist, chptr->chname)))) continue; - sendto_one(cptr, rpl_str(RPL_LIST), me.name, cptr->name, - ShowChannel(cptr, chptr) ? chptr->chname : "*", - chptr->users, - ShowChannel(cptr, chptr) ? chptr->topic : ""); + + // Seem'd more efficent to seperate into two commands then adding an + // or to the inline. -- Doc. + if (IsAdmin(cptr)) + { + char tempchname[CHANNELLEN + 2], *altchname; + + if (SecretChannel(chptr)) + { + tempchname[0] = '%'; + strcpy(&tempchname[1], chptr->chname); + altchname = &tempchname[0]; + } else { + altchname = chptr->chname; + } + + sendto_one(cptr, rpl_str(RPL_LIST), me.name, cptr->name, + altchname, + chptr->users, + chptr->topic); + } else { + sendto_one(cptr, rpl_str(RPL_LIST), me.name, cptr->name, + ShowChannel(cptr, chptr) ? chptr->chname : "*", + chptr->users, + ShowChannel(cptr, chptr) ? chptr->topic : ""); + } numsend--; } else @@ -2388,6 +2410,17 @@ return; } +/* + * m_listerror + * parv[0] = sender prefix + * parv[1] = channel + */ +int m_listerror(aClient *cptr, aClient *sptr, int parc, char *parv[]) +{ + sendto_one(sptr, ":%s NOTICE %s :Usage of /LIST is deprecated, please use /QUOTE FQLIST instead.", me.name, parv[0]); + return 0; +} + /* * m_list diff -uNrd fq-ircd-1.2c/src/s_err.c fq-ircd-1.2d/src/s_err.c --- fq-ircd-1.2c/src/s_err.c 2003-08-15 20:15:03.000000000 +0200 +++ fq-ircd-1.2d/src/s_err.c 2004-03-31 20:52:38.000000000 +0200 @@ -369,7 +369,7 @@ /* 320 */ NULL, /* 321 RPL_LISTSTART */ ":%s 321 %s Channel :Users Name", /* 322 RPL_LIST */ ":%s 322 %s %s %d :%s", - /* 323 RPL_LISTEND */ ":%s 323 %s :End of /LIST", + /* 323 RPL_LISTEND */ ":%s 323 %s :End of /FQLIST", /* 324 RPL_CHANNELMODEIS */ ":%s 324 %s %s %s %s", /* 325 */ NULL, /* 326 */ NULL,