From 4ef7feabf25831100a2f7439eeb9bfae5c819162 Mon Sep 17 00:00:00 2001 From: h00j Date: Fri, 12 Mar 2021 21:51:42 +0100 Subject: [PATCH] add telegrams --- inc/config.php | 6 ++ inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo | Bin 26105 -> 26188 bytes inc/locale/pl_PL/LC_MESSAGES/tinyboard.po | 6 ++ inc/mod/pages.php | 51 +++++++++++++- install.sql | 15 +++++ mod.php | 5 +- post.php | 55 +++++++++++---- templates/important.html | 12 ++++ templates/mod/view_ip.html | 78 ++++++++++++++++++++++ 9 files changed, 210 insertions(+), 18 deletions(-) create mode 100644 templates/important.html diff --git a/inc/config.php b/inc/config.php index 04fe48e6..25350fe7 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1554,6 +1554,12 @@ $config['mod']['create_notes'] = $config['mod']['view_notes']; // Remote notes $config['mod']['remove_notes'] = ADMIN; + // View telegrams + $config['mod']['view_telegrams'] = JANITOR; + // Create telegrams + $config['mod']['create_telegrams'] = $config['mod']['view_telegrams']; + // Remote telegrams + $config['mod']['remove_telegrams'] = ADMIN; // Create a new board $config['mod']['newboard'] = ADMIN; // Manage existing boards (change title, etc) diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.mo index b72324eaec51d52ec0e65c4b31220ebd28733f8a..f24fd2e47adf52223a114910497ecc7fc5a6b138 100644 GIT binary patch delta 7570 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 A!~g&Q delta 7495 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 diff --git a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po index eb73784d..50d24b64 100644 --- a/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po +++ b/inc/locale/pl_PL/LC_MESSAGES/tinyboard.po @@ -2286,6 +2286,9 @@ msgstr "usuń" #: ../../../../templates/cache/b1/4c/16a427b0d49ecf353c259d9fb606841783484eca9d790e766fdf0e3e9754.php:208 msgid "New note" msgstr "Nowa notka" + +msgid "New telegram" +msgstr "Nowa depesza" #. line 94 #. line 7 @@ -3510,3 +3513,6 @@ msgstr "Pokazuj bany tylko z boardów, które moderuję" #: ../../../../templates/cache/ba/55/2553cc018aecf7d29a62331aec4bedc71b646817c7e4c4e7d1a885263676.php:55 msgid "Show only active bans" msgstr "Pokazuj tylko aktywne bany" + +msgid "Important message from Moderation" +msgstr "Ważna wiadomość od Moderacji" diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 3379898a..782daee1 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -793,6 +793,27 @@ function mod_ip_remove_note($cloaked_ip, $id) { header('Location: ?/IP/' . $cloaked_ip . '#notes', true, $config['redirect_http']); } +function mod_ip_remove_telegram($cloaked_ip, $id) { + $ip = uncloak_ip($cloaked_ip); + global $config, $mod; + + if (!hasPermission($config['mod']['remove_telegrams'])) + error($config['error']['noaccess']); + + if (filter_var($ip, FILTER_VALIDATE_IP) === false) + error("Invalid IP address."); + + $query = prepare('DELETE FROM ``telegrams`` WHERE `ip` = :ip AND `id` = :id'); + $query->bindValue(':ip', $ip); + $query->bindValue(':id', $id); + $query->execute() or error(db_error($query)); + + modLog("Removed a telegram for {$cloaked_ip}"); + + header('Location: ?/IP/' . $cloaked_ip . '#telegrams', true, $config['redirect_http']); +} + + function mod_page_ip($cip) { $ip = uncloak_ip($cip); global $config, $mod; @@ -828,7 +849,26 @@ function mod_page_ip($cip) { header('Location: ?/IP/' . $cip . '#notes', true, $config['redirect_http']); return; } - + + if (isset($_POST['telegram'])) { + if (!hasPermission($config['mod']['create_telegrams'])) + error($config['error']['noaccess']); + + $_POST['telegram'] = escape_markup_modifiers($_POST['telegram']); + markup($_POST['telegram']); + $query = prepare('INSERT INTO ``telegrams`` VALUES (NULL, :mod_id, :ip, :message, 0, :created_at)'); + $query->bindValue(':ip', $ip); + $query->bindValue(':mod_id', $mod['id']); + $query->bindValue(':created_at', time()); + $query->bindValue(':message', $_POST['telegram']); + $query->execute() or error(db_error($query)); + + modLog("Added a telegram for {$cip}"); + + header('Location: ?/IP/' . $cip . '#telegrams', true, $config['redirect_http']); + return; + } + $args = array(); $args['ip'] = $ip; $args['posts'] = array(); @@ -872,7 +912,14 @@ function mod_page_ip($cip) { $query->execute() or error(db_error($query)); $args['notes'] = $query->fetchAll(PDO::FETCH_ASSOC); } - + + if (hasPermission($config['mod']['view_telegrams'])) { + $query = prepare("SELECT ``telegrams``.*, `username` FROM ``telegrams`` LEFT JOIN ``mods`` ON `mod_id` = ``mods``.`id` WHERE `ip` = :ip ORDER BY `created_at` DESC"); + $query->bindValue(':ip', $ip); + $query->execute() or error(db_error($query)); + $args['telegrams'] = $query->fetchAll(PDO::FETCH_ASSOC); + } + if (hasPermission($config['mod']['modlog_ip'])) { $query = prepare("SELECT `username`, `mod`, `ip`, `board`, `time`, `text` FROM ``modlogs`` LEFT JOIN ``mods`` ON `mod` = ``mods``.`id` WHERE `text` LIKE :search ORDER BY `time` DESC LIMIT 50"); $query->bindValue(':search', '%' . $cip . '%'); diff --git a/install.sql b/install.sql index ca60a58a..0c6e44eb 100644 --- a/install.sql +++ b/install.sql @@ -346,6 +346,21 @@ CREATE TABLE IF NOT EXISTS `captchas` ( PRIMARY KEY (`cookie`,`extra`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; +-- -------------------------------------------------------- + +-- +-- Table structure for table `telegrams` +-- + +CREATE TABLE IF NOT EXISTS `telegrams` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `mod_id` int(11) unsigned NOT NULL, + `ip` varchar(39) CHARACTER SET ascii NOT NULL, + `message` text NOT NULL, + `seen` tinyint(1) NOT NULL DEFAULT FALSE, + `created_at` INT(11), + PRIMARY KEY(`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; diff --git a/mod.php b/mod.php index ee087262..2d48b9ea 100644 --- a/mod.php +++ b/mod.php @@ -1,4 +1,4 @@ - 'secure_POST ip', // view ip address '/IP/([\w.:]+)/remove_note/(\d+)' => 'secure ip_remove_note', // remove note from ip address - + '/IP/([\w.:-]+)/remove_telegram/(\d+)' => 'secure ip_remove_telegram', // remove telegram from ip address + '/ban' => 'secure_POST ban', // new ban '/bans' => 'secure_POST bans', // ban list '/bans.json' => 'secure bans_json', // ban list JSON diff --git a/post.php b/post.php index 22532356..70a21c5d 100644 --- a/post.php +++ b/post.php @@ -402,17 +402,19 @@ if (isset($_POST['delete'])) { if (!$resp['success']) { error($config['error']['captcha']); } - // Same, but now with our custom captcha provider - if (($config['captcha']['enabled']) || (($post['op']) && ($config['new_thread_capt'])) ) { - $resp = file_get_contents($config['captcha']['provider_check'] . "?" . http_build_query([ - 'mode' => 'check', - 'text' => $_POST['captcha_text'], - 'extra' => $config['captcha']['extra'], - 'cookie' => $_POST['captcha_cookie'] - ])); - if ($resp !== '1') { - error($config['error']['captcha'] . - ''); + // Same, but now with our custom captcha provider + if (($config['captcha']['enabled']) || (($post['op']) && ($config['new_thread_capt'])) ) { + $resp = file_get_contents($config['captcha']['provider_check'] . "?" . http_build_query([ + 'mode' => 'check', + 'text' => $_POST['captcha_text'], + 'extra' => $config['captcha']['extra'], + 'cookie' => $_POST['captcha_cookie'] + ])); + if ($resp !== '1') { + error($config['error']['captcha'] . + ''); + } + } } } } @@ -1201,6 +1203,15 @@ if (isset($_POST['delete'])) { if (!$post['mod']) header('X-Associated-Content: "' . $redirect . '"'); + // Any telegrams to show? + $query = prepare('SELECT * FROM ``telegrams`` WHERE ``ip`` = :ip AND ``seen`` = 0'); + $query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); + $query->execute() or error(db_error($query)); + $telegrams = $query->fetchAll(PDO::FETCH_ASSOC); + + if (count($telegrams) > 0) + goto skip_redirect; + if (!isset($_POST['json_response'])) { header('Location: ' . $redirect, true, $config['redirect_http']); } else { @@ -1211,7 +1222,9 @@ if (isset($_POST['delete'])) { 'id' => $id )); } - + + skip_redirect: + if ($config['try_smarter'] && $post['op']) $build_pages = range(1, $config['max_pages']); @@ -1222,6 +1235,20 @@ if (isset($_POST['delete'])) { buildIndex(); + if (count($telegrams) > 0) { + $ids = implode(', ', array_map(function($x) { return (int)$x['id']; }, $telegrams)); + query("UPDATE ``telegrams`` SET ``seen`` = 1 WHERE ``id`` IN({$ids})") or error(db_error()); + die(Element('page.html', array( + 'title' => _('Important message from Moderation'), + 'config' => $config, + 'body' => Element('important.html', array( + 'config' => $config, + 'redirect' => $redirect, + 'telegrams' => $telegrams, + )) + ))); + } + // We are already done, let's continue our heavy-lifting work in the background (if we run off FastCGI) if (function_exists('fastcgi_finish_request')) @fastcgi_finish_request(); @@ -1230,7 +1257,7 @@ if (isset($_POST['delete'])) { rebuildThemes('post-thread', $board['uri']); else rebuildThemes('post', $board['uri']); - + } elseif (isset($_POST['appeal'])) { if (!isset($_POST['ban_id'])) error($config['error']['bot']); @@ -1279,4 +1306,4 @@ if (isset($_POST['delete'])) { // They opened post.php in their browser manually. error($config['error']['nopost']); } -} \ No newline at end of file +} diff --git a/templates/important.html b/templates/important.html new file mode 100644 index 00000000..bbf37873 --- /dev/null +++ b/templates/important.html @@ -0,0 +1,12 @@ +
+ {% for telegram in telegrams %} +
+ {{ telegram.created_at|date(config.post_date) }} +

{{ telegram.message }}

+
+
+ {% endfor %} + +
diff --git a/templates/mod/view_ip.html b/templates/mod/view_ip.html index 7b6727f8..e86c7a71 100644 --- a/templates/mod/view_ip.html +++ b/templates/mod/view_ip.html @@ -81,6 +81,84 @@ {% endif %} +{% if mod|hasPermission(config.mod.view_telegrams) %} +
+ + {% set telegrams_on_record = 'telegram' ~ (telegrams|count != 1 ? 's' : '') ~ ' on record' %} + {{ telegrams|count }} {% trans telegrams_on_record %} + + + {% if telegrams|count > 0 %} + + + + + + + {% if mod|hasPermission(config.mod.remove_telegrams) %} + + {% endif %} + + {% for telegram in telegrams %} + + + + + + {% if mod|hasPermission(config.mod.remove_telegrams) %} + + {% endif %} + + {% endfor %} +
{% trans 'Staff' %}{% trans 'Message' %}{% trans 'Date' %}{% trans 'Seen' %}{% trans 'Actions' %}
+ {% if telegram.username %} + {{ telegram.username|e }} + {% else %} + {% trans 'deleted?' %} + {% endif %} + + {{ telegram.message }} + + {{ telegram.time|date(config.post_date) }} + + {% if telegram.seen %} + {% trans 'Yes' %} + {% else %} + {% trans 'No' %} + {% endif %} + + + [{% trans 'remove' %}] + +
+ {% endif %} + + {% if mod|hasPermission(config.mod.create_telegrams) %} +
+ + + + + + + + + + + + + + +
{% trans 'Staff' %}{{ mod.username|e }}
+ + + +
+
+ {% endif %} +
+{% endif %} + {% if bans|count > 0 and mod|hasPermission(config.mod.view_ban) %}
{% set bans_on_record = 'ban' ~ (bans|count != 1 ? 's' : '') ~ ' on record' %}