Add block list report to show active blocks
This commit is contained in:
parent
3bbb25226b
commit
95d69ef302
19
app.py
19
app.py
|
@ -22,6 +22,7 @@ import hashlib
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import locale
|
import locale
|
||||||
|
import socket
|
||||||
|
|
||||||
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
|
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
|
||||||
user_agent = 'Mozilla/5.0 (X11; Linux i586; rv:32.0) Gecko/20160101 Firefox/32.0'
|
user_agent = 'Mozilla/5.0 (X11; Linux i586; rv:32.0) Gecko/20160101 Firefox/32.0'
|
||||||
|
@ -112,6 +113,20 @@ def init_profile():
|
||||||
def global_user():
|
def global_user():
|
||||||
g.user = wikidata_oauth.get_username()
|
g.user = wikidata_oauth.get_username()
|
||||||
|
|
||||||
|
@app.before_request
|
||||||
|
def get_blocks():
|
||||||
|
hostname = app.config.get('HOSTNAME')
|
||||||
|
if not hostname:
|
||||||
|
return
|
||||||
|
g.server_ip = socket.gethostbyname(hostname)
|
||||||
|
try:
|
||||||
|
g.local_blocks = mediawiki.get_list('blocks',
|
||||||
|
bkip=g.server_ip)
|
||||||
|
g.global_blocks = mediawiki.get_list('globalblocks',
|
||||||
|
bgip=g.server_ip)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
@app.route('/find_more_setting')
|
@app.route('/find_more_setting')
|
||||||
def flip_find_more():
|
def flip_find_more():
|
||||||
session['no_find_more'] = not session.get('no_find_more')
|
session['no_find_more'] = not session.get('no_find_more')
|
||||||
|
@ -1058,6 +1073,10 @@ def wikidata_query_list():
|
||||||
q = WikidataQuery.query.order_by(WikidataQuery.start_time.desc())
|
q = WikidataQuery.query.order_by(WikidataQuery.start_time.desc())
|
||||||
return render_template('query_list.html', q=q)
|
return render_template('query_list.html', q=q)
|
||||||
|
|
||||||
|
@app.route('/report/blocks')
|
||||||
|
def server_block_report():
|
||||||
|
return render_template('block_report.html')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app.debug = True
|
app.debug = True
|
||||||
|
|
|
@ -23,6 +23,10 @@ def api_call(params, api_url=wikidata_url):
|
||||||
r = requests.get(api_url, params=call_params, timeout=5)
|
r = requests.get(api_url, params=call_params, timeout=5)
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
def get_list(list_name, **params):
|
||||||
|
r = api_call({'action': 'query', 'list': list_name, **params})
|
||||||
|
return r.json()['query'][list_name]
|
||||||
|
|
||||||
def get_entity(qid, redirects=False):
|
def get_entity(qid, redirects=False):
|
||||||
json_data = api_call({'action': 'wbgetentities',
|
json_data = api_call({'action': 'wbgetentities',
|
||||||
'ids': qid,
|
'ids': qid,
|
||||||
|
|
|
@ -12,9 +12,16 @@
|
||||||
{% block style %}{% endblock %}
|
{% block style %}{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
{% from "navbar.html" import navbar with context %}
|
{% from "navbar.html" import navbar with context %}
|
||||||
|
{% from "block_alert.html" import local_block_alert, global_block_alert with context %}
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
{% block nav %}{{ navbar() }}{% endblock %}
|
{% block nav %}{{ navbar() }}{% endblock %}
|
||||||
|
|
||||||
|
<div class="p-2">
|
||||||
|
{{ local_block_alert() }}
|
||||||
|
{{ global_block_alert() }}
|
||||||
|
</div>
|
||||||
|
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
|
|
||||||
<script src="{{ url_for('static', filename='javascript/jquery/jquery.min.js') }}"></script>
|
<script src="{{ url_for('static', filename='javascript/jquery/jquery.min.js') }}"></script>
|
||||||
|
|
25
templates/block_alert.html
Normal file
25
templates/block_alert.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{% macro local_block_alert() %}
|
||||||
|
{% if g.local_blocks %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
<h4 class="alert-heading">Wikidata IP block preventing edits</h4>
|
||||||
|
<p>Editing is currently unavailable due to a block of the server that hosts this tool.</p>
|
||||||
|
{% if request.endpoint != 'server_block_report' %}
|
||||||
|
<hr>
|
||||||
|
<p class="mb-0">See the <a href="{{ url_for('server_block_report') }}">block report</a> for more details.</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% macro global_block_alert() %}
|
||||||
|
{% if g.global_blocks %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
<h4 class="alert-heading">Wikimedia global IP block preventing edits</h4>
|
||||||
|
<p>Editing is currently unavailable due to a block of the server that hosts this tool.</p>
|
||||||
|
{% if request.endpoint != 'server_block_report' %}
|
||||||
|
<hr>
|
||||||
|
<p class="mb-0">See the <a href="{{ url_for('server_block_report') }}">block report</a> for more details.</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endmacro %}
|
47
templates/block_report.html
Normal file
47
templates/block_report.html
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% macro block_list(blocks) %}
|
||||||
|
{% for i in blocks %}
|
||||||
|
<dl class="row">
|
||||||
|
{% for key, value in i.items() %}
|
||||||
|
<dt class="col-sm-1">{{ key }}</dt>
|
||||||
|
<dd class="col-sm-11">{{ value }}</dt>
|
||||||
|
{% endfor %}
|
||||||
|
</dl>
|
||||||
|
{% endfor %}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="p-2">
|
||||||
|
<h1>Block report</h1>
|
||||||
|
|
||||||
|
<p>This report shows IP blocks on Wikidata that will prevent changes being saved.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Server hostname: {{ config.HOSTNAME }}</li>
|
||||||
|
<li>Server IP: {{ g.server_ip }}</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>Local blocks on Wikidata</h4>
|
||||||
|
{% set url = 'https://www.wikidata.org/wiki/Special:BlockList?wpTarget=' + g.server_ip %}
|
||||||
|
<p><a href="{{ url }}">Check block list on Wikidata</a></p>
|
||||||
|
|
||||||
|
{% if g.local_blocks %}
|
||||||
|
{{ block_list(g.local_blocks) }}
|
||||||
|
{% else %}
|
||||||
|
<p>There are no local blocks for the server IP address on Wikidata</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<h4>Global blocks</h4>
|
||||||
|
{% set url = 'https://www.wikidata.org/wiki/Special:GlobalBlockList/' + g.server_ip %}
|
||||||
|
<p><a href="{{ url }}">Check global block list</a></p>
|
||||||
|
|
||||||
|
{% if g.global_blocks %}
|
||||||
|
{{ block_list(g.global_blocks) }}
|
||||||
|
{% else %}
|
||||||
|
<p>There are no global blocks for the server IP address</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
Loading…
Reference in a new issue