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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 delta 7495 zcmX?ehVkcV#`=3gEK?a67#QLi85m?37#Kvj85r&}GBEInfkYV?I%F9bq!<_&I%OFc zL>L$tmdG+N2r)1)?386-sAgbbI3vrzz{9}6;33Drz|FwG5Gu#Opv=I)kSGUH-zvwz zAkM(RFiVbsfsKKIVUrvK13O4RgkR5aP>z9tkAZ>Vgd76{7Xt&sbvXuxCI$wEM{*1d zk_-$CsqzdAq6`cS_3{i1oD2*MQ{@>Lco`TN=F3AYTr1DO5CAezo`J!Zfq{Wbfq_8_ z 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 XFfuUM{K&S1XLFg?1D4In{x8JbindValue(':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' %}