From: wiebe Date: Tue, 3 Feb 2009 18:18:46 +0000 (+0100) Subject: split.patch - added priv SPLIT X-Git-Url: https://jfr.im/git/irc/quakenet/snircd-patchqueue.git/commitdiff_plain/27ce682164434d00a1a3b2f79cdfb7d0a49692aa split.patch - added priv SPLIT --- diff --git a/split.patch b/split.patch index e5b994c..8b99e93 100644 --- a/split.patch +++ b/split.patch @@ -7,9 +7,9 @@ Add split.c split.h m_split.c NOTE: feature SPLIT is default enabled as that is just easier when working on this patch. -diff -r 5ad24aad236d doc/api/log.txt ---- a/doc/api/log.txt Sat Jan 31 14:38:44 2009 +0100 -+++ b/doc/api/log.txt Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e doc/api/log.txt +--- a/doc/api/log.txt Tue Feb 03 19:06:27 2009 +0100 ++++ b/doc/api/log.txt Tue Feb 03 19:17:10 2009 +0100 @@ -41,7 +41,7 @@ @@ -19,9 +19,20 @@ diff -r 5ad24aad236d doc/api/log.txt LS_OPERKILL, LS_SERVKILL, LS_USER, LS_OPER, LS_RESOLVER, LS_SOCKET, LS_DEBUG, LS_OLDLOG, LS_LAST_SYSTEM -diff -r 5ad24aad236d include/handlers.h ---- a/include/handlers.h Sat Jan 31 14:38:44 2009 +0100 -+++ b/include/handlers.h Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e include/client.h +--- a/include/client.h Tue Feb 03 19:06:27 2009 +0100 ++++ b/include/client.h Tue Feb 03 19:17:10 2009 +0100 +@@ -146,6 +146,7 @@ + PRIV_SERVERINFO, /* oper can use /get, /stats, /hash, retrieve remote information */ + PRIV_WELCOME, /* oper can WELCOME */ + PRIV_LOCAL_WELCOME, /* oper can local WELCOME */ ++ PRIV_SPLIT, /* oper can SPLIT */ + PRIV_LAST_PRIV /**< number of privileges */ + }; + +diff -r 276734f7999e include/handlers.h +--- a/include/handlers.h Tue Feb 03 19:06:27 2009 +0100 ++++ b/include/handlers.h Tue Feb 03 19:17:10 2009 +0100 @@ -139,6 +139,7 @@ extern int m_registered(struct Client*, struct Client*, int, char*[]); extern int m_sethost(struct Client*, struct Client*, int, char*[]); @@ -46,9 +57,9 @@ diff -r 5ad24aad236d include/handlers.h extern int ms_squit(struct Client*, struct Client*, int, char*[]); extern int ms_stats(struct Client*, struct Client*, int, char*[]); extern int ms_topic(struct Client*, struct Client*, int, char*[]); -diff -r 5ad24aad236d include/ircd_features.h ---- a/include/ircd_features.h Sat Jan 31 14:38:44 2009 +0100 -+++ b/include/ircd_features.h Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e include/ircd_features.h +--- a/include/ircd_features.h Tue Feb 03 19:06:27 2009 +0100 ++++ b/include/ircd_features.h Tue Feb 03 19:17:10 2009 +0100 @@ -112,6 +112,10 @@ FEAT_SETHOST_USER, FEAT_SETHOST_AUTO, @@ -76,9 +87,9 @@ diff -r 5ad24aad236d include/ircd_features.h FEAT_HIS_STATS_s, FEAT_HIS_STATS_t, FEAT_HIS_STATS_T, -diff -r 5ad24aad236d include/ircd_log.h ---- a/include/ircd_log.h Sat Jan 31 14:38:44 2009 +0100 -+++ b/include/ircd_log.h Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e include/ircd_log.h +--- a/include/ircd_log.h Tue Feb 03 19:06:27 2009 +0100 ++++ b/include/ircd_log.h Tue Feb 03 19:17:10 2009 +0100 @@ -55,6 +55,7 @@ LS_OPERMODE, /**< Uses of OPMODE, CLEARMODE< etc. */ LS_GLINE, /**< Adding, (de-)activating or removing GLINEs. */ @@ -87,9 +98,9 @@ diff -r 5ad24aad236d include/ircd_log.h LS_WHO, /**< Use of extended WHO privileges. */ LS_NETWORK, /**< New server connections. */ LS_OPERKILL, /**< Kills by IRC operators. */ -diff -r 5ad24aad236d include/msg.h ---- a/include/msg.h Sat Jan 31 14:38:44 2009 +0100 -+++ b/include/msg.h Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e include/msg.h +--- a/include/msg.h Tue Feb 03 19:06:27 2009 +0100 ++++ b/include/msg.h Tue Feb 03 19:17:10 2009 +0100 @@ -336,6 +336,10 @@ #define TOK_JUPE "JU" #define CMD_JUPE MSG_JUPE, TOK_JUPE @@ -101,9 +112,9 @@ diff -r 5ad24aad236d include/msg.h #define MSG_OPMODE "OPMODE" /* OPMO */ #define TOK_OPMODE "OM" #define CMD_OPMODE MSG_OPMODE, TOK_OPMODE -diff -r 5ad24aad236d include/numeric.h ---- a/include/numeric.h Sat Jan 31 14:38:44 2009 +0100 -+++ b/include/numeric.h Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e include/numeric.h +--- a/include/numeric.h Tue Feb 03 19:06:27 2009 +0100 ++++ b/include/numeric.h Tue Feb 03 19:17:10 2009 +0100 @@ -118,6 +118,7 @@ #define RPL_STATSALINE 226 /* Hybrid, Undernet */ #define RPL_STATSWELCOME 227 /* QuakeNet extension */ @@ -129,9 +140,9 @@ diff -r 5ad24aad236d include/numeric.h #define ERR_SILELISTFULL 511 /* Undernet extension */ /* ERR_NOTIFYFULL 512 aircd */ /* ERR_TOOMANYWATCH 512 Numeric List: Dalnet */ -diff -r 5ad24aad236d include/split.h +diff -r 276734f7999e include/split.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/include/split.h Sat Jan 31 15:25:32 2009 +0100 ++++ b/include/split.h Tue Feb 03 19:17:10 2009 +0100 @@ -0,0 +1,109 @@ +#ifndef INCLUDED_split_h +#define INCLUDED_split_h @@ -242,9 +253,9 @@ diff -r 5ad24aad236d include/split.h +extern int split_memory_count(size_t *sp_size); + +#endif /* INCLUDED_split_h */ -diff -r 5ad24aad236d ircd/Makefile.in ---- a/ircd/Makefile.in Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/Makefile.in Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/Makefile.in +--- a/ircd/Makefile.in Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/Makefile.in Tue Feb 03 19:17:10 2009 +0100 @@ -173,6 +173,7 @@ m_sethost.c \ m_settime.c \ @@ -302,9 +313,28 @@ diff -r 5ad24aad236d ircd/Makefile.in uping.o: uping.c ../config.h ../include/uping.h ../include/ircd_defs.h \ ../include/ircd_events.h ../config.h ../include/res.h \ ../include/client.h ../include/dbuf.h ../include/msgq.h \ -diff -r 5ad24aad236d ircd/ircd.c ---- a/ircd/ircd.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/ircd.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/client.c +--- a/ircd/client.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/client.c Tue Feb 03 19:17:10 2009 +0100 +@@ -179,6 +179,7 @@ + FlagSet(&privs_local, PRIV_DISPLAY); + FlagSet(&privs_local, PRIV_FORCE_LOCAL_OPMODE); + FlagSet(&privs_local, PRIV_LOCAL_WELCOME); ++ FlagSet(&privs_local, PRIV_SPLIT); + + privs_defaults_set = 1; + } +@@ -251,6 +252,7 @@ + P(ROUTE), P(ROUTEINFO), P(SERVERINFO), P(CHANNEL_PRIVACY), + P(USER_PRIVACY), + P(WELCOME), P(LOCAL_WELCOME), ++ P(SPLIT), + #undef P + { 0, 0 } + }; +diff -r 276734f7999e ircd/ircd.c +--- a/ircd/ircd.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/ircd.c Tue Feb 03 19:17:10 2009 +0100 @@ -55,6 +55,7 @@ #include "s_misc.h" #include "s_stats.h" @@ -323,9 +353,9 @@ diff -r 5ad24aad236d ircd/ircd.c event_loop(); return 0; -diff -r 5ad24aad236d ircd/ircd_features.c ---- a/ircd/ircd_features.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/ircd_features.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/ircd_features.c +--- a/ircd/ircd_features.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/ircd_features.c Tue Feb 03 19:17:10 2009 +0100 @@ -366,6 +366,10 @@ F_B(SETHOST_USER, 0, 0, 0), F_B(SETHOST_AUTO, 0, 0, 0), @@ -353,9 +383,20 @@ diff -r 5ad24aad236d ircd/ircd_features.c F_B(HIS_STATS_s, 0, 1, 0), F_B(HIS_STATS_t, 0, 1, 0), F_B(HIS_STATS_T, 0, 1, 0), -diff -r 5ad24aad236d ircd/ircd_log.c ---- a/ircd/ircd_log.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/ircd_log.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/ircd_lexer.l +--- a/ircd/ircd_lexer.l Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/ircd_lexer.l Tue Feb 03 19:17:10 2009 +0100 +@@ -170,6 +170,7 @@ + { "channel_privacy", TPRIV_CHANNEL_PRIVACY }, + { "local_welcome", TPRIV_LOCAL_WELCOME }, + { "welcome", TPRIV_WELCOME }, ++ { "split", TPRIV_SPLIT }, + { NULL, 0 } + }; + static int ntokens; +diff -r 276734f7999e ircd/ircd_log.c +--- a/ircd/ircd_log.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/ircd_log.c Tue Feb 03 19:17:10 2009 +0100 @@ -154,6 +154,7 @@ S(OPERMODE, -1, SNO_HACK4), S(GLINE, -1, SNO_GLINE), @@ -364,9 +405,30 @@ diff -r 5ad24aad236d ircd/ircd_log.c S(WHO, -1, 0), S(NETWORK, -1, SNO_NETWORK), S(OPERKILL, -1, 0), -diff -r 5ad24aad236d ircd/m_endburst.c ---- a/ircd/m_endburst.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/m_endburst.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/ircd_parser.y +--- a/ircd/ircd_parser.y Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/ircd_parser.y Tue Feb 03 19:17:10 2009 +0100 +@@ -190,7 +190,8 @@ + %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 + %token TPRIV_CHANNEL_PRIVACY TPRIV_USER_PRIVACY TPRIV_LIST_CHAN +-%token TPRIV_LOCAL_WELCOME TPRIV_WELCOME ++%token TPRIV_LOCAL_WELCOME TPRIV_WELCOME ++%token TPRIV_SPLIT + /* and some types... */ + %type sizespec + %type timespec timefactor factoredtimes factoredtime +@@ -707,6 +708,7 @@ + TPRIV_USER_PRIVACY { $$ = PRIV_USER_PRIVACY ; } | + TPRIV_LOCAL_WELCOME { $$ = PRIV_LOCAL_WELCOME; } | + TPRIV_WELCOME { $$ = PRIV_WELCOME; } | ++ TPRIV_SPLIT { $$ = PRIV_SPLIT; } | + TPRIV_PARANOID { $$ = PRIV_PARANOID; } ; + yesorno: YES { $$ = 1; } | NO { $$ = 0; }; + +diff -r 276734f7999e ircd/m_endburst.c +--- a/ircd/m_endburst.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/m_endburst.c Tue Feb 03 19:17:10 2009 +0100 @@ -85,6 +85,7 @@ #include "client.h" #include "hash.h" @@ -402,9 +464,9 @@ diff -r 5ad24aad236d ircd/m_endburst.c if (MyConnect(sptr)) sendcmdto_one(&me, CMD_END_OF_BURST_ACK, sptr, ""); -diff -r 5ad24aad236d ircd/m_reburst.c ---- a/ircd/m_reburst.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/m_reburst.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/m_reburst.c +--- a/ircd/m_reburst.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/m_reburst.c Tue Feb 03 19:17:10 2009 +0100 @@ -102,6 +102,7 @@ #include "ircd_snprintf.h" #include "gline.h" @@ -424,9 +486,9 @@ diff -r 5ad24aad236d ircd/m_reburst.c default: break; } -diff -r 5ad24aad236d ircd/m_server.c ---- a/ircd/m_server.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/m_server.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/m_server.c +--- a/ircd/m_server.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/m_server.c Tue Feb 03 19:17:10 2009 +0100 @@ -47,6 +47,7 @@ #include "s_misc.h" #include "s_serv.h" @@ -445,9 +507,9 @@ diff -r 5ad24aad236d ircd/m_server.c /* * Old sendto_serv_but_one() call removed because we now need to send * different names to different servers (domain name matching). -diff -r 5ad24aad236d ircd/m_split.c +diff -r 276734f7999e ircd/m_split.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/ircd/m_split.c Sat Jan 31 15:25:32 2009 +0100 ++++ b/ircd/m_split.c Tue Feb 03 19:17:10 2009 +0100 @@ -0,0 +1,400 @@ +/* + * IRC - Internet Relay Chat, ircd/m_split.c @@ -676,7 +738,7 @@ diff -r 5ad24aad236d ircd/m_split.c + * parv[0] = Send prefix + * parv[1] = [Server or mask to match] + * -+ * Add or modify entry: 3, 4 or 5 params (3 is * then) ++ * Add or modify entry: 2, 3 or 4 params + * parv[0] = Send prefix + * parv[1] = [+|-] + * parv[2] = [Expiration offset] (required for new) @@ -692,6 +754,7 @@ diff -r 5ad24aad236d ircd/m_split.c + char *server, *end; + const char *reason = NULL; + ++ /* TODO: check PRIV_SPLIT here? */ + /* check HIS and privs */ + if (feature_bool(FEAT_HIS_SPLIT) && !HasPriv(sptr, PRIV_ROUTEINFO)) + return send_reply(sptr, ERR_NOPRIVILEGES); @@ -728,6 +791,13 @@ diff -r 5ad24aad236d ircd/m_split.c + if (action == SPLIT_MODIFY && parc == 2) + return split_list(sptr, server); + ++ /* TODO: but allow force removal when disabled? */ ++ /* check feature and privs */ ++ if (!feature_bool(FEAT_SPLIT)) ++ return send_reply(sptr, ERR_DISABLED, "SPLIT"); ++ else if (!HasPriv(sptr, PRIV_SPLIT)) ++ return send_reply(sptr, ERR_NOPRIVILEGES); ++ + /* if we have an expire, this must be it */ + if (parc > 2) + expire = strtol(parv[2], &end, 10); @@ -769,14 +839,6 @@ diff -r 5ad24aad236d ircd/m_split.c + expire += TStime(); + } + -+ /* TODO: but allow force removal when disabled? */ -+ /* check feature and privs */ -+ if (!feature_bool(FEAT_SPLIT)) -+ return send_reply(sptr, ERR_DISABLED, "SPLIT"); -+ /* TODO: create PRIV_SPLIT - need help there */ -+ else if (!HasPriv(sptr, PRIV_SERVERINFO)) -+ return send_reply(sptr, ERR_NOPRIVILEGES); -+ + /* we have all we need - find the split */ + asplit = split_find(server); + @@ -849,9 +911,9 @@ diff -r 5ad24aad236d ircd/m_split.c + /* looking for a match */ + return split_list(sptr, parv[1]); +} -diff -r 5ad24aad236d ircd/parse.c ---- a/ircd/parse.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/parse.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/parse.c +--- a/ircd/parse.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/parse.c Tue Feb 03 19:17:10 2009 +0100 @@ -506,6 +506,13 @@ { m_unregistered, m_not_oper, ms_jupe, mo_jupe, m_ignore, mh_jupe } }, @@ -866,9 +928,9 @@ diff -r 5ad24aad236d ircd/parse.c MSG_OPMODE, TOK_OPMODE, 0, MAXPARA, MFLG_SLOW, 0, NULL, -diff -r 5ad24aad236d ircd/s_conf.c ---- a/ircd/s_conf.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/s_conf.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/s_conf.c +--- a/ircd/s_conf.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/s_conf.c Tue Feb 03 19:17:10 2009 +0100 @@ -53,6 +53,7 @@ #include "s_debug.h" #include "s_misc.h" @@ -885,9 +947,9 @@ diff -r 5ad24aad236d ircd/s_conf.c return ret; } -diff -r 5ad24aad236d ircd/s_debug.c ---- a/ircd/s_debug.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/s_debug.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/s_debug.c +--- a/ircd/s_debug.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/s_debug.c Tue Feb 03 19:17:10 2009 +0100 @@ -48,6 +48,7 @@ #include "s_user.h" #include "s_stats.h" @@ -925,9 +987,9 @@ diff -r 5ad24aad236d ircd/s_debug.c send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG, ":Hash: client %d(%zu), chan is the same", HASHSIZE, -diff -r 5ad24aad236d ircd/s_err.c ---- a/ircd/s_err.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/s_err.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/s_err.c +--- a/ircd/s_err.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/s_err.c Tue Feb 03 19:17:10 2009 +0100 @@ -490,7 +490,7 @@ /* 228 */ { RPL_STATSQLINE, "Q %s :%s", "228" }, @@ -958,9 +1020,9 @@ diff -r 5ad24aad236d ircd/s_err.c /* 511 */ { ERR_SILELISTFULL, "%s :Your silence list is full", "511" }, /* 512 */ -diff -r 5ad24aad236d ircd/s_misc.c ---- a/ircd/s_misc.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/s_misc.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/s_misc.c +--- a/ircd/s_misc.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/s_misc.c Tue Feb 03 19:17:10 2009 +0100 @@ -53,6 +53,7 @@ #include "s_stats.h" #include "s_user.h" @@ -993,9 +1055,9 @@ diff -r 5ad24aad236d ircd/s_misc.c } /* -diff -r 5ad24aad236d ircd/s_serv.c ---- a/ircd/s_serv.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/s_serv.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/s_serv.c +--- a/ircd/s_serv.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/s_serv.c Tue Feb 03 19:17:10 2009 +0100 @@ -54,6 +54,7 @@ #include "s_misc.h" #include "s_user.h" @@ -1012,9 +1074,9 @@ diff -r 5ad24aad236d ircd/s_serv.c welcome_burst(cptr); /* -diff -r 5ad24aad236d ircd/s_stats.c ---- a/ircd/s_stats.c Sat Jan 31 14:38:44 2009 +0100 -+++ b/ircd/s_stats.c Sat Jan 31 15:25:32 2009 +0100 +diff -r 276734f7999e ircd/s_stats.c +--- a/ircd/s_stats.c Tue Feb 03 19:06:27 2009 +0100 ++++ b/ircd/s_stats.c Tue Feb 03 19:17:10 2009 +0100 @@ -52,6 +52,7 @@ #include "s_stats.h" #include "s_user.h" @@ -1035,9 +1097,9 @@ diff -r 5ad24aad236d ircd/s_stats.c stats_sline, 0, "Spoofed hosts information." }, { 'T', "motds", (STAT_FLAG_OPERFEAT | STAT_FLAG_CASESENS), FEAT_HIS_STATS_T, -diff -r 5ad24aad236d ircd/split.c +diff -r 276734f7999e ircd/split.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/ircd/split.c Sat Jan 31 15:25:32 2009 +0100 ++++ b/ircd/split.c Tue Feb 03 19:17:10 2009 +0100 @@ -0,0 +1,873 @@ +/* + * IRC - Internet Relay Chat, ircd/split.c