From d6bd5db66b796c82814e3476c04c6783331b5ae3 Mon Sep 17 00:00:00 2001 From: Michael Ortmann Date: Sun, 17 Mar 2024 06:25:03 +0100 Subject: [PATCH] Fixes for 1.11 Fix heap-use-after-free Enhance FIXME comment for heap-use-after-free Fix typo Update templates/stats/classic/credits.tpl More dos2unix --- README | 6 +- UPDATES | 7 + addons/stats.php | 426 +++++++++---------- core/generic_linked_list.c | 1 + core/templates_stats_commands.c | 6 +- stats.c | 4 +- templates/stats/classic/404.tpl | 18 +- templates/stats/classic/chan.tpl | 56 +-- templates/stats/classic/channel_load.tpl | 86 ++-- templates/stats/classic/classic.de.lang | 404 +++++++++--------- templates/stats/classic/classic.skin | 56 +-- templates/stats/classic/credits.tpl | 24 +- templates/stats/classic/debug.skin | 8 +- templates/stats/classic/facts.tpl | 22 +- templates/stats/classic/graphs.tpl | 164 +++---- templates/stats/classic/hosts.tpl | 28 +- templates/stats/classic/kicks.tpl | 26 +- templates/stats/classic/loginerror.tpl | 46 +- templates/stats/classic/misc.tpl | 70 +-- templates/stats/classic/navbar.tpl | 16 +- templates/stats/classic/onchan.tpl | 100 ++--- templates/stats/classic/password_emailed.tpl | 34 +- templates/stats/classic/root.tpl | 74 ++-- templates/stats/classic/top.tpl | 108 ++--- templates/stats/classic/topics.tpl | 20 +- templates/stats/classic/urls.tpl | 22 +- templates/stats/classic/userlist.tpl | 54 +-- templates/stats/classic/userlogin.tpl | 64 +-- templates/stats/classic/usersettings.tpl | 186 ++++---- templates/stats/classic/wordstats.tpl | 26 +- 30 files changed, 1085 insertions(+), 1077 deletions(-) diff --git a/README b/README index d7f5620..eeef855 100644 --- a/README +++ b/README @@ -24,8 +24,8 @@ Unfortunately, you need to compile stats.mod within your eggdrop source, so if you removed your original compile directory, you'll have to compile the whole bot again... sorry. -Put stats.mod.1.10.tar.gz in ~/eggdrop-1.9.5/src/mod/, -and unpack it (tar xfz stats.mod-1.10.tar.gz). Change directory +Put stats.mod.1.11.tar.gz in ~/eggdrop-1.9.5/src/mod/, +and unpack it (tar xfz stats.mod-1.11.tar.gz). Change directory back to ~/eggdrop-1.9.5/. Type 'make config'. Type 'make', wait until compiling is done and use 'make install' to install the bot and stats.mod. @@ -189,7 +189,7 @@ There are two flags for users: +/-list and +/-addhosts: - If a user has the flag -list, he/she/it won't be listed in the top10. (you probably want to set all your bot -list) - If a user is -addhosts, no new hostmasks will be added to him/her. You'll - have to add all hosts manually with .+shost. (useful if someone if trying + have to add all hosts manually with .+shost. (useful if someone is trying to fake you) Channel settings: diff --git a/UPDATES b/UPDATES index 507dc30..0a309ca 100644 --- a/UPDATES +++ b/UPDATES @@ -1,5 +1,12 @@ Changes in Stats.mod: (since v1.0.1) -------------------- +1.11 +- Fix heap-use-after-free +- Enhance FIXME comment for heap-use-after-free +- Fix typo +- Update templates/stats/classic/credits.tpl +- More dos2unix + 1.10 - Fix buffer sizes diff --git a/addons/stats.php b/addons/stats.php index 6301c14..a2432d3 100644 --- a/addons/stats.php +++ b/addons/stats.php @@ -1,214 +1,214 @@ -$errno: $errstr"; - echo "

Connection to statistics server FAILED!


"; - echo "$errno: $errstr"; -} else { - if ($postparams == "") { - fputs ($idx, "GET $statpath HTTP/1.0\r\n"); - } else { - $len = strlen($postparams); - fputs ($idx, "POST $statpath HTTP/1.0\r\n"); - fputs ($idx, "Content-Length: $len\r\n"); - } - if ($languages != "") { - fputs ($idx, "Accept-Language: $languages\r\n"); - } - if ($useragent != "") { - fputs ($idx, "User-Agent: $useragent\r\n"); - } - if ($remoteaddr != "") { - fputs ($idx, "X-Relayed-For: $remoteaddr\r\n"); - } - if ($xforwardedfor != "") { - fputs ($idx, "X-Forwarded-For: $xforwardedfor\r\n"); - } - if ($cookies != "") { - fputs ($idx, "Cookie: $cookies\r\n"); - } - - fputs ($idx, "\r\n"); - - if ($postparams != "") { - fputs ($idx, $postparams); - } - - while (!feof($idx)) { - $buf = fgets($idx, $MAXLEN); - if ($httpbody) { - do_transform($buf); - } else if ($buf == "" || $buf == "\n") { - $httpbody = true; - } else { - $buf = eregi_replace("Location: ", "Location: $scriptname?statpath=", $buf); - header($buf); - } - } - fclose($idx); -} - - -########### old regex experiments -// echo eregi_replace("href=\"(\/.*\/)*\"/", "relay.php?statpath=", $buf); -// echo eregi_replace("href=\"(http\:\/\/{0,0})", "relay.php?statpath=", $buf); -// $buf = eregi_replace("href=\"", "href=\"relay.php?statpath=", $buf); -// $buf = eregi_replace("(href=\")([^\"]*)(\")", "href=\"$scriptname.php?path=$statpath{transform_remote_url(\\2)}\"", $buf); -// $buf = eregi_replace("(href=\"){1,}", "href=\"$scriptname?statpath=$statpath", $buf); -// $buf = eregi_replace("(href=\")[[:alpha:]]*[^\ ]*http\:\/\/", "href=\"http://", $buf); -// echo $buf; -// echo pregi_replace("href=\"(^http)", "href=\"relay.php?statpath=", $buf); -// for ($i = 0; $i < strlen($buf); $i++) { -// if (!strncasecmp($buf[$i], "href=\"", 6) && !(!strncasecmp($buf[$i], "href=\"http://", 13)) { -// echo "href=\"$scriptname?statpath=$statpath/"; -// $i = $i + 5; -// } else { -// echo $buf[i]; -// } -// } -// echo eregi_replace("(href\=\")(http\:\/\/){,0}", "href=\"$scriptname?statpath=", $buf); -// echo $buf; - +$errno: $errstr"; + echo "

Connection to statistics server FAILED!


"; + echo "$errno: $errstr"; +} else { + if ($postparams == "") { + fputs ($idx, "GET $statpath HTTP/1.0\r\n"); + } else { + $len = strlen($postparams); + fputs ($idx, "POST $statpath HTTP/1.0\r\n"); + fputs ($idx, "Content-Length: $len\r\n"); + } + if ($languages != "") { + fputs ($idx, "Accept-Language: $languages\r\n"); + } + if ($useragent != "") { + fputs ($idx, "User-Agent: $useragent\r\n"); + } + if ($remoteaddr != "") { + fputs ($idx, "X-Relayed-For: $remoteaddr\r\n"); + } + if ($xforwardedfor != "") { + fputs ($idx, "X-Forwarded-For: $xforwardedfor\r\n"); + } + if ($cookies != "") { + fputs ($idx, "Cookie: $cookies\r\n"); + } + + fputs ($idx, "\r\n"); + + if ($postparams != "") { + fputs ($idx, $postparams); + } + + while (!feof($idx)) { + $buf = fgets($idx, $MAXLEN); + if ($httpbody) { + do_transform($buf); + } else if ($buf == "" || $buf == "\n") { + $httpbody = true; + } else { + $buf = eregi_replace("Location: ", "Location: $scriptname?statpath=", $buf); + header($buf); + } + } + fclose($idx); +} + + +########### old regex experiments +// echo eregi_replace("href=\"(\/.*\/)*\"/", "relay.php?statpath=", $buf); +// echo eregi_replace("href=\"(http\:\/\/{0,0})", "relay.php?statpath=", $buf); +// $buf = eregi_replace("href=\"", "href=\"relay.php?statpath=", $buf); +// $buf = eregi_replace("(href=\")([^\"]*)(\")", "href=\"$scriptname.php?path=$statpath{transform_remote_url(\\2)}\"", $buf); +// $buf = eregi_replace("(href=\"){1,}", "href=\"$scriptname?statpath=$statpath", $buf); +// $buf = eregi_replace("(href=\")[[:alpha:]]*[^\ ]*http\:\/\/", "href=\"http://", $buf); +// echo $buf; +// echo pregi_replace("href=\"(^http)", "href=\"relay.php?statpath=", $buf); +// for ($i = 0; $i < strlen($buf); $i++) { +// if (!strncasecmp($buf[$i], "href=\"", 6) && !(!strncasecmp($buf[$i], "href=\"http://", 13)) { +// echo "href=\"$scriptname?statpath=$statpath/"; +// $i = $i + 5; +// } else { +// echo $buf[i]; +// } +// } +// echo eregi_replace("(href\=\")(http\:\/\/){,0}", "href=\"$scriptname?statpath=", $buf); +// echo $buf; + ?> \ No newline at end of file diff --git a/core/generic_linked_list.c b/core/generic_linked_list.c index f28e1cc..e256a9f 100644 --- a/core/generic_linked_list.c +++ b/core/generic_linked_list.c @@ -94,6 +94,7 @@ static void llist_delete(struct llist_header *head, void *key) else p = head->root; head->size--; + break; } else { last = p; p = p->next; diff --git a/core/templates_stats_commands.c b/core/templates_stats_commands.c index 22c9316..d1dbb99 100644 --- a/core/templates_stats_commands.c +++ b/core/templates_stats_commands.c @@ -982,9 +982,9 @@ static void template_send_onchanlist(int idx, struct template_content *h_tpc) if (!chan) return; for (m = schan_members_getfirst(&chan->members); m ; m = schan_members_getnext(&chan->members)) { - glob_statsmember = m; /*FIXME: heap-use-after-free */ + glob_statsmember = m; - glob_user = m->user; + glob_user = m->user; /* FIXME: heap-use-after-free - free() in tclchan.c:init_channel() - see https://github.com/eggheads/eggdrop/pull/1550 */ if (m->stats) glob_locstats = m->stats; else @@ -997,7 +997,7 @@ static void template_send_usermode(int idx, struct template_content *h_tpc) { if (glob_statsmember && glob_statsmember->eggmember) { #ifndef NO_EGG - if (chan_hasop(glob_statsmember->eggmember)) + if (chan_hasop(glob_statsmember->eggmember)) /* FIXME: heap-use-after-free - free() in tclchan.c:init_channel() - see https://github.com/eggheads/eggdrop/pull/1550 */ dprintf(idx, "@"); if (chan_hasvoice(glob_statsmember->eggmember)) dprintf(idx, "+"); diff --git a/stats.c b/stats.c index fd078cf..5421ebd 100644 --- a/stats.c +++ b/stats.c @@ -31,7 +31,7 @@ #define MAKING_STATS #define MODULE_NAME "stats" -#define MODULE_VERSION "1.10" +#define MODULE_VERSION "1.11" #ifndef NO_EGG #include "../module.h" #include "../irc.mod/irc.h" @@ -446,7 +446,7 @@ char *stats_start(Function * global_funcs) chanlangs = NULL; slang_glob_init(); - module_register(MODULE_NAME, stats_table, 1, 10); + module_register(MODULE_NAME, stats_table, 1, 11); if (!(irc_funcs = module_depend(MODULE_NAME, "irc", 1, 0))) return "You need the irc module to use the stats module."; if (!(server_funcs = module_depend(MODULE_NAME, "server", 1, 0))) diff --git a/templates/stats/classic/404.tpl b/templates/stats/classic/404.tpl index e64e66b..699512e 100644 --- a/templates/stats/classic/404.tpl +++ b/templates/stats/classic/404.tpl @@ -1,9 +1,9 @@ - -404 Not Found - -

Not Found

The requested URL was not found on this server. -

-


- -
Stats.Mod/HTTPd Server at Port
- + +404 Not Found + +

Not Found

The requested URL was not found on this server. +

+


+ +
Stats.Mod/HTTPd Server at Port
+ diff --git a/templates/stats/classic/chan.tpl b/templates/stats/classic/chan.tpl index f1667f6..e54acd7 100644 --- a/templates/stats/classic/chan.tpl +++ b/templates/stats/classic/chan.tpl @@ -1,28 +1,28 @@ - - - - <?slang id="200"/?> - - - - -
- - - - - - - - - - - - - -
 
-
- - - - + + + + <?slang id="200"/?> + + + + +
+ + + + + + + + + + + + + +
 
+
+ + + + diff --git a/templates/stats/classic/channel_load.tpl b/templates/stats/classic/channel_load.tpl index 8faa039..baf7ce1 100644 --- a/templates/stats/classic/channel_load.tpl +++ b/templates/stats/classic/channel_load.tpl @@ -1,44 +1,44 @@ -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0:00 - 6:006:00 - 12:0012:00 - 17:0018:00 - 24:00
- - " width="10" alt="blue"> - " width="10" alt="green"> - -
- - - -
- - - -
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
0:00 - 6:006:00 - 12:0012:00 - 17:0018:00 - 24:00
+ + " width="10" alt="blue"> + " width="10" alt="green"> + +
+ + + +
+ + + +
\ No newline at end of file diff --git a/templates/stats/classic/classic.de.lang b/templates/stats/classic/classic.de.lang index eaea820..f9b476e 100644 --- a/templates/stats/classic/classic.de.lang +++ b/templates/stats/classic/classic.de.lang @@ -1,202 +1,202 @@ -# time string (singular and plural) -D 0 Jahr -D 1 Jahre -D 2 Woche -D 3 Wochen -D 4 Tag -D 5 Tage -D 6 Stunde -D 7 Stunden -D 8 Minute -D 9 Minuten -D 10 Sekunde -D 11 Sekunden -D 12 etwas Zeit - -1 - -10 - -100 's Livestats - -105 Top - -110 insgesamt -111 heute -112 diese Woche -113 diesen Monat - -120 Benutzerliste -121 Wer ist grade da? -122 Verschiedenes - -130 Andere Kanäle - -200 Inhaltsverzeichnis - -# s of toptalker pages -300 Die aktivsten Labertaschen von <?chan/?> -301 Die heute aktivsten Labertaschen von <?chan/?> -302 Die aktivsten Labertaschen von <?chan/?> in dieser Woche -303 Die aktivsten Labertaschen von <?chan/?> in diesem Monat - -# heads of toptalker pages -310 Die aktivsten Labertaschen von <?chan/?> -311 Die heute aktivsten Labertaschen von <?chan/?> -312 Die aktivsten Labertaschen von <?chan/?> in dieser Woche -313 Die aktivsten Labertaschen von <?chan/?> in diesem Monat - -320 Sortiert nach "<?sorting/?>" -330 größte Benutzeransammlung: <?peak/?> -340 Nr -341 Benutzer -342 Info -343 zufälliges Zitat -350 Benutzer insgesamt: <?totalusers/?> -360 (Statistiken gelogt seit <?chanstarted/?>) -370 beliebige Sortierung -380 graphische Darstellung - -# <title>s of graph pages -400 Total top <?graphnr/?> graphs on channel <?chan/?> -401 Daily top <?graphnr/?> graphs on channel <?chan/?> -402 Weekly top <?graphnr/?> graphs on channel <?chan/?> -403 Monthly top <?graphnr/?> graphs on channel <?chan/?> - -# heads of graph pages -410 Total top <?graphnr/?> graphs on channel <?chan/?> -411 Daily top <?graphnr/?> graphs on channel <?chan/?> -412 Weekly top <?graphnr/?> graphs on channel <?chan/?> -413 Monthly top <?graphnr/?> graphs on channel <?chan/?> - -# self-explaining -420 Sortiert nach "<b><?sorting/?></b>" -430 [<?value/?> <?sorting/?> insgesant] -440 [andere] -450 Tabelle - - -# /chan/users/ -500 <?chan/?>'s Stammgäste - -# /chan/onchan -600 <?chan/?>'s aktuelle Besatzung -610 Jetzt im Channel: -620 inaktiv seit -630 verschollen -640 <-- meinereiner ^_^ - -# userpage title -700 Statistiken für <?user/?> in <?chan/?> -# userpage head -710 Statistiken für <?user/?> in <?chan/?> -720 ICQ# -721 eMail -722 Homepage -723 Alter -730 Platz -# self-explaining... -740 Zitat: -750 <?user/?> gab heite <?userwords/?> verschiedene Wörter von sich. Dies sind die häufigsten: -760 insgesamt -761 heute -762 diese Woche -763 diesen Monat -780 Einstellungen ändern - -## Misc Stats -# title -800 Verschiedene Statistiken in <?chan/?> -# head -810 Verschiedene Statistiken von heute in <?chan/?> -# self-explaining... -820 Channel Auslastung: -825 Benutzer -826 Zeilen -830 Heutige Topics: -835 gesetzt von <?topic_by/?> um <?topic_when/?> -840 <?random_urls/?> zufällige URLs -845 zuletzt erwähnt von <?url_by/?> um <?url_when/?> -850 meist genutzte -855 Provider -856 TLDs -860 <?random_kicks/?> zufällige Kicks -870 Registrierte Benutzer gaben <?chanwords/?> verschiedene Worte von sich. -875 Dies sind die häufigsten: - -# The last part of the misc stats, misc facts. That's how you use it: -# F <type> <place> <text> -F nicks 1 <a href="../users/<?user/?>/"><?user/?></a> konnte sich für keinen nick entscheiden und wechselte selbigen <?value/?> mal. -F nicks 1 <a href="../users/<?user/?>/"><?user/?></a> hatte die größte Auswahl an nicks (<?value/?>). -F nicks 2 <a href="../users/<?user/?>/"><?user/?></a> hat auch <?value/?> Versuche gebraucht um sich zu entscheiden. - -F kicks 1 <a href="../users/<?user/?>/"><?user/?></a> tat was nötig war und beseitigte <?value/?> Störenfriede. -F kicks 1 <a href="../users/<?user/?>/"><?user/?></a> war heute leicht reizbar und beförderte <?value/?> Opfer aus dem Channel. -F kicks 1 Mit <a href="../users/<?user/?>/"><?user/?></a> war heute nicht zu scherzen... <?value/?> Opfer erfuhren dies auf die harte Art. -F kicks 2 Der zweit-aktivste Bestrafer war <a href="../users/<?user/?>/"><?user/?></a> mit <?value/?> kicks. -F kicks 2 Auch <a href="../users/<?user/?>/"><?user/?></a> verlor in <?value/?> Fällen die Geduld. -F kicks 2 Auch <a href="../users/<?user/?>/"><?user/?></a>'s Toleranz war in <?value/?> Fällen erschöpft. - -F smileys 1 <a href="../users/<?user/?>/"><?user/?></a> war heute gut gelaunt und grinste <?value/?> mal. -F smileys 1 <a href="../users/<?user/?>/"><?user/?></a> hatte einen guten Tag und grinste <?value/?> mal. -F smileys 1 <a href="../users/<?user/?>/"><?user/?></a> hatte <?value/?> mal einen recht strahlenden Gesichtsausdruck. -F smileys 2 <a href="../users/<?user/?>/"><?user/?></a> genoss den Besuch in <?chan/?> mit <?value/?> smileys offensichtlich auch. - -F questions 1 <a href="../users/<?user/?>/"><?user/?></a> weiß das Wissen Macht bedeutet und stellte <?value/?> fragen. -F questions 2 Auch <a href="../users/<?user/?>/"><?user/?></a> war <?value/?> mal auf der Suche nach Input. - -F joins 1 <a href="../users/<?user/?>/"><?user/?></a> wusste nicht so recht, ob er/sie bleiben sollte oder nicht und betrat <?chan/?> <?value/?> mal. -F joins 2 <a href="../users/<?user/?>/"><?user/?></a> gab sich fast genauso viel Mühe für mass-joining gekickt zu werden. - -F vocables 1 <a href="../users/<?user/?>/"><?user/?></a> hat mit <?value/?> verschiedenen Wörtern das größte Vokabular. -F vocables 1 <a href="../users/<?user/?>/"><?user/?></a> drückte sich mit Hilfe von <?value/?> verschiedenen Wörtern recht vielseitig aus. -F vocables 2 Auch <a href="../users/<?user/?>/"><?user/?>'s</a> Wortschatz ist nicht zu verachten. (<?value/?> Wörter) - - -1000 Einstellungen für <?user/?> -1010 Benutzername -1020 Passwort -1030 Alter -1035 erlaubte Abwesenheit -1036 danach wird das Konto gelöscht -1040 Neues Passwort -1045 Neues Passwort (Bestätigung) -1050 ICQ# -1060 eMail -1070 Homepage -1080 List me in the top<?topnr/?>? -1081 Soll ich automatisch neue Hosts zu deinem Account hinzufügen? -1082 Soll ich deine Stats überhaupt zugänglich machen? -1083 (falls Du wegen dem Datenschutz besorgt bist...) -1085 jepp -1086 nö - -1100 User Login -1110 If you don't have a password set yet, you can do it now on IRC: -1120 WARNING: This password will be transferred and stored in plaintext, so better don't use your mail password or any other important password. -1130 I forgot my password - -1200 Login Error! -1210 Your attempt to login resulted in the following error: - -1300 No Error !?! -1301 User not found! -1302 You don't have a password set! (see instructions on the login page) -1303 Wrong Password! - -1400 Try again! - -1500 Password emailed -1510 Your password has been emailed to you. - -1600 your stats password -1610 Hello, -1610 -1610 seems that you've forgotten your password. I'm not a sadistic robot, -1610 so I decided to do you a favour and send your password to you: -1610 -1610 "<?password/?>" -1610 -1610 Try not to forget it again. ^_^ -1610 -1610 Have a nice day... +# time string (singular and plural) +D 0 Jahr +D 1 Jahre +D 2 Woche +D 3 Wochen +D 4 Tag +D 5 Tage +D 6 Stunde +D 7 Stunden +D 8 Minute +D 9 Minuten +D 10 Sekunde +D 11 Sekunden +D 12 etwas Zeit + +1 <style type="text/css"><!-- A:link { text-decoration: none; } A:visited { text-decoration: none;} A:active { text-decoration: none;} A:hover { text-decoration: underline;} --></style> + +10 <BODY BGCOLOR="#000000" TEXT="#1A9DFF" LINK="#00D993" VLINK="#71C2FF" ALINK="#2FFFBB"> + +100 <?bot/?>'s Livestats + +105 Top<?topnr/?> + +110 insgesamt +111 heute +112 diese Woche +113 diesen Monat + +120 Benutzerliste +121 Wer ist grade da? +122 Verschiedenes + +130 Andere Kanäle + +200 <?chan/?> Inhaltsverzeichnis + +# <title>s of toptalker pages +300 Die aktivsten Labertaschen von <?chan/?> +301 Die heute aktivsten Labertaschen von <?chan/?> +302 Die aktivsten Labertaschen von <?chan/?> in dieser Woche +303 Die aktivsten Labertaschen von <?chan/?> in diesem Monat + +# heads of toptalker pages +310 Die aktivsten Labertaschen von <?chan/?> +311 Die heute aktivsten Labertaschen von <?chan/?> +312 Die aktivsten Labertaschen von <?chan/?> in dieser Woche +313 Die aktivsten Labertaschen von <?chan/?> in diesem Monat + +320 Sortiert nach "<?sorting/?>" +330 größte Benutzeransammlung: <?peak/?> +340 Nr +341 Benutzer +342 Info +343 zufälliges Zitat +350 Benutzer insgesamt: <?totalusers/?> +360 (Statistiken gelogt seit <?chanstarted/?>) +370 beliebige Sortierung +380 graphische Darstellung + +# <title>s of graph pages +400 Total top <?graphnr/?> graphs on channel <?chan/?> +401 Daily top <?graphnr/?> graphs on channel <?chan/?> +402 Weekly top <?graphnr/?> graphs on channel <?chan/?> +403 Monthly top <?graphnr/?> graphs on channel <?chan/?> + +# heads of graph pages +410 Total top <?graphnr/?> graphs on channel <?chan/?> +411 Daily top <?graphnr/?> graphs on channel <?chan/?> +412 Weekly top <?graphnr/?> graphs on channel <?chan/?> +413 Monthly top <?graphnr/?> graphs on channel <?chan/?> + +# self-explaining +420 Sortiert nach "<b><?sorting/?></b>" +430 [<?value/?> <?sorting/?> insgesant] +440 [andere] +450 Tabelle + + +# /chan/users/ +500 <?chan/?>'s Stammgäste + +# /chan/onchan +600 <?chan/?>'s aktuelle Besatzung +610 Jetzt im Channel: +620 inaktiv seit +630 verschollen +640 <-- meinereiner ^_^ + +# userpage title +700 Statistiken für <?user/?> in <?chan/?> +# userpage head +710 Statistiken für <?user/?> in <?chan/?> +720 ICQ# +721 eMail +722 Homepage +723 Alter +730 Platz +# self-explaining... +740 Zitat: +750 <?user/?> gab heite <?userwords/?> verschiedene Wörter von sich. Dies sind die häufigsten: +760 insgesamt +761 heute +762 diese Woche +763 diesen Monat +780 Einstellungen ändern + +## Misc Stats +# title +800 Verschiedene Statistiken in <?chan/?> +# head +810 Verschiedene Statistiken von heute in <?chan/?> +# self-explaining... +820 Channel Auslastung: +825 Benutzer +826 Zeilen +830 Heutige Topics: +835 gesetzt von <?topic_by/?> um <?topic_when/?> +840 <?random_urls/?> zufällige URLs +845 zuletzt erwähnt von <?url_by/?> um <?url_when/?> +850 meist genutzte +855 Provider +856 TLDs +860 <?random_kicks/?> zufällige Kicks +870 Registrierte Benutzer gaben <?chanwords/?> verschiedene Worte von sich. +875 Dies sind die häufigsten: + +# The last part of the misc stats, misc facts. That's how you use it: +# F <type> <place> <text> +F nicks 1 <a href="../users/<?user/?>/"><?user/?></a> konnte sich für keinen nick entscheiden und wechselte selbigen <?value/?> mal. +F nicks 1 <a href="../users/<?user/?>/"><?user/?></a> hatte die größte Auswahl an nicks (<?value/?>). +F nicks 2 <a href="../users/<?user/?>/"><?user/?></a> hat auch <?value/?> Versuche gebraucht um sich zu entscheiden. + +F kicks 1 <a href="../users/<?user/?>/"><?user/?></a> tat was nötig war und beseitigte <?value/?> Störenfriede. +F kicks 1 <a href="../users/<?user/?>/"><?user/?></a> war heute leicht reizbar und beförderte <?value/?> Opfer aus dem Channel. +F kicks 1 Mit <a href="../users/<?user/?>/"><?user/?></a> war heute nicht zu scherzen... <?value/?> Opfer erfuhren dies auf die harte Art. +F kicks 2 Der zweit-aktivste Bestrafer war <a href="../users/<?user/?>/"><?user/?></a> mit <?value/?> kicks. +F kicks 2 Auch <a href="../users/<?user/?>/"><?user/?></a> verlor in <?value/?> Fällen die Geduld. +F kicks 2 Auch <a href="../users/<?user/?>/"><?user/?></a>'s Toleranz war in <?value/?> Fällen erschöpft. + +F smileys 1 <a href="../users/<?user/?>/"><?user/?></a> war heute gut gelaunt und grinste <?value/?> mal. +F smileys 1 <a href="../users/<?user/?>/"><?user/?></a> hatte einen guten Tag und grinste <?value/?> mal. +F smileys 1 <a href="../users/<?user/?>/"><?user/?></a> hatte <?value/?> mal einen recht strahlenden Gesichtsausdruck. +F smileys 2 <a href="../users/<?user/?>/"><?user/?></a> genoss den Besuch in <?chan/?> mit <?value/?> smileys offensichtlich auch. + +F questions 1 <a href="../users/<?user/?>/"><?user/?></a> weiß das Wissen Macht bedeutet und stellte <?value/?> fragen. +F questions 2 Auch <a href="../users/<?user/?>/"><?user/?></a> war <?value/?> mal auf der Suche nach Input. + +F joins 1 <a href="../users/<?user/?>/"><?user/?></a> wusste nicht so recht, ob er/sie bleiben sollte oder nicht und betrat <?chan/?> <?value/?> mal. +F joins 2 <a href="../users/<?user/?>/"><?user/?></a> gab sich fast genauso viel Mühe für mass-joining gekickt zu werden. + +F vocables 1 <a href="../users/<?user/?>/"><?user/?></a> hat mit <?value/?> verschiedenen Wörtern das größte Vokabular. +F vocables 1 <a href="../users/<?user/?>/"><?user/?></a> drückte sich mit Hilfe von <?value/?> verschiedenen Wörtern recht vielseitig aus. +F vocables 2 Auch <a href="../users/<?user/?>/"><?user/?>'s</a> Wortschatz ist nicht zu verachten. (<?value/?> Wörter) + + +1000 Einstellungen für <?user/?> +1010 Benutzername +1020 Passwort +1030 Alter +1035 erlaubte Abwesenheit +1036 danach wird das Konto gelöscht +1040 Neues Passwort +1045 Neues Passwort (Bestätigung) +1050 ICQ# +1060 eMail +1070 Homepage +1080 List me in the top<?topnr/?>? +1081 Soll ich automatisch neue Hosts zu deinem Account hinzufügen? +1082 Soll ich deine Stats überhaupt zugänglich machen? +1083 (falls Du wegen dem Datenschutz besorgt bist...) +1085 jepp +1086 nö + +1100 User Login +1110 If you don't have a password set yet, you can do it now on IRC: +1120 WARNING: This password will be transferred and stored in plaintext, so better don't use your mail password or any other important password. +1130 I forgot my password + +1200 Login Error! +1210 Your attempt to login resulted in the following error: + +1300 No Error !?! +1301 User not found! +1302 You don't have a password set! (see instructions on the login page) +1303 Wrong Password! + +1400 Try again! + +1500 Password emailed +1510 Your password has been emailed to you. + +1600 your stats password +1610 Hello, +1610 +1610 seems that you've forgotten your password. I'm not a sadistic robot, +1610 so I decided to do you a favour and send your password to you: +1610 +1610 "<?password/?>" +1610 +1610 Try not to forget it again. ^_^ +1610 +1610 Have a nice day... diff --git a/templates/stats/classic/classic.skin b/templates/stats/classic/classic.skin index b223d48..a44c477 100644 --- a/templates/stats/classic/classic.skin +++ b/templates/stats/classic/classic.skin @@ -1,29 +1,29 @@ -skin classic Classic Style - -template root root.tpl -template navbar navbar.tpl -template top top.tpl classic -template toptable toptable.tpl -template custom_top custom_top.tpl -template chan chan.tpl -template 404 404.tpl -template misc misc.tpl -template channel_load channel_load.tpl -template topics topics.tpl -template urls urls.tpl -template hosts hosts.tpl -template kicks kicks.tpl -template wordstats wordstats.tpl -template facts facts.tpl -template userlist userlist.tpl -template user user.tpl -template onchan onchan.tpl -template graphs graphs.tpl -template credits credits.tpl -template userlogin userlogin.tpl -template usersettings usersettings.tpl -template login_error loginerror.tpl -template password_emailed password_emailed.tpl - -slang classic.en.lang en English +skin classic Classic Style + +template root root.tpl +template navbar navbar.tpl +template top top.tpl classic +template toptable toptable.tpl +template custom_top custom_top.tpl +template chan chan.tpl +template 404 404.tpl +template misc misc.tpl +template channel_load channel_load.tpl +template topics topics.tpl +template urls urls.tpl +template hosts hosts.tpl +template kicks kicks.tpl +template wordstats wordstats.tpl +template facts facts.tpl +template userlist userlist.tpl +template user user.tpl +template onchan onchan.tpl +template graphs graphs.tpl +template credits credits.tpl +template userlogin userlogin.tpl +template usersettings usersettings.tpl +template login_error loginerror.tpl +template password_emailed password_emailed.tpl + +slang classic.en.lang en English slang classic.de.lang de Deutsch \ No newline at end of file diff --git a/templates/stats/classic/credits.tpl b/templates/stats/classic/credits.tpl index 54c21be..9da24e4 100644 --- a/templates/stats/classic/credits.tpl +++ b/templates/stats/classic/credits.tpl @@ -1,12 +1,12 @@ -<?-- - -Please don't remove this link. You can change it size, color, or position, -if you don't like it, but please don't remove it completely. The few -visitors that I get from this link are everything that I get for coding -this module, so please be fair. - ---?> - -<?-- <hr color="#3366cc" size="1" width="50%"> --?> -<hr size="1" width="50%"> -<center>Created by <a href="https://www.kreativrauschen.de/stats.mod/">Stats.mod v<?module_version/?></a></center> \ No newline at end of file +<?-- + +Please don't remove this link. You can change it size, color, or position, +if you don't like it, but please don't remove it completely. The few +visitors that I get from this link are everything that I get for coding +this module, so please be fair. + +--?> + +<?-- <hr color="#3366cc" size="1" width="50%"> --?> +<hr size="1" width="50%"> +<center>Created by <a href="https://www.kreativrauschen.de/stats.mod/">Stats.mod v<?module_version/?></a> <a href="https://github.com/michaelortmann/stats.mod">(github)</a></center> diff --git a/templates/stats/classic/debug.skin b/templates/stats/classic/debug.skin index f22fc93..bc1590b 100644 --- a/templates/stats/classic/debug.skin +++ b/templates/stats/classic/debug.skin @@ -1,5 +1,5 @@ -skin classic Classic Style - -template root root.tpl - +skin classic Classic Style + +template root root.tpl + #slang classic.eng.lang eng English \ No newline at end of file diff --git a/templates/stats/classic/facts.tpl b/templates/stats/classic/facts.tpl index 1375888..2783659 100644 --- a/templates/stats/classic/facts.tpl +++ b/templates/stats/classic/facts.tpl @@ -1,12 +1,12 @@ -<table border="0"> -<?init_colorfade steps="miscfacts"/?> -<?miscfacts?> - <tr bgcolor="<?fcolor/?>"> - <td> - <?fact place="1"/?><br> - <p align="right"><font size="-2"><?fact place="2"/?></font></p> - </td> - </tr> - <?fade_color/?> -<?/miscfacts?> +<table border="0"> +<?init_colorfade steps="miscfacts"/?> +<?miscfacts?> + <tr bgcolor="<?fcolor/?>"> + <td> + <?fact place="1"/?><br> + <p align="right"><font size="-2"><?fact place="2"/?></font></p> + </td> + </tr> + <?fade_color/?> +<?/miscfacts?> </table> \ No newline at end of file diff --git a/templates/stats/classic/graphs.tpl b/templates/stats/classic/graphs.tpl index 0e80372..7284c74 100644 --- a/templates/stats/classic/graphs.tpl +++ b/templates/stats/classic/graphs.tpl @@ -1,83 +1,83 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> - -<head> - <META NAME="ROBOTS" CONTENT="INDEX, NOFOLLOW"> - <?-- CSS --?><?slang id="1"/?> - <?-- title --?> - <?if_total?> <title><?slang id="400"/?> - <?slang id="401"/?> - <?slang id="402"/?> - <?slang id="403"/?> - - - - - -
- - -

-

-

-

- -
- - - - - - - - - -
-   words --?>   -
-
-
- - - - - - - - - - - - - - - - - - - -
-
- % -
" alt="">
- /"> -
- -
- - -
- - - - - - - -
-
- -
- -
- - + + + + + + + + <?slang id="400"/?> + <?slang id="401"/?> + <?slang id="402"/?> + <?slang id="403"/?> + + + + + +
+ + +

+

+

+

+ +
+ + + + + + + + + +
+   words --?>   +
+
+
+ + + + + + + + + + + + + + + + + + + +
+
+ % +
" alt="">
- /"> -
+ +
+ + +
+ + + + + + + +
+
+ +
+ +
+ + \ No newline at end of file diff --git a/templates/stats/classic/hosts.tpl b/templates/stats/classic/hosts.tpl index 36b2cee..84bd1cf 100644 --- a/templates/stats/classic/hosts.tpl +++ b/templates/stats/classic/hosts.tpl @@ -1,15 +1,15 @@ - - - - - - - - - - - - - - +
() ()
+ + + + + + + + + + + + +
() ()
\ No newline at end of file diff --git a/templates/stats/classic/kicks.tpl b/templates/stats/classic/kicks.tpl index dfd7892..395d302 100644 --- a/templates/stats/classic/kicks.tpl +++ b/templates/stats/classic/kicks.tpl @@ -1,14 +1,14 @@ - - - - - - - - +
- -
-
-
-
+ + + + + + +
+ +
+
+
+
\ No newline at end of file diff --git a/templates/stats/classic/loginerror.tpl b/templates/stats/classic/loginerror.tpl index cacd8c3..1a1db85 100644 --- a/templates/stats/classic/loginerror.tpl +++ b/templates/stats/classic/loginerror.tpl @@ -1,24 +1,24 @@ - - - - - <?-- "Login Error" --/?><?slang id="1200"/?> - - - - -
-

-

-
-
-
-
-
-
-
- - - - + + + + + <?-- "Login Error" --/?><?slang id="1200"/?> + + + + +
+

+

+
+
+
+
+

+
+
+ + + + \ No newline at end of file diff --git a/templates/stats/classic/misc.tpl b/templates/stats/classic/misc.tpl index a327efb..91f0918 100644 --- a/templates/stats/classic/misc.tpl +++ b/templates/stats/classic/misc.tpl @@ -1,36 +1,36 @@ - - - - - - - <?slang id="800"/?> - - - - -
-


- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
- - + + + + + + + <?slang id="800"/?> + + + + +
+


+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ + \ No newline at end of file diff --git a/templates/stats/classic/navbar.tpl b/templates/stats/classic/navbar.tpl index 6054cd8..a5cd85e 100644 --- a/templates/stats/classic/navbar.tpl +++ b/templates/stats/classic/navbar.tpl @@ -1,9 +1,9 @@ - - - - - - - - +
/top/total/words/">/misc/">/users/">/onchan/">
+ + + + + + +
/top/total/words/">/misc/">/users/">/onchan/">
\ No newline at end of file diff --git a/templates/stats/classic/onchan.tpl b/templates/stats/classic/onchan.tpl index 0099b82..f59c069 100644 --- a/templates/stats/classic/onchan.tpl +++ b/templates/stats/classic/onchan.tpl @@ -1,51 +1,51 @@ - - - - - - - <?slang id="600"/?> - - - - -
-
- - - - - - - - - - - - - - - - - - - - - -
nickuserinfoidle time
- /"> - - <?icqnr/?> - - [URL] - [eMail] - - -
-
- -
- -
- - + + + + + + + <?slang id="600"/?> + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
nickuserinfoidle time
+ /"> + + <?icqnr/?> + + [URL] + [eMail] + + -
+
+ +
+ +
+ + \ No newline at end of file diff --git a/templates/stats/classic/password_emailed.tpl b/templates/stats/classic/password_emailed.tpl index ce4e2f7..edf239e 100644 --- a/templates/stats/classic/password_emailed.tpl +++ b/templates/stats/classic/password_emailed.tpl @@ -1,18 +1,18 @@ - - - - - <?-- "Password emailed" --/?><?slang id="1500"/?> - - - - -
-

-
-
- - - - + + + + + <?-- "Password emailed" --/?><?slang id="1500"/?> + + + + +
+

+
+
+ + + + \ No newline at end of file diff --git a/templates/stats/classic/root.tpl b/templates/stats/classic/root.tpl index f8edafd..4c70424 100644 --- a/templates/stats/classic/root.tpl +++ b/templates/stats/classic/root.tpl @@ -1,38 +1,38 @@ - - - - - - <?slang id="100"/?> - - - - -
-
-
-
- - - - - - - - - - - - - - - -
- /">
- -
/top/total/words/">
/top/daily/words/">
/top/weekly/words/">
/top/monthly/words/">
/users/">
/onchan/">
/misc/">
 
-
- - - + + + + + + <?slang id="100"/?> + + + + +
+
+
+
+ + + + + + + + + + + + + + + +
+ /">
+ +
/top/total/words/">
/top/daily/words/">
/top/weekly/words/">
/top/monthly/words/">
/users/">
/onchan/">
/misc/">
 
+
+ + + \ No newline at end of file diff --git a/templates/stats/classic/top.tpl b/templates/stats/classic/top.tpl index 6abfed2..7de9375 100644 --- a/templates/stats/classic/top.tpl +++ b/templates/stats/classic/top.tpl @@ -1,55 +1,55 @@ - - - - - - - - <?slang id="300"/?> - <?slang id="301"/?> - <?slang id="302"/?> - <?slang id="303"/?> - - - - - - - -
- -

-

-

-

- -
-
-
- -
-
-
-
-
-

-
-
-
- - - - - - - -
-
- -
- - -
- - + + + + + + + + <?slang id="300"/?> + <?slang id="301"/?> + <?slang id="302"/?> + <?slang id="303"/?> + + + + + + + +
+ +

+

+

+

+ +
+
+
+ +
+
+
+
+
+
+
+
+
+ + + + + + + +
+
+ +
+ + +
+ + \ No newline at end of file diff --git a/templates/stats/classic/topics.tpl b/templates/stats/classic/topics.tpl index 174c6b2..6ab6d71 100644 --- a/templates/stats/classic/topics.tpl +++ b/templates/stats/classic/topics.tpl @@ -1,11 +1,11 @@ -
- - - - - - - - - +
+
()
+ + + + + + + +
()
\ No newline at end of file diff --git a/templates/stats/classic/urls.tpl b/templates/stats/classic/urls.tpl index aa409c1..e1fe50b 100644 --- a/templates/stats/classic/urls.tpl +++ b/templates/stats/classic/urls.tpl @@ -1,11 +1,11 @@ - - - - - - - - - - -
""
+ + + + + + + + + + +
""
diff --git a/templates/stats/classic/userlist.tpl b/templates/stats/classic/userlist.tpl index 570198e..1916c8e 100644 --- a/templates/stats/classic/userlist.tpl +++ b/templates/stats/classic/userlist.tpl @@ -1,28 +1,28 @@ - - - - - - - <?slang id="500"/?> - - - - -
- - - - - - -
User
/">
-
-
- -
- -
- - + + + + + + + <?slang id="500"/?> + + + + +
+ + + + + + +
User
/">
+
+
+ +
+ +
+ + \ No newline at end of file diff --git a/templates/stats/classic/userlogin.tpl b/templates/stats/classic/userlogin.tpl index 23d3bfd..2663310 100644 --- a/templates/stats/classic/userlogin.tpl +++ b/templates/stats/classic/userlogin.tpl @@ -1,33 +1,33 @@ - - - - - <?-- "User Login" --/?><?slang id="1000"/?> - - - - - - -
-
-
- -:
-:
-
-
-"/msg STATSPASS <password>"
-

- - - - ">" name="sendpass"> -
- -
-
- - - + + + + + <?-- "User Login" --/?><?slang id="1000"/?> + + + + + + +
+
+
+ +:
+:
+
+
+"/msg STATSPASS <password>"
+

+ + + + ">" name="sendpass"> +
+ +
+
+ + + \ No newline at end of file diff --git a/templates/stats/classic/usersettings.tpl b/templates/stats/classic/usersettings.tpl index d573e31..cd272e9 100644 --- a/templates/stats/classic/usersettings.tpl +++ b/templates/stats/classic/usersettings.tpl @@ -1,94 +1,94 @@ - - - - - - <?-- "Settings for User" --/?><?slang id="1000"/?> - <?-- CSS --?><?slang id="1"/?> - - - - -
-



-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
- ()
  
:
:
:
  
- checked value="1">
- checked value="0"> -
- checked value="1">
- checked value="0"> -

-
- checked value="0">
- checked value="1"> -
  
  
:
:
  
:
:
-
- - - - -
- -
- - + + + + + + <?-- "Settings for User" --/?><?slang id="1000"/?> + <?-- CSS --?><?slang id="1"/?> + + + + +
+



+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
+ ()
  
:
:
:
  
+ checked value="1">
+ checked value="0"> +
+ checked value="1">
+ checked value="0"> +

+
+ checked value="0">
+ checked value="1"> +
  
  
:
:
  
:
:
+
+ + + + +
+ +
+ + \ No newline at end of file diff --git a/templates/stats/classic/wordstats.tpl b/templates/stats/classic/wordstats.tpl index cc7de55..8a896e0 100644 --- a/templates/stats/classic/wordstats.tpl +++ b/templates/stats/classic/wordstats.tpl @@ -1,14 +1,14 @@ -
-
- - - - - - - - - - - +
+
+
()
+ + + + + + + + + +
()
\ No newline at end of file