Compare commits

...

15 Commits

9 changed files with 31 additions and 22 deletions

View File

@ -26,8 +26,7 @@ Deployed on:
* Bootstrap the application via [xppl/app.py](xppl/app.py). * Bootstrap the application via [xppl/app.py](xppl/app.py).
* Added [Makefile](Makefile) targets for installing [RQLite](https://github.com/rqlite/rqlite). * Added [Makefile](Makefile) targets for installing [RQLite](https://github.com/rqlite/rqlite).
* Run [isort](https://isort.readthedocs.io/en/latest/) and [pylava](https://github.com/pylava/pylava) * Run [isort](https://isort.readthedocs.io/en/latest/) and [pylava](https://github.com/pylava/pylava)
code audit tools over the source to use PEP 8 style, catch any erroneous code audit tools over the source.
imports, unused variables etc. with some basic static analysis.
* Use a new [Hypothesis](https://web.hypothes.is/) API key. * Use a new [Hypothesis](https://web.hypothes.is/) API key.
### Fixed ### Fixed

View File

@ -7,7 +7,7 @@ The [XPUB] library living at [Varia].
[XPUB]: http://xpub.nl/ [XPUB]: http://xpub.nl/
[Varia]: https://varia.zone/ [Varia]: https://varia.zone/
# Change It # Run It Locally
Please note, the following instructions have only been tested on the Debian Stretch OS. Please note, the following instructions have only been tested on the Debian Stretch OS.
@ -26,6 +26,8 @@ $ pipenv install --dev --three
$ pipenv run devserver $ pipenv run devserver
``` ```
The local development web server will now be available.
If you need to check the database contents, run: If you need to check the database contents, run:
```bash ```bash
@ -56,10 +58,11 @@ The XPPL is made up of a few parts:
* The [Flask] application and it's dependencies. * The [Flask] application and it's dependencies.
* The [RQLite] database. * The [RQLite] database.
* The [Syncthing] integration for uploads. * The [Syncthing] integration for uploads.
* The Nginx reverse proxy. * The [Nginx reverse proxy].
* The Let's Encrypt web certificates. * The [Let's Encrypt web certificates].
If you know [Ansible] (it's just YAML), you can just [read the entire configuration]. If you know [Ansible](https://www.ansible.com/overview/how-ansible-works) (it's
just YAML), you can just [read the entire configuration].
On the varia.zone machine, you can check the running services with: On the varia.zone machine, you can check the running services with:
@ -85,6 +88,7 @@ No backups are configured right now.
[Flask]: http://flask.pocoo.org/ [Flask]: http://flask.pocoo.org/
[RQLite]: https://github.com/rqlite/rqlite [RQLite]: https://github.com/rqlite/rqlite
[Syncthing]: https://docs.syncthing.net/ [Syncthing]: https://docs.syncthing.net/
[Nginx reverse proxy]: https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
[Let's Encrypt web certificates]: https://certbot.eff.org/
[Syncthing UI]: https://vvvvvvaria.org/st/ [Syncthing UI]: https://vvvvvvaria.org/st/
[read the entire configuration]: ansible/plays/main.yml [read the entire configuration]: ansible/plays/setup.yml
[Ansible]: https://www.ansible.com/overview/how-ansible-works

View File

@ -17,11 +17,11 @@ $ sudo apt install -y ansible
## Setup a New XPPL ## Setup a New XPPL
```bash ```bash
$ ansible-playbook --limit varia-zone --ask-become-pass plays/setup.yml $ ansible-playbook --limit varia.zone --ask-become-pass plays/setup.yml
``` ```
## Deploy a New XPPL Version ## Deploy a New XPPL Version
```bash ```bash
$ ansible-playbook --limit varia-zone --ask-become-pass plays/deploy.yml $ ansible-playbook --limit varia.zone --ask-become-pass plays/deploy.yml
``` ```

View File

@ -1,2 +1,2 @@
[managed] [all]
varia.zone ansible_ssh_port=12345 varia.zone ansible_ssh_port=12345

View File

@ -1,6 +1,9 @@
--- ---
- hosts: managed # Just deploy a new version of the the XPPL.
# Depends on setup.yml being ran first to set things up.
- hosts: all
pre_tasks: pre_tasks:
- name: Shutdown the running XPPL for the deployment. - name: Shutdown the running XPPL for the deployment.
become: true become: true
@ -17,4 +20,4 @@
become: true become: true
supervisorctl: supervisorctl:
name: 'xppl:' name: 'xppl:'
state: stopped state: started

View File

@ -1,6 +1,9 @@
--- ---
- hosts: managed # Setup all necessary infrastructure for the project.
# Install the project and get it running under supervisor.
- hosts: all
roles: roles:
- role: perms # Setup users and groups - role: perms # Setup users and groups
- role: git # Clone the project source - role: git # Clone the project source

View File

@ -6,7 +6,7 @@ from flask import request
def get_annotations(): def get_annotations():
# TODO(decentral1se): remove this from the source # TODO(decentral1se): remove this from the source
KEY = "6879-H5GbA2KyFIeEUM1BubjVTLP8yM3GMyHgOAjjNe_GBxY" KEY = "6879-n8AksBoSB7kYoQ3eEwzpEr3nFQEmSp3XN-0PcKL_Sik"
# a dictionary containing necessary http headers # a dictionary containing necessary http headers
headers = { headers = {
@ -15,7 +15,7 @@ def get_annotations():
"Authorization": "Bearer %s" % KEY "Authorization": "Bearer %s" % KEY
} }
base_url = "https://hypothes.is/api/search?user=varia_annotator@hypothes.is" base_url = "https://hypothes.is/api/search?user=xpub@hypothes.is"
search_url = "".join([base_url]) search_url = "".join([base_url])
@ -45,7 +45,7 @@ def get_annot_results(annot, name):
data = { data = {
'text': item['text'], 'text': item['text'],
'extract': item['target'][0]['selector'][2]['exact'], 'extract': item['target'][0]['selector'][2]['exact'],
'title': item['document']['title'], 'url': item['uri'] 'title': item['uri'][37:], 'url': item['uri']
} }
res.append(data) res.append(data)
else: else:
@ -54,7 +54,7 @@ def get_annot_results(annot, name):
data = { data = {
'text': item['text'], 'text': item['text'],
'extract': item['target'][0]['selector'][1]['exact'], 'extract': item['target'][0]['selector'][1]['exact'],
'title': item['document']['title'], 'url': item['uri'] 'title': item['uri'][37:], 'url': item['uri']
} }
res.append(data) res.append(data)
return res return res
@ -71,7 +71,7 @@ def get_annot_book(annot, name):
data = { data = {
'text': item['text'], 'text': item['text'],
'extract': item['target'][0]['selector'][2]['exact'], 'extract': item['target'][0]['selector'][2]['exact'],
'title': item['document']['title'], 'url': item['uri'] 'title': item['uri'][37:], 'url': item['uri']
} }
res.append(data) res.append(data)
else: else:
@ -80,7 +80,7 @@ def get_annot_book(annot, name):
data = { data = {
'text': item['text'], 'text': item['text'],
'extract': item['target'][0]['selector'][1]['exact'], 'extract': item['target'][0]['selector'][1]['exact'],
'title': item['document']['title'], 'url': item['uri'] 'title': item['uri'][37:], 'url': item['uri']
} }
res.append(data) res.append(data)
return res return res

View File

@ -11,7 +11,7 @@
{%for book in books%} {%for book in books%}
{%if book.file == row.uri%} {%if book.file == row.uri%}
<p align="right" style="font-family:archivo narrow;font-size:10px;">Book</p> <p align="right" style="font-family:archivo narrow;font-size:10px;">Book</p>
<a href="books/{{book.id}}"><p align="right" style="font-family:archivo narrow;font-size:18px;">{{book.title}}</p></a><br> <a href="books/{{book.id}}"><p align="right" style="font-family:archivo narrow;font-size:18px;">{{book.file}}</p></a><br>
{% endif %} {% endif %}
{% endfor %} {% endfor %}

View File

@ -19,7 +19,7 @@
{% for book in stack.books %} {% for book in stack.books %}
{% if loop.length >= 5 %} {% if loop.length >= 5 %}
{% if loop.index == 6 %} {% if loop.index == 6 %}
<p style='color:red;'>Your stack is getting a little too big. Are these next books really relevant?</p> <p style='color:red;'>Your stack is getting a little big. Proceed.</p>
<br> <br>
<br> <br>
{% endif %} {% endif %}