merge sandbox to trunk for 1.4.4

git-svn-id: http://xe-core.googlecode.com/svn/trunk@7723 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ngleader 2010-09-28 07:24:47 +00:00
parent 200d63636c
commit b8299c8a65
683 changed files with 70982 additions and 69716 deletions

View file

@ -1,33 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="0.2">
<title xml:lang="ko">스팸필터</title>
<title xml:lang="zh-CN">垃圾过滤</title>
<title xml:lang="en">Spam Filter</title>
<title xml:lang="vi">Bộ lọc Spam</title>
<title xml:lang="es">Filtro de Spam</title>
<title xml:lang="jp">スパムフィルター</title>
<title xml:lang="ru">Фильтр спама</title>
<title xml:lang="zh-TW">垃圾過濾</title>
<description xml:lang="ko">XE의 기본 스팸필터입니다.</description>
<description xml:lang="zh-CN">XE的基本垃圾过滤模块。</description>
<description xml:lang="en">A default spam filter of XE.</description>
<description xml:lang="vi">Bộ lọc Spam mặc định của XE.</description>
<description xml:lang="es">Filtro de Span predefinido de XE.</description>
<description xml:lang="jp">XEのスパムフィルターです。</description>
<description xml:lang="ru">Стандартный фильтр спама XE.</description>
<description xml:lang="zh-TW">XE的基本垃圾過濾模組。</description>
<version>0.1</version>
<date>2007-02-28</date>
<category>accessory</category>
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
<name xml:lang="ko">zero</name>
<name xml:lang="vi">zero</name>
<name xml:lang="zh-CN">zero</name>
<name xml:lang="en">zero</name>
<name xml:lang="es">zero</name>
<name xml:lang="jp">zero</name>
<name xml:lang="ru">zero</name>
<name xml:lang="zh-TW">zero</name>
</author>
</module>
<?xml version="1.0" encoding="UTF-8"?>
<module version="0.2">
<title xml:lang="ko">스팸필터</title>
<title xml:lang="zh-CN">垃圾过滤</title>
<title xml:lang="en">Spam Filter</title>
<title xml:lang="vi">Bộ lọc Spam</title>
<title xml:lang="es">Filtro de Spam</title>
<title xml:lang="jp">スパムフィルター</title>
<title xml:lang="ru">Фильтр спама</title>
<title xml:lang="zh-TW">垃圾過濾</title>
<description xml:lang="ko">XE의 기본 스팸필터입니다.</description>
<description xml:lang="zh-CN">XE的基本垃圾过滤模块。</description>
<description xml:lang="en">A default spam filter of XE.</description>
<description xml:lang="vi">Bộ lọc Spam mặc định của XE.</description>
<description xml:lang="es">Filtro de Span predefinido de XE.</description>
<description xml:lang="jp">XEのスパムフィルターです。</description>
<description xml:lang="ru">Стандартный фильтр спама XE.</description>
<description xml:lang="zh-TW">XE的基本垃圾過濾模組。</description>
<version>0.1</version>
<date>2007-02-28</date>
<category>accessory</category>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NHN</name>
<name xml:lang="vi">NHN</name>
<name xml:lang="zh-CN">NHN</name>
<name xml:lang="en">NHN</name>
<name xml:lang="es">NHN</name>
<name xml:lang="jp">NHN</name>
<name xml:lang="ru">NHN</name>
<name xml:lang="zh-TW">NHN</name>
</author>
</module>

View file

@ -1,34 +1,34 @@
<?php
/**
* @file modules/spamfilter/lang/en.lang.php
* @author zero <zero@nzeo.com>
* @brief English Language Pack (basic)
**/
// action related
$lang->cmd_denied_ip = "IP Address Blacklist";
$lang->cmd_denied_word = "Word Blacklist";
// general word
$lang->spamfilter = "Spam filter";
$lang->denied_ip = "IP Address";
$lang->interval = "Interval for spam filtering";
$lang->limit_count = "No. of posting limitation";
$lang->check_trackback = "Check Trackbacks";
$lang->word = "Word";
$lang->hit = 'Hit';
$lang->latest_hit = 'Latest Hits';
// for description word
$lang->about_interval = "All articles attempted for posting within the assigned time will be blocked.";
$lang->about_limit_count = "If exceeded the posting limitation,\n that IP will be regarded as a spam, thus will have limitations on posting articles, comments, and trackbacks.";
$lang->about_denied_ip = "You can add IP address range like 127.0.0.* by using *.";
$lang->about_denied_word = "When you add a word to Word Blacklist,\n articles including it will be blocked.";
$lang->about_check_trackback = "A single IP per an article is allowed for trackbacks.";
// to post a message
$lang->msg_alert_limited_by_config = 'Posting an article within %s second is not allowed.\n If you keep trying, your IP address will be blacklisted.';
$lang->msg_alert_denied_word = 'The word "%s" is not allowed.';
$lang->msg_alert_registered_denied_ip = 'Your IP address is blacklisted,\n so you may have limitations on normal using of this site.\n If you have any questions on that matter, please contact to the site administrator.';
$lang->msg_alert_trackback_denied = 'Only one trackback per an article is allowed.';
<?php
/**
* @file modules/spamfilter/lang/en.lang.php
* @author NHN (developers@xpressengine.com)
* @brief English Language Pack (basic)
**/
// action related
$lang->cmd_denied_ip = "IP Address Blacklist";
$lang->cmd_denied_word = "Word Blacklist";
// general word
$lang->spamfilter = "Spam filter";
$lang->denied_ip = "IP Address";
$lang->interval = "Interval for spam filtering";
$lang->limit_count = "No. of posting limitation";
$lang->check_trackback = "Check Trackbacks";
$lang->word = "Word";
$lang->hit = 'Hit';
$lang->latest_hit = 'Latest Hits';
// for description word
$lang->about_interval = "All articles attempted for posting within the assigned time will be blocked.";
$lang->about_limit_count = "If exceeded the posting limitation,\n that IP will be regarded as a spam, thus will have limitations on posting articles, comments, and trackbacks.";
$lang->about_denied_ip = "You can add IP address range like 127.0.0.* by using *.";
$lang->about_denied_word = "When you add a word to Word Blacklist,\n articles including it will be blocked.";
$lang->about_check_trackback = "A single IP per an article is allowed for trackbacks.";
// to post a message
$lang->msg_alert_limited_by_config = 'Posting an article within %s second is not allowed.\n If you keep trying, your IP address will be blacklisted.';
$lang->msg_alert_denied_word = 'The word "%s" is not allowed.';
$lang->msg_alert_registered_denied_ip = 'Your IP address is blacklisted,\n so you may have limitations on normal using of this site.\n If you have any questions on that matter, please contact to the site administrator.';
$lang->msg_alert_trackback_denied = 'Only one trackback per an article is allowed.';
?>

View file

@ -1,7 +1,7 @@
<?php
/**
* @archivo modules/spamfilter/lang/es.lang.php
* @autor zero <zero@nzeo.com>
* @autor NHN (developers@xpressengine.com)
* @sumario Paquete del idioma español (básico)
**/

View file

@ -1,34 +1,34 @@
<?php
/**
* @file modules/spamfilter/lang/fr.lang.php
* @author zero <zero@nzeo.com> Traduit par Pierre Duvent <PierreDuvent@gmail.com>
* @brief Paquet du langage en français pour le module du Filtre contre polluriel
**/
// de l'action
$lang->cmd_denied_ip = "Liste noire d'Address IP";
$lang->cmd_denied_word = "Liste noire des Mots";
// mots générals
$lang->spamfilter = "Filtre contre Polluriel";
$lang->denied_ip = "IP à bloquer";
$lang->interval = "Intervalle à filtrer contre polluriel";
$lang->limit_count = "Limite d'affichage";
$lang->check_trackback = "Vérifier les Rétroliens";
$lang->word = "Mot";
$lang->hit = '히트';
$lang->latest_hit = '최근 히트';
// descriptions
$lang->about_interval = "L'affichage sera bloqué pendant le temps designé.";
$lang->about_limit_count = "Si l'on excéde la limite d'affichage pendant le temps désigné,\nles articles en plus seront reconnus comme polluriel, et l'adresse IP sera bloqué.";
$lang->about_denied_ip = "Vous pouvez bloquer l'étendue de l'adresse IP comme 127.0.0.* en utilisant *.";
$lang->about_denied_word = "Quand vous enrégistrez un mot dans la liste noire, \nl'article qui comporte le mot ne sera pas affichagé.";
$lang->about_check_trackback = "Le rétrolien peut être permis à un seul IP par article.";
// messages
$lang->msg_alert_limited_by_config = 'L\'Affichage d\'un article en %s secondes n\'est pas permis.\n Si vous essayez encore, votre adresse IP peut être enrégistré dans la liste noire.';
$lang->msg_alert_denied_word = 'Le mot "%s" n\'est pas permis d\'afficher.';
$lang->msg_alert_registered_denied_ip = 'Your IP address is blacklisted,\n so you may have limitations on normal using of this site.\n If you have any questions on that matter, please contact to the site administrator. Votre adresse IP est dans la liste noire, \nvous pouvez donc avoir limitation d\'activité dans ce site. Si vous avez quelque question sur ce fait, contactez l\'administrateur du site, S.V.P.';
$lang->msg_alert_trackback_denied = 'Un seul rétrolien par article est permis.';
<?php
/**
* @file modules/spamfilter/lang/fr.lang.php
* @author NHN (developers@xpressengine.com) Traduit par Pierre Duvent <PierreDuvent@gmail.com>
* @brief Paquet du langage en français pour le module du Filtre contre polluriel
**/
// de l'action
$lang->cmd_denied_ip = "Liste noire d'Address IP";
$lang->cmd_denied_word = "Liste noire des Mots";
// mots générals
$lang->spamfilter = "Filtre contre Polluriel";
$lang->denied_ip = "IP à bloquer";
$lang->interval = "Intervalle à filtrer contre polluriel";
$lang->limit_count = "Limite d'affichage";
$lang->check_trackback = "Vérifier les Rétroliens";
$lang->word = "Mot";
$lang->hit = '히트';
$lang->latest_hit = '최근 히트';
// descriptions
$lang->about_interval = "L'affichage sera bloqué pendant le temps designé.";
$lang->about_limit_count = "Si l'on excéde la limite d'affichage pendant le temps désigné,\nles articles en plus seront reconnus comme polluriel, et l'adresse IP sera bloqué.";
$lang->about_denied_ip = "Vous pouvez bloquer l'étendue de l'adresse IP comme 127.0.0.* en utilisant *.";
$lang->about_denied_word = "Quand vous enrégistrez un mot dans la liste noire, \nl'article qui comporte le mot ne sera pas affichagé.";
$lang->about_check_trackback = "Le rétrolien peut être permis à un seul IP par article.";
// messages
$lang->msg_alert_limited_by_config = 'L\'Affichage d\'un article en %s secondes n\'est pas permis.\n Si vous essayez encore, votre adresse IP peut être enrégistré dans la liste noire.';
$lang->msg_alert_denied_word = 'Le mot "%s" n\'est pas permis d\'afficher.';
$lang->msg_alert_registered_denied_ip = 'Your IP address is blacklisted,\n so you may have limitations on normal using of this site.\n If you have any questions on that matter, please contact to the site administrator. Votre adresse IP est dans la liste noire, \nvous pouvez donc avoir limitation d\'activité dans ce site. Si vous avez quelque question sur ce fait, contactez l\'administrateur du site, S.V.P.';
$lang->msg_alert_trackback_denied = 'Un seul rétrolien par article est permis.';
?>

View file

@ -1,34 +1,34 @@
<?php
/**
* @file modules/spamfilter/lang/jp.lang.php
* @author zero <zero@nzeo.com> 翻訳RisaPapa、ミニミ
* @brief 日本語言語パッケージ(基本的な内容のみ)
**/
// action関連
$lang->cmd_denied_ip = '禁止IPリスト';
$lang->cmd_denied_word = '禁止ワードリスト';
// 一般用語
$lang->spamfilter = 'スパムフィルター';
$lang->denied_ip = '禁止IP';
$lang->interval = 'スパム処理間隔';
$lang->limit_count = '制限数';
$lang->check_trackback = 'トラックバック検査';
$lang->word = 'ワード';
$lang->hit = 'ヒット';
$lang->latest_hit = '最近ヒット';
// 説明文
$lang->about_interval = '指定された時間内の書き込みが行えないようにします。';
$lang->about_limit_count = '指定された時間内に制限数を超える書き込みが行われるとスパムとして認識し、該当するIPを禁止します。';
$lang->about_denied_ip = '「127.0.0.* 」のように「*」で、「127.0.0」以下ののIP帯域をすべて禁止することが出来ます。';
$lang->about_denied_word = '禁止ワードとして登録されると該当するワードが存在する書き込みを禁することが出来ます。';
$lang->about_check_trackback = '一つのIPからのみトラックバックを受信するようにします。';
// メッセージ出力用
$lang->msg_alert_limited_by_config = '%s秒以内の書き込みは禁止されます。続けて行うとスパムとして認識され、禁止IPに登録されます。';
$lang->msg_alert_denied_word = '"%s"は使用が禁止されたワードです。';
$lang->msg_alert_registered_denied_ip = '禁止IPに登録され、サイト内で正常な活動が制限されています。管理者にお問い合わせ下さい。';
$lang->msg_alert_trackback_denied = '一つの書き込みには、1つのトラックバックしか受け取れません。';
<?php
/**
* @file modules/spamfilter/lang/jp.lang.php
* @author NHN (developers@xpressengine.com) 翻訳RisaPapa、ミニミ
* @brief 日本語言語パッケージ(基本的な内容のみ)
**/
// action関連
$lang->cmd_denied_ip = '禁止IPリスト';
$lang->cmd_denied_word = '禁止ワードリスト';
// 一般用語
$lang->spamfilter = 'スパムフィルター';
$lang->denied_ip = '禁止IP';
$lang->interval = 'スパム処理間隔';
$lang->limit_count = '制限数';
$lang->check_trackback = 'トラックバック検査';
$lang->word = 'ワード';
$lang->hit = 'ヒット';
$lang->latest_hit = '最近ヒット';
// 説明文
$lang->about_interval = '指定された時間内の書き込みが行えないようにします。';
$lang->about_limit_count = '指定された時間内に制限数を超える書き込みが行われるとスパムとして認識し、該当するIPを禁止します。';
$lang->about_denied_ip = '「127.0.0.* 」のように「*」で、「127.0.0」以下ののIP帯域をすべて禁止することが出来ます。';
$lang->about_denied_word = '禁止ワードとして登録されると該当するワードが存在する書き込みを禁することが出来ます。';
$lang->about_check_trackback = '一つのIPからのみトラックバックを受信するようにします。';
// メッセージ出力用
$lang->msg_alert_limited_by_config = '%s秒以内の書き込みは禁止されます。続けて行うとスパムとして認識され、禁止IPに登録されます。';
$lang->msg_alert_denied_word = '"%s"は使用が禁止されたワードです。';
$lang->msg_alert_registered_denied_ip = '禁止IPに登録され、サイト内で正常な活動が制限されています。管理者にお問い合わせ下さい。';
$lang->msg_alert_trackback_denied = '一つの書き込みには、1つのトラックバックしか受け取れません。';
?>

View file

@ -1,34 +1,34 @@
<?php
/**
* @file modules/spamfilter/lang/ko.lang.php
* @author zero <zero@nzeo.com>
* @brief 한국어 언어팩 (기본적인 내용만 수록)
**/
// action 관련
$lang->cmd_denied_ip = '금지IP 목록';
$lang->cmd_denied_word = '금지 단어 목록';
// 일반 단어
$lang->spamfilter = '스팸필터';
$lang->denied_ip = '금지 IP';
$lang->interval = '스팸 처리 간격';
$lang->limit_count = '제한 수';
$lang->check_trackback = '트랙백 검사';
$lang->word = '단어';
$lang->hit = '히트';
$lang->latest_hit = '최근 히트';
// 설명문
$lang->about_interval = '지정된 시간 내에 글을 등록하지 못하게 합니다.';
$lang->about_limit_count = '지정된 시간 내에 제한수를 넘겨서 글 작성을 시도하면 스팸으로 인식, 해당 IP의 글 작성, 댓글 작성, 트랙백 발송 등을 금지합니다.';
$lang->about_denied_ip = '127.0.0.* 와 같이 * 로 정해진 패턴의 IP 대역을 모두 금지 시킬 수 있습니다.';
$lang->about_denied_word = '금지 단어로 등록되면 해당 단어가 있는 글은 등록을 금지 시킬 수 있습니다.';
$lang->about_check_trackback = '한 글에 한 IP에만 트랙백을 허용할 수 있습니다.';
// 메세지 출력용
$lang->msg_alert_limited_by_config = '%s 초 이내에 글 작성은 금지 됩니다. 계속 시도하시면 금지 IP에 등록되실 수 있습니다.';
$lang->msg_alert_denied_word = '"%s"는 사용 금지된 단어입니다.';
$lang->msg_alert_registered_denied_ip = '금지 IP에 등록되셔서 정상적인 활동에 제한을 받게 되셨습니다. 문의는 사이트 관리자에게 해주시기 바랍니다.';
$lang->msg_alert_trackback_denied = '한 글에는 하나의 트랙백만 허용 됩니다.';
<?php
/**
* @file modules/spamfilter/lang/ko.lang.php
* @author NHN (developers@xpressengine.com)
* @brief 한국어 언어팩 (기본적인 내용만 수록)
**/
// action 관련
$lang->cmd_denied_ip = '금지IP 목록';
$lang->cmd_denied_word = '금지 단어 목록';
// 일반 단어
$lang->spamfilter = '스팸필터';
$lang->denied_ip = '금지 IP';
$lang->interval = '스팸 처리 간격';
$lang->limit_count = '제한 수';
$lang->check_trackback = '트랙백 검사';
$lang->word = '단어';
$lang->hit = '히트';
$lang->latest_hit = '최근 히트';
// 설명문
$lang->about_interval = '지정된 시간 내에 글을 등록하지 못하게 합니다.';
$lang->about_limit_count = '지정된 시간 내에 제한수를 넘겨서 글 작성을 시도하면 스팸으로 인식, 해당 IP의 글 작성, 댓글 작성, 트랙백 발송 등을 금지합니다.';
$lang->about_denied_ip = '127.0.0.* 와 같이 * 로 정해진 패턴의 IP 대역을 모두 금지 시킬 수 있습니다.';
$lang->about_denied_word = '금지 단어로 등록되면 해당 단어가 있는 글은 등록을 금지 시킬 수 있습니다.';
$lang->about_check_trackback = '한 글에 한 IP에만 트랙백을 허용할 수 있습니다.';
// 메세지 출력용
$lang->msg_alert_limited_by_config = '%s 초 이내에 글 작성은 금지 됩니다. 계속 시도하시면 금지 IP에 등록되실 수 있습니다.';
$lang->msg_alert_denied_word = '"%s"는 사용 금지된 단어입니다.';
$lang->msg_alert_registered_denied_ip = '금지 IP에 등록되셔서 정상적인 활동에 제한을 받게 되셨습니다. 문의는 사이트 관리자에게 해주시기 바랍니다.';
$lang->msg_alert_trackback_denied = '한 글에는 하나의 트랙백만 허용 됩니다.';
?>

View file

@ -1,34 +1,34 @@
<?php
/**
* @file ru.lang.php
* @author zero <zero@nzeo.com> | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
* @brief Russian basic language pack
**/
// действия
$lang->cmd_denied_ip = "Черный список IP-адресов";
$lang->cmd_denied_word = "Черный список слов";
// главные слова
$lang->spamfilter = "Фильтр спама";
$lang->denied_ip = "IP в черный список";
$lang->interval = "Интервал фильтрования спама";
$lang->limit_count = "Лимит публикаций";
$lang->check_trackback = "Проверять трекбек";
$lang->word = "Слово";
$lang->hit = '히트';
$lang->latest_hit = '최근 히트';
// описание
$lang->about_interval = "Все попытки разместить статьи в установленное время будут заблокированы.";
$lang->about_limit_count = "Если Вы вышли за лимит публикаций (статей/комментариев),\n Ваша статья будет разпознана как спам, и Ваш IP-адрес будет добавлен в черный список.";
$lang->about_denied_ip = "Вы можете добавить в черный список диапазон IP-адресов как 127.0.0.*, используя знак звездочки (*).";
$lang->about_denied_word = "Когда Вы добавляете слово в черный список,\n статьи с этим словом не будут опубликованы";
$lang->about_check_trackback = "Только трекбек для оного IP на статью может быть разрешен.";
// для отправки сообщений
$lang->msg_alert_limited_by_config = 'Размещение статьи с интервалом в %s секунд не разрешено.\n Если Вы будете многократно пытаться это сделать, Ваш IP-адрес может быть добавлен в черный список.';
$lang->msg_alert_denied_word = 'Слово "%s" запрещено для публикации.';
$lang->msg_alert_registered_denied_ip = 'Ваш IP-адрес занесен в черный список,\n поэтому Вы можете иметь ограничения на полноценное использование этого сайта.\n Если у Вас есть вопросы насчет этого, пожалуйста, сообщите администратору сайта.';
$lang->msg_alert_trackback_denied = 'Разрешен только один трекбек на статью.';
<?php
/**
* @file ru.lang.php
* @author NHN (developers@xpressengine.com) | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
* @brief Russian basic language pack
**/
// действия
$lang->cmd_denied_ip = "Черный список IP-адресов";
$lang->cmd_denied_word = "Черный список слов";
// главные слова
$lang->spamfilter = "Фильтр спама";
$lang->denied_ip = "IP в черный список";
$lang->interval = "Интервал фильтрования спама";
$lang->limit_count = "Лимит публикаций";
$lang->check_trackback = "Проверять трекбек";
$lang->word = "Слово";
$lang->hit = '히트';
$lang->latest_hit = '최근 히트';
// описание
$lang->about_interval = "Все попытки разместить статьи в установленное время будут заблокированы.";
$lang->about_limit_count = "Если Вы вышли за лимит публикаций (статей/комментариев),\n Ваша статья будет разпознана как спам, и Ваш IP-адрес будет добавлен в черный список.";
$lang->about_denied_ip = "Вы можете добавить в черный список диапазон IP-адресов как 127.0.0.*, используя знак звездочки (*).";
$lang->about_denied_word = "Когда Вы добавляете слово в черный список,\n статьи с этим словом не будут опубликованы";
$lang->about_check_trackback = "Только трекбек для оного IP на статью может быть разрешен.";
// для отправки сообщений
$lang->msg_alert_limited_by_config = 'Размещение статьи с интервалом в %s секунд не разрешено.\n Если Вы будете многократно пытаться это сделать, Ваш IP-адрес может быть добавлен в черный список.';
$lang->msg_alert_denied_word = 'Слово "%s" запрещено для публикации.';
$lang->msg_alert_registered_denied_ip = 'Ваш IP-адрес занесен в черный список,\n поэтому Вы можете иметь ограничения на полноценное использование этого сайта.\n Если у Вас есть вопросы насчет этого, пожалуйста, сообщите администратору сайта.';
$lang->msg_alert_trackback_denied = 'Разрешен только один трекбек на статью.';
?>

View file

@ -1,36 +1,36 @@
<?php
/* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░ * @File : common/lang/vi.lang.php ░░
░░ * @Author : zero (zero@nzeo.com) ░░
░░ * @Trans : Đào Đức Duy (ducduy.dao.vn@vietxe.net) ░░
░░ * @Website: http://vietxe.net ░░
░░ * @Brief : Vietnamese Language Pack (Only basic words are included here) ░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ */
// action related
$lang->cmd_denied_ip = "Danh sách IP cấm";
$lang->cmd_denied_word = "Danh sách từ cấm";
// general word
$lang->spamfilter = "Bộ lọc Spam";
$lang->denied_ip = "IP bị cấm";
$lang->interval = "Thời gian giới hạn";
$lang->limit_count = "Số bài viết giới hạn";
$lang->check_trackback = "Kiểm tra liên kết Web";
$lang->word = "Từ";
$lang->hit = 'Truy cập';
$lang->latest_hit = 'Truy cập mới nhất';
// for description word
$lang->about_interval = "Tất cả những bài viết trong thời gian giới hạn sẽ bị chặn.";
$lang->about_limit_count = "Nếu bạn gửi bài vượt quá số bài viết quy định,\n bài viết của bạn sẽ bị ghi vào danh sách và IP của bạn sẽ bị lưu vào danh sách IP bị cấm.";
$lang->about_denied_ip = "Bạn có thể thêm IP vào danh sách bị cấm dạng 127.0.0.* bằng cách sử dụng *.";
$lang->about_denied_word = "Khi bạn thêm từ vào danh sách Từ bị cấm,\n những bài viết có chứa những từ này sẽ không được gửi.";
$lang->about_check_trackback = "Chỉ cho phép gửi một bài viết với một IP trên một liên kết Web.";
// to post a message
$lang->msg_alert_limited_by_config = 'Không được phép gửi bài thứ 2 trong khoảng thời gian %s giây.\n Nếu bạn cứ tiếp tục, IP của bạn sẽ bị thêm vào danh sách IP bị cấm.';
$lang->msg_alert_denied_word = 'Không được phép gửi từ "%s".';
$lang->msg_alert_registered_denied_ip = 'IP của bạn đã bị nằm trong danh sách cấm,\n vì vậy bạn bị giới hạn sử dụng trên Website này.\n Nếu bạn có bất cứ thắc mắc gì, xin vui lòng liên hệ với Webmaster để được giải đáp.';
$lang->msg_alert_trackback_denied = 'Chỉ cho phép một liên kết Web trên một bài viết.';
<?php
/* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░ * @File : common/lang/vi.lang.php ░░
░░ * @Author : NHN (developers@xpressengine.com) ░░
░░ * @Trans : Đào Đức Duy (ducduy.dao.vn@vietxe.net) ░░
░░ * @Website: http://vietxe.net ░░
░░ * @Brief : Vietnamese Language Pack (Only basic words are included here) ░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ */
// action related
$lang->cmd_denied_ip = "Danh sách IP cấm";
$lang->cmd_denied_word = "Danh sách từ cấm";
// general word
$lang->spamfilter = "Bộ lọc Spam";
$lang->denied_ip = "IP bị cấm";
$lang->interval = "Thời gian giới hạn";
$lang->limit_count = "Số bài viết giới hạn";
$lang->check_trackback = "Kiểm tra liên kết Web";
$lang->word = "Từ";
$lang->hit = 'Truy cập';
$lang->latest_hit = 'Truy cập mới nhất';
// for description word
$lang->about_interval = "Tất cả những bài viết trong thời gian giới hạn sẽ bị chặn.";
$lang->about_limit_count = "Nếu bạn gửi bài vượt quá số bài viết quy định,\n bài viết của bạn sẽ bị ghi vào danh sách và IP của bạn sẽ bị lưu vào danh sách IP bị cấm.";
$lang->about_denied_ip = "Bạn có thể thêm IP vào danh sách bị cấm dạng 127.0.0.* bằng cách sử dụng *.";
$lang->about_denied_word = "Khi bạn thêm từ vào danh sách Từ bị cấm,\n những bài viết có chứa những từ này sẽ không được gửi.";
$lang->about_check_trackback = "Chỉ cho phép gửi một bài viết với một IP trên một liên kết Web.";
// to post a message
$lang->msg_alert_limited_by_config = 'Không được phép gửi bài thứ 2 trong khoảng thời gian %s giây.\n Nếu bạn cứ tiếp tục, IP của bạn sẽ bị thêm vào danh sách IP bị cấm.';
$lang->msg_alert_denied_word = 'Không được phép gửi từ "%s".';
$lang->msg_alert_registered_denied_ip = 'IP của bạn đã bị nằm trong danh sách cấm,\n vì vậy bạn bị giới hạn sử dụng trên Website này.\n Nếu bạn có bất cứ thắc mắc gì, xin vui lòng liên hệ với Webmaster để được giải đáp.';
$lang->msg_alert_trackback_denied = 'Chỉ cho phép một liên kết Web trên một bài viết.';
?>

View file

@ -1,34 +1,34 @@
<?php
/**
* @file modules/spamfilter/lang/zh-CN.lang.php
* @author zero <zero@nzeo.com> 翻译guny
* @brief 垃圾过滤简体中文语言包
**/
// action 相关
$lang->cmd_denied_ip = "禁止IP列表";
$lang->cmd_denied_word = "敏感词列表";
// 一般用语
$lang->spamfilter = "垃圾过滤";
$lang->denied_ip = "禁止IP";
$lang->interval = "处理垃圾间隔";
$lang->limit_count = "限制数";
$lang->check_trackback = "检查引用";
$lang->word = "单词";
$lang->hit = '点击';
$lang->latest_hit = '最后点击';
// 说明文
$lang->about_interval = "指定的时间内禁止发表新主题。";
$lang->about_limit_count = "在指定时间内发表的新主题超过限制数时系统将把它认为是垃圾主题将自动禁止对方的IP。";
$lang->about_denied_ip = "禁止IP可以使用通配符。(如:如 \"127.0.*.*\"";
$lang->about_denied_word = "登录为敏感词,可以对要发表的主题进行检测并禁止含有敏感词的主题发表。";
$lang->about_check_trackback = "对一个主题只允许一个IP引用。";
// 提示信息
$lang->msg_alert_limited_by_config = '%s秒之内不能连续发表新主题。如您继续再试系统将自动禁止您的IP。';
$lang->msg_alert_denied_word = '"%s"是敏感词!';
$lang->msg_alert_registered_denied_ip = '您的IP已被禁止详情请联系网站管理员。';
$lang->msg_alert_trackback_denied = '一个主题只允许一个引用。';
<?php
/**
* @file modules/spamfilter/lang/zh-CN.lang.php
* @author NHN (developers@xpressengine.com) 翻译guny
* @brief 垃圾过滤简体中文语言包
**/
// action 相关
$lang->cmd_denied_ip = "禁止IP列表";
$lang->cmd_denied_word = "敏感词列表";
// 一般用语
$lang->spamfilter = "垃圾过滤";
$lang->denied_ip = "禁止IP";
$lang->interval = "处理垃圾间隔";
$lang->limit_count = "限制数";
$lang->check_trackback = "检查引用";
$lang->word = "单词";
$lang->hit = '点击';
$lang->latest_hit = '最后点击';
// 说明文
$lang->about_interval = "指定的时间内禁止发表新主题。";
$lang->about_limit_count = "在指定时间内发表的新主题超过限制数时系统将把它认为是垃圾主题将自动禁止对方的IP。";
$lang->about_denied_ip = "禁止IP可以使用通配符。(如:如 \"127.0.*.*\"";
$lang->about_denied_word = "登录为敏感词,可以对要发表的主题进行检测并禁止含有敏感词的主题发表。";
$lang->about_check_trackback = "对一个主题只允许一个IP引用。";
// 提示信息
$lang->msg_alert_limited_by_config = '%s秒之内不能连续发表新主题。如您继续再试系统将自动禁止您的IP。';
$lang->msg_alert_denied_word = '"%s"是敏感词!';
$lang->msg_alert_registered_denied_ip = '您的IP已被禁止详情请联系网站管理员。';
$lang->msg_alert_trackback_denied = '一个主题只允许一个引用。';
?>

View file

@ -1,7 +1,7 @@
<?php
/**
* @file modules/spamfilter/lang/zh-TW.lang.php
* @author zero <zero@nzeo.com> 翻譯royallin
* @author NHN (developers@xpressengine.com) 翻譯royallin
* @brief 垃圾過濾(spamfilter)模組正體中文語言
**/

View file

@ -1,99 +1,99 @@
<?php
/**
* @class spamfilterAdminController
* @author zero (zero@nzeo.com)
* @brief spamfilter 모듈의 admin controller class
**/
class spamfilterAdminController extends spamfilter {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 스팸필터 설정
**/
function procSpamfilterAdminInsertConfig() {
// 기본 정보를 받음
$args = Context::gets('interval','limit_count','check_trackback');
if($args->check_trackback!='Y') $args->check_trackback = 'N';
// module Controller 객체 생성하여 입력
$oModuleController = &getController('module');
$output = $oModuleController->insertModuleConfig('spamfilter',$args);
return $output;
}
/**
* @brief 금지 IP등록
**/
function procSpamfilterAdminInsertDeniedIP() {
$ipaddress = Context::get('ipaddress');
$description = Context::get('description');
$oSpamfilterController = &getController('spamfilter');
return $oSpamfilterController->insertIP($ipaddress, $description);
}
/**
* @brief 금지 IP삭제
**/
function procSpamfilterAdminDeleteDeniedIP() {
$ipaddress = Context::get('ipaddress');
return $this->deleteIP($ipaddress);
}
/**
* @brief 금지 Word등록
**/
function procSpamfilterAdminInsertDeniedWord() {
$word = Context::get('word');
return $this->insertWord($word);
}
/**
* @brief 금지 Word삭제
**/
function procSpamfilterAdminDeleteDeniedWord() {
$word = base64_decode(Context::get('word'));
return $this->deleteWord($word);
}
/**
* @brief IP 제거
* 스패머로 등록된 IP를 제거
**/
function deleteIP($ipaddress) {
if(!$ipaddress) return;
$args->ipaddress = $ipaddress;
return executeQuery('spamfilter.deleteDeniedIP', $args);
}
/**
* @brief 스팸단어 등록
* 등록된 단어가 포함된 글은 스팸글로 간주
**/
function insertWord($word) {
if(!$word) return;
$args->word = $word;
return executeQuery('spamfilter.insertDeniedWord', $args);
}
/**
* @brief 스팸단어 제거
* 스팸 단어로 등록된 단어 제거
**/
function deleteWord($word) {
if(!$word) return;
$args->word = $word;
return executeQuery('spamfilter.deleteDeniedWord', $args);
}
}
?>
<?php
/**
* @class spamfilterAdminController
* @author NHN (developers@xpressengine.com)
* @brief spamfilter 모듈의 admin controller class
**/
class spamfilterAdminController extends spamfilter {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 스팸필터 설정
**/
function procSpamfilterAdminInsertConfig() {
// 기본 정보를 받음
$args = Context::gets('interval','limit_count','check_trackback');
if($args->check_trackback!='Y') $args->check_trackback = 'N';
// module Controller 객체 생성하여 입력
$oModuleController = &getController('module');
$output = $oModuleController->insertModuleConfig('spamfilter',$args);
return $output;
}
/**
* @brief 금지 IP등록
**/
function procSpamfilterAdminInsertDeniedIP() {
$ipaddress = Context::get('ipaddress');
$description = Context::get('description');
$oSpamfilterController = &getController('spamfilter');
return $oSpamfilterController->insertIP($ipaddress, $description);
}
/**
* @brief 금지 IP삭제
**/
function procSpamfilterAdminDeleteDeniedIP() {
$ipaddress = Context::get('ipaddress');
return $this->deleteIP($ipaddress);
}
/**
* @brief 금지 Word등록
**/
function procSpamfilterAdminInsertDeniedWord() {
$word = Context::get('word');
return $this->insertWord($word);
}
/**
* @brief 금지 Word삭제
**/
function procSpamfilterAdminDeleteDeniedWord() {
$word = base64_decode(Context::get('word'));
return $this->deleteWord($word);
}
/**
* @brief IP 제거
* 스패머로 등록된 IP를 제거
**/
function deleteIP($ipaddress) {
if(!$ipaddress) return;
$args->ipaddress = $ipaddress;
return executeQuery('spamfilter.deleteDeniedIP', $args);
}
/**
* @brief 스팸단어 등록
* 등록된 단어가 포함된 글은 스팸글로 간주
**/
function insertWord($word) {
if(!$word) return;
$args->word = $word;
return executeQuery('spamfilter.insertDeniedWord', $args);
}
/**
* @brief 스팸단어 제거
* 스팸 단어로 등록된 단어 제거
**/
function deleteWord($word) {
if(!$word) return;
$args->word = $word;
return executeQuery('spamfilter.deleteDeniedWord', $args);
}
}
?>

View file

@ -1,59 +1,59 @@
<?php
/**
* @class spamfilterAdminView
* @author zero (zero@nzeo.com)
* @brief spamfilter 모듈의 admin view class
**/
class spamfilterAdminView extends spamfilter {
/**
* @brief 초기화
**/
function init() {
// 템플릿 경로 지정
$this->setTemplatePath($this->module_path.'tpl');
}
/**
* @brief 스팸필터의 설정 화면
**/
function dispSpamfilterAdminConfig() {
// 설정 정보를 받아옴 (module model 객체를 이용)
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('spamfilter');
Context::set('config',$config);
// 템플릿 파일 지정
$this->setTemplateFile('index');
}
/**
* @brief 금지 목록 출력
**/
function dispSpamfilterAdminDeniedIPList() {
// 등록된 금지 IP 목록을 가져옴
$oSpamFilterModel = &getModel('spamfilter');
$ip_list = $oSpamFilterModel->getDeniedIPList();
Context::set('ip_list', $ip_list);
// 템플릿 파일 지정
$this->setTemplateFile('denied_ip_list');
}
/**
* @brief 금지 목록 출력
**/
function dispSpamfilterAdminDeniedWordList() {
// 등록된 금지 Word 목록을 가져옴
$oSpamFilterModel = &getModel('spamfilter');
$word_list = $oSpamFilterModel->getDeniedWordList();
Context::set('word_list', $word_list);
// 템플릿 파일 지정
$this->setTemplateFile('denied_word_list');
}
}
?>
<?php
/**
* @class spamfilterAdminView
* @author NHN (developers@xpressengine.com)
* @brief spamfilter 모듈의 admin view class
**/
class spamfilterAdminView extends spamfilter {
/**
* @brief 초기화
**/
function init() {
// 템플릿 경로 지정
$this->setTemplatePath($this->module_path.'tpl');
}
/**
* @brief 스팸필터의 설정 화면
**/
function dispSpamfilterAdminConfig() {
// 설정 정보를 받아옴 (module model 객체를 이용)
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('spamfilter');
Context::set('config',$config);
// 템플릿 파일 지정
$this->setTemplateFile('index');
}
/**
* @brief 금지 목록 출력
**/
function dispSpamfilterAdminDeniedIPList() {
// 등록된 금지 IP 목록을 가져옴
$oSpamFilterModel = &getModel('spamfilter');
$ip_list = $oSpamFilterModel->getDeniedIPList();
Context::set('ip_list', $ip_list);
// 템플릿 파일 지정
$this->setTemplateFile('denied_ip_list');
}
/**
* @brief 금지 목록 출력
**/
function dispSpamfilterAdminDeniedWordList() {
// 등록된 금지 Word 목록을 가져옴
$oSpamFilterModel = &getModel('spamfilter');
$word_list = $oSpamFilterModel->getDeniedWordList();
Context::set('word_list', $word_list);
// 템플릿 파일 지정
$this->setTemplateFile('denied_word_list');
}
}
?>

View file

@ -1,108 +1,108 @@
<?php
/**
* @class spamfilter
* @author zero (zero@nzeo.com)
* @brief spamfilter 모듈의 high class
**/
class spamfilter extends ModuleObject {
/**
* @brief 설치시 추가 작업이 필요할시 구현
**/
function moduleInstall() {
// action forward에 등록 (관리자 모드에서 사용하기 위함)
$oModuleController = &getController('module');
// 2007. 12. 7 글/ 댓글/ 엮인글이 등록될때 스팸필터링을 시도하는 트리거
$oModuleController->insertTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before');
$oModuleController->insertTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before');
$oModuleController->insertTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before');
//2008-12-17 글 수정시 스펨필터 추가
$oModuleController->insertTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before');
$oModuleController->insertTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before');
return new Object();
}
/**
* @brief 설치가 이상이 없는지 체크하는 method
**/
function checkUpdate() {
$oDB = &DB::getInstance();
$oModuleModel = &getModel('module');
// 2007. 12. 7 글/ 댓글/ 엮인글이 등록될때 스팸필터링을 시도하는 트리거
if(!$oModuleModel->getTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')) return true;
if(!$oModuleModel->getTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')) return true;
if(!$oModuleModel->getTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before')) return true;
//2008-12-17 글 수정시 스펨필터 추가
if(!$oModuleModel->getTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')) return true;
if(!$oModuleModel->getTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')) return true;
/**
* 히트 카운트 필드(hit) 추가
**/
if(!$oDB->isColumnExists('spamfilter_denied_word', 'hit')) return true;
if(!$oDB->isColumnExists('spamfilter_denied_word', 'latest_hit')) return true;
if(!$oDB->isColumnExists('spamfilter_denied_ip', 'description')) return true;
return false;
}
/**
* @brief 업데이트 실행
**/
function moduleUpdate() {
$oDB = &DB::getInstance();
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
// 2007. 12. 7 글/ 댓글/ 엮인글이 등록될때 스팸필터링을 시도하는 트리거
if(!$oModuleModel->getTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before'))
$oModuleController->insertTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before');
if(!$oModuleModel->getTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before'))
$oModuleController->insertTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before');
if(!$oModuleModel->getTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before'))
$oModuleController->insertTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before');
//2008-12-17 글 수정시 스펨필터 추가
if(!$oModuleModel->getTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')){
$oModuleController->insertTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before');
}
//2008-12-17 글 수정시 스펨필터 추가
if(!$oModuleModel->getTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')){
$oModuleController->insertTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before');
}
/**
* 히트 카운트 필드(hit) 추가
**/
if(!$oDB->isColumnExists('spamfilter_denied_word', 'hit')) {
$oDB->addColumn('spamfilter_denied_word','hit','number',12,0,true);
$oDB->addIndex('spamfilter_denied_word','idx_hit', 'hit');
}
if(!$oDB->isColumnExists('spamfilter_denied_word', 'latest_hit')) {
$oDB->addColumn('spamfilter_denied_word','latest_hit','date');
$oDB->addIndex('spamfilter_denied_word','idx_latest_hit', 'latest_hit');
}
if(!$oDB->isColumnExists('spamfilter_denied_ip', 'description')) {
$oDB->addColumn('spamfilter_denied_ip','description','varchar', 250);
}
return new Object(0,'success_updated');
}
/**
* @brief 캐시 파일 재생성
**/
function recompileCache() {
}
}
<?php
/**
* @class spamfilter
* @author NHN (developers@xpressengine.com)
* @brief spamfilter 모듈의 high class
**/
class spamfilter extends ModuleObject {
/**
* @brief 설치시 추가 작업이 필요할시 구현
**/
function moduleInstall() {
// action forward에 등록 (관리자 모드에서 사용하기 위함)
$oModuleController = &getController('module');
// 2007. 12. 7 글/ 댓글/ 엮인글이 등록될때 스팸필터링을 시도하는 트리거
$oModuleController->insertTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before');
$oModuleController->insertTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before');
$oModuleController->insertTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before');
//2008-12-17 글 수정시 스펨필터 추가
$oModuleController->insertTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before');
$oModuleController->insertTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before');
return new Object();
}
/**
* @brief 설치가 이상이 없는지 체크하는 method
**/
function checkUpdate() {
$oDB = &DB::getInstance();
$oModuleModel = &getModel('module');
// 2007. 12. 7 글/ 댓글/ 엮인글이 등록될때 스팸필터링을 시도하는 트리거
if(!$oModuleModel->getTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')) return true;
if(!$oModuleModel->getTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')) return true;
if(!$oModuleModel->getTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before')) return true;
//2008-12-17 글 수정시 스펨필터 추가
if(!$oModuleModel->getTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')) return true;
if(!$oModuleModel->getTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')) return true;
/**
* 히트 카운트 필드(hit) 추가
**/
if(!$oDB->isColumnExists('spamfilter_denied_word', 'hit')) return true;
if(!$oDB->isColumnExists('spamfilter_denied_word', 'latest_hit')) return true;
if(!$oDB->isColumnExists('spamfilter_denied_ip', 'description')) return true;
return false;
}
/**
* @brief 업데이트 실행
**/
function moduleUpdate() {
$oDB = &DB::getInstance();
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
// 2007. 12. 7 글/ 댓글/ 엮인글이 등록될때 스팸필터링을 시도하는 트리거
if(!$oModuleModel->getTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before'))
$oModuleController->insertTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before');
if(!$oModuleModel->getTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before'))
$oModuleController->insertTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before');
if(!$oModuleModel->getTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before'))
$oModuleController->insertTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before');
//2008-12-17 글 수정시 스펨필터 추가
if(!$oModuleModel->getTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')){
$oModuleController->insertTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before');
}
//2008-12-17 글 수정시 스펨필터 추가
if(!$oModuleModel->getTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')){
$oModuleController->insertTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before');
}
/**
* 히트 카운트 필드(hit) 추가
**/
if(!$oDB->isColumnExists('spamfilter_denied_word', 'hit')) {
$oDB->addColumn('spamfilter_denied_word','hit','number',12,0,true);
$oDB->addIndex('spamfilter_denied_word','idx_hit', 'hit');
}
if(!$oDB->isColumnExists('spamfilter_denied_word', 'latest_hit')) {
$oDB->addColumn('spamfilter_denied_word','latest_hit','date');
$oDB->addIndex('spamfilter_denied_word','idx_latest_hit', 'latest_hit');
}
if(!$oDB->isColumnExists('spamfilter_denied_ip', 'description')) {
$oDB->addColumn('spamfilter_denied_ip','description','varchar', 250);
}
return new Object(0,'success_updated');
}
/**
* @brief 캐시 파일 재생성
**/
function recompileCache() {
}
}
?>

View file

@ -1,173 +1,173 @@
<?php
/**
* @class spamfilterController
* @author zero (zero@nzeo.com)
* @brief spamfilter 모듈의 controller class
**/
class spamfilterController extends spamfilter {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 배치작업등을 할때 스팸필터의 사용을 중지 시킬 필요가 있을 경우 호출
**/
function setAvoidLog() {
$_SESSION['avoid_log'] = true;
}
/**
* @brief 작성시 작성 시간 체크 금지 ip/단어 처리 루틴
**/
function triggerInsertDocument(&$obj) {
if($_SESSION['avoid_log']) return new Object();
// 로그인 여부, 로그인 정보, 권한 유무 체크
$is_logged = Context::get('is_logged');
$logged_info = Context::get('logged_info');
$grant = Context::get('grant');
// 로그인 되어 있을 경우 관리자 여부를 체크
if($is_logged) {
if($logged_info->is_admin == 'Y') return new Object();
if($grant->manager) return new Object();
}
$oFilterModel = &getModel('spamfilter');
// ip가 금지되어 있는 경우를 체크
$output = $oFilterModel->isDeniedIP();
if(!$output->toBool()) return $output;
// 금지 단어에 있을 경우 체크
$text = $obj->title.$obj->content;
$output = $oFilterModel->isDeniedWord($text);
if(!$output->toBool()) return $output;
// 지정된 시간 체크, 수정시 제외
if($obj->document_srl == 0){
$output = $oFilterModel->checkLimited();
if(!$output->toBool()) return $output;
}
// 로그 남김
$this->insertLog();
return new Object();
}
/**
* @brief 댓글 작성 시간 금지 ip/ 단어 처리 루틴
**/
function triggerInsertComment(&$obj) {
if($_SESSION['avoid_log']) return new Object();
// 로그인 여부, 로그인 정보, 권한 유무 체크
$is_logged = Context::get('is_logged');
$logged_info = Context::get('logged_info');
$grant = Context::get('grant');
// 로그인 되어 있을 경우 관리자 여부를 체크
if($is_logged) {
if($logged_info->is_admin == 'Y') return new Object();
if($grant->manager) return new Object();
}
$oFilterModel = &getModel('spamfilter');
// ip가 금지되어 있는 경우를 체크
$output = $oFilterModel->isDeniedIP();
if(!$output->toBool()) return $output;
// 금지 단어에 있을 경우 체크
$text = $obj->content;
$output = $oFilterModel->isDeniedWord($text);
if(!$output->toBool()) return $output;
// 지정된 시간 체크 수정이 아닌경우만
if(!$obj->__isupdate){
$output = $oFilterModel->checkLimited();
if(!$output->toBool()) return $output;
}
unset($obj->__isupdate);
// 로그 남김
$this->insertLog();
return new Object();
}
/**
* @brief 엮인글 작성시 시간 ip 검사
**/
function triggerInsertTrackback(&$obj) {
if($_SESSION['avoid_log']) return new Object();
$oFilterModel = &getModel('spamfilter');
// 해당 글에 엮인글을 한번 이상 추가하였는지를 확인
$output = $oFilterModel->isInsertedTrackback($obj->document_srl);
if(!$output->toBool()) return $output;
// ip가 금지되어 있는 경우를 체크
$output = $oFilterModel->isDeniedIP();
if(!$output->toBool()) return $output;
// 금지 단어에 있을 경우 체크
$text = $obj->blog_name.$obj->title.$obj->excerpt.$obj->url;
$output = $oFilterModel->isDeniedWord($text);
if(!$output->toBool()) return $output;
// 필터링 시작
$oTrackbackModel = &getModel('trackback');
$oTrackbackController = &getController('trackback');
list($ipA,$ipB,$ipC,$ipD) = explode('.',$_SERVER['REMOTE_ADDR']);
$ipaddress = $ipA.'.'.$ipB.'.'.$ipC;
// 제목과 블로그이름이 동일할 경우 최근 6시간내의 ip를 조사하여 삭제하고 금지ip로 등록
if($obj->title == $obj->excerpt) {
$oTrackbackController->deleteTrackbackSender(60*60*6, $ipaddress, $obj->url, $obj->blog_name, $obj->title, $obj->excerpt);
$this->insertIP($ipaddress.'.*', 'AUTO-DENIED : trackback.insertTrackback');
return new Object(-1,'msg_alert_trackback_denied');
}
// 30분 이내에 1개 이상의 한 C클래스의 ip에서 엮인글 등록 시도시 금지 아이피로 지정하고 해당 ip의 글을 모두 삭제
/* 호스팅 환경을 감안하여 일단 부분은 동작하지 않도록 주석 처리
$count = $oTrackbackModel->getRegistedTrackback(30*60, $ipaddress, $obj->url, $obj->blog_name, $obj->title, $obj->excerpt);
if($count > 1) {
$oTrackbackController->deleteTrackbackSender(3*60, $ipaddress, $obj->url, $obj->blog_name, $obj->title, $obj->excerpt);
$this->insertIP($ipaddress.'.*');
return new Object(-1,'msg_alert_trackback_denied');
}
*/
return new Object();
}
/**
* @brief IP 등록
* 등록된 IP는 스패머로 간주
**/
function insertIP($ipaddress, $description = null) {
$args->ipaddress = $ipaddress;
if($description) $args->description = $description;
return executeQuery('spamfilter.insertDeniedIP', $args);
}
/**
* @brief 로그 등록
* 접속 IP를 로그에 등록, 로그의 간격이 특정 시간 이내일 경우 도배로 간주하여
* 스패머로 등록할 있음
**/
function insertLog() {
$output = executeQuery('spamfilter.insertLog');
return $output;
}
}
?>
<?php
/**
* @class spamfilterController
* @author NHN (developers@xpressengine.com)
* @brief spamfilter 모듈의 controller class
**/
class spamfilterController extends spamfilter {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 배치작업등을 할때 스팸필터의 사용을 중지 시킬 필요가 있을 경우 호출
**/
function setAvoidLog() {
$_SESSION['avoid_log'] = true;
}
/**
* @brief 작성시 작성 시간 체크 금지 ip/단어 처리 루틴
**/
function triggerInsertDocument(&$obj) {
if($_SESSION['avoid_log']) return new Object();
// 로그인 여부, 로그인 정보, 권한 유무 체크
$is_logged = Context::get('is_logged');
$logged_info = Context::get('logged_info');
$grant = Context::get('grant');
// 로그인 되어 있을 경우 관리자 여부를 체크
if($is_logged) {
if($logged_info->is_admin == 'Y') return new Object();
if($grant->manager) return new Object();
}
$oFilterModel = &getModel('spamfilter');
// ip가 금지되어 있는 경우를 체크
$output = $oFilterModel->isDeniedIP();
if(!$output->toBool()) return $output;
// 금지 단어에 있을 경우 체크
$text = $obj->title.$obj->content;
$output = $oFilterModel->isDeniedWord($text);
if(!$output->toBool()) return $output;
// 지정된 시간 체크, 수정시 제외
if($obj->document_srl == 0){
$output = $oFilterModel->checkLimited();
if(!$output->toBool()) return $output;
}
// 로그 남김
$this->insertLog();
return new Object();
}
/**
* @brief 댓글 작성 시간 금지 ip/ 단어 처리 루틴
**/
function triggerInsertComment(&$obj) {
if($_SESSION['avoid_log']) return new Object();
// 로그인 여부, 로그인 정보, 권한 유무 체크
$is_logged = Context::get('is_logged');
$logged_info = Context::get('logged_info');
$grant = Context::get('grant');
// 로그인 되어 있을 경우 관리자 여부를 체크
if($is_logged) {
if($logged_info->is_admin == 'Y') return new Object();
if($grant->manager) return new Object();
}
$oFilterModel = &getModel('spamfilter');
// ip가 금지되어 있는 경우를 체크
$output = $oFilterModel->isDeniedIP();
if(!$output->toBool()) return $output;
// 금지 단어에 있을 경우 체크
$text = $obj->content;
$output = $oFilterModel->isDeniedWord($text);
if(!$output->toBool()) return $output;
// 지정된 시간 체크 수정이 아닌경우만
if(!$obj->__isupdate){
$output = $oFilterModel->checkLimited();
if(!$output->toBool()) return $output;
}
unset($obj->__isupdate);
// 로그 남김
$this->insertLog();
return new Object();
}
/**
* @brief 엮인글 작성시 시간 ip 검사
**/
function triggerInsertTrackback(&$obj) {
if($_SESSION['avoid_log']) return new Object();
$oFilterModel = &getModel('spamfilter');
// 해당 글에 엮인글을 한번 이상 추가하였는지를 확인
$output = $oFilterModel->isInsertedTrackback($obj->document_srl);
if(!$output->toBool()) return $output;
// ip가 금지되어 있는 경우를 체크
$output = $oFilterModel->isDeniedIP();
if(!$output->toBool()) return $output;
// 금지 단어에 있을 경우 체크
$text = $obj->blog_name.$obj->title.$obj->excerpt.$obj->url;
$output = $oFilterModel->isDeniedWord($text);
if(!$output->toBool()) return $output;
// 필터링 시작
$oTrackbackModel = &getModel('trackback');
$oTrackbackController = &getController('trackback');
list($ipA,$ipB,$ipC,$ipD) = explode('.',$_SERVER['REMOTE_ADDR']);
$ipaddress = $ipA.'.'.$ipB.'.'.$ipC;
// 제목과 블로그이름이 동일할 경우 최근 6시간내의 ip를 조사하여 삭제하고 금지ip로 등록
if($obj->title == $obj->excerpt) {
$oTrackbackController->deleteTrackbackSender(60*60*6, $ipaddress, $obj->url, $obj->blog_name, $obj->title, $obj->excerpt);
$this->insertIP($ipaddress.'.*', 'AUTO-DENIED : trackback.insertTrackback');
return new Object(-1,'msg_alert_trackback_denied');
}
// 30분 이내에 1개 이상의 한 C클래스의 ip에서 엮인글 등록 시도시 금지 아이피로 지정하고 해당 ip의 글을 모두 삭제
/* 호스팅 환경을 감안하여 일단 부분은 동작하지 않도록 주석 처리
$count = $oTrackbackModel->getRegistedTrackback(30*60, $ipaddress, $obj->url, $obj->blog_name, $obj->title, $obj->excerpt);
if($count > 1) {
$oTrackbackController->deleteTrackbackSender(3*60, $ipaddress, $obj->url, $obj->blog_name, $obj->title, $obj->excerpt);
$this->insertIP($ipaddress.'.*');
return new Object(-1,'msg_alert_trackback_denied');
}
*/
return new Object();
}
/**
* @brief IP 등록
* 등록된 IP는 스패머로 간주
**/
function insertIP($ipaddress, $description = null) {
$args->ipaddress = $ipaddress;
if($description) $args->description = $description;
return executeQuery('spamfilter.insertDeniedIP', $args);
}
/**
* @brief 로그 등록
* 접속 IP를 로그에 등록, 로그의 간격이 특정 시간 이내일 경우 도배로 간주하여
* 스패머로 등록할 있음
**/
function insertLog() {
$output = executeQuery('spamfilter.insertLog');
return $output;
}
}
?>

View file

@ -1,154 +1,154 @@
<?php
/**
* @class spamfilterModel
* @author zero (zero@nzeo.com)
* @brief spamfilter 모듈의 Model class
**/
class spamfilterModel extends spamfilter {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 스팸필터 모듈의 사용자 설정 return
**/
function getConfig() {
// 설정 정보를 받아옴 (module model 객체를 이용)
$oModuleModel = &getModel('module');
return $oModuleModel->getModuleConfig('spamfilter');
}
/**
* @brief 등록된 금지 IP의 목록을 return
**/
function getDeniedIPList() {
$args->sort_index = "regdate";
$args->page = Context::get('page')?Context::get('page'):1;
$output = executeQuery('spamfilter.getDeniedIPList', $args);
if(!$output->data) return;
if(!is_array($output->data)) return array($output->data);
return $output->data;
}
/**
* @brief 인자로 넘겨진 ipaddress가 금지 ip인지 체크하여 return
**/
function isDeniedIP() {
$ipaddress = $_SERVER['REMOTE_ADDR'];
$ip_list = $this->getDeniedIPList();
if(!count($ip_list)) return new Object();
$count = count($ip_list);
$patterns = array();
for($i=0;$i<$count;$i++) {
$ip = str_replace('*','',$ip_list[$i]->ipaddress);
$patterns[] = preg_quote($ip);
}
$pattern = '/^('.implode($patterns,'|').')/';
if(preg_match($pattern, $ipaddress, $matches)) return new Object(-1,'msg_alert_registered_denied_ip');
return new Object();
}
/**
* @brief 등록된 금지 Word 목록을 return
**/
function getDeniedWordList() {
$args->sort_index = "hit";
$output = executeQuery('spamfilter.getDeniedWordList', $args);
if(!$output->data) return;
if(!is_array($output->data)) return array($output->data);
return $output->data;
}
/**
* @brief 넘어온 text에 금지 단어가 있는지 확인
**/
function isDeniedWord($text) {
$word_list = $this->getDeniedWordList();
if(!count($word_list)) return new Object();
$count = count($word_list);
for($i=0;$i<$count;$i++) {
$word = $word_list[$i]->word;
if(preg_match('/'.preg_quote($word,'/').'/is', $text)) {
$args->word = $word;
$output = executeQuery('spamfilter.updateDeniedWordHit', $args);
return new Object(-1,sprintf(Context::getLang('msg_alert_denied_word'), $word));
}
}
return new Object();
}
/**
* @brief 지정된 시간을 체크
**/
function checkLimited() {
$config = $this->getConfig();
$limit_count = $config->limit_count?$config->limit_count:5;
$interval = $config->interval;
if(!$interval) return new Object();
$count = $this->getLogCount($interval);
$ipaddress = $_SERVER['REMOTE_ADDR'];
// 정해진 시간보다 클 경우 금지 ip로 등록
if($count>=$limit_count) {
$oSpamFilterController = &getController('spamfilter');
$oSpamFilterController->insertIP($ipaddress, 'AUTO-DENIED : Over limit');
return new Object(-1, 'msg_alert_registered_denied_ip');
}
// 제한 글수까지는 아니지만 정해진 시간내에 글 작성을 계속 할때
if($count) {
$message = sprintf(Context::getLang('msg_alert_limited_by_config'), $interval);
$oSpamFilterController = &getController('spamfilter');
$oSpamFilterController->insertLog();
return new Object(-1, $message);
}
return new Object();
}
/**
* @brief 특정 글에 이미 엮인글이 등록되어 있는지 확인
**/
function isInsertedTrackback($document_srl) {
$config = $this->getConfig();
$check_trackback = $config->check_trackback=='Y'?true:false;
if(!$check_trackback) return new Object();
$oTrackbackModel = &getModel('trackback');
$count = $oTrackbackModel->getTrackbackCountByIPAddress($document_srl, $_SERVER['REMOTE_ADDR']);
if($count>0) return new Object(-1, 'msg_alert_trackback_denied');
return new Object();
}
/**
* @brief 지정된 IPaddress의 특정 시간대 내의 로그 수를 return
**/
function getLogCount($time = 60, $ipaddress='') {
if(!$ipaddress) $ipaddress = $_SERVER['REMOTE_ADDR'];
$args->ipaddress = $ipaddress;
$args->regdate = date("YmdHis", time()-$time);
$output = executeQuery('spamfilter.getLogCount', $args);
$count = $output->data->count;
return $count;
}
}
?>
<?php
/**
* @class spamfilterModel
* @author NHN (developers@xpressengine.com)
* @brief spamfilter 모듈의 Model class
**/
class spamfilterModel extends spamfilter {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 스팸필터 모듈의 사용자 설정 return
**/
function getConfig() {
// 설정 정보를 받아옴 (module model 객체를 이용)
$oModuleModel = &getModel('module');
return $oModuleModel->getModuleConfig('spamfilter');
}
/**
* @brief 등록된 금지 IP의 목록을 return
**/
function getDeniedIPList() {
$args->sort_index = "regdate";
$args->page = Context::get('page')?Context::get('page'):1;
$output = executeQuery('spamfilter.getDeniedIPList', $args);
if(!$output->data) return;
if(!is_array($output->data)) return array($output->data);
return $output->data;
}
/**
* @brief 인자로 넘겨진 ipaddress가 금지 ip인지 체크하여 return
**/
function isDeniedIP() {
$ipaddress = $_SERVER['REMOTE_ADDR'];
$ip_list = $this->getDeniedIPList();
if(!count($ip_list)) return new Object();
$count = count($ip_list);
$patterns = array();
for($i=0;$i<$count;$i++) {
$ip = str_replace('*','',$ip_list[$i]->ipaddress);
$patterns[] = preg_quote($ip);
}
$pattern = '/^('.implode($patterns,'|').')/';
if(preg_match($pattern, $ipaddress, $matches)) return new Object(-1,'msg_alert_registered_denied_ip');
return new Object();
}
/**
* @brief 등록된 금지 Word 목록을 return
**/
function getDeniedWordList() {
$args->sort_index = "hit";
$output = executeQuery('spamfilter.getDeniedWordList', $args);
if(!$output->data) return;
if(!is_array($output->data)) return array($output->data);
return $output->data;
}
/**
* @brief 넘어온 text에 금지 단어가 있는지 확인
**/
function isDeniedWord($text) {
$word_list = $this->getDeniedWordList();
if(!count($word_list)) return new Object();
$count = count($word_list);
for($i=0;$i<$count;$i++) {
$word = $word_list[$i]->word;
if(preg_match('/'.preg_quote($word,'/').'/is', $text)) {
$args->word = $word;
$output = executeQuery('spamfilter.updateDeniedWordHit', $args);
return new Object(-1,sprintf(Context::getLang('msg_alert_denied_word'), $word));
}
}
return new Object();
}
/**
* @brief 지정된 시간을 체크
**/
function checkLimited() {
$config = $this->getConfig();
$limit_count = $config->limit_count?$config->limit_count:5;
$interval = $config->interval;
if(!$interval) return new Object();
$count = $this->getLogCount($interval);
$ipaddress = $_SERVER['REMOTE_ADDR'];
// 정해진 시간보다 클 경우 금지 ip로 등록
if($count>=$limit_count) {
$oSpamFilterController = &getController('spamfilter');
$oSpamFilterController->insertIP($ipaddress, 'AUTO-DENIED : Over limit');
return new Object(-1, 'msg_alert_registered_denied_ip');
}
// 제한 글수까지는 아니지만 정해진 시간내에 글 작성을 계속 할때
if($count) {
$message = sprintf(Context::getLang('msg_alert_limited_by_config'), $interval);
$oSpamFilterController = &getController('spamfilter');
$oSpamFilterController->insertLog();
return new Object(-1, $message);
}
return new Object();
}
/**
* @brief 특정 글에 이미 엮인글이 등록되어 있는지 확인
**/
function isInsertedTrackback($document_srl) {
$config = $this->getConfig();
$check_trackback = $config->check_trackback=='Y'?true:false;
if(!$check_trackback) return new Object();
$oTrackbackModel = &getModel('trackback');
$count = $oTrackbackModel->getTrackbackCountByIPAddress($document_srl, $_SERVER['REMOTE_ADDR']);
if($count>0) return new Object(-1, 'msg_alert_trackback_denied');
return new Object();
}
/**
* @brief 지정된 IPaddress의 특정 시간대 내의 로그 수를 return
**/
function getLogCount($time = 60, $ipaddress='') {
if(!$ipaddress) $ipaddress = $_SERVER['REMOTE_ADDR'];
$args->ipaddress = $ipaddress;
$args->regdate = date("YmdHis", time()-$time);
$output = executeQuery('spamfilter.getLogCount', $args);
$count = $output->data->count;
return $count;
}
}
?>