Progetto

Generale

Profilo

Bepasty » Cronologia » Versione 3

Elena Grandi, 06-08-2020 08:55

1 1 Elena Grandi
*attenzione, questa pagina è ancora gestita in un file salvato altrove, ed eventuali modifiche verranno perse al prossimo aggiornamento*
2
3
h1(#bepasty). Bepasty
4
5 3 Elena Grandi
"Bepasty":https://github.com/bepasty/bepasty-server/ è un pastebin binario, ovvero un servizio che permette l'upload di file di vario formato, ed è quindi uno strumento ideale per la condivisione veloce di file effimeri, specialmente tra piccoli gruppi di lavoro.
6 1 Elena Grandi
7
È scritto in python, e comunica con un server web tramite wsgi; per questa guida useremo apache e il relativo mod_wsgi.
8
9
h2(#installazione). Installazione
10
11
h3(#bepasty-1). Bepasty
12
13 2 Elena Grandi
Il pacchetto bepasty è in debian a partire da @bullseye@ e @buster-backports@; lo si può installare con il comando:
14 1 Elena Grandi
15 2 Elena Grandi
<pre>
16
# apt install [-t buster-backports] bepasty
17
</pre>
18 1 Elena Grandi
19
È necessario quindi configurare bepasty creando il file @/etc/bepasty.conf@ con i seguenti contenuti:
20
21
<pre>
22
SITENAME=&quot;paste.example.org&quot;
23
STORAGE=&quot;filesystem&quot;
24
STORAGE_FILESYSTEM_DIRECTORY=&quot;/srv/bepasty/files/&quot;
25
26
SECRET_KEY = '&lt;a long string of random characters&gt;'
27
DEFAULT_PERMISSIONS='admin,list,create,read,delete'
28
</pre>
29
30
In questo modo tutti gli utenti possono compiere qualunque azione, ed è consigliato solo nel caso in cui il sito stesso sia protetto da HTTPAuth; in alternativa si possono usare permessi come:
31
32 2 Elena Grandi
<pre>
33
DEFAULT_PERMISSIONS='read'
34
</pre>
35 1 Elena Grandi
36
per permettere agli utenti non registrati la sola lettura di file esistenti, e limitare le altre operazioni ad utenti fidati; bepasty non supporta la creazione di utenti, ma associa un elenco di permessi a delle password, ad esempio:
37
38 2 Elena Grandi
<pre>
39
PERMISSIONS = {
40 1 Elena Grandi
    # password per amministratori
41
    'correct horse battery staple': 'admin,list,create,read,delete',
42
    # password per utenti semplici
43
    'chess observing leverage diocese': 'create,read',
44
 }
45 2 Elena Grandi
</pre>
46 1 Elena Grandi
47
Questo file dovrà essere letto dall'utente di apache (e contiene secrets, quindi è opportuno non sia letto dagli altri):
48
49 2 Elena Grandi
<pre>
50
# chown root:www-data /etc/bepasty.conf
51
# chmod 640 /etc/bepasty.conf
52
</pre>
53 1 Elena Grandi
54
Similmente è necessario creare le directory per i file:
55
56 2 Elena Grandi
<pre>
57
# mkdir -p /srv/bepasty/files
58
# chown www-data:www-data /srv/bepasty/files
59
# chmod 750 /srv/bepasty/files
60
</pre>
61 1 Elena Grandi
62
h3(#apache). Apache
63
64
Per far caricare a bepasty il file di configurazione, è necessario passargli la variabile d'ambiente @BEPASTY_CONFIG=/etc/bepasty.conf@.
65
66
Il modo più comodo per farlo con apache è creare un file @.wsgi@, ad esempio in @/var/www/bepasty/bepasty.wsgi@ coi seguenti contenuti:
67
68
<pre>
69
import os
70
71
os.environ['BEPASTY_CONFIG'] = '/etc/bepasty.conf'
72
73
from bepasty.app import create_app
74
application = create_app()
75
</pre>
76
77
Quindi si può configurare apache per servire il dominio creando il file @/etc/apache2/sites-available/bepasty.conf@:
78
79
<pre>
80 2 Elena Grandi
<VirtualHost *:80>
81 1 Elena Grandi
        DocumentRoot /var/www/bepasty
82
        ServerName paste.example.org
83
        ErrorLog /var/log/apache2/paste.example.org-error.log
84
        CustomLog /var/log/apache2/paste.example.org-access.log combined
85
86 2 Elena Grandi
        RewriteEngine On
87
        RewriteCond %{HTTPS} !=on
88
        RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
89
90
</VirtualHost>
91
92
<VirtualHost *:443>
93
        DocumentRoot /var/www/bepasty
94
        ServerName paste.example.org
95
        ErrorLog /var/log/apache2/paste.example.org-error.log
96
        CustomLog /var/log/apache2/paste.example.org-access.log combined
97
98 1 Elena Grandi
        WSGIDaemonProcess bepasty user=bepasty group=bepasty threads=5
99
        WSGIScriptAlias / /var/www/bepasty/bepasty.wsgi
100
101 2 Elena Grandi
        include "<your_ssl_configuration.inc>"
102
</VirtualHost>
103 1 Elena Grandi
</pre>
104
105
e come di consueto abilitando il sito e facendo ricaricare la configurazione:
106
107 2 Elena Grandi
<pre>
108
# a2ensite bepasty
109 1 Elena Grandi
# service apache2 reload
110 2 Elena Grandi
</pre>
111
112
h2(#gestione-e-uso). Gestione e uso
113
114
L'uso di bepasty è molto simile a quello di qualunque pastebin, con un interfaccia web su cui incollare testo o selezionare file locali da caricare.
115
116
In questa sezione vediamo alcune caratteristiche peculiari di cui tenere conto.
117
118
h3(#password-e-permessi). Password e permessi
119
120
Anziché usare un'accoppiata nome utente / password, bepasty usa una password associata ad una combinazione di permessi.
121
122
Le password sono impostate nel file di configurazione del server, come visto in fase di installazione, e i permessi associati sono:
123
124
<dl>
125
<dt>@create@</dt>
126
<dd><p>permette il caricamento di nuovi file;</p></dd>
127
<dt>@read@</dt>
128
<dd><p>permette la visualizzazione e download di file già esistenti;</p></dd>
129
<dt>@delete@</dt>
130
<dd><p>permette la cancellazione di file;</p></dd>
131
<dt>@list@</dt>
132
<dd><p>permette di elencare tutti i file presenti sul server;</p></dd>
133
<dt>@admin@</dt>
134
<dd><p>permette di bloccare e sbloccare i file, e di agire su file bloccati.</p></dd>
135
</dl>
136
137
h3(#cancellazione-dei-file). Cancellazione dei file
138
139
Quando si carica un file, è possibile specificare nell'interfaccia la durata oltre la quale dovrà essere cancellato. Di default (non configurabile) è un mese.
140
141
Alla scadenza, il file non viene più mostrato, ma "non viene cancellato dal server":https://github.com/bepasty/bepasty-server/issues/181 fino a che non si cerca di accederci o non viene aperta la pagina con l'elenco di tutti i file.