0.4.4: troja & cleanup

This commit is contained in:
onli 2012-01-08 20:56:13 +01:00
parent b6b11b993b
commit e07d905305
17 changed files with 385 additions and 376 deletions

View file

@ -1,3 +1,8 @@
0.4.4:
* Added menu options in import menu for troja
* Recycler will only delete selected comments (all if none selected)
* prevented external parties to fetch spamblock-database (ddos-attackvector)
0.4.3:
* Fixed error when using safari

View file

@ -1,6 +1,7 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Dokumentace: Spamblock (Bayes)</title>
</head>
@ -8,60 +9,9 @@
<h1>Dokumentace k pluginu 'Spamblock (Bayes)'</h1>
<p>Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 4.7.2011. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i <a href="../documentation_de.html">aktuální německou dokumentaci</a> a <a href="../ChangeLog"> anglický ChangeLog</a>.
<p>Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 8.1.2011. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i <a href="../ChangeLog">aktuální anglický ChangeLog</a>.
<p>
<h2>O pluginu</h2>
<p>
Plugin Spamblock-Bayes se pokouší zjistit, jestli je nový komentář spam, nebo platný komentář (nespam = ham), a to pomocí statistické analýzy výskytu slov v komentáři.
</p>
<p>
Za tímto účelem si vytváří lokální databázi, ze které se plugin učí hodnotit nové komentáře z hodnocení starých komentářů.
</p>
<h2>Spam-faktor</h2>
<p>
Základní myšlenkou je přiřazení spam-faktorů komentářům. Tento faktor se pohybuje od 0% (čistý komentář) do 100% (určitě spam). Spam-faktor klesá nebo stoupá podle hodnocení podobných komentářů.
</p>
<h2>Využití</h2>
<p>
Na stránce "Komentáře" budou během instalace pluginu ke každému komentáři přidána dvě tlačítka (Spam a Ham) a ukazatel v procentech. Pomocí tlačítek lze jednotlivé komentáře ohodnotit. Komentáře označené jako "Spam" budou přesunuty do koše (nebo rovnou smazány, pokud je koš vypnut v nastavení). Měřítko v procentech ukazuje Spam-faktor každého z komentářů.
</p>
<h3>Rozšířené menu</h3>
<p>
Na hlavní stránce administrativní sekce bude přidáno menu pojmenované "Spamblock (Bayes)". Toto je rozšířené menu, které není nezbytně nutné pro základní funkce pluginu.
</p>
<p>
Dále jsou vysvětleny funkce jednotlivých podmenu.
</p>
<h4>Učit se</h4>
<p>
Formulář obsahuje všechna pole, které může obsahovat komentář, jako je například text komentáře nebo domovská URL adresa. Zde je možné zadat konkrétní slova, která se má plugin naučit. Toto nastavení slouží k přesnému vyladění filtrů, které by mělo být potřeba jen ve výjimečných případech.
</p>
<h4>Databáze</h4>
V obou tabulkách je zobrazen pouze přehled o obsahu databáze. Menu na této stránce nicméně poskytuje důležité funkce.
<dl><dt>Vytvořit databázi</dt>
<dd>Vytvoří znovu databázi, pokud byla smazána nebo pokud nebyla správně založena při instalaci.</dd>
<dt>Učit se ze starších</dt>
<dd>Naučí se existující komentáře jako Ham (=nespam) a obsah spamlogů jako Spam</dd>
<dt>Vymazat databázi</dt>
<dd>Vymaže celou databázi. To může mít smysl např. pokud měníte jazyk blogu nebo pokud se filtr naučil příliš mnoho výrazů špatně.</dd>
</dl>
<h4>Koš</h4>
<p>
Smazané nebo neschválené komentáře zde mohou být definitivně smazány nebo obnoveny.
</p>
<h4>Analýza</h4>
<p>
Spamblock-Bayes hodnotí každé pole komentáře samostatně. To se ale neprojevuje v procentním ohodnocení komentáře v přehledu komentářů. Zde je ale možné prohlédnout si jednotlivé výsledky.
</p>
<h2>Poděkování</h2>
Děkuji autorům jQuery pluginů, které jsem použil:
<ul>
@ -73,24 +23,6 @@ Děkuji autorům jQuery pluginů, které jsem použil:
<h2>Historie verzí (ChangeLog)</h2>
<ul>
<li>Verze 0.4.3:</li>
<ul>
<li>Opravena chyba při prohlížení v Safari</li>
</ul>
<li>Verze 0.4.2:</li>
<ul>
<li>Přidána dokumentace (německá)</li>
<li>Drobné změny CSS stylů v rozšířeném menu</li>
<li>Neuložení nastavení už nezabraňuje natažení javascriptu</li>
</ul>
<li>Verze 0.4.1:</li>
<ul>
<li>Komentáře ručně označené jako spam jsou přesunuty do koše místo trvalého smazání.</li>
</ul>
<li>Verze 0.4:</li>
<ul>
<li>jQuery nyní může být součástí Serendipity</li>
</ul>
<li>Verze 0.3.9.3:</li>
<ul>
<li>Změněno počítání komentářů při importu</li>

View file

@ -1,6 +1,7 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Dokumentace: Spamblock (Bayes)</title>
</head>
@ -8,60 +9,9 @@
<h1>Dokumentace k pluginu 'Spamblock (Bayes)'</h1>
<p>Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 4.7.2011. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i <a href="../documentation_de.html">aktuální německou dokumentaci</a> a <a href="../ChangeLog"> anglický ChangeLog</a>.
<p>Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 8.1.2011. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i <a href="../ChangeLog">aktuální anglický ChangeLog</a>.
<p>
<h2>O pluginu</h2>
<p>
Plugin Spamblock-Bayes se pokouší zjistit, jestli je nový komentář spam, nebo platný komentář (nespam = ham), a to pomocí statistické analýzy výskytu slov v komentáři.
</p>
<p>
Za tímto účelem si vytváří lokální databázi, ze které se plugin učí hodnotit nové komentáře z hodnocení starých komentářů.
</p>
<h2>Spam-faktor</h2>
<p>
Základní myšlenkou je přiřazení spam-faktorů komentářům. Tento faktor se pohybuje od 0% (čistý komentář) do 100% (určitě spam). Spam-faktor klesá nebo stoupá podle hodnocení podobných komentářů.
</p>
<h2>Využití</h2>
<p>
Na stránce "Komentáře" budou během instalace pluginu ke každému komentáři přidána dvě tlačítka (Spam a Ham) a ukazatel v procentech. Pomocí tlačítek lze jednotlivé komentáře ohodnotit. Komentáře označené jako "Spam" budou přesunuty do koše (nebo rovnou smazány, pokud je koš vypnut v nastavení). Měřítko v procentech ukazuje Spam-faktor každého z komentářů.
</p>
<h3>Rozšířené menu</h3>
<p>
Na hlavní stránce administrativní sekce bude přidáno menu pojmenované "Spamblock (Bayes)". Toto je rozšířené menu, které není nezbytně nutné pro základní funkce pluginu.
</p>
<p>
Dále jsou vysvětleny funkce jednotlivých podmenu.
</p>
<h4>Učit se</h4>
<p>
Formulář obsahuje všechna pole, které může obsahovat komentář, jako je například text komentáře nebo domovská URL adresa. Zde je možné zadat konkrétní slova, která se má plugin naučit. Toto nastavení slouží k přesnému vyladění filtrů, které by mělo být potřeba jen ve výjimečných případech.
</p>
<h4>Databáze</h4>
V obou tabulkách je zobrazen pouze přehled o obsahu databáze. Menu na této stránce nicméně poskytuje důležité funkce.
<dl><dt>Vytvořit databázi</dt>
<dd>Vytvoří znovu databázi, pokud byla smazána nebo pokud nebyla správně založena při instalaci.</dd>
<dt>Učit se ze starších</dt>
<dd>Naučí se existující komentáře jako Ham (=nespam) a obsah spamlogů jako Spam</dd>
<dt>Vymazat databázi</dt>
<dd>Vymaže celou databázi. To může mít smysl např. pokud měníte jazyk blogu nebo pokud se filtr naučil příliš mnoho výrazů špatně.</dd>
</dl>
<h4>Koš</h4>
<p>
Smazané nebo neschválené komentáře zde mohou být definitivně smazány nebo obnoveny.
</p>
<h4>Analýza</h4>
<p>
Spamblock-Bayes hodnotí každé pole komentáře samostatně. To se ale neprojevuje v procentním ohodnocení komentáře v přehledu komentářů. Zde je ale možné prohlédnout si jednotlivé výsledky.
</p>
<h2>Poděkování</h2>
Děkuji autorům jQuery pluginů, které jsem použil:
<ul>
@ -73,24 +23,6 @@ Děkuji autorům jQuery pluginů, které jsem použil:
<h2>Historie verzí (ChangeLog)</h2>
<ul>
<li>Verze 0.4.3:</li>
<ul>
<li>Opravena chyba při prohlížení v Safari</li>
</ul>
<li>Verze 0.4.2:</li>
<ul>
<li>Přidána dokumentace (německá)</li>
<li>Drobné změny CSS stylů v rozšířeném menu</li>
<li>Neuložení nastavení už nezabraňuje natažení javascriptu</li>
</ul>
<li>Verze 0.4.1:</li>
<ul>
<li>Komentáře ručně označené jako spam jsou přesunuty do koše místo trvalého smazání.</li>
</ul>
<li>Verze 0.4:</li>
<ul>
<li>jQuery nyní může být součástí Serendipity</li>
</ul>
<li>Verze 0.3.9.3:</li>
<ul>
<li>Změněno počítání komentářů při importu</li>

View file

@ -1,7 +1,7 @@
<?php # lang_cs.inc.php 1.6 2011-03-05 13:16:22 VladaAjgl $
<?php # lang_cs.inc.php 1.5 2010-11-26 18:34:41 VladaAjgl $
/**
* @version 1.6
* @version 1.5
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @translated 2009/11/07
* @author Vladimír Ajgl <vlada@ajgl.cz>
@ -14,8 +14,6 @@
* @revisionDate 2010/09/12
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @revisionDate 2010/11/26
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @revisionDate 2011/03/05
*/
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_NAME', 'Spamblock (Bayes)');
@ -76,7 +74,10 @@
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_ANALYSIS', 'Analýza');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE', 'Přemostění koše');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE_DESC', 'Komentáře s hodnocením větším nebo rovném než je tato hodnota nebudou zahozeny do koše, nýbrž rovnou smazány. Příklad: 98');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE', 'Ignorovat');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE_DESC', 'Zadejte pole komentáře, které budou ignorovány. Možné hodnoty: ip, referer, author, body, email, url. Příklad: "ip, referer".');
// Next lines were translated on 2010/11/26
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_EXPORTDB', 'Export databáze');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORTDB', 'Import databáze');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Iportovat dříve vygenerovaný CSV soubory. Načtená data filtru budou přidána do databáze.');

View file

@ -1,7 +1,7 @@
<?php # lang_cz.inc.php 1.6 2011-03-05 13:16:22 VladaAjgl $
<?php # lang_cz.inc.php 1.5 2010-11-26 18:34:41 VladaAjgl $
/**
* @version 1.6
* @version 1.5
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @translated 2009/11/07
* @author Vladimír Ajgl <vlada@ajgl.cz>
@ -14,8 +14,6 @@
* @revisionDate 2010/09/12
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @revisionDate 2010/11/26
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @revisionDate 2011/03/05
*/
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_NAME', 'Spamblock (Bayes)');
@ -76,7 +74,10 @@
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_ANALYSIS', 'Analýza');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE', 'Přemostění koše');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE_DESC', 'Komentáře s hodnocením větším nebo rovném než je tato hodnota nebudou zahozeny do koše, nýbrž rovnou smazány. Příklad: 98');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE', 'Ignorovat');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE_DESC', 'Zadejte pole komentáře, které budou ignorovány. Možné hodnoty: ip, referer, author, body, email, url. Příklad: "ip, referer".');
// Next lines were translated on 2010/11/26
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_EXPORTDB', 'Export databáze');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORTDB', 'Import databáze');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Iportovat dříve vygenerovaný CSV soubory. Načtená data filtru budou přidána do databáze.');

View file

@ -1,7 +1,7 @@
<?php
/**
* @version $Revision$
* @version $Revision: 1.10 $
* @author Translator Name <yourmail@example.com>
* EN-Revision: Revision of lang_en.inc.php
*/
@ -43,7 +43,7 @@ define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAMBUTTON', 'Als Spam lernen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_DATABASE', 'Datenbank');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_RECYCLER', 'Papierkorb');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_CREATEDB', 'Datenbank erstellen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LEARNOLD', 'Altes einlernen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LEARNOLD', 'Kommentare einlernen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_ERASEDB', 'Datenbank löschen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SAVEDVALUES', 'Eingeordnete Kommentare');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU', 'Menü');
@ -59,5 +59,11 @@ define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAMBUTTON', 'Als Spam lernen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_EXPORTDB', 'Datenbank exportieren');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORTDB', 'Datenbank importieren');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Hier kann eine CSV-Datei, die in einem anderen Blog mit der Export-Funktion erstellt wurde, importiert werden. Die enthaltenen Daten über Spam und valide Kommentare werden der eigenen Datenbank hinzugefügt.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_IMPORT', 'Import');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Importiert eine CVS-Datei, deren Inhalt der Spamdatenbank hinzugefügt wird.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_EXPLANATION', 'Die Spamdatenbank eines registrierten Blogs einlernen oder den eigenen Blog als Quelle hinzufügen.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA', 'Online-Import');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_IMPORT', 'Importieren');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_REGISTER', 'Blog hinzufügen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_REMOVE', 'Blog entfernen');
?>

View file

@ -1,7 +1,7 @@
<?php
/**
* @version $Revision$
* @version $Revision: 1.7 $
* @author Translator Name <yourmail@example.com>
* EN-Revision: Revision of lang_en.inc.php
*/
@ -40,8 +40,9 @@
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_LEARN', 'Learn');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_DATABASE', 'Database');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_RECYCLER', 'Recycler');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_IMPORT', 'Import');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_CREATEDB', 'Create Database');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LEARNOLD', 'Learn from Old');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LEARNOLD', 'Learn from comments');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_ERASEDB', 'Erase Database');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SAVEDVALUES', 'Rated comments');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU', 'Menu');
@ -52,5 +53,14 @@
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_ANALYSIS', 'Analysis');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE', 'Recyler Bypass');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE_DESC', 'Comments with a rating equal or higher this value will not be thrown into the recycler, they will be deleted. Example: 98');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Import a previously generated CSV-file. The included characteristics of spam and comments will be become a part of your database.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE', 'Ignore');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE_DESC', 'Parts of comments to be ignored. Possible values: ip, referer, author, body, email, url. Beispiel: "ip, referer".');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_EXPORTDB', 'Export Database');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORTDB', 'Import Database');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Import a previously generated CSV-file. The included characteristics of spam and comments will become a part of your database.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_EXPLANATION', 'You can import the spam-database of another blog. Register, and other blogs will learn from you spam-database.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA', 'Online Import');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_IMPORT', 'Import');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_REGISTER', 'Add this blog');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_REMOVE', 'Remove this blog');
?>

View file

@ -219,7 +219,7 @@ function getAllRatings() {
}
//Something like this don't exist in Javascript
function getElementByClass(classname, node, tag) {
function getElementByClass(className, node, tag) {
if (node == null) {
node = document;
}
@ -231,7 +231,7 @@ function getElementByClass(classname, node, tag) {
var length = allHTMLTags.length;
for (var i=0; i < length; i++) {
//multiple classes are in the same string, so search carefully
if (allHTMLTags[i].className.indexOf(classname) != -1) {
if (allHTMLTags[i].className.indexOf(className) != -1) {
classes.push(allHTMLTags[i]);
}
}

View file

@ -1,6 +1,7 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Dokumentace: Spamblock (Bayes)</title>
</head>
@ -8,60 +9,9 @@
<h1>Dokumentace k pluginu 'Spamblock (Bayes)'</h1>
<p>Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 4.7.2011. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i <a href="documentation_de.html">aktuální německou dokumentaci</a> a <a href="ChangeLog"> anglický ChangeLog</a>.
<p>Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 8.1.2011. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i <a href="ChangeLog">aktuální anglický ChangeLog</a>.
<p>
<h2>O pluginu</h2>
<p>
Plugin Spamblock-Bayes se pokouší zjistit, jestli je nový komentář spam, nebo platný komentář (nespam = ham), a to pomocí statistické analýzy výskytu slov v komentáři.
</p>
<p>
Za tímto účelem si vytváří lokální databázi, ze které se plugin učí hodnotit nové komentáře z hodnocení starých komentářů.
</p>
<h2>Spam-faktor</h2>
<p>
Základní myšlenkou je přiřazení spam-faktorů komentářům. Tento faktor se pohybuje od 0% (čistý komentář) do 100% (určitě spam). Spam-faktor klesá nebo stoupá podle hodnocení podobných komentářů.
</p>
<h2>Využití</h2>
<p>
Na stránce "Komentáře" budou během instalace pluginu ke každému komentáři přidána dvě tlačítka (Spam a Ham) a ukazatel v procentech. Pomocí tlačítek lze jednotlivé komentáře ohodnotit. Komentáře označené jako "Spam" budou přesunuty do koše (nebo rovnou smazány, pokud je koš vypnut v nastavení). Měřítko v procentech ukazuje Spam-faktor každého z komentářů.
</p>
<h3>Rozšířené menu</h3>
<p>
Na hlavní stránce administrativní sekce bude přidáno menu pojmenované "Spamblock (Bayes)". Toto je rozšířené menu, které není nezbytně nutné pro základní funkce pluginu.
</p>
<p>
Dále jsou vysvětleny funkce jednotlivých podmenu.
</p>
<h4>Učit se</h4>
<p>
Formulář obsahuje všechna pole, které může obsahovat komentář, jako je například text komentáře nebo domovská URL adresa. Zde je možné zadat konkrétní slova, která se má plugin naučit. Toto nastavení slouží k přesnému vyladění filtrů, které by mělo být potřeba jen ve výjimečných případech.
</p>
<h4>Databáze</h4>
V obou tabulkách je zobrazen pouze přehled o obsahu databáze. Menu na této stránce nicméně poskytuje důležité funkce.
<dl><dt>Vytvořit databázi</dt>
<dd>Vytvoří znovu databázi, pokud byla smazána nebo pokud nebyla správně založena při instalaci.</dd>
<dt>Učit se ze starších</dt>
<dd>Naučí se existující komentáře jako Ham (=nespam) a obsah spamlogů jako Spam</dd>
<dt>Vymazat databázi</dt>
<dd>Vymaže celou databázi. To může mít smysl např. pokud měníte jazyk blogu nebo pokud se filtr naučil příliš mnoho výrazů špatně.</dd>
</dl>
<h4>Koš</h4>
<p>
Smazané nebo neschválené komentáře zde mohou být definitivně smazány nebo obnoveny.
</p>
<h4>Analýza</h4>
<p>
Spamblock-Bayes hodnotí každé pole komentáře samostatně. To se ale neprojevuje v procentním ohodnocení komentáře v přehledu komentářů. Zde je ale možné prohlédnout si jednotlivé výsledky.
</p>
<h2>Podìkování</h2>
Dìkuji autorùm jQuery pluginù, které jsem použil:
<ul>
@ -73,24 +23,6 @@ D
<h2>Historie verzí (ChangeLog)</h2>
<ul>
<li>Verze 0.4.3:</li>
<ul>
<li>Opravena chyba při prohlížení v Safari</li>
</ul>
<li>Verze 0.4.2:</li>
<ul>
<li>Přidána dokumentace (německá)</li>
<li>Drobné změny CSS stylů v rozšířeném menu</li>
<li>Neuložení nastavení už nezabraňuje natažení javascriptu</li>
</ul>
<li>Verze 0.4.1:</li>
<ul>
<li>Komentáře ručně označené jako spam jsou přesunuty do koše místo trvalého smazání.</li>
</ul>
<li>Verze 0.4:</li>
<ul>
<li>jQuery nyní může být součástí Serendipity</li>
</ul>
<li>Verze 0.3.9.3:</li>
<ul>
<li>Zmìnìno poèítání komentáøù pøi importu</li>

View file

@ -1,6 +1,7 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Dokumentace: Spamblock (Bayes)</title>
</head>
@ -8,60 +9,9 @@
<h1>Dokumentace k pluginu 'Spamblock (Bayes)'</h1>
<p>Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 4.7.2011. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i <a href="documentation_de.html">aktuální německou dokumentaci</a> a <a href="ChangeLog"> anglický ChangeLog</a>.
<p>Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) dne 8.1.2011. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i <a href="ChangeLog">aktuální anglický ChangeLog</a>.
<p>
<h2>O pluginu</h2>
<p>
Plugin Spamblock-Bayes se pokouší zjistit, jestli je nový komentář spam, nebo platný komentář (nespam = ham), a to pomocí statistické analýzy výskytu slov v komentáři.
</p>
<p>
Za tímto účelem si vytváří lokální databázi, ze které se plugin učí hodnotit nové komentáře z hodnocení starých komentářů.
</p>
<h2>Spam-faktor</h2>
<p>
Základní myšlenkou je přiřazení spam-faktorů komentářům. Tento faktor se pohybuje od 0% (čistý komentář) do 100% (určitě spam). Spam-faktor klesá nebo stoupá podle hodnocení podobných komentářů.
</p>
<h2>Využití</h2>
<p>
Na stránce "Komentáře" budou během instalace pluginu ke každému komentáři přidána dvě tlačítka (Spam a Ham) a ukazatel v procentech. Pomocí tlačítek lze jednotlivé komentáře ohodnotit. Komentáře označené jako "Spam" budou přesunuty do koše (nebo rovnou smazány, pokud je koš vypnut v nastavení). Měřítko v procentech ukazuje Spam-faktor každého z komentářů.
</p>
<h3>Rozšířené menu</h3>
<p>
Na hlavní stránce administrativní sekce bude přidáno menu pojmenované "Spamblock (Bayes)". Toto je rozšířené menu, které není nezbytně nutné pro základní funkce pluginu.
</p>
<p>
Dále jsou vysvětleny funkce jednotlivých podmenu.
</p>
<h4>Učit se</h4>
<p>
Formulář obsahuje všechna pole, které může obsahovat komentář, jako je například text komentáře nebo domovská URL adresa. Zde je možné zadat konkrétní slova, která se má plugin naučit. Toto nastavení slouží k přesnému vyladění filtrů, které by mělo být potřeba jen ve výjimečných případech.
</p>
<h4>Databáze</h4>
V obou tabulkách je zobrazen pouze přehled o obsahu databáze. Menu na této stránce nicméně poskytuje důležité funkce.
<dl><dt>Vytvořit databázi</dt>
<dd>Vytvoří znovu databázi, pokud byla smazána nebo pokud nebyla správně založena při instalaci.</dd>
<dt>Učit se ze starších</dt>
<dd>Naučí se existující komentáře jako Ham (=nespam) a obsah spamlogů jako Spam</dd>
<dt>Vymazat databázi</dt>
<dd>Vymaže celou databázi. To může mít smysl např. pokud měníte jazyk blogu nebo pokud se filtr naučil příliš mnoho výrazů špatně.</dd>
</dl>
<h4>Koš</h4>
<p>
Smazané nebo neschválené komentáře zde mohou být definitivně smazány nebo obnoveny.
</p>
<h4>Analýza</h4>
<p>
Spamblock-Bayes hodnotí každé pole komentáře samostatně. To se ale neprojevuje v procentním ohodnocení komentáře v přehledu komentářů. Zde je ale možné prohlédnout si jednotlivé výsledky.
</p>
<h2>Podìkování</h2>
Dìkuji autorùm jQuery pluginù, které jsem pou¾il:
<ul>
@ -73,24 +23,6 @@ D
<h2>Historie verzí (ChangeLog)</h2>
<ul>
<li>Verze 0.4.3:</li>
<ul>
<li>Opravena chyba při prohlížení v Safari</li>
</ul>
<li>Verze 0.4.2:</li>
<ul>
<li>Přidána dokumentace (německá)</li>
<li>Drobné změny CSS stylů v rozšířeném menu</li>
<li>Neuložení nastavení už nezabraňuje natažení javascriptu</li>
</ul>
<li>Verze 0.4.1:</li>
<ul>
<li>Komentáře ručně označené jako spam jsou přesunuty do koše místo trvalého smazání.</li>
</ul>
<li>Verze 0.4:</li>
<ul>
<li>jQuery nyní může být součástí Serendipity</li>
</ul>
<li>Verze 0.3.9.3:</li>
<ul>
<li>Zmìnìno poèítání komentáøù pøi importu</li>

View file

@ -1,7 +1,7 @@
<?php # lang_cs.inc.php 1.6 2011-03-05 13:16:22 VladaAjgl $
<?php # lang_cs.inc.php 1.5 2010-11-26 18:34:41 VladaAjgl $
/**
* @version 1.6
* @version 1.5
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @translated 2009/11/07
* @author Vladimír Ajgl <vlada@ajgl.cz>
@ -14,8 +14,6 @@
* @revisionDate 2010/09/12
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @revisionDate 2010/11/26
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @revisionDate 2011/03/05
*/
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_NAME', 'Spamblock (Bayes)');
@ -76,7 +74,10 @@
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_ANALYSIS', 'Analýza');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE', 'Pøemostìní koše');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE_DESC', 'Komentáøe s hodnocením vìtším nebo rovném než je tato hodnota nebudou zahozeny do koše, nýbrž rovnou smazány. Pøíklad: 98');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE', 'Ignorovat');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE_DESC', 'Zadejte pole komentáøe, které budou ignorovány. Možné hodnoty: ip, referer, author, body, email, url. Pøíklad: "ip, referer".');
// Next lines were translated on 2010/11/26
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_EXPORTDB', 'Export databáze');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORTDB', 'Import databáze');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Iportovat døíve vygenerovaný CSV soubory. Naètená data filtru budou pøidána do databáze.');

View file

@ -1,7 +1,7 @@
<?php # lang_cz.inc.php 1.6 2011-03-05 13:16:22 VladaAjgl $
<?php # lang_cz.inc.php 1.5 2010-11-26 18:34:41 VladaAjgl $
/**
* @version 1.6
* @version 1.5
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @translated 2009/11/07
* @author Vladimír Ajgl <vlada@ajgl.cz>
@ -14,8 +14,6 @@
* @revisionDate 2010/09/12
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @revisionDate 2010/11/26
* @author Vladimír Ajgl <vlada@ajgl.cz>
* @revisionDate 2011/03/05
*/
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_NAME', 'Spamblock (Bayes)');
@ -76,7 +74,10 @@
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_ANALYSIS', 'Analýza');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE', 'Pøemostìní ko¹e');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE_DESC', 'Komentáøe s hodnocením vìt¹ím nebo rovném ne¾ je tato hodnota nebudou zahozeny do ko¹e, nýbr¾ rovnou smazány. Pøíklad: 98');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE', 'Ignorovat');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE_DESC', 'Zadejte pole komentáøe, které budou ignorovány. Mo¾né hodnoty: ip, referer, author, body, email, url. Pøíklad: "ip, referer".');
// Next lines were translated on 2010/11/26
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_EXPORTDB', 'Export databáze');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORTDB', 'Import databáze');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Iportovat døíve vygenerovaný CSV soubory. Naètená data filtru budou pøidána do databáze.');

View file

@ -1,7 +1,7 @@
<?php
/**
* @version $Revision$
* @version $Revision: 1.10 $
* @author Translator Name <yourmail@example.com>
* EN-Revision: Revision of lang_en.inc.php
*/
@ -43,7 +43,7 @@ define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAMBUTTON', 'Als Spam lernen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_DATABASE', 'Datenbank');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_RECYCLER', 'Papierkorb');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_CREATEDB', 'Datenbank erstellen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LEARNOLD', 'Altes einlernen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LEARNOLD', 'Kommentare einlernen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_ERASEDB', 'Datenbank löschen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SAVEDVALUES', 'Eingeordnete Kommentare');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU', 'Menü');
@ -59,5 +59,11 @@ define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SPAMBUTTON', 'Als Spam lernen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_EXPORTDB', 'Datenbank exportieren');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORTDB', 'Datenbank importieren');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Hier kann eine CSV-Datei, die in einem anderen Blog mit der Export-Funktion erstellt wurde, importiert werden. Die enthaltenen Daten über Spam und valide Kommentare werden der eigenen Datenbank hinzugefügt.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_IMPORT', 'Import');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Importiert eine CVS-Datei, deren Inhalt der Spamdatenbank hinzugefügt wird.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_EXPLANATION', 'Die Spamdatenbank eines registrierten Blogs einlernen oder den eigenen Blog als Quelle hinzufügen.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA', 'Online-Import');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_IMPORT', 'Importieren');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_REGISTER', 'Blog hinzufügen');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_REMOVE', 'Blog entfernen');
?>

View file

@ -1,7 +1,7 @@
<?php
/**
* @version $Revision$
* @version $Revision: 1.7 $
* @author Translator Name <yourmail@example.com>
* EN-Revision: Revision of lang_en.inc.php
*/
@ -40,8 +40,9 @@
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_LEARN', 'Learn');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_DATABASE', 'Database');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_RECYCLER', 'Recycler');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_IMPORT', 'Import');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_CREATEDB', 'Create Database');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LEARNOLD', 'Learn from Old');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_LEARNOLD', 'Learn from comments');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_ERASEDB', 'Erase Database');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_SAVEDVALUES', 'Rated comments');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU', 'Menu');
@ -52,5 +53,14 @@
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_ANALYSIS', 'Analysis');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE', 'Recyler Bypass');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_RECYCLER_DELETE_DESC', 'Comments with a rating equal or higher this value will not be thrown into the recycler, they will be deleted. Example: 98');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Import a previously generated CSV-file. The included characteristics of spam and comments will be become a part of your database.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE', 'Ignore');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IGNORE_DESC', 'Parts of comments to be ignored. Possible values: ip, referer, author, body, email, url. Beispiel: "ip, referer".');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_EXPORTDB', 'Export Database');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORTDB', 'Import Database');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION', 'Import a previously generated CSV-file. The included characteristics of spam and comments will become a part of your database.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_EXPLANATION', 'You can import the spam-database of another blog. Register, and other blogs will learn from you spam-database.');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA', 'Online Import');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_IMPORT', 'Import');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_REGISTER', 'Add this blog');
@define('PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_REMOVE', 'Remove this blog');
?>

View file

@ -0,0 +1,6 @@
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCyUQQGNlUmGwwPWz11ZGndNyrv
xxg/V7ldOlUSw3kNuhhAbNk+DT05soHsEXPKQHudE9P2WrHv8UtgdQBiQkbpzNGY
vFePrT3gvvm/YfMYOkfhphBm/6ZHdg0l5HN+YRQ0+5oaZD7s3tLRROnucAY5qSeb
j0fKR1EfeOIO/r4tTQIDAQAB
-----END PUBLIC KEY-----

View file

@ -126,4 +126,13 @@ label {
}
input[type="submit"] {
cursor: pointer;
}
}
.bayesTrojaButtons {
display: inline;
}
fieldset {
display: inline-block;
}
#trojaImport {
margin-left: 1.1em;
}

View file

@ -16,8 +16,10 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
//store serendipity[GET] when loading the menu for later use in the
//menu itself
var $get;
//maps from the names used in this plugin to the names
//used in the db
var $trojaUrl = "foo.ptlx.de:8124/";
//Stores the needed structure of the comment (e.g. $comment['author'] shall store the name of the author, like s9y_comments)
var $type = array( 'ip' => 'ip',
'referrer' => 'referer',
'email' => 'email',
@ -34,7 +36,7 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
$this->title = PLUGIN_EVENT_SPAMBLOCK_BAYES_NAME;
$propbag->add ( 'description', PLUGIN_EVENT_SPAMBLOCK_BAYES_DESC);
$propbag->add ( 'name', $this->title);
$propbag->add ( 'version', '0.4.3' );
$propbag->add ( 'version', '0.4.4' );
$propbag->add ( 'event_hooks', array ('frontend_saveComment' => true,
'backend_spamblock_comments_shown' => true,
'external_plugin' => true,
@ -42,7 +44,10 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
'backend_comments_top' => true,
'backend_sendcomment' => true,
'backend_sidebar_entries' => true,
'backend_sidebar_entries_event_display_spamblock_bayes' => true
'backend_sidebar_entries_event_display_spamblock_bayes' => true,
/*'xmlrpc_comment_spam' => true,
'xmlrpc_comment_pending' => true,
'xmlrpc_comment_approve' => true,*/
));
$propbag->add ( 'groups', array ('ANTISPAM' ) );
$propbag->add ( 'author', 'kleinerChemiker, Malte Paskuda, based upon b8 by Tobias Leupold');
@ -199,7 +204,6 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
/*
* get ratings of every part of the comment and combine
* Wrapper for classify()
* $db: true if comment is fetched from db
*/
function startClassify($comment) {
$divider = 0;
@ -248,7 +252,7 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
function startLearn($comment, $category) {
$types = array_keys($this->type);
foreach ($types as $type) {
$this->learn($comment[$type], $category, $this->type[$type]);
$this->learn($comment[$this->type[$type]], $category, $this->type[$type]);
}
}
@ -356,7 +360,7 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
if ($type == $this->type['ip']) {
$tokens = array( $text => 1);
} else {
$tokens = $this->tokenize($text, $type);
$tokens = $this->tokenize($text);
}
$words = array_keys($tokens);
@ -803,8 +807,13 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
if (!serendipity_checkPermission('adminComments')) {
break;
}
if ( !empty($_REQUEST['serendipity']['selected'])) {
$ids = array_keys($_REQUEST['serendipity']['selected']);
} else {
$ids = array();
}
if(isset($_REQUEST['restore'])) {
if ( !empty($_REQUEST['serendipity']['selected'])) {
if ( !empty($ids)) {
$ids = array_keys($_REQUEST['serendipity']['selected']);
#When restoring a comment we can be pretty sure it's a valid one
$comments = $this->getRecyclerComment($ids);
@ -833,12 +842,20 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
}
if(isset($_REQUEST['empty'])) {
if (isset($_REQUEST['recyclerSpam'])) {
$comments = $this->getAllRecyclerComments();
if (empty($ids)) {
$comments = $this->getAllRecyclerComments();
} else {
$comments = $this->getRecyclerComment($ids);
}
foreach ($comments as $comment) {
$this->startLearn($comment, 'spam');
}
}
$success = $this->emptyRecycler();
if (empty($ids)) {
$success = $this->emptyRecycler();
} else {
$success = $this->deleteFromRecycler($ids);
}
if (serendipity_db_bool($success)) {
$msg = 'Recycler emptied';
$msgtype = 'success';
@ -915,10 +932,161 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
break;
case 'bayesExportDatabase':
$key = $_POST['key'];
$exportKey = $this->get_config('exportKey', "");
if (! ((serendipity_checkPermission('adminComments'))
||
((! $exportKey == "")
&&
($exportKey == $key)))) {
break;
}
$this->set_config('exportKey', "");
$this->exportDatabase();
header('Content-type: application/x-download');
header('Content-Disposition: attachment; filename=spamblock_bayes.csv');
echo file_get_contents($serendipity['serendipityPath']. 'templates_c/spamblock_bayes.csv');
break;
case 'bayesTrojaGetKey':
$publicTrojaKey = openssl_get_publickey(file_get_contents(dirname(__FILE__). '/publicTrojaKey.pem'));
header('HTTP/1.1 200 OK');
$key = mt_rand();
$this->set_config('exportKey', $key);
openssl_public_encrypt($key, $enc_key, $publicTrojaKey, OPENSSL_PKCS1_PADDING);
echo base64_encode($enc_key);
break;
case 'bayesTrojaRegister':
if (!serendipity_checkPermission('adminComments')) {
break;
}
$this->set_config('awaitingTrojaRequest', true);
$this->set_config('troja_registered', true);
$trojaUrlTarget = $this->trojaUrl . 'register';
$data = array('url' => $serendipity['baseURL']);
$trojaUrlTarget .= "?" . http_build_query($data);
$response = $this->getRequest($trojaUrlTarget);
parse_str($response, $params);
$registered = urldecode($params['registered']);
if ($registered == 1) {
$msg = "Registered";
$msgtype = "success";
} else {
$msg = "Could not register this blog (already registered?)";
$msgtype = "error";
}
$redirect = '<meta http-equiv="REFRESH" content="0;url=';
$url = 'serendipity_admin.php?serendipity[adminModule]=event_display';
$url .= '&amp;serendipity[adminAction]=spamblock_bayes';
$url .= '&amp;serendipity[subpage]=5';
$url .= '&amp;serendipity['.$msgtype.']='.$msg.'">';
echo $redirect . $url;
break;
case 'bayesTrojaRemove':
if (!serendipity_checkPermission('adminComments')) {
break;
}
$this->set_config('awaitingTrojaRequest', true);
$this->set_config('troja_registered', false);
$trojaUrlTarget = $this->trojaUrl . 'remove';
$data = array('url' => $serendipity['baseURL']);
$trojaUrlTarget .= "?" . http_build_query($data);
$response = $this->getRequest($trojaUrlTarget);
parse_str($response, $params);
$removed = urldecode($params['removed']);
if ($removed == 1) {
$msg = "Removed";
$msgtype = "success";
} else {
$msg = "Could not remove this blog";
$msgtype = "error";
}
$redirect = '<meta http-equiv="REFRESH" content="0;url=';
$url = 'serendipity_admin.php?serendipity[adminModule]=event_display';
$url .= '&amp;serendipity[adminAction]=spamblock_bayes';
$url .= '&amp;serendipity[subpage]=5';
$url .= '&amp;serendipity['.$msgtype.']='.$msg.'">';
echo $redirect . $url;
break;
case 'bayesTrojaAccept':
$waiting = serendipity_db_bool($this->get_config('awaitingTrojaRequest', false));
if ($waiting === true) {
header('HTTP/1.1 200 OK');
$this->set_config('awaitingTrojaRequest', false);
} else {
header('HTTP/1.1 403 Forbidden');
}
echo "";
break;
case 'bayesTrojaRequestDB':
if (!serendipity_checkPermission('adminComments')) {
break;
}
$trojaUrlTarget = $this->trojaUrl . 'requestDB';
$url = $serendipity['baseURL'];
$try = 0;
while (trim($url) == $serendipity['baseURL']) {
$try++;
$response = $this->getRequest($trojaUrlTarget);
parse_str($response, $params);
$url = urldecode($params['url']);
if ($try > 3) {
break;
}
}
$key = $params['key'];
$error = false;
if (trim($url) == "http://".$serendipity['baseURL']
|| trim($url) == $serendipity['baseURL']) {
$msg = "Got only this blog as target to import from";
$msgtype = "error";
$error = true;
}
if ($url == "") {
$msg = "Got no target to import from";
$msgtype = "error";
$error = true;
}
if ($error) {
$redirect = '<meta http-equiv="REFRESH" content="0;url=';
$url = 'serendipity_admin.php?serendipity[adminModule]=event_display';
$url .= '&amp;serendipity[adminAction]=spamblock_bayes';
$url .= '&amp;serendipity[subpage]=5';
$url .= '&amp;serendipity['.$msgtype.']='.$msg.'">';
echo $redirect . $url;
return;
} else {
$msg = "Imported from $url";
$msgtype = "success";
}
$this->fetchDatabase(trim($url), $key);
$redirect = '<meta http-equiv="REFRESH" content="0;url=';
$url = 'serendipity_admin.php?serendipity[adminModule]=event_display';
$url .= '&amp;serendipity[adminAction]=spamblock_bayes';
$url .= '&amp;serendipity[subpage]=5';
$url .= '&amp;serendipity['.$msgtype.']='.$msg.'">';
echo $redirect . $url;
break;
}
return true;
break;
@ -926,12 +1094,12 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
case 'frontend_saveComment' :
if (! is_array ( $eventData ) || serendipity_db_bool ( $eventData ['allow_comments'] )) {
$serendipity ['csuccess'] = 'true';
$comment = array( 'url' => $addData['url'],
'body' => $addData['comment'],
'name' => $addData['name'],
'email' => $addData['email'],
'ip' => serendipity_db_escape_string(isset($addData['ip']) ? $addData['ip'] : $_SERVER['REMOTE_ADDR']),
'referrer' => substr((isset($_SESSION['HTTP_REFERER']) ? serendipity_db_escape_string($_SESSION['HTTP_REFERER']) : ''), 0, 200)
$comment = array( $this->type['url'] => $addData['url'],
$this->type['body'] => $addData['comment'],
$this->type['name'] => $addData['name'],
$this->type['email'] => $addData['email'],
$this->type['ip'] => serendipity_db_escape_string(isset($addData['ip']) ? $addData['ip'] : $_SERVER['REMOTE_ADDR']),
$this->type['referrer'] => substr((isset($_SESSION['HTTP_REFERER']) ? serendipity_db_escape_string($_SESSION['HTTP_REFERER']) : ''), 0, 200)
);
if ($this->checkIfSpam($comment)) {
@ -970,11 +1138,7 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
}
$comment = $eventData;
//change $comment into the needed form
$comment['referrer'] = $comment[$this->type['referrer']];
$comment['name'] = $comment[$this->type['name']];
$comment['body'] = $comment['fullBody'];
unset($comment[$this->type['referrer']]);
unset($comment[$this->type['name']]);
$comment[$this->type['body']] = $comment['fullBody'];
unset($comment['fullBody']);
$eventData['action_more'] = '<a id="ham'. $comment ['id'] .'"
@ -1083,6 +1247,19 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
$this->displayMenu($serendipity['GET']['subpage']);
return true;
break;
/*case 'xmlrpc_comment_spam' : // xml-rpc client marked this comment SPAM
$this->startLearn($eventData, 'spam');
return true;
break;
case 'xmlrpc_comment_pending' : // xml-rpc client changed comment state to pending
$this->startLearn($eventData, 'spam');
return true;
break;
case 'xmlrpc_comment_approve' : // xml-rpc client changed comment state to approved
$this->startLearn($eventData, 'ham');
return true;
break;*/
default :
return false;
@ -1093,6 +1270,22 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
}
}
function getRequest($url) {
if (function_exists('curl_init')) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close ($ch);
} else {
$options = array('http' => array(
'method' => 'GET'
));
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
}
return $response;
}
#Show the whole additional configuration, specifiy subpage for a specific tab
function displayMenu($subpage=0) {
$css = file_get_contents(dirname(__FILE__). '/serendipity_event_spamblock_bayes.css');
@ -1108,7 +1301,8 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
$menuNames = array( PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_LEARN,
PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_DATABASE,
PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_RECYCLER,
PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_ANALYSIS);
PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_ANALYSIS,
PLUGIN_EVENT_SPAMBLOCK_BAYES_MENU_IMPORT);
$menu ='<div id="bayesNav">
<ul>';
$menuLength = count($menuNames);
@ -1303,12 +1497,28 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
}
function showImportMenu() {
global $serendipity;
echo '<p>' . PLUGIN_EVENT_SPAMBLOCK_BAYES_IMPORT_EXPLANATION . '</p>
<form enctype="multipart/form-data" action="'.$serendipity ['baseURL'] . 'index.php?/plugin/spamblock_bayes_import" method="post">
<input name="importcsv" type="file" />
<input class="serendipityPrettyButton input_button" type="submit" value="'.GO.'" />
</form>
<h3>'.PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA.'</h3>
<p>'.PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_EXPLANATION.'</p>
<form action="'.$serendipity ['baseURL'] . 'index.php?/plugin/bayesTrojaRequestDB" method="post">
<input id="trojaImport" class="serendipityPrettyButton input_button" type="submit" value="'.PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_IMPORT.'" />
</form>';
if ($this->get_config('troja_registered', false) == true) {
echo '<form class="bayesTrojaButtons" action="'.$serendipity ['baseURL'] . 'index.php?/plugin/bayesTrojaRemove" method="post">
<input class="serendipityPrettyButton input_button" type="submit" value="'.PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_REMOVE.'" />
</form>';
} else {
echo '<form class="bayesTrojaButtons" action="'.$serendipity ['baseURL'] . 'index.php?/plugin/bayesTrojaRegister" method="post">
<input class="serendipityPrettyButton input_button" type="submit" value="'.PLUGIN_EVENT_SPAMBLOCK_BAYES_TROJA_REGISTER.'" />
</form>';
}
}
function showAnalysis($comment_id) {
@ -1465,13 +1675,6 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
WHERE id = " . (int)$id;
}
$comments = serendipity_db_query($sql);
#map to the names used in the eventData, else there would be seperate data
foreach ($comments as &$comment) {
$comment['referrer'] = $comment[$this->type['referrer']];
$comment['name'] = $comment[$this->type['name']];
unset($comment[$this->type['referrer']]);
unset($comment[$this->type['name']]);
}
return $comments;
}
@ -1488,14 +1691,7 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
WHERE id = " . (int)$id;
}
$comments = serendipity_db_query($sql);
#map to the names used in the eventData, else there would be seperate data
foreach ($comments as &$comment) {
$comment['referrer'] = $comment[$this->type['referrer']];
$comment['name'] = $comment[$this->type['name']];
unset($comment[$this->type['referrer']]);
unset($comment[$this->type['name']]);
}
return $comments;
}
@ -1513,14 +1709,7 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
$sql = "SELECT * FROM {$serendipity['dbPrefix']}comments ORDER BY id DESC LIMIT $first, $last";
}
$comments = serendipity_db_query($sql);
if (is_array($comments[0])) {
foreach ($comments as &$comment) {
$comment['referrer'] = $comment[$this->type['referrer']];
$comment['name'] = $comment[$this->type['name']];
unset($comment[$this->type['referrer']]);
unset($comment[$this->type['name']]);
}
}
return $comments;
}
@ -1528,12 +1717,7 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
global $serendipity;
$sql = "SELECT * FROM {$serendipity['dbPrefix']}spamblock_bayes_recycler";
$comments = serendipity_db_query($sql);
foreach ($comments as &$comment) {
$comment['referrer'] = $comment[$this->type['referrer']];
$comment['name'] = $comment[$this->type['name']];
unset($comment[$this->type['referrer']]);
unset($comment[$this->type['name']]);
}
return $comments;
}
@ -1660,7 +1844,7 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
{$serendipity['dbPrefix']}spamblock_bayes_recycler
WHERE id = " . (int)$ids;
}
serendipity_db_query($sql);
return serendipity_db_query($sql);
}
/**
@ -1703,6 +1887,47 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
}
fclose($fp);
}
function fetchDatabase($host, $key) {
global $serendipity;
$data = array('key' => $key);
$url = $host . 'index.php?/plugin/bayesExportDatabase';
if (function_exists('curl_init')) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec ($ch);
curl_close ($ch);
} else {
// this method should work, but in my test, this code
//never transmitted the post-fields properly
$options = array('http' => array(
'method' => 'POST',
'content' => http_build_query($data)
));
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
}
if( $this->validCvs($result)) {
#write obtained csv to $file
$csvfile = $serendipity ['serendipityPath'] . 'templates_c/spamblock_bayes.csv';
file_put_contents($csvfile, $result);
$spamDB = $this->getCsvDatabase($csvfile);
$this->importDatabase($spamDB);
}
}
#check if the fetched page really was a spamblock-file
#param1: $content Content of the cvs
#return: true or false
function validCvs($content) {
$lines = explode("\n", $content);
$number_lines = count($lines) -1;
return preg_match_all("/.*,[0-9]*,[0-9]*,.*/", $content, $matches) == $number_lines;
}
function importDatabase($importDatabase) {
global $serendipity;
@ -1842,7 +2067,7 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
fclose ( $this->debug_fp );
}
function log($logfile, $id, $switch, $reason, $comment) {
function log($logfile, $id, $switch, $reason, $addData) {
global $serendipity;
$method = $this->get_config('logtype');
@ -1866,12 +2091,12 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
$switch,
$reason,
$id,
str_replace("\n", ' ', $comment['name']),
str_replace("\n", ' ', $comment['email']),
str_replace("\n", ' ', $comment['url']),
str_replace("\n", ' ', $addData['name']),
str_replace("\n", ' ', $addData['email']),
str_replace("\n", ' ', $addData['url']),
str_replace("\n", ' ', $_SERVER['HTTP_USER_AGENT']),
$_SERVER['REMOTE_ADDR'],
str_replace("\n", ' ', $comment['comment'])
str_replace("\n", ' ', $addData['comment'])
));
fclose($fp);
@ -1891,13 +2116,13 @@ class serendipity_event_spamblock_bayes extends serendipity_event {
serendipity_db_escape_string($switch),
serendipity_db_escape_string($reason),
serendipity_db_escape_string($id),
serendipity_db_escape_string($comment['name']),
serendipity_db_escape_string($comment['email']),
serendipity_db_escape_string($comment['url']),
serendipity_db_escape_string($addData['name']),
serendipity_db_escape_string($addData['email']),
serendipity_db_escape_string($addData['url']),
substr(serendipity_db_escape_string($_SERVER['HTTP_USER_AGENT']), 0, 255),
serendipity_db_escape_string($_SERVER['REMOTE_ADDR']),
substr(serendipity_db_escape_string(isset($_SESSION['HTTP_REFERER']) ? $_SESSION['HTTP_REFERER'] : $_SERVER['HTTP_REFERER']), 0, 255),
serendipity_db_escape_string($comment['comment'])
serendipity_db_escape_string($addData['comment'])
);
serendipity_db_schema_import($q);