]> git.pld-linux.org Git - packages/eggdrop.git/commitdiff
f0fd5dc004cc34ba0769e852036312ff multilevel_sharing1.6.15.patch
authorankry <ankry@pld-linux.org>
Wed, 11 Jun 2003 13:57:18 +0000 (13:57 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    multilevel_sharing1.6.15.patch -> 1.1

multilevel_sharing1.6.15.patch [new file with mode: 0644]

diff --git a/multilevel_sharing1.6.15.patch b/multilevel_sharing1.6.15.patch
new file mode 100644 (file)
index 0000000..ef2b051
--- /dev/null
@@ -0,0 +1,464 @@
+diff -burN eggdrop1.6.15/doc/USERS eggdrop1.6.15-multilevel_sharing/doc/USERS
+--- eggdrop1.6.15/doc/USERS    Mon May  5 00:05:32 2003
++++ eggdrop1.6.15-multilevel_sharing/doc/USERS Fri May  9 18:44:33 2003
+@@ -75,6 +75,11 @@
+     u  (unshared)       user record is not sent to other bots.
++    s  (protected)      is working similar like u flag, but changes can be made
++                        only from bot that is aggressively sharing with us (Hub).
++                        User cannot be changed by bot that is connected below
++                        this bot. (This flag can be useful in multilevel sharing)
++
+     h  (highlight)      use bold text in help/text files.
+     All global flags other then u, h, b, c, x, j, and p are also
+diff -burN eggdrop1.6.15/doc/tcl-commands.doc eggdrop1.6.15-multilevel_sharing/doc/tcl-commands.doc
+--- eggdrop1.6.15/doc/tcl-commands.doc Mon May  5 00:05:32 2003
++++ eggdrop1.6.15-multilevel_sharing/doc/tcl-commands.doc      Fri May  9 18:44:33 2003
+@@ -1245,6 +1245,17 @@
+     Module: filesys
++
++***### SHARE MODULE COMMANDS ###***
++
++  noshare <command> [<arg1> <arg2> ...]
++    Description: executes command with setting noshare = 1 in code,
++      that means, if you i.e. do chattr using this command,
++      bot will make changes on his userlist, but won't send changes
++      to other bots. This is useful in some situations.
++    Returns: whatever is returned by <command>
++    Module: share
++
+ *** MISCELLANEOUS COMMANDS ***
+   bind <type> <flags> <keyword/mask> [proc-name]
+diff -burN eggdrop1.6.15/eggdrop.conf eggdrop1.6.15-multilevel_sharing/eggdrop.conf
+--- eggdrop1.6.15/eggdrop.conf Mon May  5 00:05:32 2003
++++ eggdrop1.6.15-multilevel_sharing/eggdrop.conf      Fri May  9 18:44:33 2003
+@@ -1139,11 +1139,21 @@
+ # changes from other bots should be ignored?
+ #set private-globals "mnot"
++# When sharing user lists, which channel flags changes from other bots
++# should be ignored?
++#set private-chanflags "mn"
++
+ # When sharing user lists, don't accept ANY userfile changes from other
+ # bots? Paranoid people should use this feature on their hub bot. This
+ # will force all userlist changes to be made via the hub.
+ #set private-user 0
++# When you have multilevel botnet, this option permits hub, to make changes,
++# even when private-global, private-chanflags and/or private-user are set.
++# NOTE: this option doesn't permit hub to force flags filtered by
++# private-globals
++#set permit-hub 1
++
+ # This setting makes the bot discard its own bot records in favor of
+ # the ones sent by the hub.
+ # NOTE: No passwords or botflags are shared, only ports and
+diff -burN eggdrop1.6.15/help/cmds2.help eggdrop1.6.15-multilevel_sharing/help/cmds2.help
+--- eggdrop1.6.15/help/cmds2.help      Mon May  5 00:05:32 2003
++++ eggdrop1.6.15-multilevel_sharing/help/cmds2.help   Fri May  9 18:44:33 2003
+@@ -336,6 +336,7 @@
+       p   party-line (user has access to the partyline)
+       q   global quiet (user does not get voice on +autovoice channels.)
+       r   global dehalfop (user cannot gain halfops on any of the bot's channels)
++      s   protected (when sharing changes can be made only by hub)
+       t   botnet master (user has access to all features dealing with the botnet.)
+       u   unshared (user record is not sent to other bots.)
+       v   global voice (user get +v automatically on +autovoice channels)
+diff -burN eggdrop1.6.15/src/cmds.c eggdrop1.6.15-multilevel_sharing/src/cmds.c
+--- eggdrop1.6.15/src/cmds.c   Mon May  5 00:05:32 2003
++++ eggdrop1.6.15-multilevel_sharing/src/cmds.c        Fri May  9 18:46:00 2003
+@@ -1556,8 +1556,8 @@
+       mns.chan &= ~(BOT_SHARE);
+     }
+     if (!glob_owner(user)) {
+-      pls.global &=~(USER_OWNER | USER_MASTER | USER_BOTMAST | USER_UNSHARED);
+-      mns.global &=~(USER_OWNER | USER_MASTER | USER_BOTMAST | USER_UNSHARED);
++      pls.global &=~(USER_OWNER | USER_MASTER | USER_BOTMAST | USER_UNSHARED | USER_PROTECTED);
++      mns.global &=~(USER_OWNER | USER_MASTER | USER_BOTMAST | USER_UNSHARED | USER_PROTECTED);
+       if (chan) {
+         pls.chan &= ~USER_OWNER;
+diff -burN eggdrop1.6.15/src/flags.h eggdrop1.6.15-multilevel_sharing/src/flags.h
+--- eggdrop1.6.15/src/flags.h  Mon May  5 00:05:32 2003
++++ eggdrop1.6.15-multilevel_sharing/src/flags.h       Fri May  9 18:48:57 2003
+@@ -44,8 +44,8 @@
+ /*
+  * userflags:
+- *   abcdefgh?jklmnopqr?tuvwxyz + user defined A-Z
+- *   unused letters: is
++ *   abcdefgh?jklmnopqrstuvwxyz + user defined A-Z
++ *   unused letters: i
+  *
+  * botflags:
+  *   0123456789ab????ghi??l???p?rs???????
+@@ -55,7 +55,7 @@
+  *   a??defg???klmno?qr??uv??yz + user defined A-Z
+  *   unused letters: bchijpstwx
+  */
+-#define USER_VALID 0x03fbfeff   /* Sum of all USER_ flags */
++#define USER_VALID 0x03fffeff   /* Sum of all USER_ flags */
+ #define CHAN_VALID 0x03777c79   /* Sum of all CHAN_ flags */
+ #define BOT_VALID  0x7fe689C1   /* Sum of all BOT_  flags */
+@@ -78,7 +78,7 @@
+ #define USER_PARTY         0x00008000 /* p  user has party line access            */
+ #define USER_QUIET         0x00010000 /* q  user is global de-voice               */
+ #define USER_DEHALFOP      0x00020000 /* r  user is global de-halfop              */
+-#define USER_S             0x00040000 /* s  unused                                */
++#define USER_PROTECTED     0x00040000 /* s  user is protected (cannot be removed/changed by downlinks  */
+ #define USER_BOTMAST       0x00080000 /* t  user is botnet master                 */
+ #define USER_UNSHARED      0x00100000 /* u  not shared with sharebots             */
+ #define USER_VOICE         0x00200000 /* v  user is +v on all channels            */
+@@ -166,6 +166,7 @@
+ #define glob_hilite(x)          ((x).global & USER_HIGHLITE)
+ #define chan_exempt(x)          ((x).chan & USER_EXEMPT)
+ #define glob_exempt(x)          ((x).global & USER_EXEMPT)
++#define glob_protected(x)     ((x).global & USER_PROTECTED)
+ #define bot_global(x)           ((x).bot & BOT_GLOBAL)
+ #define bot_chan(x)             ((x).chan & BOT_AGGRESSIVE)
+diff -burN eggdrop1.6.15/src/mod/share.mod/Makefile eggdrop1.6.15-multilevel_sharing/src/mod/share.mod/Makefile
+--- eggdrop1.6.15/src/mod/share.mod/Makefile   Mon May  5 00:05:33 2003
++++ eggdrop1.6.15-multilevel_sharing/src/mod/share.mod/Makefile        Fri May  9 18:49:41 2003
+@@ -20,7 +20,7 @@
+       mv share.o ../
+ ../../../share.$(MOD_EXT): ../share.o
+-      $(LD) -o ../../../share.$(MOD_EXT) ../share.o
++      $(LD) -o ../../../share.$(MOD_EXT) ../share.o ${XLIBS}
+       $(STRIP) ../../../share.$(MOD_EXT)
+ depend:
+diff -burN eggdrop1.6.15/src/mod/share.mod/share.c eggdrop1.6.15-multilevel_sharing/src/mod/share.mod/share.c
+--- eggdrop1.6.15/src/mod/share.mod/share.c    Mon May  5 00:05:33 2003
++++ eggdrop1.6.15-multilevel_sharing/src/mod/share.mod/share.c Fri May  9 19:10:34 2003
+@@ -50,11 +50,14 @@
+ static int private_global = 0;
+ static int private_user = 0;
+ static char private_globals[50];
++static char private_chanflags[50];
+ static int allow_resync = 0;
+ static struct flag_record fr = { 0, 0, 0, 0, 0, 0 };
+ static int resync_time = 900;
+ static int overr_local_bots = 0;        /* Override local bots?             */
++static int permit_hub = 0; /* Permit hub to do changes even, when we use private_*, */
++                           /* but not private_globals (this have a reason) */
+ struct delay_mode {
+   struct delay_mode *next;
+@@ -93,6 +96,7 @@
+ static void q_resync(char *, struct chanset_t *);
+ static void cancel_user_xfer(int, void *);
+ static int private_globals_bitmask();
++static int private_chanflags_bitmask();
+ #include "share.h"
+@@ -307,7 +311,7 @@
+   char *hand;
+   struct userrec *u;
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user) {
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx))) {
+     hand = newsplit(&par);
+     u = get_user_by_handle(userlist, hand);
+     if (u && !(u->flags & USER_UNSHARED)) {
+@@ -329,26 +333,33 @@
+   int bfl, ofl;
+   module_entry *me;
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user) {
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx))) {
+     hand = newsplit(&par);
+     u = get_user_by_handle(userlist, hand);
+-    if (u && !(u->flags & USER_UNSHARED)) {
++    if (u && !(u->flags & USER_UNSHARED) && !IS_USER_PROTECTED(u, idx)) {
+       atr = newsplit(&par);
+       cst = findchan_by_dname(par);
+       if (!par[0] || (cst && channel_shared(cst))) {
+-        if (!(dcc[idx].status & STAT_GETTING) && (cst || !private_global))
+-          shareout_but(cst, idx, "a %s %s %s\n", hand, atr, par);
+         noshare = 1;
+         if (par[0] && cst) {
++        int pchbm = 0;
++        if (!PERMIT_HUB(idx))
++              pchbm = private_chanflags_bitmask();
+           fr.match = (FR_CHAN | FR_BOT);
++        /* bot's sharing flags */
+           get_user_flagrec(dcc[idx].user, &fr, par);
+           if (bot_chan(fr) || bot_global(fr)) {
+             fr.match = FR_CHAN;
+             fr2.match = FR_CHAN;
+             break_down_flags(atr, &fr, 0);
+             get_user_flagrec(u, &fr2, par);
+-            fr.chan = (fr2.chan & BOT_AGGRESSIVE) |
+-                      (fr.chan & ~BOT_AGGRESSIVE);
++            fr.chan = (fr2.chan & BOT_AGGRESSIVE) | (fr.chan & ~BOT_AGGRESSIVE);
++          /* Checking for forced flags */
++          if ( (pchbm & USER_OWNER) && chan_owner(fr) && !chan_owner(fr2))
++                  fr.chan &= ~(USER_MASTER | USER_OP);
++          else if ( (pchbm & USER_MASTER) && chan_master(fr) && !chan_master(fr2))
++                  fr.chan &= ~USER_OP;
++          fr.chan = (fr2.chan & pchbm) | (fr.chan & ~pchbm);
+             set_user_flagrec(u, &fr, par);
+             check_dcc_chanattrs(u, par, fr.chan, fr2.chan);
+             noshare = 0;
+@@ -365,7 +376,7 @@
+             putlog(LOG_CMDS, "*",
+                    "Rejected flags for unshared channel %s from %s",
+                    par, dcc[idx].nick);
+-        } else if (!private_global) {
++      } else if (!private_global || PERMIT_HUB(idx)) {
+           int pgbm = private_globals_bitmask();
+           /* Don't let bot flags be altered */
+@@ -384,15 +395,17 @@
+           if (!(dcc[idx].status & STAT_GETTING))
+             putlog(LOG_CMDS, "*", "%s: chattr %s %s", dcc[idx].nick, hand, s);
+           if ((me = module_find("irc", 0, 0))) {
++          struct chanset_t *tmpcst;
+             Function *func = me->funcs;
+-
+-            for (cst = chanset; cst; cst = cst->next)
+-              (func[IRC_RECHECK_CHANNEL]) (cst, 0);
++            for (tmpcst = chanset; tmpcst; tmpcst = tmpcst->next)
++              (func[IRC_RECHECK_CHANNEL]) (tmpcst, 0);
+           }
+         } else
+           putlog(LOG_CMDS, "*", "Rejected global flags for %s from %s",
+                  hand, dcc[idx].nick);
+         noshare = 0;
++      if (!(dcc[idx].status & STAT_GETTING) && (cst || !private_global || PERMIT_HUB(idx)))
++              shareout_but(cst, idx, "a %s %s %s\n", hand, s, par);
+       }
+     }
+   }
+@@ -404,7 +417,7 @@
+   struct chanset_t *chan;
+   struct userrec *u;
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user) {
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx))) {
+     user = newsplit(&par);
+     if ((u = get_user_by_handle(userlist, user))) {
+       chan = findchan_by_dname(par);
+@@ -433,7 +446,7 @@
+   struct chanset_t *chan;
+   struct userrec *u;
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user) {
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx))) {
+     user = newsplit(&par);
+     if ((u = get_user_by_handle(userlist, user))) {
+       chan = findchan_by_dname(par);
+@@ -459,13 +472,13 @@
+   char *nick, *host, *pass, s[100];
+   struct userrec *u;
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user) {
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx))) {
+     nick = newsplit(&par);
+     host = newsplit(&par);
+     pass = newsplit(&par);
+     if (!(u = get_user_by_handle(userlist, nick)) ||
+-        !(u->flags & USER_UNSHARED)) {
++        !((u->flags & USER_UNSHARED) || IS_USER_PROTECTED(u, idx))) {
+       fr.global = 0;
+       fr.match = FR_GLOBAL;
+@@ -510,9 +523,9 @@
+   struct userrec *u;
+   /* If user is a share bot, ignore command */
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user &&
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx)) &&
+       (u = get_user_by_handle(userlist, par)) &&
+-      !(u->flags & USER_UNSHARED) &&
++      !(u->flags & USER_UNSHARED) && !IS_USER_PROTECTED(u, idx) &&
+       !((u->flags & USER_BOT) && (bot_flags(u) & BOT_SHARE))) {
+     noshare = 1;
+     if (deluser(par)) {
+@@ -528,10 +541,10 @@
+   char *hand;
+   struct userrec *u;
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user) {
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx))) {
+     hand = newsplit(&par);
+     if ((u = get_user_by_handle(userlist, hand)) &&
+-        !(u->flags & USER_UNSHARED)) {
++        !(u->flags & USER_UNSHARED) && !IS_USER_PROTECTED(u, idx)) {
+       shareout_but(NULL, idx, "+h %s %s\n", hand, par);
+       set_user(&USERENTRY_HOSTS, u, par);
+       putlog(LOG_CMDS, "*", "%s: +host %s %s", dcc[idx].nick, hand, par);
+@@ -544,10 +557,10 @@
+   char *hand, p[32];
+   struct userrec *u;
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user) {
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx))) {
+     hand = newsplit(&par);
+     if (!(u = get_user_by_handle(userlist, hand)) ||
+-        !(u->flags & USER_UNSHARED)) {
++        !((u->flags & USER_UNSHARED) || IS_USER_PROTECTED(u, idx))) {
+       if (!(dcc[idx].status & STAT_GETTING))
+         shareout_but(NULL, idx, "+bh %s %s\n", hand, par);
+       /* Add bot to userlist if not there */
+@@ -570,10 +583,10 @@
+   char *hand;
+   struct userrec *u;
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user) {
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx))) {
+     hand = newsplit(&par);
+     if ((u = get_user_by_handle(userlist, hand)) &&
+-        !(u->flags & USER_UNSHARED)) {
++        !(u->flags & USER_UNSHARED) && !IS_USER_PROTECTED(u, idx)) {
+       shareout_but(NULL, idx, "-h %s %s\n", hand, par);
+       noshare = 1;
+       delhost_by_handle(hand, par);
+@@ -590,11 +603,11 @@
+   struct user_entry_type *uet;
+   struct user_entry *e;
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user) {
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx))) {
+     key = newsplit(&par);
+     hand = newsplit(&par);
+     if (!(u = get_user_by_handle(userlist, hand)) ||
+-        !(u->flags & USER_UNSHARED)) {
++        !((u->flags & USER_UNSHARED) || IS_USER_PROTECTED(u,idx))) {
+       if (!(uet = find_entry_type(key)))
+         /* If it's not a supported type, forget it */
+         debug2("Ignore ch %s from %s (unknown type)", key, dcc[idx].nick);
+@@ -638,10 +651,10 @@
+   struct chanset_t *cst;
+   struct userrec *u;
+-  if ((dcc[idx].status & STAT_SHARE) && !private_user) {
++  if ((dcc[idx].status & STAT_SHARE) && (!private_user || PERMIT_HUB(idx))) {
+     hand = newsplit(&par);
+     if ((u = get_user_by_handle(userlist, hand)) &&
+-        !(u->flags & USER_UNSHARED) && share_greet) {
++        !(u->flags & USER_UNSHARED) && !IS_USER_PROTECTED(u, idx) && share_greet) {
+       chan = newsplit(&par);
+       cst = findchan_by_dname(chan);
+       fr.match = (FR_CHAN | FR_BOT);
+@@ -2033,11 +2046,13 @@
+   {"private-global",  &private_global},
+   {"private-user",      &private_user},
+   {"override-bots", &overr_local_bots},
++  {"permit-hub",          &permit_hub},
+   {NULL,                         NULL}
+ };
+ static tcl_strings my_strings[] = {
+   {"private-globals", private_globals, 50, 0},
++  {"private-chanflags", private_chanflags, 50, 0},
+   {NULL,              NULL,            0,  0}
+ };
+@@ -2056,6 +2071,39 @@
+   {NULL,    NULL, NULL,                 NULL}
+ };
++static int tcl_noshare STDVAR
++{
++  int res;
++  char *x;
++
++  if (argc < 2) {
++    Tcl_AppendResult(irp, "wrong # args: should be \"",
++    argv[0], " arg ?arg ...?\"", NULL);
++    return TCL_ERROR;
++  }
++
++  Context;
++
++  noshare = 1;
++
++  x = Tcl_Merge(argc - 1, argv + 1);
++  res = Tcl_Eval(irp, x);
++  Tcl_Free((char *) x);
++
++  noshare = 0;
++
++  Context;
++  return res;
++}
++
++
++static tcl_cmds my_tclcmds[] =
++{
++  {"noshare", tcl_noshare},
++  {NULL,      NULL}
++};
++
++
+ static char *share_close()
+ {
+   int i;
+@@ -2088,6 +2136,7 @@
+   delay_free_mem();
+   rem_tcl_ints(my_ints);
+   rem_tcl_strings(my_strings);
++  rem_tcl_commands(my_tclcmds);
+   rem_builtins(H_dcc, my_cmds);
+   rem_help_reference("share.help");
+   return NULL;
+@@ -2207,6 +2256,7 @@
+   DCC_BOT.kill = cancel_user_xfer;
+   add_tcl_ints(my_ints);
+   add_tcl_strings(my_strings);
++  add_tcl_commands(my_tclcmds);
+   add_builtins(H_dcc, my_cmds);
+   uff_init();
+   uff_addtable(internal_uff_table);
+@@ -2220,3 +2270,11 @@
+   break_down_flags(private_globals, &fr, 0);
+   return fr.global;
+ }
++
++int private_chanflags_bitmask()
++{
++      struct flag_record fr = {FR_CHAN, 0, 0, 0, 0, 0};
++
++      break_down_flags(private_chanflags, &fr, 0);
++      return fr.chan;
++}
+diff -burN eggdrop1.6.15/src/mod/share.mod/share.h eggdrop1.6.15-multilevel_sharing/src/mod/share.mod/share.h
+--- eggdrop1.6.15/src/mod/share.mod/share.h    Mon May  5 00:05:33 2003
++++ eggdrop1.6.15-multilevel_sharing/src/mod/share.mod/share.h Fri May  9 19:11:25 2003
+@@ -52,6 +52,11 @@
+                              * `priority'.                                   */
+ } uff_table_t;
++/* Do we allow hub to change user value <TaKeDa> */
++#define PERMIT_HUB(x) (permit_hub && (dcc[x].status & STAT_AGGRESSIVE))
++/* Is user protected and if he is do we allow changes? <TaKeDa> */
++#define IS_USER_PROTECTED(user,idx) (!(dcc[idx].status & STAT_AGGRESSIVE) && (user->flags & USER_PROTECTED))
++
+ #ifndef MAKING_SHARE
+ /* 4 - 7 */
+ #define finish_share ((void (*) (int))share_funcs[4])
+diff -burN eggdrop1.6.15/src/patch.h eggdrop1.6.15-multilevel_sharing/src/patch.h
+--- eggdrop1.6.15/src/patch.h  Mon May  5 00:08:01 2003
++++ eggdrop1.6.15-multilevel_sharing/src/patch.h       Fri May  9 19:11:50 2003
+@@ -36,7 +36,7 @@
+  *
+  *
+  */
+-/* PATCH GOES HERE */
++patch("multilevel_sharing");
+ /*
+  *
+  *
This page took 0.083727 seconds and 4 git commands to generate.