diff -ur eggdrop1.6.12/doc/html/tcl-commands.html eggdrop1.6.12.hub/doc/html/tcl-commands.html
--- eggdrop1.6.12/doc/html/tcl-commands.html Wed Jul 17 15:18:29 2002
+++ eggdrop1.6.12.hub/doc/html/tcl-commands.html Sun Oct 13 13:18:49 2002
@@ -4334,6 +4334,20 @@
Module: transfer
+
+
+ RBOT (stackable)
+
+ bind rbot <flags> <key> <proc>
+ proc-name <key> <text> <nick>
+
+ Description: triggered by raw text recieved on
+ the botnet. Key is thebotnet command (i.e. zb for putallbots, c
+ for chat text) and may contain wildcards. Text is the whole line
+ recieved.
+
+ Module: core
+
@@ -4448,6 +4462,12 @@
!nick! msg
+
+
+ RBOT
+
Return 1 to ask the bot not to process the raw text. This can
+ break a botnet causing it to be desynced if you're not careful.
+
diff -ur eggdrop1.6.12/doc/tcl-commands.doc eggdrop1.6.12.hub/doc/tcl-commands.doc
--- eggdrop1.6.12/doc/tcl-commands.doc Wed Jul 17 15:18:29 2002
+++ eggdrop1.6.12.hub/doc/tcl-commands.doc Sun Oct 13 13:18:27 2002
@@ -2057,6 +2057,15 @@
because the data transfer stalled for some reason.
Module: transfer
+| (45) RBOT (stackable)
+| bind rbot
+| proc-name
+|
+| Description: triggered by raw text recieved on the botnet. Key is the
+| botnet command (i.e. zb for putallbots, c for chat text) and may
+| contain wildcards. Text is the whole line recieved.
+| Module: core
+
(B) RETURN VALUES
@@ -2104,6 +2113,9 @@
(11) WALL Return 1 to make the command get logged like so:
!nick! msg
+
+| (12) RBOT Return 1 to ask the bot not to process the raw text. This can
+| break a botnet causing it to be desynced if you're not careful.
*** CONTROL PROCEDURES ***
diff -ur eggdrop1.6.12/src/dcc.c eggdrop1.6.12.hub/src/dcc.c
--- eggdrop1.6.12/src/dcc.c Thu Mar 21 22:53:56 2002
+++ eggdrop1.6.12.hub/src/dcc.c Sun Oct 13 13:15:11 2002
@@ -408,6 +408,7 @@
int f;
strip_telnet(dcc[idx].sock, code, &i);
+ if (check_tcl_rbot(code, idx)) return;
if (debug_output) {
if (code[0] == 's')
putlog(LOG_BOTSHARE, "*", "{%s} %s", dcc[idx].nick, code + 2);
diff -ur eggdrop1.6.12/src/mod/module.h eggdrop1.6.12.hub/src/mod/module.h
--- eggdrop1.6.12/src/mod/module.h Sun Feb 24 02:17:57 2002
+++ eggdrop1.6.12.hub/src/mod/module.h Sun Oct 13 13:15:11 2002
@@ -228,7 +228,7 @@
#define debug_output (*(int *)(global[106]))
#define noshare (*(int *)(global[107]))
/* 108 - 111 */
-/* 108: gban_total -- UNUSED (Eule) */
+#define H_rbot (*(p_tcl_bind_list *)(global[108]))
#define make_userfile (*(int*)global[109])
#define default_flags (*(int*)global[110])
#define dcc_total (*(int*)global[111])
diff -ur eggdrop1.6.12/src/modules.c eggdrop1.6.12.hub/src/modules.c
--- eggdrop1.6.12/src/modules.c Sun Feb 24 02:17:57 2002
+++ eggdrop1.6.12.hub/src/modules.c Sun Oct 13 13:15:11 2002
@@ -322,7 +322,7 @@
(Function) & debug_output, /* int */
(Function) & noshare, /* int */
/* 108 - 111 */
- (Function) 0, /* gban_total -- UNUSED! (Eule) */
+ (Function) & H_rbot, /* p_tcl_bind_list */
(Function) & make_userfile, /* int */
(Function) & default_flags, /* int */
(Function) & dcc_total, /* int */
diff -ur eggdrop1.6.12/src/patch.h eggdrop1.6.12.hub/src/patch.h
--- eggdrop1.6.12/src/patch.h Fri Jul 26 13:58:41 2002
+++ eggdrop1.6.12.hub/src/patch.h Sun Oct 13 13:15:11 2002
@@ -36,7 +36,7 @@
*
*
*/
-/* PATCH GOES HERE */
+patch("rbot");
/*
*
*
diff -ur eggdrop1.6.12/src/tclhash.c eggdrop1.6.12.hub/src/tclhash.c
--- eggdrop1.6.12/src/tclhash.c Thu Jun 13 16:43:08 2002
+++ eggdrop1.6.12.hub/src/tclhash.c Sun Oct 13 13:19:45 2002
@@ -43,6 +43,7 @@
p_tcl_bind_list H_chat, H_act, H_bcst, H_chon, H_chof,
H_load, H_unld, H_link, H_disc, H_dcc, H_chjn, H_chpt,
H_bot, H_time, H_nkch, H_away, H_note, H_filt, H_event;
+p_tcl_bind_list H_rbot;
static int builtin_2char();
static int builtin_3char();
@@ -236,6 +237,7 @@
H_away = add_bind_table("away", HT_STACKABLE, builtin_chat);
H_act = add_bind_table("act", HT_STACKABLE, builtin_chat);
H_event = add_bind_table("evnt", HT_STACKABLE, builtin_char);
+ H_rbot = add_bind_table("rbot", HT_STACKABLE, builtin_3char);
add_builtins(H_dcc, C_dcc);
Context;
}
@@ -1158,4 +1160,22 @@
unbind_bind_entry(table, cc[i].flags, cc[i].name, l);
nfree(l);
}
+}
+
+int check_tcl_rbot(char *text, int idx)
+{
+ char key[11];
+ unsigned char ctr=0;
+ for (; ctr < 11; ctr++)
+ if (text[ctr] == ' ')
+ {
+ key[ctr] = 0;
+ break;
+ }
+ else key[ctr] = text[ctr];
+ Tcl_SetVar(interp, "_rbot1", key, 0);
+ Tcl_SetVar(interp, "_rbot2", text, 0);
+ Tcl_SetVar(interp, "_rbot3", dcc[idx].nick, 0);
+ return (check_tcl_bind(H_rbot, key, 0, " $_rbot1 $_rbot2 $_rbot3",
+ MATCH_MASK | BIND_STACKABLE | BIND_WANTRET) == BIND_EXEC_LOG);
}
diff -ur eggdrop1.6.12/src/tclhash.h eggdrop1.6.12.hub/src/tclhash.h
--- eggdrop1.6.12/src/tclhash.h Tue Jan 1 22:46:36 2002
+++ eggdrop1.6.12.hub/src/tclhash.h Sun Oct 13 13:15:11 2002
@@ -99,6 +99,7 @@
void check_tcl_away(const char *, int, const char *);
void check_tcl_chatactbcst(const char *, int, const char *, tcl_bind_list_t *);
void check_tcl_event(const char *);
+int check_tcl_rbot(char *, int);
#define check_tcl_chat(a, b, c) check_tcl_chatactbcst(a ,b, c, H_chat)
#define check_tcl_act(a, b, c) check_tcl_chatactbcst(a, b, c, H_act)
@@ -119,6 +120,7 @@
extern p_tcl_bind_list H_chat, H_act, H_bcst, H_chon, H_chof;
extern p_tcl_bind_list H_load, H_unld, H_dcc, H_bot, H_link;
extern p_tcl_bind_list H_away, H_nkch, H_filt, H_disc, H_event;
+extern p_tcl_bind_list H_rbot;
#endif