diff options
| author | TBK <tbk@jjtc.eu> | 2020-03-09 10:47:41 +0100 |
|---|---|---|
| committer | Leo <thinkabit.ukim@gmail.com> | 2020-03-25 17:13:42 +0000 |
| commit | be4e9928d9fbeb45a36b8601def0782732fb0a98 (patch) | |
| tree | 0beb07b5796f84ca6351a659ff71633a4f259eb7 /main/eggdrop/gseen.mod.patch | |
| parent | 936220e3a5ca223ed285e6b9ad8d37fd8c64218e (diff) | |
| download | aports-be4e9928d9fbeb45a36b8601def0782732fb0a98.tar.bz2 aports-be4e9928d9fbeb45a36b8601def0782732fb0a98.tar.xz | |
main/eggdrop: upgrade to 1.8.4
Diffstat (limited to 'main/eggdrop/gseen.mod.patch')
| -rw-r--r-- | main/eggdrop/gseen.mod.patch | 1624 |
1 files changed, 817 insertions, 807 deletions
diff --git a/main/eggdrop/gseen.mod.patch b/main/eggdrop/gseen.mod.patch index 9f3beda356..dd49248c65 100644 --- a/main/eggdrop/gseen.mod.patch +++ b/main/eggdrop/gseen.mod.patch @@ -1,326 +1,91 @@ -diff -Nur src/mod/gseen.mod/Makefile src/mod/gseen.mod/Makefile ---- ./src/mod/gseen.mod/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/Makefile 2002-10-26 13:17:44.000000000 +0200 -@@ -0,0 +1,28 @@ -+# Makefile for src/mod/gseen.mod/ -+ -+doofus: -+ @echo "" -+ @echo "Let's try this from the right directory..." -+ @echo "" -+ @cd ../../../; make -+ -+clean: -+ @rm -f *.o *.$(MOD_EXT) *~ -+ -+static: ../gseen.o -+ -+modules: ../../../gseen.$(MOD_EXT) -+ -+../gseen.o: ../module.h ../modvals.h ../../eggdrop.h datahandling.c \ -+ gseen.c sensors.c gseencmds.c gseencmds.c do_seen.c ai.c tclcmds.c \ -+ misc.c seentree.c generic_binary_tree.c slang_gseen_commands.c \ -+ slang.c slang_text.c slang_ids.c slang_chanlang.c seenlang.h \ -+ slang_multitext.c gseen.h -+ $(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c gseen.c -+ rm -f ../gseen.o -+ mv gseen.o ../ -+ -+../../../gseen.$(MOD_EXT): ../gseen.o -+ $(LD) -o ../../../gseen.$(MOD_EXT) ../gseen.o $(XLIBS) -+ -+#safety hash -diff -Nur src/mod/gseen.mod/README src/mod/gseen.mod/README ---- ./src/mod/gseen.mod/README 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/README 2002-10-26 13:17:45.000000000 +0200 -@@ -0,0 +1,140 @@ -+Description: -+------------ -+ -+gseen.mod is a seen module for eggdrop that tracks not only the users in the -+bot's userfile, but everyone who enters one of the bots channels. -+It does pretty much the same as the popular script bseen and has a few -+additional features like AI-seen and seen-notification. -+It's also way faster than any corresponding script because scripts are always -+much slower than modules. Especially scripts that deal with large amount of -+data often become incredible slow. -+ -+Installation: -+------------- -+ -+gseen.mod is written for eggdrop1.6, but it should also work with eggdrop 1.4. -+ -+You need the eggdrop source to compile the module. -+ -+The following instructions assume, ~/eggdrop1.6.2/ is the directory -+where you installed your eggdrop from. (of course, other source dirs -+will work as well) -+ -+Put gseen.mod.1.1.0.tar.gz in ~/eggdrop1.6.2/src/mod/, -+and unpack it (tar xfz gseen.mod.1.1.0.tar.gz). Change directory -+back to ~/eggdrop1.6.2/. -+ -+Now just do what you've done when you compiled your bot: -+"./configure" -+"make config" (you can skip this command on eggdrop 1.4) -+"make" -+"make install" -+ -+Don't forget to copy the langfiles from eggdrop1.6.2/src/mod/gseen.mod/ to -+eggdrop/language. -+ -+All settings can be found in ~/eggdrop1.6.2/src/mod/gseen.mod/gseen.conf -+Copy it to your eggdrop directory, edit it to fit your needs and put -+"source gseen.conf" at the end of your eggdrop config file. The last thing -+to do is to .rehash your bot. -+ -+ -+Public commands: -+---------------- -+ -+!seen <nick> -+ I think this command doesn't need an explanation. ^_^ -+!seen <mask> -+ Searches the database for entries that match <mask> -+ for example "!seen *!user@dialin-*.isp.com" -+!seennick <nick> -+ !seen also checks if a user was online later with a -+ different nick. !seennick only seens for <nick> -+!seenstats -+ just a little report on how many nicks are tracked -+ -+All commands are also accessible via /msg. -+("/msg <bot> seen <nick>", for example) -+ -+ -+AI seen: -+-------- -+ -+This module has a simple built in AI routine. -+A short example: -+ -+<G`Quann> Argo: have you seen Fabian recently? -+<|Argo|> G`Quann, fabian (~fabian@dns.gifs.de) was last seen quitting -+from #eggdev 1 week 4 days 9 hours 40 minutes 56 seconds ago -+(20.02. 01:39) stating ".....zzzzZZZzzZZZzZZZZZZZZZZzzz..". -+ -+Well, it's not a very intelligent AI, it's rather brute-force. So don't -+forget to use the ai-seen-ignore setting. -+I know that's not coded very elegant, but if you configure it correctly, -+the failure-rate is way lower than with other AI scripts... -+ -+DCC commands: -+------------- -+ -+.seen -+.seennick -+.seenstats -+ just the same as the public versions -+.purgeseens -+ deletes expired data (this also happens automatically once a day) -+ (m) -+ -+Channel Settings: -+----------------- -+ -+ +noseendata -+ don't log any seen data in this channel -+ +quietseens -+ send answers directly via notice to the person who asked and -+ don't bother the rest of the channel with the reply -+ +quietaiseens -+ same as +quietseens, but for AI seens -+ +nopubseens -+ ignore every seen-command in this channel -+ -+TCL commands: -+------------- -+ -+There are no special tcl commands, only the usual bind procs. -+ -+The only one that should be mentioned is: -+ -+*pubm:seen <nick> <uhost> <hand> <chan> <text> -+ triggers the AI seen -+ returns: 1 if a reply was sent, 0 otherwise -+ -+So if you're using another AI script on your bot, you can modify it to -+use this proc and avoid doubled replies this way. -+ -+Other: -+------ -+ -+There is absolutely NO WARRANTY on this module. I do my best to make it -+work properly, but if anything gets screwed up, I'm not responsible. Use -+this module at your own risk. -+ -+Feedback: -+--------- -+ -+Feel free to send feedback and bugreports (I hope there won't be any<g>) to -+gseen.mod@visions-of-fantasy.de -+ -+The newest gseen version can always be found at: -+http://www.visions-of-fantasy.de/gseen.mod/ -+ -+Thanks to: -+---------- -+ -+- Fabian for teaching me plenty of things -+- everyone who tested the many buggy development versions :) -+- the eggdev team for developing eggdrop -+ -+Most of all, I would like to thank Bass for writing bseen.tcl because alot -+of the ideas for this module came from using that tcl script. It's still the -+most powerful seen script, so if you want something that's easier to use than -+a module, get a copy of bseen.tcl. -diff -Nur src/mod/gseen.mod/UPDATES src/mod/gseen.mod/UPDATES ---- ./src/mod/gseen.mod/UPDATES 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/UPDATES 2002-10-26 13:17:46.000000000 +0200 -@@ -0,0 +1,55 @@ -+Changes in gseen.mod: (since v1.0.0) -+-------------------- +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/addons/gseen.selectlang.1.0.0.tcl src/eggdrop-1.8.4/src/mod/gseen.mod/addons/gseen.selectlang.1.0.0.tcl +--- ./src/mod/gseen.mod/addons/gseen.selectlang.1.0.0.tcl 1970-01-01 01:00:00.000000000 +0100 ++++ ./src/mod/gseen.mod/addons/gseen.selectlang.1.0.0.tcl 2017-01-02 22:30:47.000000000 +0100 +@@ -0,0 +1,80 @@ ++##################################################################### ++# ++# gseen.selectlang v1.0.0 ++# ++# This is a simple script which selects a language based on the ++# user's host. ++# ++# It only works for /msg commands. ++# ++# If the user is in a channel which has a language defined, gseen's ++# internal functions will override this selection and use the language ++# of the channel instead. ++# ++##################################################################### + -+1.1.1 -+- fixed "no newline" compilation warnings that appeared on some systems. -+- fixed uninitialized "li" variable in do_seen() -+- fixed lacking compatibility to eggdrop1.4 (confirmation anyone?) -+- new option: hide-secret-chans + -+1.1.0 (15.6.2001) -+- added multilang support -+- removed static buffers -+- organized data in a binary search tree (much faster) -+- optimized a few other things -+- added settings: -+ - fuzzy-search -+ - max-matches -+ - wildcard-search ++# Here you can define which language to use for which host. ++# The first part is the mask for the host, and the second part ++# is the language which should be used for this host. + -+1.0.8 -+- quiet-seens wasn't working for !seennick -+- added quiet-ai-seens -+- renamed nopub to nopubseens and nolog to noseendata and -+ quietseen to quietseens ++set tld-langs { ++ {"*.de" "de"} ++ {"*.at" "de"} ++ {"*.ch" "de"} ++ {"*.t-dialin.net" "de"} ++ {"*.t-ipconnect.net" "de"} ++ {"*.pl" "pl"} ++ {"*.jp" "ja"} ++} + -+1.0.7 -+- added compatibility to !channels -+- fixed a bug relating strict-host 0 had some strange effects on -+ !seen requests for users with ~ in their ident ++################################################# + -+1.0.6 -+- fixed a very evil bug that allowed anyone to crash the bot, sorry + -+1.0.5 -+- quietseens wasn't working correctly -+- added support for egg1.5's udef chansets ++proc selectlang:getlang {uhost} { ++ global tld-langs ++ ++ foreach tld ${tld-langs} { ++ if {[string match [lindex $tld 0] $uhost]} { ++ return [lindex $tld 1] ++ } ++ } ++ return "" ++} + -+1.0.4 -+- added GPL stuff -+- changed error msg that appears if no gseen file exists ++proc sl:rebind {oldtarget newtarget} { ++ foreach binding [binds msg] { ++ if {[lindex $binding 4] == $oldtarget} { ++ unbind [lindex $binding 0] [lindex $binding 1] [lindex $binding 2] [lindex $binding 4] ++ bind [lindex $binding 0] [lindex $binding 1] [lindex $binding 2] $newtarget ++ } ++ } ++} + -+1.0.3 -+- readme updates -+- fixed a grammatical error in do_seen ++proc sl:msg:trigger {nick uhost hand rest target} { ++ global default-slang ++ ++ set lang [selectlang:getlang $uhost] ++ set old-slang ${default-slang} ++ if {$lang != ""} { ++ set default-slang $lang ++ putlog "using '$lang'..." ++ } ++ $target $nick $uhost $hand $rest ++ set default-slang ${old-slang} ++} + -+1.0.2 -+- bot wanted to free a NULL pointer sometimes ++sl:rebind *msg:seen sl:msg:seen ++proc sl:msg:seen {nick uhost hand rest} { ++ sl:msg:trigger $nick $uhost $hand $rest *msg:seen ++} + -+1.0.1 -+- !seen without parameter returned stupid results :) -+- fixed little typo in .purgeseens -+- "I found 1 matches..." -> "I found 1 match..." ++sl:rebind *msg:seenstats sl:msg:seenstats ++proc sl:msg:seenstats {nick uhost hand rest} { ++ sl:msg:trigger $nick $uhost $hand $rest *msg:seenstats ++} + -+1.0.0 -+- release :) -diff -Nur src/mod/gseen.mod/addons/gseen.selectlang.1.0.0.tcl src/mod/gseen.mod/addons/gseen.selectlang.1.0.0.tcl ---- ./src/mod/gseen.mod/addons/gseen.selectlang.1.0.0.tcl 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/addons/gseen.selectlang.1.0.0.tcl 2002-10-26 13:18:14.000000000 +0200 -@@ -0,0 +1,80 @@ -+#####################################################################
-+#
-+# gseen.selectlang v1.0.0
-+#
-+# This is a simple script which selects a language based on the
-+# user's host.
-+#
-+# It only works for /msg commands.
-+#
-+# If the user is in a channel which has a language defined, gseen's
-+# internal functions will override this selection and use the language
-+# of the channel instead.
-+#
-+#####################################################################
-+
-+
-+# Here you can define which language to use for which host.
-+# The first part is the mask for the host, and the second part
-+# is the language which should be used for this host.
-+
-+set tld-langs {
-+ {"*.de" "de"}
-+ {"*.at" "de"}
-+ {"*.ch" "de"}
-+ {"*.t-dialin.net" "de"}
-+ {"*.t-ipconnect.net" "de"}
-+ {"*.pl" "pl"}
-+ {"*.jp" "ja"}
-+}
-+
-+#################################################
-+
-+
-+proc selectlang:getlang {uhost} {
-+ global tld-langs
-+
-+ foreach tld ${tld-langs} {
-+ if {[string match [lindex $tld 0] $uhost]} {
-+ return [lindex $tld 1]
-+ }
-+ }
-+ return ""
-+}
-+
-+proc sl:rebind {oldtarget newtarget} {
-+ foreach binding [binds msg] {
-+ if {[lindex $binding 4] == $oldtarget} {
-+ unbind [lindex $binding 0] [lindex $binding 1] [lindex $binding 2] [lindex $binding 4]
-+ bind [lindex $binding 0] [lindex $binding 1] [lindex $binding 2] $newtarget
-+ }
-+ }
-+}
-+
-+proc sl:msg:trigger {nick uhost hand rest target} {
-+ global default-slang
-+
-+ set lang [selectlang:getlang $uhost]
-+ set old-slang ${default-slang}
-+ if {$lang != ""} {
-+ set default-slang $lang
-+ putlog "using '$lang'..."
-+ }
-+ $target $nick $uhost $hand $rest
-+ set default-slang ${old-slang}
-+}
-+
-+sl:rebind *msg:seen sl:msg:seen
-+proc sl:msg:seen {nick uhost hand rest} {
-+ sl:msg:trigger $nick $uhost $hand $rest *msg:seen
-+}
-+
-+sl:rebind *msg:seenstats sl:msg:seenstats
-+proc sl:msg:seenstats {nick uhost hand rest} {
-+ sl:msg:trigger $nick $uhost $hand $rest *msg:seenstats
-+}
-+
-+sl:rebind *msg:seennick sl:msg:seennick
-+proc sl:msg:seennick {nick uhost hand rest} {
-+ sl:msg:trigger $nick $uhost $hand $rest *msg:seennick
++sl:rebind *msg:seennick sl:msg:seennick ++proc sl:msg:seennick {nick uhost hand rest} { ++ sl:msg:trigger $nick $uhost $hand $rest *msg:seennick +} \ No newline at end of file -diff -Nur src/mod/gseen.mod/ai.c src/mod/gseen.mod/ai.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/ai.c src/eggdrop-1.8.4/src/mod/gseen.mod/ai.c --- ./src/mod/gseen.mod/ai.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/ai.c 2002-10-26 13:17:47.000000000 +0200 ++++ ./src/mod/gseen.mod/ai.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -473,9 +238,9 @@ diff -Nur src/mod/gseen.mod/ai.c src/mod/gseen.mod/ai.c + return 1; + return 0; +} -diff -Nur src/mod/gseen.mod/datahandling.c src/mod/gseen.mod/datahandling.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/datahandling.c src/eggdrop-1.8.4/src/mod/gseen.mod/datahandling.c --- ./src/mod/gseen.mod/datahandling.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/datahandling.c 2002-10-26 13:17:48.000000000 +0200 ++++ ./src/mod/gseen.mod/datahandling.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -628,9 +393,9 @@ diff -Nur src/mod/gseen.mod/datahandling.c src/mod/gseen.mod/datahandling.c + } + } +} -diff -Nur src/mod/gseen.mod/do_seen.c src/mod/gseen.mod/do_seen.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/do_seen.c src/eggdrop-1.8.4/src/mod/gseen.mod/do_seen.c --- ./src/mod/gseen.mod/do_seen.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/do_seen.c 2002-10-26 13:17:50.000000000 +0200 ++++ ./src/mod/gseen.mod/do_seen.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,840 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -1472,9 +1237,9 @@ diff -Nur src/mod/gseen.mod/do_seen.c src/mod/gseen.mod/do_seen.c + glob_total_searchtime += glob_aftersearch - glob_presearch; + glob_total_queries++; +} -diff -Nur src/mod/gseen.mod/generic_binary_tree.c src/mod/gseen.mod/generic_binary_tree.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/generic_binary_tree.c src/eggdrop-1.8.4/src/mod/gseen.mod/generic_binary_tree.c --- ./src/mod/gseen.mod/generic_binary_tree.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/generic_binary_tree.c 2002-10-26 13:17:51.000000000 +0200 ++++ ./src/mod/gseen.mod/generic_binary_tree.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,311 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -1787,9 +1552,9 @@ diff -Nur src/mod/gseen.mod/generic_binary_tree.c src/mod/gseen.mod/generic_bina +*/ +} +#endif -diff -Nur src/mod/gseen.mod/global_vars.c src/mod/gseen.mod/global_vars.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/global_vars.c src/eggdrop-1.8.4/src/mod/gseen.mod/global_vars.c --- ./src/mod/gseen.mod/global_vars.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/global_vars.c 2002-10-26 13:18:09.000000000 +0200 ++++ ./src/mod/gseen.mod/global_vars.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -1825,10 +1590,10 @@ diff -Nur src/mod/gseen.mod/global_vars.c src/mod/gseen.mod/global_vars.c + glob_seenrequest = NULL; + glob_seenrequests = glob_totalnicks = glob_totalbytes = 0; +} -diff -Nur src/mod/gseen.mod/gseen.c src/mod/gseen.mod/gseen.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/gseen.c src/eggdrop-1.8.4/src/mod/gseen.mod/gseen.c --- ./src/mod/gseen.mod/gseen.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/gseen.c 2002-10-26 14:24:48.000000000 +0200 -@@ -0,0 +1,328 @@ ++++ ./src/mod/gseen.mod/gseen.c 2017-01-02 22:30:47.000000000 +0100 +@@ -0,0 +1,330 @@ +/* + * Copyright (C) 2000,2001 Florian Sander + * @@ -1849,7 +1614,7 @@ diff -Nur src/mod/gseen.mod/gseen.c src/mod/gseen.mod/gseen.c + +#define MAKING_GSEEN +#define MODULE_NAME "gseen" -+#define MODULE_VERSION "1.1.1 dev3" ++#define MODULE_VERSION "1.1.2" +#define MODULE_NUMVERSION 10100 +#include "../module.h" +#include "../irc.mod/irc.h" @@ -1916,7 +1681,7 @@ diff -Nur src/mod/gseen.mod/gseen.c src/mod/gseen.mod/gseen.c +static int wildcard_search = 1;// allow wildcard seaching? ("*!*@*.isp.de") +static int max_matches = 500; // break if there are more than X matches +static int hide_secret_chans = 1; // #chan (+secret) => [secret] -+static int seen_nick_len = 32; ++static int seen_nick_len = 9; + +#include "global_vars.c" +#define SLANG_NOTYPES 1 @@ -2096,12 +1861,14 @@ diff -Nur src/mod/gseen.mod/gseen.c src/mod/gseen.mod/gseen.c + return "You need the server module to use the gseen module."; + if (!(channels_funcs = module_depend(MODULE_NAME, "channels", 1, 0))) + return "You need the channels module to use the gseen module."; -+ if (!module_depend(MODULE_NAME, "eggdrop", 107, 0)) { -+ if (!module_depend(MODULE_NAME, "eggdrop", 106, 0)) { -+ if (!module_depend(MODULE_NAME, "eggdrop", 105, 0)) { -+ if (!module_depend(MODULE_NAME, "eggdrop", 104, 0)) { -+ module_undepend(MODULE_NAME); -+ return "This module requires eggdrop1.4.0 or later"; ++ if (!module_depend(MODULE_NAME, "eggdrop", 108, 0)) { ++ if (!module_depend(MODULE_NAME, "eggdrop", 107, 0)) { ++ if (!module_depend(MODULE_NAME, "eggdrop", 106, 0)) { ++ if (!module_depend(MODULE_NAME, "eggdrop", 105, 0)) { ++ if (!module_depend(MODULE_NAME, "eggdrop", 104, 0)) { ++ module_undepend(MODULE_NAME); ++ return "This module requires eggdrop1.4.0 or later"; ++ } + } + } + } @@ -2157,10 +1924,434 @@ diff -Nur src/mod/gseen.mod/gseen.c src/mod/gseen.mod/gseen.c + putlog(LOG_MISC, "*", "gseen.mod v%s loaded.", MODULE_VERSION); + return NULL; +} -diff -Nur src/mod/gseen.mod/gseen.conf src/mod/gseen.mod/gseen.conf +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/gseencmds.c src/eggdrop-1.8.4/src/mod/gseen.mod/gseencmds.c +--- ./src/mod/gseen.mod/gseencmds.c 1970-01-01 01:00:00.000000000 +0100 ++++ ./src/mod/gseen.mod/gseencmds.c 2017-01-02 22:30:47.000000000 +0100 +@@ -0,0 +1,420 @@ ++/* ++ * Copyright (C) 2000,2001 Florian Sander ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * as published by the Free Software Foundation; either version 2 ++ * of the License, or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ */ ++ ++#define PREFIX_LENGTH 20 ++ ++static char reply_prefix[PREFIX_LENGTH + 1]; ++#define set_prefix(x) strncpy(reply_prefix, x, PREFIX_LENGTH); \ ++ reply_prefix[PREFIX_LENGTH] = 0; ++ ++static int seenflood() ++{ ++ if (!maxseen_thr || !maxseen_time) ++ return 0; ++ if ((now - seenflood_time) > maxseen_time) { ++ seenflood_time = now; ++ seenflood_thr = 0; ++ } ++ seenflood_thr++; ++ if (seenflood_thr > maxseen_thr) ++ return 1; ++ else ++ return 0; ++} ++ ++static int nopub(char *chan) ++{ ++ char buf[121], *b; ++ ++ Context; ++ strncpy(buf, no_pub, 120); ++ buf[120] = 0; ++ b = buf; ++ while (b[0]) ++ if (!strcasecmp(chan, newsplit(&b))) ++ return 1; ++#if EGG_IS_MIN_VER(10503) ++ if (ngetudef("nopubseens", chan)) ++ return 1; ++#endif ++ return 0; ++} ++ ++static int quietseen(char *chan) ++{ ++ char buf[121], *b; ++ ++ Context; ++ strncpy(buf, quiet_seen, 120); ++ buf[120] = 0; ++ b = buf; ++ while (b[0]) ++ if (!strcasecmp(chan, newsplit(&b))) ++ return 1; ++#if EGG_IS_MIN_VER(10503) ++ if (ngetudef("quietseens", chan)) ++ return 1; ++#endif ++ return 0; ++} ++ ++static int cmd_seen(struct userrec *u, int idx, char *par) ++{ ++ char *query; ++ ++ Context; ++ if (seenflood()) ++ return 0; ++ reset_global_vars(); ++ glob_slang = slang_find(coreslangs, default_slang); ++ glob_nick = dcc[idx].nick; ++ query = newsplit(&par); ++ glob_query = query; ++ set_prefix(SLDCCPREFIX); ++ putlog(LOG_CMDS, "*", "#%s# seen %s", dcc[idx].nick, par); ++ dprintf(idx, "%s%s\n", reply_prefix, do_seen(query, dcc[idx].nick, ++ dcc[idx].host, "[partyline]", botnet_seen)); ++ return 0; ++} ++ ++static int cmd_seenstats(struct userrec *u, int idx, char *par) ++{ ++ Context; ++ if (seenflood()) ++ return 0; ++ reset_global_vars(); ++ glob_slang = slang_find(coreslangs, default_slang); ++ glob_nick = dcc[idx].nick; ++ set_prefix(SLDCCPREFIX); ++ putlog(LOG_CMDS, "*", "#%s# seenstats", dcc[idx].nick); ++ dprintf(idx, "%s%s\n", reply_prefix, do_seenstats()); ++ return 0; ++} ++ ++static int cmd_purgeseens(struct userrec *u, int idx, char *par) ++{ ++ Context; ++ purge_seens(); ++ putlog(LOG_CMDS, "*", "#%s# purgeseens", dcc[idx].nick); ++ return 0; ++} ++ ++static int pub_seen(char *nick, char *host, char *hand, ++ char *channel, char *text) ++{ ++ char *dest; ++#if EGG_IS_MIN_VER(10500) ++ struct chanset_t *chan; ++#endif ++ ++ Context; ++ if (seenflood() || nopub(channel)) ++ return 0; ++ reset_global_vars(); ++ glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, channel)); ++ glob_nick = nick; ++ putlog(LOG_CMDS, "*", "<<%s>> !%s! seen %s", nick, hand, text); ++ if (quietseen(channel)) { ++ set_prefix(SLNOTPREFIX); ++ dprintf(DP_HELP, "NOTICE %s :%s%s\n", nick, reply_prefix, ++ do_seen(newsplit(&text), nick, host, channel, botnet_seen)); ++ return 0; ++ } ++#if EGG_IS_MIN_VER(10500) ++ chan = findchan_by_dname(channel); ++ if (chan) ++ dest = chan->name; ++ else ++ dest = channel; ++#else ++ dest = channel; ++#endif ++ set_prefix(SLPUBPREFIX); ++ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", dest, reply_prefix, ++ do_seen(newsplit(&text), nick, host, channel, botnet_seen)); ++ return 0; ++} ++ ++static int pub_seenstats(char *nick, char *host, char *hand, ++ char *channel, char *text) ++{ ++ char *dest; ++#if EGG_IS_MIN_VER(10500) ++ struct chanset_t *chan; ++#endif ++ ++ Context; ++ if (seenflood()) ++ return 0; ++ if (nopub(channel)) ++ return 0; ++ reset_global_vars(); ++ glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, channel)); ++ glob_nick = nick; ++ putlog(LOG_CMDS, "*", "<<%s>> !%s! seenstats", nick, hand); ++ if (quietseen(channel)) { ++ set_prefix(SLNOTPREFIX); ++ dprintf(DP_HELP, "NOTICE %s :%s%s\n", nick, reply_prefix, do_seenstats()); ++ return 0; ++ } ++#if EGG_IS_MIN_VER(10500) ++ chan = findchan_by_dname(channel); ++ if (chan) ++ dest = chan->name; ++ else ++ dest = channel; ++#else ++ dest = channel; ++#endif ++ set_prefix(SLPUBPREFIX); ++ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", dest, reply_prefix, do_seenstats()); ++ return 1; ++} ++ ++static int msg_seen(char *nick, char *uhost, struct userrec *u, char *text) ++{ ++ Context; ++ if (seenflood()) ++ return 0; ++ reset_global_vars(); ++ glob_slang = slang_getbynick(coreslangs, nick); ++ glob_nick = nick; ++ putlog(LOG_CMDS, "*", "(%s!%s) !%s! seen %s", nick, uhost, u ? u->handle : "*", text); ++ set_prefix(SLMSGPREFIX); ++ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", nick, reply_prefix, ++ do_seen(newsplit(&text), nick, uhost, "[/msg]", botnet_seen)); ++ return 1; ++} ++ ++static int pub_seennick(char *nick, char *host, char *hand, ++ char *channel, char *text) ++{ ++ seendat *l; ++ char *dest; ++#if EGG_IS_MIN_VER(10500) ++ struct chanset_t *chan; ++#endif ++ ++ Context; ++ if (seenflood()) ++ return 0; ++ if (nopub(channel)) ++ return 0; ++ putlog(LOG_CMDS, "*", "<<%s>> !%s! seennick %s", nick, hand, text); ++ reset_global_vars(); ++ glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, channel)); ++ glob_nick = nick; ++#if EGG_IS_MIN_VER(10500) ++ chan = findchan_by_dname(channel); ++ if (chan) ++ dest = chan->name; ++ else ++ dest = channel; ++#else ++ dest = channel; ++#endif ++ text = newsplit(&text); ++ l = findseen(text); ++ if (!l) { ++ glob_query = text; ++ if (quietseen(channel)) { ++ set_prefix(SLNOTPREFIX); ++ dprintf(DP_HELP, "NOTICE %s :%s%s\n", nick, reply_prefix, SLNOTSEEN); ++ } else { ++ set_prefix(SLPUBPREFIX); ++ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", dest, reply_prefix, SLNOTSEEN); ++ } ++ return 0; ++ } ++ if (quietseen(channel)) { ++ set_prefix(SLNOTPREFIX); ++ dprintf(DP_HELP, "NOTICE %s :%s%s\n", nick, reply_prefix, do_seennick(l)); ++ } else { ++ set_prefix(SLPUBPREFIX); ++ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", dest, reply_prefix, do_seennick(l)); ++ } ++ return 0; ++} ++ ++static int msg_seennick(char *nick, char *uhost, struct userrec *u, char *text) ++{ ++ seendat *l; ++ ++ Context; ++ if (seenflood()) ++ return 0; ++ putlog(LOG_CMDS, "*", "(%s!%s) !%s! seennick %s", nick, uhost, u ? u->handle : "*", text); ++ reset_global_vars(); ++ glob_slang = slang_getbynick(coreslangs, nick); ++ glob_nick = nick; ++ set_prefix(SLMSGPREFIX); ++ text = newsplit(&text); ++ l = findseen(text); ++ if (!l) { ++ glob_query = text; ++ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", nick, reply_prefix, SLNOTSEEN); ++ return 0; ++ } ++ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", nick, reply_prefix, do_seennick(l)); ++ return 0; ++} ++ ++static int cmd_seennick(struct userrec *u, int idx, char *text) ++{ ++ seendat *l; ++ ++ Context; ++ if (seenflood()) ++ return 0; ++ putlog(LOG_CMDS, "*", "#%s# seennick %s", dcc[idx].nick, text); ++ reset_global_vars(); ++ glob_slang = slang_find(coreslangs, default_slang); ++ glob_nick = dcc[idx].nick; ++ set_prefix(SLMSGPREFIX); ++ text = newsplit(&text); ++ l = findseen(text); ++ if (!l) { ++ glob_query = text; ++ dprintf(idx, "%s%s\n", reply_prefix, SLNOTSEEN); ++ return 0; ++ } ++ dprintf(idx, "%s%s\n", reply_prefix, do_seennick(l)); ++ return 0; ++} ++ ++static int bot_gseen_req(char *bot, char *code, char *par) ++{ ++ char *mask, *nick, *uhost, *chan, *reply; ++ char tosend[256]; ++ int i; ++ ++ Context; ++ if (seenflood()) ++ return 0; ++ i = nextbot(bot); ++ if (i < 0) { ++ debug1("Couldn't answer botnet-seen-request from %s: no such bot", bot); ++ return 0; ++ } ++ mask = newsplit(&par); ++ nick = newsplit(&par); ++ uhost = newsplit(&par); ++ chan = newsplit(&par); ++ reset_global_vars(); ++ glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, chan)); ++ glob_nick = nick; ++ reply = do_seen(mask, nick, uhost, chan, -1); ++ if (!reply) ++ return 0; ++ if ((strlen(nick) + strlen(chan) + strlen(reply)) < 255) { ++ sprintf(tosend, "gseen_rep %s %s %s", nick, chan, reply); ++ botnet_send_zapf(i, botnetnick, bot, tosend); ++ } ++ return 0; ++} ++ ++static int bot_gseen_rep(char *bot, char *code, char *par) ++{ ++ char *nick, *chan, *reply; ++ int i; ++ ++ Context; ++ if (seenflood()) ++ return 0; ++ if (!bnsnick || !bnschan) { ++ if (bnsnick) ++ nfree(bnsnick); ++ if (bnschan) ++ nfree(bnschan); ++ bnsnick = bnschan = NULL; ++ return 0; ++ } ++ nick = newsplit(&par); ++ chan = newsplit(&par); ++ reset_global_vars(); ++ glob_remotebot = bot; ++ glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, chan)); ++ glob_nick = nick; ++ reply = par; ++ if (strcmp(nick, bnsnick) || strcmp(chan, bnschan)) ++ return 0; /* unwanted reply */ ++ if (findchan(chan)) { ++ if (nopub(chan)) { ++ nfree(bnsnick); ++ nfree(bnschan); ++ bnsnick = bnschan = NULL; ++ debug1("%s is nopub, bns-reply dropped", chan); ++ return 0; ++ } ++ if (quietseen(chan)) { ++ set_prefix(SLNOTPREFIX); ++ dprintf(DP_HELP, "NOTICE %s :%s%s%s\n", nick, reply_prefix, SLRBOTSAYS, reply); ++ } else { ++ set_prefix(SLPUBPREFIX); ++ dprintf(DP_HELP, "PRIVMSG %s :%s%s%s\n", chan, reply_prefix, SLRBOTSAYS, reply); ++ } ++ } else if (!strcmp(chan, "[/msg]")) { ++ set_prefix(SLMSGPREFIX); ++ dprintf(DP_HELP, "PRIVMSG %s :%s%s%s\n", nick, reply_prefix, SLRBOTSAYS, reply); ++ } else if (!strcmp(chan, "[partyline]")) { ++ for (i = 0; i < dcc_total; i++) { ++ if ((!strcasecmp(nick, dcc[i].nick)) && ++ (dcc[i].type->flags & DCT_SIMUL)) { ++ set_prefix(SLDCCPREFIX); ++ dprintf(i, "%s%s%s\n", reply_prefix, SLRBOTSAYS, reply); ++ break; ++ } ++ } ++ } else ++ debug1("Couldn't send received bns answer, no such chan %s", chan); ++ nfree(bnsnick); ++ nfree(bnschan); ++ bnsnick = bnschan = NULL; ++ return 0; ++} ++ ++static cmd_t mydcc[] = ++{ ++ {"seen", "-|-", cmd_seen, NULL}, ++ {"seenstats", "-|-", cmd_seenstats, NULL}, ++ {"purgeseens", "m", cmd_purgeseens, NULL}, ++ {"seennick", "-|-", cmd_seennick, NULL}, ++ {0, 0, 0, 0} ++}; ++ ++static cmd_t seen_pub[] = ++{ ++ {"!seen", "", pub_seen, 0}, ++ {"!seenstats", "", pub_seenstats, 0}, ++ {"!seennick", "", pub_seennick, 0}, ++ {0, 0, 0, 0} ++}; ++ ++static cmd_t seen_msg[] = ++{ ++ {"seen", "", msg_seen, 0}, ++ {"seennick", "", msg_seennick, 0}, ++ {0, 0, 0, 0} ++}; ++ ++static cmd_t seen_bot[] = ++{ ++ {"gseen_req", "", bot_gseen_req, 0}, ++ {"gseen_rep", "", bot_gseen_rep, 0}, ++ {0, 0, 0, 0} ++}; +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/gseen.conf src/eggdrop-1.8.4/src/mod/gseen.mod/gseen.conf --- ./src/mod/gseen.mod/gseen.conf 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/gseen.conf 2002-10-26 13:17:54.000000000 +0200 -@@ -0,0 +1,147 @@ ++++ ./src/mod/gseen.mod/gseen.conf 2017-01-02 22:30:47.000000000 +0100 +@@ -0,0 +1,151 @@ + +###### +##### @@ -2252,6 +2443,10 @@ diff -Nur src/mod/gseen.mod/gseen.conf src/mod/gseen.mod/gseen.conf +##### +###### + ++# Maximum length of requested nick that will still be processed. ++# (by default this is eggdrop's configured nick-length) ++set seen-nick-len ${nick-len} ++ +# if the user is known by the bot, log their handle instead of the nick +# (not recommended, might cause confusion by the users) +set use-handles 0 @@ -2308,28 +2503,28 @@ diff -Nur src/mod/gseen.mod/gseen.conf src/mod/gseen.mod/gseen.conf + bind pubm -|- "% [subst $mask]" *pub:!seenstats + } +} -diff -Nur src/mod/gseen.mod/language/gseen.de.lang src/mod/gseen.mod/language/gseen.de.lang +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/gseen.de.lang src/eggdrop-1.8.4/src/mod/gseen.mod/gseen.de.lang --- ./src/mod/gseen.mod/language/gseen.de.lang 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/language/gseen.de.lang 2002-10-26 13:18:12.000000000 +0200 ++++ ./src/mod/gseen.mod/language/gseen.de.lang 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,131 @@ +##################################################################### +# -+# Deutsche Sprachdatei für GSeen.Mod v1.1.0 ++# Deutsche Sprachdatei f�r GSeen.Mod v1.1.0 +# -+# Der Text in dieser Datei kann nach belieben verändert werden. Du -+# kannst Tags hinzufügen oder entfernen, wie es Dir gefällt. Die Tags -+# müssen nicht in einer bestimmten Reihenfolge oder Anzahl vorkommen. ++# Der Text in dieser Datei kann nach belieben ver�ndert werden. Du ++# kannst Tags hinzuf�gen oder entfernen, wie es Dir gef�llt. Die Tags ++# m�ssen nicht in einer bestimmten Reihenfolge oder Anzahl vorkommen. +# +# Wenn Du mehr als eine Zeile pro ID angibst, dann wird bei der -+# Antwort per Zufall eine daraus ausgewählt. (das funktioniert nicht ++# Antwort per Zufall eine daraus ausgew�hlt. (das funktioniert nicht +# bei den Zeiteinheiten) +# -+# Falls Du denkst, daß hier noch ein paar wichtige Tags fehlen, dann -+# schick mir einfach eine email. Vielleicht füge ich sie dann in der -+# nächsten Version hinzu. ++# Falls Du denkst, da� hier noch ein paar wichtige Tags fehlen, dann ++# schick mir einfach eine email. Vielleicht f�ge ich sie dann in der ++# n�chsten Version hinzu. +# -+# Eine komplette Liste der Verfügbaren Tags befindet sich am Ende von -+# slang_gseen_commands.c (leider ohne Erklährungen) ++# Eine komplette Liste der Verf�gbaren Tags befindet sich am Ende von ++# slang_gseen_commands.c (leider ohne Erkl�hrungen) +# +##################################################################### + @@ -2350,44 +2545,44 @@ diff -Nur src/mod/gseen.mod/language/gseen.de.lang src/mod/gseen.mod/language/gs +D 9 Minuten +D 10 Sekunde +D 11 Sekunden -+# falls ein üngültiger Zeitwert angegeben war, dann wird dieser Text ausgegeben: ++# falls ein �ng�ltiger Zeitwert angegeben war, dann wird dieser Text ausgegeben: +D 12 einiger Zeit + + +# -+## Präfixe ++## Pr�fixe +# +# Dieses Fragment wird jeweils vor eine Antwort gesetzt. Dadurch -+# ist beispielsweise bei öffentlichen Anfragen ersichtlich, für ++# ist beispielsweise bei �ffentlichen Anfragen ersichtlich, f�r +# wen die Antwort ist. +# Achtung: Die Nummer muss auf jeden Fall definiert werden. Sie muss +# zwar keinen Text beinhalten, aber wenn sie nicht vorhanden +# ist, dann gibt es eine Fehlermeldung + -+# für Antworten, die in den Channel geschrieben werden: ++# f�r Antworten, die in den Channel geschrieben werden: +10 <?nick/?>, -+# für Antworten, die per NOTICE an den User geschickt werden: ++# f�r Antworten, die per NOTICE an den User geschickt werden: +11 -+# für Antworten auf Anfragen, die per "/msg <bot> seen" erfolgt sind: ++# f�r Antworten auf Anfragen, die per "/msg <bot> seen" erfolgt sind: +12 -+# und für Antworten auf der Partyline: ++# und f�r Antworten auf der Partyline: +13 + +# +## Fehlermeldungen +# -+54 weißt Du was ein Parameter ist? ^_^ -+54 ich würde Dir ja gerne helfen, aber solange Du nicht sagst, nach wem Du suchst, kann ich nicht viel tun. -+54 meinst Du nicht, es wäre geschickter zu sagen, nach wem Du überhaupt suchst? ++54 wei�t Du was ein Parameter ist? ^_^ ++54 ich w�rde Dir ja gerne helfen, aber solange Du nicht sagst, nach wem Du suchst, kann ich nicht viel tun. ++54 meinst Du nicht, es w�re geschickter zu sagen, nach wem Du �berhaupt suchst? +54 42. +55 sehe ich etwa wie ein Spiegel aus? ^_^ +55 Spieglein, Spieglein an der Wand... -+55 leidest Du etwa unter multiplen Persönlichkeiten? *eg* ++55 leidest Du etwa unter multiplen Pers�nlichkeiten? *eg* +56 also wenn Du <?query/?> jetzt hier nicht sehen kannst, dann brauchst Du sicherlich eine neue Brille ^_^ +56 ich muss mir unbedingt mal die Tarnkappe von <?query/?> ausleihen. Scheint ja prima zu funktioneren. +56 schau Dir bitte nochmal ganz genau an, wer grade alles im Channel ist. +57 Tut mir leid, aber Wildcards ('?', oder '*') sind bei der Suche nicht erlaubt. -+58 Öhm... naja... etwas arg lang, dieser Nick... :) ++58 �hm... naja... etwas arg lang, dieser Nick... :) + +# +## Kein Ergebnis @@ -2401,9 +2596,9 @@ diff -Nur src/mod/gseen.mod/language/gseen.de.lang src/mod/gseen.mod/language/gs + +73 <?query/?> ist grade unter dem Nick "<?othernick/?>" in diesem Channel zu finden. +74 <?query/?> ist gerade in <?otherchan/?>. -+75 Deine Anfrage führte zu genau einem Ergebnis: ++75 Deine Anfrage f�hrte zu genau einem Ergebnis: +76 Immerhin <?numresults/?> Treffer ergab deine Anfrage: -+77 Wow, auf deine Anfrage passen sogar <?numresults/?> Einträge in meiner Datenbank! Dies sind die 5 aktuellsten: ++77 Wow, auf deine Anfrage passen sogar <?numresults/?> Eintr�ge in meiner Datenbank! Dies sind die 5 aktuellsten: + +# +## falls ein anderer Bot etwas gefunden hat: @@ -2414,17 +2609,17 @@ diff -Nur src/mod/gseen.mod/language/gseen.de.lang src/mod/gseen.mod/language/gs +## die eigentliche Information +# +101 Ich habe <?snick/?> (<?shost/?>) zuletzt <?schan/?> vor <?swhen/?> betreten sehen (<?stime/?>). <?snick/?> ist noch immer da. -+121 Ich habe <?snick/?> (<?shost/?>) zuletzt <?schan/?> vor <?swhen/?> betreten sehen (<?stime/?>), aber <?snick/?> verschwand mysteriöserweise. ++121 Ich habe <?snick/?> (<?shost/?>) zuletzt <?schan/?> vor <?swhen/?> betreten sehen (<?stime/?>), aber <?snick/?> verschwand mysteri�serweise. +102 Ich habe <?snick/?> (<?shost/?>) zuletzt <?schan/?> vor <?swhen/?> nach <?spent/?> verchatteter Zeit verlassen sehen (<?stime/?>) -+103 Ich habe <?snick/?> (<?shost/?>) zuletzt in <?schan/?> gesehen, als er/sie vor <?swhen/?> (<?stime/?>) nach <?spent/?> das IRC verließ ("<?smsg/?>"). ++103 Ich habe <?snick/?> (<?shost/?>) zuletzt in <?schan/?> gesehen, als er/sie vor <?swhen/?> (<?stime/?>) nach <?spent/?> das IRC verlie� ("<?smsg/?>"). +104 Zuletzt habe ich <?snick/?> (<?shost/?>) vor <?swhen/?> in <?schan/?> gesehen, den Nick zu <?snick2/?> wechselnd. <?snick2/?> ist noch immer dort. +124 <?snick/?> (<?shost/?>) was last seen changing his/her nick to <?snick2/?> on <?schan/?> <?swhen/?> ago (<?stime/?>), but <?snick2/?> mysteriously dematerialized. +105 Zuletzt habe ich <?snick/?> (<?shost/?>) vor <?swhen/?> in <?schan/?> gesehen, den Nick von <?snick2/?> wechselnd. <?snick/?> ist noch immer dort. +125 <?snick/?> (<?shost/?>) was last seen changing his/her nick from <?snick2/?> on <?schan/?> <?swhen/?> ago (<?stime/?>), but <?snick/?> mysteriously dematerialized. +106 Zuletzt habe ich <?snick/?> (<?shost/?>) gesehen, als er vor <?swhen/?> (<?stime/?>) von <?punisher/?> aus <?schan/?> gejagt wurde. (<?kickreason/?>) +107 <?snick/?> (<?shost/?>) habe ich zuletzt vor <?swhen/?> gesehen, als er/sie von <?schan/?> aus in einem Netsplit verschwand. -+108 <?snick/?> (<?shost/?>) habe ich zuletzt vor <?swhen/?> gesehen, als er/sie nach einem Netsplit in <?schan/?> zurück kam. <?snick/?> ist noch immer dort. -+128 <?snick/?> (<?shost/?>) habe ich zuletzt vor <?swhen/?> gesehen, als er/sie nach einem Netsplit in <?schan/?> zurück kam. Allerdings konnte <?snick/?> dem Gott der Netsplits nicht endgültig entkommen und ist wieder verschollen... ++108 <?snick/?> (<?shost/?>) habe ich zuletzt vor <?swhen/?> gesehen, als er/sie nach einem Netsplit in <?schan/?> zur�ck kam. <?snick/?> ist noch immer dort. ++128 <?snick/?> (<?shost/?>) habe ich zuletzt vor <?swhen/?> gesehen, als er/sie nach einem Netsplit in <?schan/?> zur�ck kam. Allerdings konnte <?snick/?> dem Gott der Netsplits nicht endg�ltig entkommen und ist wieder verschollen... +109 <?snick/?> was last seen joining the botnet channel <?schan/?> on <?bnbot/?> <?swhen/?> ago (<?stime/?>). +129 <?snick/?> was last seen joining the partyline on <?bnbot/?> <?swhen/?> ago (<?stime/?>). +110 <?snick/?> was last seen leaving the botnet channel <?schan/?> from <?bnbot/?> <?swhen/?> ago (<?stime/?>). @@ -2443,9 +2638,9 @@ diff -Nur src/mod/gseen.mod/language/gseen.de.lang src/mod/gseen.mod/language/gs +# +180 Momentan sind <?totalnicks/?> Nicks in meiner Datenbank. Gesamter Speicherverbrauch: <?totalbytes/?> Bytes +180 In meiner Datenbank befinden sich <?totalnicks/?> Nicks und verbrauchen <?totalbytes/?> Bytes Speicher. -diff -Nur src/mod/gseen.mod/language/gseen.en.lang src/mod/gseen.mod/language/gseen.en.lang +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/gseen.en.lang src/eggdrop-1.8.4/src/mod/gseen.mod/gseen.en.lang --- ./src/mod/gseen.mod/language/gseen.en.lang 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/language/gseen.en.lang 2002-10-26 13:18:13.000000000 +0200 ++++ ./src/mod/gseen.mod/language/gseen.en.lang 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,131 @@ +##################################################################### +# @@ -2578,9 +2773,9 @@ diff -Nur src/mod/gseen.mod/language/gseen.en.lang src/mod/gseen.mod/language/gs +## seen stats +# +180 I'm currently tracking <?totalnicks/?> nicks using <?totalbytes/?> bytes. -diff -Nur src/mod/gseen.mod/gseen.h src/mod/gseen.mod/gseen.h +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/gseen.h src/eggdrop-1.8.4/src/mod/gseen.mod/gseen.h --- ./src/mod/gseen.mod/gseen.h 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/gseen.h 2002-10-26 13:17:55.000000000 +0200 ++++ ./src/mod/gseen.mod/gseen.h 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -2739,433 +2934,41 @@ diff -Nur src/mod/gseen.mod/gseen.h src/mod/gseen.mod/gseen.h +#endif + +#endif -diff -Nur src/mod/gseen.mod/gseencmds.c src/mod/gseen.mod/gseencmds.c ---- ./src/mod/gseen.mod/gseencmds.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/gseencmds.c 2002-10-26 13:17:56.000000000 +0200 -@@ -0,0 +1,420 @@ -+/* -+ * Copyright (C) 2000,2001 Florian Sander -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version 2 -+ * of the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ */ -+ -+#define PREFIX_LENGTH 20 -+ -+static char reply_prefix[PREFIX_LENGTH + 1]; -+#define set_prefix(x) strncpy(reply_prefix, x, PREFIX_LENGTH); \ -+ reply_prefix[PREFIX_LENGTH] = 0; -+ -+static int seenflood() -+{ -+ if (!maxseen_thr || !maxseen_time) -+ return 0; -+ if ((now - seenflood_time) > maxseen_time) { -+ seenflood_time = now; -+ seenflood_thr = 0; -+ } -+ seenflood_thr++; -+ if (seenflood_thr > maxseen_thr) -+ return 1; -+ else -+ return 0; -+} -+ -+static int nopub(char *chan) -+{ -+ char buf[121], *b; -+ -+ Context; -+ strncpy(buf, no_pub, 120); -+ buf[120] = 0; -+ b = buf; -+ while (b[0]) -+ if (!strcasecmp(chan, newsplit(&b))) -+ return 1; -+#if EGG_IS_MIN_VER(10503) -+ if (ngetudef("nopubseens", chan)) -+ return 1; -+#endif -+ return 0; -+} -+ -+static int quietseen(char *chan) -+{ -+ char buf[121], *b; -+ -+ Context; -+ strncpy(buf, quiet_seen, 120); -+ buf[120] = 0; -+ b = buf; -+ while (b[0]) -+ if (!strcasecmp(chan, newsplit(&b))) -+ return 1; -+#if EGG_IS_MIN_VER(10503) -+ if (ngetudef("quietseens", chan)) -+ return 1; -+#endif -+ return 0; -+} -+ -+static int cmd_seen(struct userrec *u, int idx, char *par) -+{ -+ char *query; -+ -+ Context; -+ if (seenflood()) -+ return 0; -+ reset_global_vars(); -+ glob_slang = slang_find(coreslangs, default_slang); -+ glob_nick = dcc[idx].nick; -+ query = newsplit(&par); -+ glob_query = query; -+ set_prefix(SLDCCPREFIX); -+ putlog(LOG_CMDS, "*", "#%s# seen %s", dcc[idx].nick, par); -+ dprintf(idx, "%s%s\n", reply_prefix, do_seen(query, dcc[idx].nick, -+ dcc[idx].host, "[partyline]", botnet_seen)); -+ return 0; -+} -+ -+static int cmd_seenstats(struct userrec *u, int idx, char *par) -+{ -+ Context; -+ if (seenflood()) -+ return 0; -+ reset_global_vars(); -+ glob_slang = slang_find(coreslangs, default_slang); -+ glob_nick = dcc[idx].nick; -+ set_prefix(SLDCCPREFIX); -+ putlog(LOG_CMDS, "*", "#%s# seenstats", dcc[idx].nick); -+ dprintf(idx, "%s%s\n", reply_prefix, do_seenstats()); -+ return 0; -+} -+ -+static int cmd_purgeseens(struct userrec *u, int idx, char *par) -+{ -+ Context; -+ purge_seens(); -+ putlog(LOG_CMDS, "*", "#%s# purgeseens", dcc[idx].nick); -+ return 0; -+} -+ -+static int pub_seen(char *nick, char *host, char *hand, -+ char *channel, char *text) -+{ -+ char *dest; -+#if EGG_IS_MIN_VER(10500) -+ struct chanset_t *chan; -+#endif -+ -+ Context; -+ if (seenflood() || nopub(channel)) -+ return 0; -+ reset_global_vars(); -+ glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, channel)); -+ glob_nick = nick; -+ putlog(LOG_CMDS, "*", "<<%s>> !%s! seen %s", nick, hand, text); -+ if (quietseen(channel)) { -+ set_prefix(SLNOTPREFIX); -+ dprintf(DP_HELP, "NOTICE %s :%s%s\n", nick, reply_prefix, -+ do_seen(newsplit(&text), nick, host, channel, botnet_seen)); -+ return 0; -+ } -+#if EGG_IS_MIN_VER(10500) -+ chan = findchan_by_dname(channel); -+ if (chan) -+ dest = chan->name; -+ else -+ dest = channel; -+#else -+ dest = channel; -+#endif -+ set_prefix(SLPUBPREFIX); -+ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", dest, reply_prefix, -+ do_seen(newsplit(&text), nick, host, channel, botnet_seen)); -+ return 0; -+} -+ -+static int pub_seenstats(char *nick, char *host, char *hand, -+ char *channel, char *text) -+{ -+ char *dest; -+#if EGG_IS_MIN_VER(10500) -+ struct chanset_t *chan; -+#endif -+ -+ Context; -+ if (seenflood()) -+ return 0; -+ if (nopub(channel)) -+ return 0; -+ reset_global_vars(); -+ glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, channel)); -+ glob_nick = nick; -+ putlog(LOG_CMDS, "*", "<<%s>> !%s! seenstats", nick, hand); -+ if (quietseen(channel)) { -+ set_prefix(SLNOTPREFIX); -+ dprintf(DP_HELP, "NOTICE %s :%s%s\n", nick, reply_prefix, do_seenstats()); -+ return 0; -+ } -+#if EGG_IS_MIN_VER(10500) -+ chan = findchan_by_dname(channel); -+ if (chan) -+ dest = chan->name; -+ else -+ dest = channel; -+#else -+ dest = channel; -+#endif -+ set_prefix(SLPUBPREFIX); -+ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", dest, reply_prefix, do_seenstats()); -+ return 1; -+} -+ -+static int msg_seen(char *nick, char *uhost, struct userrec *u, char *text) -+{ -+ Context; -+ if (seenflood()) -+ return 0; -+ reset_global_vars(); -+ glob_slang = slang_getbynick(coreslangs, nick); -+ glob_nick = nick; -+ putlog(LOG_CMDS, "*", "(%s!%s) !%s! seen %s", nick, uhost, u ? u->handle : "*", text); -+ set_prefix(SLMSGPREFIX); -+ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", nick, reply_prefix, -+ do_seen(newsplit(&text), nick, uhost, "[/msg]", botnet_seen)); -+ return 1; -+} -+ -+static int pub_seennick(char *nick, char *host, char *hand, -+ char *channel, char *text) -+{ -+ seendat *l; -+ char *dest; -+#if EGG_IS_MIN_VER(10500) -+ struct chanset_t *chan; -+#endif -+ -+ Context; -+ if (seenflood()) -+ return 0; -+ if (nopub(channel)) -+ return 0; -+ putlog(LOG_CMDS, "*", "<<%s>> !%s! seennick %s", nick, hand, text); -+ reset_global_vars(); -+ glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, channel)); -+ glob_nick = nick; -+#if EGG_IS_MIN_VER(10500) -+ chan = findchan_by_dname(channel); -+ if (chan) -+ dest = chan->name; -+ else -+ dest = channel; -+#else -+ dest = channel; -+#endif -+ text = newsplit(&text); -+ l = findseen(text); -+ if (!l) { -+ glob_query = text; -+ if (quietseen(channel)) { -+ set_prefix(SLNOTPREFIX); -+ dprintf(DP_HELP, "NOTICE %s :%s%s\n", nick, reply_prefix, SLNOTSEEN); -+ } else { -+ set_prefix(SLPUBPREFIX); -+ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", dest, reply_prefix, SLNOTSEEN); -+ } -+ return 0; -+ } -+ if (quietseen(channel)) { -+ set_prefix(SLNOTPREFIX); -+ dprintf(DP_HELP, "NOTICE %s :%s%s\n", nick, reply_prefix, do_seennick(l)); -+ } else { -+ set_prefix(SLPUBPREFIX); -+ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", dest, reply_prefix, do_seennick(l)); -+ } -+ return 0; -+} -+ -+static int msg_seennick(char *nick, char *uhost, struct userrec *u, char *text) -+{ -+ seendat *l; -+ -+ Context; -+ if (seenflood()) -+ return 0; -+ putlog(LOG_CMDS, "*", "(%s!%s) !%s! seennick %s", nick, uhost, u ? u->handle : "*", text); -+ reset_global_vars(); -+ glob_slang = slang_getbynick(coreslangs, nick); -+ glob_nick = nick; -+ set_prefix(SLMSGPREFIX); -+ text = newsplit(&text); -+ l = findseen(text); -+ if (!l) { -+ glob_query = text; -+ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", nick, reply_prefix, SLNOTSEEN); -+ return 0; -+ } -+ dprintf(DP_HELP, "PRIVMSG %s :%s%s\n", nick, reply_prefix, do_seennick(l)); -+ return 0; -+} -+ -+static int cmd_seennick(struct userrec *u, int idx, char *text) -+{ -+ seendat *l; -+ -+ Context; -+ if (seenflood()) -+ return 0; -+ putlog(LOG_CMDS, "*", "#%s# seennick %s", dcc[idx].nick, text); -+ reset_global_vars(); -+ glob_slang = slang_find(coreslangs, default_slang); -+ glob_nick = dcc[idx].nick; -+ set_prefix(SLMSGPREFIX); -+ text = newsplit(&text); -+ l = findseen(text); -+ if (!l) { -+ glob_query = text; -+ dprintf(idx, "%s%s\n", reply_prefix, SLNOTSEEN); -+ return 0; -+ } -+ dprintf(idx, "%s%s\n", reply_prefix, do_seennick(l)); -+ return 0; -+} -+ -+static int bot_gseen_req(char *bot, char *code, char *par) -+{ -+ char *mask, *nick, *uhost, *chan, *reply; -+ char tosend[256]; -+ int i; +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/Makefile src/eggdrop-1.8.4/src/mod/gseen.mod/Makefile +--- ./src/mod/gseen.mod/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ ./src/mod/gseen.mod/Makefile 2017-01-02 22:30:47.000000000 +0100 +@@ -0,0 +1,28 @@ ++# Makefile for src/mod/gseen.mod/ + -+ Context; -+ if (seenflood()) -+ return 0; -+ i = nextbot(bot); -+ if (i < 0) { -+ debug1("Couldn't answer botnet-seen-request from %s: no such bot", bot); -+ return 0; -+ } -+ mask = newsplit(&par); -+ nick = newsplit(&par); -+ uhost = newsplit(&par); -+ chan = newsplit(&par); -+ reset_global_vars(); -+ glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, chan)); -+ glob_nick = nick; -+ reply = do_seen(mask, nick, uhost, chan, -1); -+ if (!reply) -+ return 0; -+ if ((strlen(nick) + strlen(chan) + strlen(reply)) < 255) { -+ sprintf(tosend, "gseen_rep %s %s %s", nick, chan, reply); -+ botnet_send_zapf(i, botnetnick, bot, tosend); -+ } -+ return 0; -+} ++doofus: ++ @echo "" ++ @echo "Let's try this from the right directory..." ++ @echo "" ++ @cd ../../../; make + -+static int bot_gseen_rep(char *bot, char *code, char *par) -+{ -+ char *nick, *chan, *reply; -+ int i; ++clean: ++ @rm -f *.o *.$(MOD_EXT) *~ + -+ Context; -+ if (seenflood()) -+ return 0; -+ if (!bnsnick || !bnschan) { -+ if (bnsnick) -+ nfree(bnsnick); -+ if (bnschan) -+ nfree(bnschan); -+ bnsnick = bnschan = NULL; -+ return 0; -+ } -+ nick = newsplit(&par); -+ chan = newsplit(&par); -+ reset_global_vars(); -+ glob_remotebot = bot; -+ glob_slang = slang_find(coreslangs, slang_chanlang_get(chanlangs, chan)); -+ glob_nick = nick; -+ reply = par; -+ if (strcmp(nick, bnsnick) || strcmp(chan, bnschan)) -+ return 0; /* unwanted reply */ -+ if (findchan(chan)) { -+ if (nopub(chan)) { -+ nfree(bnsnick); -+ nfree(bnschan); -+ bnsnick = bnschan = NULL; -+ debug1("%s is nopub, bns-reply dropped", chan); -+ return 0; -+ } -+ if (quietseen(chan)) { -+ set_prefix(SLNOTPREFIX); -+ dprintf(DP_HELP, "NOTICE %s :%s%s%s\n", nick, reply_prefix, SLRBOTSAYS, reply); -+ } else { -+ set_prefix(SLPUBPREFIX); -+ dprintf(DP_HELP, "PRIVMSG %s :%s%s%s\n", chan, reply_prefix, SLRBOTSAYS, reply); -+ } -+ } else if (!strcmp(chan, "[/msg]")) { -+ set_prefix(SLMSGPREFIX); -+ dprintf(DP_HELP, "PRIVMSG %s :%s%s%s\n", nick, reply_prefix, SLRBOTSAYS, reply); -+ } else if (!strcmp(chan, "[partyline]")) { -+ for (i = 0; i < dcc_total; i++) { -+ if ((!strcasecmp(nick, dcc[i].nick)) && -+ (dcc[i].type->flags & DCT_SIMUL)) { -+ set_prefix(SLDCCPREFIX); -+ dprintf(i, "%s%s%s\n", reply_prefix, SLRBOTSAYS, reply); -+ break; -+ } -+ } -+ } else -+ debug1("Couldn't send received bns answer, no such chan %s", chan); -+ nfree(bnsnick); -+ nfree(bnschan); -+ bnsnick = bnschan = NULL; -+ return 0; -+} ++static: ../gseen.o + -+static cmd_t mydcc[] = -+{ -+ {"seen", "-|-", cmd_seen, NULL}, -+ {"seenstats", "-|-", cmd_seenstats, NULL}, -+ {"purgeseens", "m", cmd_purgeseens, NULL}, -+ {"seennick", "-|-", cmd_seennick, NULL}, -+ {0, 0, 0, 0} -+}; ++modules: ../../../gseen.$(MOD_EXT) + -+static cmd_t seen_pub[] = -+{ -+ {"!seen", "", pub_seen, 0}, -+ {"!seenstats", "", pub_seenstats, 0}, -+ {"!seennick", "", pub_seennick, 0}, -+ {0, 0, 0, 0} -+}; ++../gseen.o: ../module.h ../modvals.h ../../eggdrop.h datahandling.c \ ++ gseen.c sensors.c gseencmds.c gseencmds.c do_seen.c ai.c tclcmds.c \ ++ misc.c seentree.c generic_binary_tree.c slang_gseen_commands.c \ ++ slang.c slang_text.c slang_ids.c slang_chanlang.c seenlang.h \ ++ slang_multitext.c gseen.h ++ $(CC) $(CFLAGS) $(CPPFLAGS) -DMAKING_MODS -c gseen.c ++ rm -f ../gseen.o ++ mv gseen.o ../ + -+static cmd_t seen_msg[] = -+{ -+ {"seen", "", msg_seen, 0}, -+ {"seennick", "", msg_seennick, 0}, -+ {0, 0, 0, 0} -+}; ++../../../gseen.$(MOD_EXT): ../gseen.o ++ $(LD) -o ../../../gseen.$(MOD_EXT) ../gseen.o $(XLIBS) + -+static cmd_t seen_bot[] = -+{ -+ {"gseen_req", "", bot_gseen_req, 0}, -+ {"gseen_rep", "", bot_gseen_rep, 0}, -+ {0, 0, 0, 0} -+}; -diff -Nur src/mod/gseen.mod/misc.c src/mod/gseen.mod/misc.c ++#safety hash +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/misc.c src/eggdrop-1.8.4/src/mod/gseen.mod/misc.c --- ./src/mod/gseen.mod/misc.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/misc.c 2002-10-26 13:17:57.000000000 +0200 ++++ ./src/mod/gseen.mod/misc.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -3188,7 +2991,7 @@ diff -Nur src/mod/gseen.mod/misc.c src/mod/gseen.mod/misc.c +/* maskstricthost(): + * basically the same as maskhost() from src/misc.c, but _never_ stripts + * "~+-^=" off the host -+ * maskhost() version: * $Id: misc.c,v 1.30 2000/10/27 19:27:32 fabian Exp $ ++ * maskhost() version: * $Id: misc.c,v 1.1 2005/04/14 10:55:00 Administrator Exp $ + */ +static void maskstricthost(const char *s, char *nw) +{ @@ -3283,9 +3086,152 @@ diff -Nur src/mod/gseen.mod/misc.c src/mod/gseen.mod/misc.c + } + } +} -diff -Nur src/mod/gseen.mod/seenlang.h src/mod/gseen.mod/seenlang.h +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/README src/eggdrop-1.8.4/src/mod/gseen.mod/README +--- ./src/mod/gseen.mod/README 1970-01-01 01:00:00.000000000 +0100 ++++ ./src/mod/gseen.mod/README 2017-01-02 22:30:47.000000000 +0100 +@@ -0,0 +1,139 @@ ++Description: ++------------ ++ ++gseen.mod is a seen module for eggdrop that tracks not only the users in the ++bot's userfile, but everyone who enters one of the bots channels. ++It does pretty much the same as the popular script bseen and has a few ++additional features like AI-seen and seen-notification. ++It's also way faster than any corresponding script because scripts are always ++much slower than modules. Especially scripts that deal with large amount of ++data often become incredible slow. ++ ++Installation: ++------------- ++ ++gseen.mod is written for eggdrop1.6, but it should also work with eggdrop 1.4. ++It has been reported to work with eggdrop 1.8, but I did not test it ++myself on that version. ++ ++You need the eggdrop source to compile the module. ++ ++The following instructions assume, ~/eggdrop1.6.2/ is the directory ++where you installed your eggdrop from. (of course, other source dirs ++will work as well) ++ ++Put gseen.mod.1.1.2.tar.gz in ~/eggdrop1.6.2/src/mod/, ++and unpack it (tar xfz gseen.mod.1.1.2.tar.gz). Change directory ++back to ~/eggdrop1.6.2/. ++ ++Now just do what you've done when you compiled your bot: ++"./configure" ++"make config" (you can skip this command on eggdrop 1.4) ++"make" ++"make install" ++ ++Don't forget to copy the langfiles from eggdrop1.6.2/src/mod/gseen.mod/ to ++eggdrop/language. ++ ++All settings can be found in ~/eggdrop1.6.2/src/mod/gseen.mod/gseen.conf ++Copy it to your eggdrop directory, edit it to fit your needs and put ++"source gseen.conf" at the end of your eggdrop config file. The last thing ++to do is to .rehash your bot. ++ ++ ++Public commands: ++---------------- ++ ++!seen <nick> ++ I think this command doesn't need an explanation. ^_^ ++!seen <mask> ++ Searches the database for entries that match <mask> ++ for example "!seen *!user@dialin-*.isp.com" ++!seennick <nick> ++ !seen also checks if a user was online later with a ++ different nick. !seennick only seens for <nick> ++!seenstats ++ just a little report on how many nicks are tracked ++ ++All commands are also accessible via /msg. ++("/msg <bot> seen <nick>", for example) ++ ++ ++AI seen: ++-------- ++ ++This module has a simple built in AI routine. ++A short example: ++ ++<G`Quann> Argo: have you seen Fabian recently? ++<|Argo|> G`Quann, fabian (~fabian@dns.gifs.de) was last seen quitting ++from #eggdev 1 week 4 days 9 hours 40 minutes 56 seconds ago ++(20.02. 01:39) stating ".....zzzzZZZzzZZZzZZZZZZZZZZzzz..". ++ ++Well, it's not a very intelligent AI, it's rather brute-force. So don't ++forget to use the ai-seen-ignore setting. ++I know that's not coded very elegant, but if you configure it correctly, ++the failure-rate is way lower than with other AI scripts... ++ ++DCC commands: ++------------- ++ ++.seen ++.seennick ++.seenstats ++ just the same as the public versions ++.purgeseens ++ deletes expired data (this also happens automatically once a day) ++ (m) ++ ++Channel Settings: ++----------------- ++ ++ +noseendata ++ don't log any seen data in this channel ++ +quietseens ++ send answers directly via notice to the person who asked and ++ don't bother the rest of the channel with the reply ++ +quietaiseens ++ same as +quietseens, but for AI seens ++ +nopubseens ++ ignore every seen-command in this channel ++ ++TCL commands: ++------------- ++ ++There are no special tcl commands, only the usual bind procs. ++ ++The only one that should be mentioned is: ++ ++*pubm:seen <nick> <uhost> <hand> <chan> <text> ++ triggers the AI seen ++ returns: 1 if a reply was sent, 0 otherwise ++ ++So if you're using another AI script on your bot, you can modify it to ++use this proc and avoid doubled replies this way. ++ ++Other: ++------ ++ ++There is absolutely NO WARRANTY on this module. I do my best to make it ++work properly, but if anything gets screwed up, I'm not responsible. Use ++this module at your own risk. ++ ++Homepage: ++--------- ++ ++The newest gseen version can always be found at: ++http://www.kreativrauschen.com/gseen.mod/ ++ ++Thanks to: ++---------- ++ ++- Fabian for teaching me plenty of things ++- everyone who tested the many buggy development versions :) ++- the eggdev team for developing eggdrop ++ ++Most of all, I would like to thank Bass for writing bseen.tcl because alot ++of the ideas for this module came from using that tcl script. It's still the ++most powerful seen script, so if you want something that's easier to use than ++a module, get a copy of bseen.tcl. +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/seenlang.h src/eggdrop-1.8.4/src/mod/gseen.mod/seenlang.h --- ./src/mod/gseen.mod/seenlang.h 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/seenlang.h 2002-10-26 13:17:58.000000000 +0200 ++++ ./src/mod/gseen.mod/seenlang.h 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -3348,9 +3294,9 @@ diff -Nur src/mod/gseen.mod/seenlang.h src/mod/gseen.mod/seenlang.h +#define SLLASTLOOK getslang(172) + +#define SLSEENSTATS getslang(180) -diff -Nur src/mod/gseen.mod/seentree.c src/mod/gseen.mod/seentree.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/seentree.c src/eggdrop-1.8.4/src/mod/gseen.mod/seentree.c --- ./src/mod/gseen.mod/seentree.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/seentree.c 2002-10-26 13:18:10.000000000 +0200 ++++ ./src/mod/gseen.mod/seentree.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,213 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -3565,9 +3511,9 @@ diff -Nur src/mod/gseen.mod/seentree.c src/mod/gseen.mod/seentree.c + {"killseen", tcl_killseen}, + {0, 0} +}; -diff -Nur src/mod/gseen.mod/sensors.c src/mod/gseen.mod/sensors.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/sensors.c src/eggdrop-1.8.4/src/mod/gseen.mod/sensors.c --- ./src/mod/gseen.mod/sensors.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/sensors.c 2002-10-26 13:18:00.000000000 +0200 ++++ ./src/mod/gseen.mod/sensors.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,273 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -3842,9 +3788,9 @@ diff -Nur src/mod/gseen.mod/sensors.c src/mod/gseen.mod/sensors.c + {"*", "", (Function) gseen_rejn, "gseen"}, + {0, 0, 0, 0} +}; -diff -Nur src/mod/gseen.mod/slang.c src/mod/gseen.mod/slang.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/slang.c src/eggdrop-1.8.4/src/mod/gseen.mod/slang.c --- ./src/mod/gseen.mod/slang.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/slang.c 2002-10-26 13:18:03.000000000 +0200 ++++ ./src/mod/gseen.mod/slang.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,309 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -4155,9 +4101,9 @@ diff -Nur src/mod/gseen.mod/slang.c src/mod/gseen.mod/slang.c + return slang_id_get_next(); +} +#endif -diff -Nur src/mod/gseen.mod/slang_chanlang.c src/mod/gseen.mod/slang_chanlang.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/slang_chanlang.c src/eggdrop-1.8.4/src/mod/gseen.mod/slang_chanlang.c --- ./src/mod/gseen.mod/slang_chanlang.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/slang_chanlang.c 2002-10-26 13:18:02.000000000 +0200 ++++ ./src/mod/gseen.mod/slang_chanlang.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -4272,9 +4218,9 @@ diff -Nur src/mod/gseen.mod/slang_chanlang.c src/mod/gseen.mod/slang_chanlang.c +#endif + return slang_find(where, default_slang); +} -diff -Nur src/mod/gseen.mod/slang_duration.c src/mod/gseen.mod/slang_duration.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/slang_duration.c src/eggdrop-1.8.4/src/mod/gseen.mod/slang_duration.c --- ./src/mod/gseen.mod/slang_duration.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/slang_duration.c 2002-10-26 13:18:01.000000000 +0200 ++++ ./src/mod/gseen.mod/slang_duration.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -4358,9 +4304,9 @@ diff -Nur src/mod/gseen.mod/slang_duration.c src/mod/gseen.mod/slang_duration.c + } + return where->durs[idx]; +} -diff -Nur src/mod/gseen.mod/slang_gseen_commands.c src/mod/gseen.mod/slang_gseen_commands.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/slang_gseen_commands.c src/eggdrop-1.8.4/src/mod/gseen.mod/slang_gseen_commands.c --- ./src/mod/gseen.mod/slang_gseen_commands.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/slang_gseen_commands.c 2002-10-26 13:18:06.000000000 +0200 ++++ ./src/mod/gseen.mod/slang_gseen_commands.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,235 @@ +static void slang_send_botnick() +{ @@ -4597,9 +4543,9 @@ diff -Nur src/mod/gseen.mod/slang_gseen_commands.c src/mod/gseen.mod/slang_gseen + {"nick", slang_send_nick}, + {0, 0} +}; -diff -Nur src/mod/gseen.mod/slang_ids.c src/mod/gseen.mod/slang_ids.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/slang_ids.c src/eggdrop-1.8.4/src/mod/gseen.mod/slang_ids.c --- ./src/mod/gseen.mod/slang_ids.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/slang_ids.c 2002-10-26 13:18:04.000000000 +0200 ++++ ./src/mod/gseen.mod/slang_ids.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -4705,9 +4651,9 @@ diff -Nur src/mod/gseen.mod/slang_ids.c src/mod/gseen.mod/slang_ids.c + return slang_multitext_get_next(); +} +#endif -diff -Nur src/mod/gseen.mod/slang_multitext.c src/mod/gseen.mod/slang_multitext.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/slang_multitext.c src/eggdrop-1.8.4/src/mod/gseen.mod/slang_multitext.c --- ./src/mod/gseen.mod/slang_multitext.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/slang_multitext.c 2002-10-26 13:18:05.000000000 +0200 ++++ ./src/mod/gseen.mod/slang_multitext.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -4860,9 +4806,9 @@ diff -Nur src/mod/gseen.mod/slang_multitext.c src/mod/gseen.mod/slang_multitext. + return NULL; +} +#endif -diff -Nur src/mod/gseen.mod/slang_text.c src/mod/gseen.mod/slang_text.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/slang_text.c src/eggdrop-1.8.4/src/mod/gseen.mod/slang_text.c --- ./src/mod/gseen.mod/slang_text.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/slang_text.c 2002-10-26 13:18:07.000000000 +0200 ++++ ./src/mod/gseen.mod/slang_text.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,200 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -5064,9 +5010,9 @@ diff -Nur src/mod/gseen.mod/slang_text.c src/mod/gseen.mod/slang_text.c + } + putlog(LOG_MISC, "*", "ERROR! Unknown slang-command: '%s'", cmd); +} -diff -Nur src/mod/gseen.mod/tclcmds.c src/mod/gseen.mod/tclcmds.c +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/tclcmds.c src/eggdrop-1.8.4/src/mod/gseen.mod/tclcmds.c --- ./src/mod/gseen.mod/tclcmds.c 1970-01-01 01:00:00.000000000 +0100 -+++ ./src/mod/gseen.mod/tclcmds.c 2002-10-26 13:18:08.000000000 +0200 ++++ ./src/mod/gseen.mod/tclcmds.c 2017-01-02 22:30:47.000000000 +0100 @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2000,2001 Florian Sander @@ -5121,3 +5067,67 @@ diff -Nur src/mod/gseen.mod/tclcmds.c src/mod/gseen.mod/tclcmds.c + {"setchanseenlang", tcl_setchanseenlang}, + {0, 0} +}; +diff -urpN src-orig/eggdrop-1.8.4/src/mod/gseen.mod/UPDATES src/eggdrop-1.8.4/src/mod/gseen.mod/UPDATES +--- ./src/mod/gseen.mod/UPDATES 1970-01-01 01:00:00.000000000 +0100 ++++ ./src/mod/gseen.mod/UPDATES 2017-01-02 22:30:47.000000000 +0100 +@@ -0,0 +1,60 @@ ++Changes in gseen.mod: (since v1.0.0) ++-------------------- ++ ++1.1.2 (2017-01-02) ++- compatibility to eggdrop 1.8 ++ ++ ++1.1.1 ++- fixed "no newline" compilation warnings that appeared on some systems. ++- fixed uninitialized "li" variable in do_seen() ++- fixed lacking compatibility to eggdrop1.4 (confirmation anyone?) ++- new option: hide-secret-chans ++- new option: seen-nick-len ++ ++1.1.0 (15.6.2001) ++- added multilang support ++- removed static buffers ++- organized data in a binary search tree (much faster) ++- optimized a few other things ++- added settings: ++ - fuzzy-search ++ - max-matches ++ - wildcard-search ++ ++1.0.8 ++- quiet-seens wasn't working for !seennick ++- added quiet-ai-seens ++- renamed nopub to nopubseens and nolog to noseendata and ++ quietseen to quietseens ++ ++1.0.7 ++- added compatibility to !channels ++- fixed a bug relating strict-host 0 had some strange effects on ++ !seen requests for users with ~ in their ident ++ ++1.0.6 ++- fixed a very evil bug that allowed anyone to crash the bot, sorry ++ ++1.0.5 ++- quietseens wasn't working correctly ++- added support for egg1.5's udef chansets ++ ++1.0.4 ++- added GPL stuff ++- changed error msg that appears if no gseen file exists ++ ++1.0.3 ++- readme updates ++- fixed a grammatical error in do_seen ++ ++1.0.2 ++- bot wanted to free a NULL pointer sometimes ++ ++1.0.1 ++- !seen without parameter returned stupid results :) ++- fixed little typo in .purgeseens ++- "I found 1 matches..." -> "I found 1 match..." ++ ++1.0.0 ++- release :) |
