From: wiebe Date: Sat, 3 Apr 2010 13:57:02 +0000 (+0200) Subject: welcome: shortend local vs remote listing logic X-Git-Url: https://jfr.im/git/irc/quakenet/snircd-patchqueue.git/commitdiff_plain/5632b943a16eabc768b1405cb66874d89b50c51d welcome: shortend local vs remote listing logic --- diff --git a/welcome.patch b/welcome.patch index cab7123..f6e7361 100644 --- a/welcome.patch +++ b/welcome.patch @@ -77,9 +77,9 @@ ircd/ircd_lexer.l ircd/ircd_parser.y add PRIV_LOCAL_WELCOME PRIV_WELCOME -diff -r 2aa7cebde6c7 include/client.h ---- a/include/client.h Tue Mar 23 23:53:03 2010 +0100 -+++ b/include/client.h Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 include/client.h +--- a/include/client.h ++++ b/include/client.h @@ -142,6 +142,8 @@ PRIV_USER_PRIVACY, /* oper can bypass user privacy +x etc gives i.e. see real ip's */ PRIV_CHANNEL_PRIVACY, /* oper can bypass channel privacy i.e. can see modes on channels they are not on and channel keys */ @@ -89,9 +89,9 @@ diff -r 2aa7cebde6c7 include/client.h PRIV_LAST_PRIV /**< number of privileges */ }; -diff -r 2aa7cebde6c7 include/handlers.h ---- a/include/handlers.h Tue Mar 23 23:53:03 2010 +0100 -+++ b/include/handlers.h Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 include/handlers.h +--- a/include/handlers.h ++++ b/include/handlers.h @@ -138,6 +138,7 @@ extern int m_version(struct Client*, struct Client*, int, char*[]); extern int m_wallchops(struct Client*, struct Client*, int, char*[]); @@ -116,9 +116,9 @@ diff -r 2aa7cebde6c7 include/handlers.h extern int ms_whois(struct Client*, struct Client*, int, char*[]); extern int ms_xquery(struct Client*, struct Client*, int, char*[]); extern int ms_xreply(struct Client*, struct Client*, int, char*[]); -diff -r 2aa7cebde6c7 include/ircd_features.h ---- a/include/ircd_features.h Tue Mar 23 23:53:03 2010 +0100 -+++ b/include/ircd_features.h Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 include/ircd_features.h +--- a/include/ircd_features.h ++++ b/include/ircd_features.h @@ -101,6 +101,7 @@ FEAT_IRCD_RES_TIMEOUT, FEAT_AUTH_TIMEOUT, @@ -135,9 +135,9 @@ diff -r 2aa7cebde6c7 include/ircd_features.h FEAT_HIS_STATS_w, FEAT_HIS_STATS_x, FEAT_HIS_STATS_y, -diff -r 2aa7cebde6c7 include/msg.h ---- a/include/msg.h Tue Mar 23 23:53:03 2010 +0100 -+++ b/include/msg.h Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 include/msg.h +--- a/include/msg.h ++++ b/include/msg.h @@ -196,6 +196,10 @@ #define TOK_NOTICE "O" #define CMD_NOTICE MSG_NOTICE, TOK_NOTICE @@ -149,9 +149,9 @@ diff -r 2aa7cebde6c7 include/msg.h #define MSG_WALLCHOPS "WALLCHOPS" /* WC */ #define TOK_WALLCHOPS "WC" #define CMD_WALLCHOPS MSG_WALLCHOPS, TOK_WALLCHOPS -diff -r 2aa7cebde6c7 include/numeric.h ---- a/include/numeric.h Tue Mar 23 23:53:03 2010 +0100 -+++ b/include/numeric.h Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 include/numeric.h +--- a/include/numeric.h ++++ b/include/numeric.h @@ -116,6 +116,7 @@ RPL_STATSGLINE 227 Dalnet RPL_STATSVLINE 227 unreal */ @@ -169,9 +169,9 @@ diff -r 2aa7cebde6c7 include/numeric.h #define ERR_SILELISTFULL 511 /* Undernet extension */ /* ERR_NOTIFYFULL 512 aircd */ /* ERR_TOOMANYWATCH 512 Numeric List: Dalnet */ -diff -r 2aa7cebde6c7 include/welcome.h ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/include/welcome.h Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 include/welcome.h +--- /dev/null ++++ b/include/welcome.h @@ -0,0 +1,60 @@ +#ifndef INCLUDED_welcome_h +#define INCLUDED_welcome_h @@ -233,9 +233,9 @@ diff -r 2aa7cebde6c7 include/welcome.h +extern void welcome_stats(struct Client *sptr, const struct StatDesc *sd, char *param); + +#endif /* INCLUDED_welcome_h */ -diff -r 2aa7cebde6c7 ircd/Makefile.in ---- a/ircd/Makefile.in Tue Mar 23 23:53:03 2010 +0100 -+++ b/ircd/Makefile.in Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/Makefile.in +--- a/ircd/Makefile.in ++++ b/ircd/Makefile.in @@ -186,6 +186,7 @@ m_wallops.c \ m_wallusers.c \ @@ -278,9 +278,9 @@ diff -r 2aa7cebde6c7 ircd/Makefile.in whocmds.o: whocmds.c ../config.h ../include/whocmds.h \ ../include/channel.h ../include/ircd_defs.h ../include/res.h \ ../config.h ../include/client.h ../include/dbuf.h ../include/msgq.h \ -diff -r 2aa7cebde6c7 ircd/client.c ---- a/ircd/client.c Tue Mar 23 23:53:03 2010 +0100 -+++ b/ircd/client.c Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/client.c +--- a/ircd/client.c ++++ b/ircd/client.c @@ -177,6 +177,7 @@ FlagSet(&privs_local, PRIV_WHOX); FlagSet(&privs_local, PRIV_DISPLAY); @@ -306,9 +306,9 @@ diff -r 2aa7cebde6c7 ircd/client.c #undef P { 0, 0 } }; -diff -r 2aa7cebde6c7 ircd/ircd_features.c ---- a/ircd/ircd_features.c Tue Mar 23 23:53:03 2010 +0100 -+++ b/ircd/ircd_features.c Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/ircd_features.c +--- a/ircd/ircd_features.c ++++ b/ircd/ircd_features.c @@ -366,6 +366,7 @@ F_I(IRCD_RES_TIMEOUT, 0, 4, 0), F_I(AUTH_TIMEOUT, 0, 9, 0), @@ -325,9 +325,9 @@ diff -r 2aa7cebde6c7 ircd/ircd_features.c F_B(HIS_STATS_w, 0, 1, 0), F_B(HIS_STATS_x, 0, 1, 0), F_B(HIS_STATS_y, 0, 1, 0), -diff -r 2aa7cebde6c7 ircd/ircd_lexer.l ---- a/ircd/ircd_lexer.l Tue Mar 23 23:53:03 2010 +0100 -+++ b/ircd/ircd_lexer.l Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/ircd_lexer.l +--- a/ircd/ircd_lexer.l ++++ b/ircd/ircd_lexer.l @@ -166,6 +166,8 @@ { "serverinfo", TPRIV_SERVERINFO }, { "user_privacy", TPRIV_USER_PRIVACY }, @@ -337,9 +337,9 @@ diff -r 2aa7cebde6c7 ircd/ircd_lexer.l { NULL, 0 } }; static int ntokens; -diff -r 2aa7cebde6c7 ircd/ircd_parser.y ---- a/ircd/ircd_parser.y Tue Mar 23 23:53:03 2010 +0100 -+++ b/ircd/ircd_parser.y Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/ircd_parser.y +--- a/ircd/ircd_parser.y ++++ b/ircd/ircd_parser.y @@ -189,6 +189,7 @@ %token TPRIV_CHANSERV TPRIV_XTRA_OPER TPRIV_NOIDLE TPRIV_FREEFORM TPRIV_PARANOID %token TPRIV_CHECK TPRIV_WALL TPRIV_CLOSE TPRIV_ROUTE TPRIV_ROUTEINFO TPRIV_SERVERINFO @@ -357,10 +357,10 @@ diff -r 2aa7cebde6c7 ircd/ircd_parser.y TPRIV_PARANOID { $$ = PRIV_PARANOID; } ; yesorno: YES { $$ = 1; } | NO { $$ = 0; }; -diff -r 2aa7cebde6c7 ircd/m_welcome.c ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/ircd/m_welcome.c Tue Mar 23 23:56:22 2010 +0100 -@@ -0,0 +1,288 @@ +diff -r 3a7d0a771452 ircd/m_welcome.c +--- /dev/null ++++ b/ircd/m_welcome.c +@@ -0,0 +1,282 @@ +/* + * IRC - Internet Relay Chat, ircd/m_welcome.c + * Copyright (C) 1990 Jarkko Oikarinen and @@ -480,14 +480,11 @@ diff -r 2aa7cebde6c7 ircd/m_welcome.c + /* remote listing request, see if it is for me or a remote server + * check FEAT_HIS_REMOTE to decide if an ordinary user can do this + */ -+ if (parc == 2) { -+ if (hunt_server_cmd(sptr, CMD_WELCOME, cptr, feature_int(FEAT_HIS_REMOTE), -+ "%C", 1, parc, parv) != HUNTED_ISME) -+ return 0; -+ return welcome_list(sptr, 0); -+ } ++ if ((parc > 1) && (hunt_server_cmd(sptr, CMD_WELCOME, cptr, feature_int(FEAT_HIS_REMOTE), ++ "%C", 1, parc, parv) != HUNTED_ISME)) ++ return 0; + -+ /* just local listing */ ++ /* local listing */ + return welcome_list(sptr, 0); +} + @@ -519,17 +516,14 @@ diff -r 2aa7cebde6c7 ircd/m_welcome.c + if (!feature_bool(FEAT_WELCOME)) + return send_reply(sptr, ERR_DISABLED, "WELCOME"); + -+ /* listing */ -+ if (parc < 2) -+ return welcome_list(sptr, 0); -+ + /* TODO: move feature check here? */ + /* remote listing request, see if it is for me or a remote server */ -+ if (parc == 2) { -+ if (hunt_server_cmd(sptr, CMD_WELCOME, cptr, 0, "%C", 1, parc, parv) != HUNTED_ISME) -+ return 0; ++ if ((parc == 2) && (hunt_server_cmd(sptr, CMD_WELCOME, cptr, 0, "%C", 1, parc, parv) != HUNTED_ISME)) ++ return 0; ++ ++ /* local listing */ ++ if (parc <= 2) + return welcome_list(sptr, 0); -+ } + + /* check PRIVS */ + /* local - need PRIV LOCAL_WELCOME or WELCOME */ @@ -649,9 +643,9 @@ diff -r 2aa7cebde6c7 ircd/m_welcome.c + /* and do it */ + return welcome_do(cptr, sptr, name, text, who, timestamp, flags); +} -diff -r 2aa7cebde6c7 ircd/parse.c ---- a/ircd/parse.c Tue Mar 23 23:53:03 2010 +0100 -+++ b/ircd/parse.c Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/parse.c +--- a/ircd/parse.c ++++ b/ircd/parse.c @@ -661,6 +661,15 @@ /* UNREG, CLIENT, SERVER, OPER, SERVICE */ { m_unregistered, m_not_oper, ms_check, mo_check, m_ignore } @@ -668,9 +662,9 @@ diff -r 2aa7cebde6c7 ircd/parse.c /* This command is an alias for QUIT during the unregistered part of * of the server. This is because someone jumping via a broken web -diff -r 2aa7cebde6c7 ircd/s_err.c ---- a/ircd/s_err.c Tue Mar 23 23:53:03 2010 +0100 -+++ b/ircd/s_err.c Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/s_err.c +--- a/ircd/s_err.c ++++ b/ircd/s_err.c @@ -486,7 +486,7 @@ /* 226 */ { RPL_STATSALINE, "%s", "226" }, @@ -689,9 +683,9 @@ diff -r 2aa7cebde6c7 ircd/s_err.c /* 510 */ { 0 }, /* 511 */ -diff -r 2aa7cebde6c7 ircd/s_serv.c ---- a/ircd/s_serv.c Tue Mar 23 23:53:03 2010 +0100 -+++ b/ircd/s_serv.c Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/s_serv.c +--- a/ircd/s_serv.c ++++ b/ircd/s_serv.c @@ -57,6 +57,7 @@ #include "struct.h" #include "sys.h" @@ -708,9 +702,9 @@ diff -r 2aa7cebde6c7 ircd/s_serv.c /* * Pass on my client information to the new server -diff -r 2aa7cebde6c7 ircd/s_stats.c ---- a/ircd/s_stats.c Tue Mar 23 23:53:03 2010 +0100 -+++ b/ircd/s_stats.c Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/s_stats.c +--- a/ircd/s_stats.c ++++ b/ircd/s_stats.c @@ -54,6 +54,7 @@ #include "send.h" #include "struct.h" @@ -733,9 +727,9 @@ diff -r 2aa7cebde6c7 ircd/s_stats.c { 'x', "memusage", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_x, stats_meminfo, 0, "List usage information." }, -diff -r 2aa7cebde6c7 ircd/s_user.c ---- a/ircd/s_user.c Tue Mar 23 23:53:03 2010 +0100 -+++ b/ircd/s_user.c Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/s_user.c +--- a/ircd/s_user.c ++++ b/ircd/s_user.c @@ -63,6 +63,7 @@ #include "userload.h" #include "version.h" @@ -754,9 +748,9 @@ diff -r 2aa7cebde6c7 ircd/s_user.c } else { struct Client *acptr = user->server; -diff -r 2aa7cebde6c7 ircd/welcome.c ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/ircd/welcome.c Tue Mar 23 23:56:22 2010 +0100 +diff -r 3a7d0a771452 ircd/welcome.c +--- /dev/null ++++ b/ircd/welcome.c @@ -0,0 +1,369 @@ +/* + * IRC - Internet Relay Chat, ircd/welcome.c