From 6d8137bfc91fb9d6d32141119429a15a6717a5e1 Mon Sep 17 00:00:00 2001 From: SMaker Date: Fri, 15 Nov 2013 17:22:30 +0900 Subject: [PATCH] =?UTF-8?q?=EC=AA=BD=EC=A7=80=20=EB=B0=9C=EC=86=A1=20?= =?UTF-8?q?=EC=8B=9C=20=EC=8A=A4=ED=8C=B8=ED=95=84=ED=84=B0=EA=B0=80=20?= =?UTF-8?q?=EC=9E=91=EB=8F=99=ED=95=98=EB=8F=84=EB=A1=9D=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - communication.sendMessage 트리거 추가 - 쪽지 발송 차단 시 메시지 추가 --- .../communication.controller.php | 21 ++++++++++++ modules/spamfilter/lang/lang.xml | 7 ++-- modules/spamfilter/spamfilter.class.php | 9 ++++++ modules/spamfilter/spamfilter.controller.php | 32 +++++++++++++++++++ modules/spamfilter/spamfilter.model.php | 11 +++++-- 5 files changed, 76 insertions(+), 4 deletions(-) diff --git a/modules/communication/communication.controller.php b/modules/communication/communication.controller.php index 8f1d830fc..a2ea2fd39 100644 --- a/modules/communication/communication.controller.php +++ b/modules/communication/communication.controller.php @@ -194,6 +194,19 @@ class communicationController extends communication $receiver_args->readed = 'N'; $receiver_args->regdate = date("YmdHis"); + // Call a trigger (before) + $trigger_args = new stdClass(); + $trigger_args->sender_srl = $sender_srl; + $trigger_args->receiver_srl = $receiver_srl; + $trigger_args->title = $title; + $trigger_args->content = $content; + $trigger_args->sender_log = $sender_log; + $triggerOutput = ModuleHandler::triggerCall('communication.sendMessage', 'before', $trigger_args); + if(!$triggerOutput->toBool()) + { + return $triggerOutput; + } + $oDB = DB::getInstance(); $oDB->begin(); @@ -216,6 +229,14 @@ class communicationController extends communication return $output; } + // Call a trigger (after) + $triggerOutput = ModuleHandler::triggerCall('communication.sendMessage', 'after', $trigger_args); + if(!$triggerOutput->toBool()) + { + $oDB->rollback(); + return $triggerOutput; + } + // create a flag that message is sent (in file format) $flag_path = './files/member_extra_info/new_message_flags/' . getNumberingPath($receiver_srl); FileHandler::makeDir($flag_path); diff --git a/modules/spamfilter/lang/lang.xml b/modules/spamfilter/lang/lang.xml index 4f9af0e19..d09e7adb3 100644 --- a/modules/spamfilter/lang/lang.xml +++ b/modules/spamfilter/lang/lang.xml @@ -133,7 +133,7 @@ - + @@ -204,6 +204,9 @@ l'article qui comporte le mot ne sera pas affichagé.]]> + + + @@ -241,7 +244,7 @@ l'article qui comporte le mot ne sera pas affichagé.]]> - +    diff --git a/modules/spamfilter/spamfilter.class.php b/modules/spamfilter/spamfilter.class.php index 1ae3b36c2..6c3f7af4d 100644 --- a/modules/spamfilter/spamfilter.class.php +++ b/modules/spamfilter/spamfilter.class.php @@ -21,6 +21,8 @@ class spamfilter extends ModuleObject // 2008-12-17 Add a spamfilter for post modification actions $oModuleController->insertTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before'); $oModuleController->insertTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before'); + // 2013-11-14 The trigger which try to perform spam filtering when new message are registered + $oModuleController->insertTrigger('communication.sendMessage', 'spamfilter', 'controller', 'triggerSendMessage', 'before'); return new Object(); } @@ -39,6 +41,8 @@ class spamfilter extends ModuleObject // 2008-12-17 Add a spamfilter for post modification actions if(!$oModuleModel->getTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')) return true; if(!$oModuleModel->getTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')) return true; + // 2013-11-14 The trigger which try to perform spam filtering when new message are registered + if(!$oModuleModel->getTrigger('communication.sendMessage', 'spamfilter', 'controller', 'triggerSendMessage', 'before')) return true; /** * Add the hit count field (hit) @@ -76,6 +80,11 @@ class spamfilter extends ModuleObject { $oModuleController->insertTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before'); } + // 2013-11-14 The trigger which try to perform spam filtering when new message are registered + if(!$oModuleModel->getTrigger('communication.sendMessage', 'spamfilter', 'controller', 'triggerSendMessage', 'before')) + { + $oModuleController->insertTrigger('communication.sendMessage', 'spamfilter', 'controller', 'triggerSendMessage', 'before'); + } /** * Add the hit count field (hit) diff --git a/modules/spamfilter/spamfilter.controller.php b/modules/spamfilter/spamfilter.controller.php index db64ca398..97e78d05b 100644 --- a/modules/spamfilter/spamfilter.controller.php +++ b/modules/spamfilter/spamfilter.controller.php @@ -170,6 +170,38 @@ class spamfilterController extends spamfilter return $output; } + /** + * @brief The routine process to check the time it takes to store a message, when writing it, and to ban IP/word + */ + function triggerSendMessage(&$obj) + { + if($_SESSION['avoid_log']) return new Object(); + // Check the login status, login information, and permission + $is_logged = Context::get('is_logged'); + $logged_info = Context::get('logged_info'); + // In case logged in, check if it is an administrator + if($is_logged) + { + if($logged_info->is_admin == 'Y') return new Object(); + } + + $oFilterModel = getModel('spamfilter'); + // Check if the IP is prohibited + $output = $oFilterModel->isDeniedIP(); + if(!$output->toBool()) return $output; + // Check if there is a ban on the word + $text = $obj->title.$obj->content; + $output = $oFilterModel->isDeniedWord($text); + if(!$output->toBool()) return $output; + // Check the specified time + $output = $oFilterModel->checkLimited(); + if(!$output->toBool()) return $output; + // Save a log + $this->insertLog(); + + return new Object(); + } + /** * @brief Log registration * Register the newly accessed IP address in the log. In case the log interval is withing a certain time, diff --git a/modules/spamfilter/spamfilter.model.php b/modules/spamfilter/spamfilter.model.php index 1aa685f01..3a4822a7c 100644 --- a/modules/spamfilter/spamfilter.model.php +++ b/modules/spamfilter/spamfilter.model.php @@ -97,7 +97,7 @@ class spamfilterModel extends spamfilter /** * @brief Check the specified time */ - function checkLimited() + function checkLimited($isMessage = FALSE) { $config = $this->getConfig(); @@ -118,7 +118,14 @@ class spamfilterModel extends spamfilter // If the number of limited posts is not reached, keep creating. if($count) { - $message = sprintf(Context::getLang('msg_alert_limited_by_config'), $interval); + if($isMessage) + { + $message = sprintf(Context::getLang('msg_alert_limited_by_config'), $interval); + } + else + { + $message = sprintf(Context::getLang('msg_alert_limited_message_by_config'), $interval); + } $oSpamFilterController = &getController('spamfilter'); $oSpamFilterController->insertLog();