Bepasty » History » Version 3
Elena Grandi, 08/06/2020 08:55 AM
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="paste.example.org" |
||
23 | STORAGE="filesystem" |
||
24 | STORAGE_FILESYSTEM_DIRECTORY="/srv/bepasty/files/" |
||
25 | |||
26 | SECRET_KEY = '<a long string of random characters>' |
||
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. |