From 59478e06c25303a790a0840ab2ac30662c4ef781 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Tue, 5 Aug 2014 16:46:22 +0200 Subject: c'est la merde.. --- plugins/markasjunk2/drivers/sa_blacklist.php | 103 +++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 plugins/markasjunk2/drivers/sa_blacklist.php (limited to 'plugins/markasjunk2/drivers/sa_blacklist.php') diff --git a/plugins/markasjunk2/drivers/sa_blacklist.php b/plugins/markasjunk2/drivers/sa_blacklist.php new file mode 100644 index 000000000..dd2ce6bc7 --- /dev/null +++ b/plugins/markasjunk2/drivers/sa_blacklist.php @@ -0,0 +1,103 @@ +_do_list($uids, true); + } + + public function ham($uids) + { + $this->_do_list($uids, false); + } + + private function _do_list($uids, $spam) + { + $rcmail = rcube::get_instance(); + if (is_file($rcmail->config->get('markasjunk2_sauserprefs_config')) && !$rcmail->config->load_from_file($rcmail->config->get('markasjunk2_sauserprefs_config'))) { + rcube::raise_error(array('code' => 527, 'type' => 'php', + 'file' => __FILE__, 'line' => __LINE__, + 'message' => "Failed to load config from " . $rcmail->config->get('markasjunk2_sauserprefs_config')), true, false); + return false; + } + + $db = rcube_db::factory($rcmail->config->get('sauserprefs_db_dsnw'), $rcmail->config->get('sauserprefs_db_dsnr'), $rcmail->config->get('sauserprefs_db_persistent')); + $db->db_connect('w'); + + // check DB connections and exit on failure + if ($err_str = $db->is_error()) { + rcube::raise_error(array( + 'code' => 603, + 'type' => 'db', + 'message' => $err_str), FALSE, TRUE); + } + + foreach (explode(",", $uids) as $uid) { + $message = new rcube_message($uid); + $email = $message->sender['mailto']; + + if ($spam) { + // delete any whitelisting for this address + $db->query( + "DELETE FROM ". $rcmail->config->get('sauserprefs_sql_table_name') ." WHERE ". $rcmail->config->get('sauserprefs_sql_username_field') ." = ? AND ". $rcmail->config->get('sauserprefs_sql_preference_field') ." = ? AND ". $rcmail->config->get('sauserprefs_sql_value_field') ." = ?;", + $_SESSION['username'], + 'whitelist_from', + $email); + + // check address is not already blacklisted + $sql_result = $db->query( + "SELECT value FROM ". $rcmail->config->get('sauserprefs_sql_table_name') ." WHERE ". $rcmail->config->get('sauserprefs_sql_username_field') ." = ? AND ". $rcmail->config->get('sauserprefs_sql_preference_field') ." = ? AND ". $rcmail->config->get('sauserprefs_sql_value_field') ." = ?;", + $_SESSION['username'], + 'blacklist_from', + $email); + + if (!$db->fetch_array($sql_result)) { + $db->query( + "INSERT INTO ". $rcmail->config->get('sauserprefs_sql_table_name') ." (". $rcmail->config->get('sauserprefs_sql_username_field') .", ". $rcmail->config->get('sauserprefs_sql_preference_field') .", ". $rcmail->config->get('sauserprefs_sql_value_field') .") VALUES (?, ?, ?);", + $_SESSION['username'], + 'blacklist_from', + $email); + + if ($rcmail->config->get('markasjunk2_debug')) + rcube::write_log('markasjunk2', $_SESSION['username'] . ' blacklist ' . $email); + } + } + else { + // delete any blacklisting for this address + $db->query( + "DELETE FROM ". $rcmail->config->get('sauserprefs_sql_table_name') ." WHERE ". $rcmail->config->get('sauserprefs_sql_username_field') ." = ? AND ". $rcmail->config->get('sauserprefs_sql_preference_field') ." = ? AND ". $rcmail->config->get('sauserprefs_sql_value_field') ." = ?;", + $_SESSION['username'], + 'blacklist_from', + $email); + + // check address is not already whitelisted + $sql_result = $db->query( + "SELECT value FROM ". $rcmail->config->get('sauserprefs_sql_table_name') ." WHERE ". $rcmail->config->get('sauserprefs_sql_username_field') ." = ? AND ". $rcmail->config->get('sauserprefs_sql_preference_field') ." = ? AND ". $rcmail->config->get('sauserprefs_sql_value_field') ." = ?;", + $_SESSION['username'], + 'whitelist_from', + $email); + + if (!$db->fetch_array($sql_result)) { + $db->query( + "INSERT INTO ". $rcmail->config->get('sauserprefs_sql_table_name') ." (". $rcmail->config->get('sauserprefs_sql_username_field') .", ". $rcmail->config->get('sauserprefs_sql_preference_field') .", ". $rcmail->config->get('sauserprefs_sql_value_field') .") VALUES (?, ?, ?);", + $_SESSION['username'], + 'whitelist_from', + $email); + + if ($rcmail->config->get('markasjunk2_debug')) + rcube::write_log('markasjunk2', $_SESSION['username'] . ' whitelist ' . $email); + } + } + } + } +} + +?> \ No newline at end of file -- cgit v1.2.3