]> git.pld-linux.org Git - packages/eggdrop.git/blob - eggdrop1.6.13-topicprot.patch
- some pld.org.pl->pld-linux.org cosmetics
[packages/eggdrop.git] / eggdrop1.6.13-topicprot.patch
1 diff -ur eggdrop1.6.12.old/src/chan.h eggdrop1.6.12.new/src/chan.h
2 --- eggdrop1.6.12.old/src/chan.h        Wed Jun 19 17:13:38 2002
3 +++ eggdrop1.6.12.new/src/chan.h        Fri Aug 23 19:47:33 2002
4 @@ -172,6 +172,7 @@
5    int mode_mns_prot;           /* modes to reject                      */
6    int limit_prot;              /* desired limit                        */
7    char key_prot[121];          /* desired password                     */
8 +  char topic_prot[501];                /* desired topic                        */
9    /* queued mode changes: */
10    char pls[21];                        /* positive mode changes                */
11    char mns[21];                        /* negative mode changes                */
12 diff -ur eggdrop1.6.12.old/src/chanprog.c eggdrop1.6.12.new/src/chanprog.c
13 --- eggdrop1.6.12.old/src/chanprog.c    Thu Jul 18 16:28:32 2002
14 +++ eggdrop1.6.12.new/src/chanprog.c    Fri Aug 23 19:55:06 2002
15 @@ -680,3 +680,23 @@
16      pa = pb;
17    }
18  }
19 +
20 +/* If we have a protected topic and the bot is opped, halfoped,
21 + * or the channel is -t, change the topic. (Sup 11May2001)
22 + */
23 +void check_topic(struct chanset_t *chan)
24 +{
25 +  memberlist *m = NULL;  
26 +
27 +  if (chan->topic_prot[0]) {
28 +    m = ismember(chan, botname);
29 +    if (!m)
30 +      return;
31 +    if (chan->channel.topic) {
32 +      if (!egg_strcasecmp(chan->topic_prot, chan->channel.topic))
33 +       return;
34 +    }
35 +    if (chan_hasop(m) || !channel_optopic(chan) || chan_hashalfop(m))
36 +      dprintf(DP_SERVER, "TOPIC %s :%s\n", chan->name, chan->topic_prot);
37 +  }
38 +}
39 diff -ur eggdrop1.6.12.old/src/mod/channels.mod/channels.c eggdrop1.6.12.new/src/mod/channels.mod/channels.c
40 --- eggdrop1.6.12.old/src/mod/channels.mod/channels.c   Thu Jul 18 15:01:44 2002
41 +++ eggdrop1.6.12.new/src/mod/channels.mod/channels.c   Fri Aug 23 20:00:59 2002
42 @@ -382,6 +382,7 @@
43    FILE *f;
44    char s[121], w[1024], w2[1024], name[163];
45    char need1[242], need2[242], need3[242], need4[242], need5[242];
46 +  char topic[1002];
47    struct chanset_t *chan;
48    struct udef_struct *ul;
49  
50 @@ -402,12 +403,13 @@
51      convert_element(chan->dname, name);
52      get_mode_protect(chan, w);
53      convert_element(w, w2);
54 +    convert_element(chan->topic_prot, topic);
55      convert_element(chan->need_op, need1);
56      convert_element(chan->need_invite, need2);
57      convert_element(chan->need_key, need3);
58      convert_element(chan->need_unban, need4);
59      convert_element(chan->need_limit, need5);
60 -    fprintf(f, "channel %s %s%schanmode %s idle-kick %d stopnethack-mode %d \
61 +    fprintf(f, "channel %s %s%schanmode %s topic %s idle-kick %d stopnethack-mode %d \
62  revenge-mode %d \
63  need-op %s need-invite %s need-key %s need-unban %s need-limit %s \
64  flood-chan %d:%d flood-ctcp %d:%d flood-join %d:%d \
65 @@ -421,6 +423,7 @@
66         name,
67         channel_static(chan) ? " " : " { ",
68         w2,
69 +        topic,
70         chan->idle_kick, /* idle-kick 0 is same as dont-idle-kick (less code)*/
71         chan->stopnethack_mode,
72          chan->revenge_mode,
73 diff -ur eggdrop1.6.12.old/src/mod/channels.mod/cmdschan.c eggdrop1.6.12.new/src/mod/channels.mod/cmdschan.c
74 --- eggdrop1.6.12.old/src/mod/channels.mod/cmdschan.c   Mon Jul 22 01:48:53 2002
75 +++ eggdrop1.6.12.new/src/mod/channels.mod/cmdschan.c   Fri Aug 23 20:02:26 2002
76 @@ -1199,6 +1199,7 @@
77             channel_static(chan) ? "static" : "dynamic", chan->dname);
78      get_mode_protect(chan, work);
79      dprintf(idx, "Protect modes (chanmode): %s\n", work[0] ? work : "None");
80 +    dprintf(idx, "Protect topic: %s\n", chan->topic_prot[0] ? chan->topic_prot : "None");
81      if (chan->idle_kick)
82        dprintf(idx, "Idle Kick after (idle-kick): %d\n", chan->idle_kick);
83      else
84 diff -ur eggdrop1.6.12.old/src/mod/channels.mod/help/chaninfo.help eggdrop1.6.12.new/src/mod/channels.mod/help/chaninfo.help
85 --- eggdrop1.6.12.old/src/mod/channels.mod/help/chaninfo.help   Thu Jun 13 23:46:48 2002
86 +++ eggdrop1.6.12.new/src/mod/channels.mod/help/chaninfo.help   Fri Aug 23 20:03:05 2002
87 @@ -4,6 +4,7 @@
88       It shows any of the following:
89         %bchanmode%b   which modes are enforced on the channel, both + and -
90                    modes can be enforced
91 +        %btopic%b      which topic is enforced on the channel
92         %bidle-kick%b  kick idle users (non +f's anyway) on the channel after
93                    how many minutes (use 0, or dont-idle-kick to turn this off)
94  %{+n}
95 diff -ur eggdrop1.6.12.old/src/mod/channels.mod/tclchan.c eggdrop1.6.12.new/src/mod/channels.mod/tclchan.c
96 --- eggdrop1.6.12.old/src/mod/channels.mod/tclchan.c    Thu Jul 18 15:01:44 2002
97 +++ eggdrop1.6.12.new/src/mod/channels.mod/tclchan.c    Fri Aug 23 20:11:17 2002
98 @@ -1093,6 +1093,15 @@
99          return TCL_ERROR;
100        }
101        chan->invite_time = atoi(item[i]);
102 +    } else if (!strcmp(item[i], "topic")) {
103 +      i++;
104 +      if (i >= items) {
105 +       if (irp)
106 +         Tcl_AppendResult(irp, "channel topic needs argument", NULL);
107 +       return TCL_ERROR;
108 +      }
109 +      strncpyz(chan->topic_prot, item[i], sizeof(chan->topic_prot));
110 +      check_topic(chan);
111      }
112      else if (!strcmp(item[i], "+enforcebans"))
113        chan->status |= CHAN_ENFORCEBANS;
114 diff -ur eggdrop1.6.12.old/src/mod/irc.mod/chan.c eggdrop1.6.12.new/src/mod/irc.mod/chan.c
115 --- eggdrop1.6.12.old/src/mod/irc.mod/chan.c    Thu Jul 25 13:40:18 2002
116 +++ eggdrop1.6.12.new/src/mod/irc.mod/chan.c    Fri Aug 23 20:14:54 2002
117 @@ -1514,12 +1514,14 @@
118    memberlist *m;
119    struct chanset_t *chan;
120    struct userrec *u;
121 +  struct flag_record fr = {FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0};
122  
123    chname = newsplit(&msg);
124    fixcolon(msg);
125    u = get_user_by_host(from);
126    nick = splitnick(&from);
127    chan = findchan(chname);
128 +  get_user_flagrec(u, &fr, chname);
129    if (chan) {
130      putlog(LOG_JOIN, chan->dname, "Topic changed on %s by %s!%s: %s",
131             chan->dname, nick, from, msg);
132 @@ -1528,6 +1530,8 @@
133        m->last = now;
134      set_topic(chan, msg);
135      check_tcl_topc(nick, from, u, chan->dname, msg);
136 +    if (egg_strcasecmp(botname, nick) && !glob_master(fr) && !chan_master(fr))
137 +      check_topic(chan);
138    }
139    return 0;
140  }
141 @@ -1546,6 +1550,7 @@
142    if (chan) {
143      set_topic(chan, NULL);
144      check_tcl_topc("*", "*", NULL, chan->dname, "");
145 +    check_topic(chan);
146    }
147    return 0;
148  }
149 @@ -1565,6 +1570,7 @@
150      fixcolon(msg);
151      set_topic(chan, msg);
152      check_tcl_topc("*", "*", NULL, chan->dname, msg);
153 +    check_topic(chan);
154    }
155    return 0;
156  }
157 diff -ur eggdrop1.6.12.old/src/mod/irc.mod/cmdsirc.c eggdrop1.6.12.new/src/mod/irc.mod/cmdsirc.c
158 --- eggdrop1.6.12.old/src/mod/irc.mod/cmdsirc.c Mon Jul 22 01:43:28 2002
159 +++ eggdrop1.6.12.new/src/mod/irc.mod/cmdsirc.c Fri Aug 23 20:16:44 2002
160 @@ -824,6 +824,7 @@
161  static void cmd_topic(struct userrec *u, int idx, char *par)
162  {
163    struct chanset_t *chan;
164 +  struct flag_record fr = {FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0};
165  
166    if (par[0] && (strchr(CHANMETA, par[0]) != NULL)) {
167      char *chname = newsplit(&par);
168 @@ -846,6 +847,13 @@
169        dprintf(idx, "I'm not a channel op or halfop on %s and the channel %s",
170                   "is +t.\n", chan->dname);
171      } else {
172 +      if (chan->topic_prot[0]) {
173 +       get_user_flagrec(u, &fr, chan->dname);
174 +       if (!glob_master(fr) && !chan_master(fr)) {
175 +         dprintf(idx, "The topic of %s is protected.\n", chan->dname);
176 +         return;
177 +       }
178 +      }
179        dprintf(DP_SERVER, "TOPIC %s :%s\n", chan->name, par);
180        dprintf(idx, "Changing topic...\n");
181        putlog(LOG_CMDS, "*", "#%s# (%s) topic %s", dcc[idx].nick,
182 diff -ur eggdrop1.6.12.old/src/mod/irc.mod/mode.c eggdrop1.6.12.new/src/mod/irc.mod/mode.c
183 --- eggdrop1.6.12.old/src/mod/irc.mod/mode.c    Thu Jun 13 16:43:08 2002
184 +++ eggdrop1.6.12.new/src/mod/irc.mod/mode.c    Fri Aug 23 20:31:09 2002
185 @@ -471,8 +471,10 @@
186      }
187    }
188    m->flags |= WASOP;
189 -  if (check_chan)
190 +  if (check_chan) {
191      recheck_channel(chan, 1);
192 +    check_topic(chan);
193 +  }
194  }
195  
196  static void got_halfop(struct chanset_t *chan, char *nick, char *from,
197 @@ -556,8 +558,10 @@
198      }
199    }
200    m->flags |= WASHALFOP;
201 -  if (check_chan)
202 +  if (check_chan) {
203      recheck_channel(chan, 1);
204 +    check_topic(chan);
205 +  }
206  }
207  
208  static void got_deop(struct chanset_t *chan, char *nick, char *from,
209 @@ -1314,6 +1318,8 @@
210                      ((ms2[0] == '-') || (chan->mode_mns_prot & todo)))
211               add_mode(chan, ms2[0] == '+' ? '-' : '+', *chg, "");
212           }
213 +          if ((ms2[0] == '-') && ((*chg == 't') || (*chg == 'h')))
214 +            check_topic(chan);
215         }
216         chg++;
217        }
218 diff -ur eggdrop1.6.12.old/src/mod/module.h eggdrop1.6.12.new/src/mod/module.h
219 --- eggdrop1.6.12.old/src/mod/module.h  Sun Feb 24 02:17:57 2002
220 +++ eggdrop1.6.12.new/src/mod/module.h  Fri Aug 23 20:33:51 2002
221 @@ -358,7 +358,7 @@
222  #define rem_tcl_coups ((void (*) (tcl_coups *))global[210])
223  #define botname ((char *)(global[211]))
224  /* 212 - 215 */
225 -/* 212: remove_gunk() -- UNUSED (drummer) */
226 +#define check_topic ((void (*)(struct chanset_t *))global[212])
227  #define check_tcl_chjn ((void (*) (const char *,const char *,int,char,int,const char *))global[213])
228  #define sanitycheck_dcc ((int (*)(char *, char *, char *, char *))global[214])
229  #define isowner ((int (*)(char *))global[215])
230 diff -ur eggdrop1.6.12.old/src/modules.c eggdrop1.6.12.new/src/modules.c
231 --- eggdrop1.6.12.old/src/modules.c     Sun Feb 24 02:17:57 2002
232 +++ eggdrop1.6.12.new/src/modules.c     Fri Aug 23 20:34:33 2002
233 @@ -452,7 +452,7 @@
234    (Function) rem_tcl_coups,
235    (Function) botname,
236    /* 212 - 215 */
237 -  (Function) 0,                        /* remove_gunk() -- UNUSED! (drummer)   */
238 +  (Function) check_topic,
239    (Function) check_tcl_chjn,
240    (Function) sanitycheck_dcc,
241    (Function) isowner,
242 diff -ur eggdrop1.6.12.old/src/patch.h eggdrop1.6.12.new/src/patch.h
243 --- eggdrop1.6.12.old/src/patch.h       Fri Jul 26 13:58:41 2002
244 +++ eggdrop1.6.12.new/src/patch.h       Fri Aug 23 20:35:27 2002
245 @@ -36,7 +36,7 @@
246   *
247   *
248   */
249 -/* PATCH GOES HERE */
250 +patch("topicprot");
251  /*
252   *
253   *
254 diff -ur eggdrop1.6.12.old/src/proto.h eggdrop1.6.12.new/src/proto.h
255 --- eggdrop1.6.12.old/src/proto.h       Tue Jan  1 22:46:36 2002
256 +++ eggdrop1.6.12.new/src/proto.h       Fri Aug 23 20:35:00 2002
257 @@ -116,6 +116,7 @@
258  void set_chanlist(const char *host, struct userrec *rec);
259  void clear_chanlist(void);
260  void clear_chanlist_member(const char *nick);
261 +void check_topic(struct chanset_t *);
262  
263  /* cmds.c */
264  int check_dcc_attrs(struct userrec *, int);
This page took 0.119687 seconds and 3 git commands to generate.