summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFredrick Brennan <admin@8chan.co>2015-03-13 12:45:57 +0800
committerczaks <marcin@6irc.net>2016-05-05 12:57:52 +0200
commit8943bb0bb378b629e0b1cf34f66094eb61f8453e (patch)
tree04b2465590eaa1f90889954dea5be19904ce2cf9
parent95a9b7b72bde0a3b529154fc1f25d64dabd51ddb (diff)
Rewrite report system due to flooding
-rw-r--r--inc/config.php3
-rw-r--r--js/fix-report-delete-submit.js15
-rw-r--r--post.php20
-rw-r--r--templates/report.html17
4 files changed, 43 insertions, 12 deletions
diff --git a/inc/config.php b/inc/config.php
index b92c4ac0..ad659343 100644
--- a/inc/config.php
+++ b/inc/config.php
@@ -1687,3 +1687,6 @@
// If set to 0, it won't upgrade hashes using old password encryption schema, only create new.
// You can set it to a higher value, to further migrate to other password hashing function.
$config['password_crypt_version'] = 1;
+
+ // Use CAPTCHA for reports?
+ $config['report_captcha'] = false;
diff --git a/js/fix-report-delete-submit.js b/js/fix-report-delete-submit.js
index 71c97f74..0b1ff840 100644
--- a/js/fix-report-delete-submit.js
+++ b/js/fix-report-delete-submit.js
@@ -43,19 +43,12 @@ Menu.onclick(function(e, $buf) {
var postId = $ele.find('.post_no').not('[id]').text();
$buf.find('#report_menu,#global_report_menu').click(function(e) {
- $('#delete_'+postId).prop('checked', 'checked');
- if ($(this).attr('id') === 'global_report_menu') {
- header = "<div><h1>Attention!</h1><p>This form is only for reporting <strong>child pornography</strong>, <strong>bot spam</strong> and <strong>credit card numbers, social security numbers or banking information</strong>. DMCA requests and all other deletion requests <em>MUST</em> be sent via email to admin@8chan.co.</p><p>8chan is unmoderated and allows posts without collecting <em>ANY</em> information from the poster less the details of their post. Furthermore, all boards on 8chan are user created and not actively monitored by anyone but the board creator.</p><p>8chan has a small volunteer staff to handle this queue, please do not waste their time by filling it with nonsense! <em>If you made a report with this tool and the post was not deleted, <strong>do not make the report again!</strong> Email admin@8chan.co instead.</em> Abuse of the global report system could lead to address blocks against your IP from 8chan.</p><p>Again, 8chan's global volunteers <em>do not</em> handle board specific issues. You most likely want to click \"Report\" instead to reach the creator and volunteers he assigned to this board.</p>";
- $('#global_report').prop('checked', 'checked');
+ if ($(this).attr('id') === "global_report_menu") {
+ var global = '&global';
} else {
- header = "";
- $('#global_report').prop('checked', '');
+ var global = '';
}
- alert(header+"Enter reason below...<br/><input type='text' id='alert_reason'>", true, function(){
- $('#reason').val($('#alert_reason').val());
- $('input[name=report][type=submit]').click();
- });
-
+ window.open(configRoot+'report.php?board='+board_name+'&post=delete_'+postId+global, "", (global?"width=600, height=575":"width=500, height=275"));
});
});
diff --git a/post.php b/post.php
index 1c511f9c..3b4f3311 100644
--- a/post.php
+++ b/post.php
@@ -124,6 +124,23 @@ if (isset($_POST['delete'])) {
if (count($report) > $config['report_limit'])
error($config['error']['toomanyreports']);
+
+ if ($config['report_captcha'] && !isset($_POST['captcha_text'], $_POST['captcha_cookie'])) {
+ error($config['error']['bot']);
+ }
+
+ if ($config['report_captcha']) {
+ $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']);
+ }
+ }
$reason = escape_markup_modifiers($_POST['reason']);
markup($reason);
@@ -153,7 +170,8 @@ if (isset($_POST['delete'])) {
$root = $is_mod ? $config['root'] . $config['file_mod'] . '?/' : $config['root'];
if (!isset($_POST['json_response'])) {
- header('Location: ' . $root . $board['dir'] . $config['file_index'], true, $config['redirect_http']);
+ $index = $root . $board['dir'] . $config['file_index'];
+ echo Element('page.html', array('config' => $config, 'body' => '<div style="text-align:center"><a href="javascript:window.close()">[ ' . _('Close window') ." ]</a> <a href='$index'>[ " . _('Return') . ' ]</a></div>', 'title' => _('Report submitted!')));
} else {
header('Content-Type: text/json');
echo json_encode(array('success' => true));
diff --git a/templates/report.html b/templates/report.html
new file mode 100644
index 00000000..291f9313
--- /dev/null
+++ b/templates/report.html
@@ -0,0 +1,17 @@
+<form action="{{ config.post_url }}" method="post" id="report_form">
+ <input type="hidden" name="board" value="{{ board.uri }}">
+ <input type="hidden" name="{{ post|e }}" value="1">
+ {% if global %}
+ <input type="hidden" name="global" value="1">
+ <div><h1>Attention!</h1><p>This form is only for reporting <strong>child pornography</strong>, <strong>bot spam</strong> and <strong>credit card numbers, social security numbers or banking information</strong>. DMCA requests and all other deletion requests <em>MUST</em> be sent via email to admin@8chan.co.</p><p>8chan is unmoderated and allows posts without collecting <em>ANY</em> information from the poster less the details of their post. Furthermore, all boards on 8chan are user created and not actively monitored by anyone but the board creator.</p><p>8chan has a small volunteer staff to handle this queue, please do not waste their time by filling it with nonsense! <em>If you made a report with this tool and the post was not deleted, <strong>do not make the report again!</strong> Email admin@8chan.co instead.</em> Abuse of the global report system could lead to address blocks against your IP from 8chan.</p><p>Again, 8chan's global volunteers <em>do not</em> handle board specific issues. You most likely want to click "Report" instead to reach the creator and volunteers he assigned to this board.</p>
+ {% endif %}
+ <p>{% trans %}Enter reason below...{% endtrans %}</p>
+ <input type="text" id="reason" name="reason">
+ {% if config.report_captcha %}
+ <p>{% trans %}To submit your report, please fill out the CAPTCHA below.{% endtrans %}</p>
+ {{ captcha['html'] }}<br/>
+ <input class="captcha_text" name="captcha_text" size="25" maxlength="6" autocomplete="off" type="text">
+ <input class="captcha_cookie" name="captcha_cookie" type="hidden" autocomplete="off" value="{{ captcha['cookie']|e }}"><br/>
+ {% endif %}
+ <input name="report" value="{% trans %}Submit{% endtrans %}" type="submit">
+</form>