Pārlūkot izejas kodu

Merge branch 'stretch' of https://github.com/bashrc/freedombone

Bob Mottram 8 gadus atpakaļ
vecāks
revīzija
e5b0ae0abd
1 mainītis faili ar 63 papildinājumiem un 140 dzēšanām
  1. 63
    140
      src/freedombone-app-keyserver

+ 63
- 140
src/freedombone-app-keyserver Parādīt failu

33
 IN_DEFAULT_INSTALL=0
33
 IN_DEFAULT_INSTALL=0
34
 SHOW_ON_ABOUT=1
34
 SHOW_ON_ABOUT=1
35
 
35
 
36
-KEYSERVER_SKS_REPO="https://bitbucket.org/skskeyserver/sks-keyserver"
37
-KEYSERVER_SKS_COMMIT='0106ba2'
38
 KEYSERVER_WEB_REPO="https://github.com/mattrude/pgpkeyserver-lite"
36
 KEYSERVER_WEB_REPO="https://github.com/mattrude/pgpkeyserver-lite"
39
 KEYSERVER_WEB_COMMIT='a038cb79b927c99bf7da62f20d2c6a2f20374339'
37
 KEYSERVER_WEB_COMMIT='a038cb79b927c99bf7da62f20d2c6a2f20374339'
40
 KEYSERVER_PORT=11371
38
 KEYSERVER_PORT=11371
41
 KEYSERVER_ONION_PORT=8122
39
 KEYSERVER_ONION_PORT=8122
42
 KEYSERVER_DOMAIN_NAME=
40
 KEYSERVER_DOMAIN_NAME=
43
 KEYSERVER_CODE=
41
 KEYSERVER_CODE=
44
-KEYSERVER_DUMP_URL="https://keyserver.mattrude.com/dump/current/"
45
 
42
 
46
 keyserver_variables=(ONION_ONLY
43
 keyserver_variables=(ONION_ONLY
47
                      MY_USERNAME
44
                      MY_USERNAME
61
     echo -n ''
58
     echo -n ''
62
 }
59
 }
63
 
60
 
64
-function upgrade_keyserver_sks {
65
-    CURR_KEYSERVER_SKS_COMMIT=$(get_completion_param "keyserver commit")
66
-    if [[ "$CURR_KEYSERVER_SKS_COMMIT" == "$KEYSERVER_SKS_COMMIT" ]]; then
67
-        return
68
-    fi
69
-
70
-    if grep -q "keyserver domain" $COMPLETION_FILE; then
71
-        KEYSERVER_DOMAIN_NAME=$(get_completion_param "keyserver domain")
72
-    fi
73
-
74
-    # update to the next commit
75
-    function_check set_repo_commit
76
-    set_repo_commit $INSTALL_DIR/keyserver "keyserver commit" "$KEYSERVER_SKS_COMMIT" $KEYSERVER_SKS_REPO
77
-
78
-    cd $INSTALL_DIR/keyserver
79
-    make dep
80
-    make all
81
-    if [ ! "$?" = "0" ]; then
82
-        echo $'Unable to build sks-keyserver'
83
-        exit 836252
84
-    fi
85
-    make install
86
-
87
-    chown -R keyserver:keyserver /var/lib/sks
88
-}
89
-
90
-function upgrade_keyserver_web {
61
+function upgrade_keyserver {
91
     CURR_KEYSERVER_WEB_COMMIT=$(get_completion_param "keyserver web commit")
62
     CURR_KEYSERVER_WEB_COMMIT=$(get_completion_param "keyserver web commit")
92
     if [[ "$CURR_KEYSERVER_WEB_COMMIT" == "$KEYSERVER_WEB_COMMIT" ]]; then
63
     if [[ "$CURR_KEYSERVER_WEB_COMMIT" == "$KEYSERVER_WEB_COMMIT" ]]; then
93
         return
64
         return
104
     chown -R www-data:www-data /var/www/$KEYSERVER_DOMAIN_NAME/htdocs
75
     chown -R www-data:www-data /var/www/$KEYSERVER_DOMAIN_NAME/htdocs
105
 }
76
 }
106
 
77
 
107
-function upgrade_keyserver {
108
-    upgrade_keyserver_sks
109
-    upgrade_keyserver_web
110
-}
111
-
112
 function backup_local_keyserver {
78
 function backup_local_keyserver {
113
     echo -n ''
79
     echo -n ''
114
 }
80
 }
126
 }
92
 }
127
 
93
 
128
 function remove_keyserver {
94
 function remove_keyserver {
129
-    systemctl stop keyserver
130
-    systemctl disable keyserver
131
-    rm /etc/systemd/system/keyserver.service
132
-    systemctl daemon-reload
95
+    systemctl stop sks
96
+    apt-get -qy remove sks
133
 
97
 
134
     read_config_param "KEYSERVER_DOMAIN_NAME"
98
     read_config_param "KEYSERVER_DOMAIN_NAME"
135
     nginx_dissite $KEYSERVER_DOMAIN_NAME
99
     nginx_dissite $KEYSERVER_DOMAIN_NAME
143
     function_check remove_ddns_domain
107
     function_check remove_ddns_domain
144
     remove_ddns_domain $KEYSERVER_DOMAIN_NAME
108
     remove_ddns_domain $KEYSERVER_DOMAIN_NAME
145
 
109
 
146
-    groupdel -f keyserver
147
-    userdel -r keyserver
148
-
149
     remove_config_param KEYSERVER_DOMAIN_NAME
110
     remove_config_param KEYSERVER_DOMAIN_NAME
150
     remove_config_param KEYSERVER_CODE
111
     remove_config_param KEYSERVER_CODE
151
     function_check remove_onion_service
112
     function_check remove_onion_service
153
     remove_completion_param "install_keyserver"
114
     remove_completion_param "install_keyserver"
154
 
115
 
155
     sed -i '/keyserver/d' $COMPLETION_FILE
116
     sed -i '/keyserver/d' $COMPLETION_FILE
156
-    if [ -f /usr/bin/keyserver-start ]; then
157
-        rm /usr/bin/keyserver-start
117
+    if [ -d /var/lib/sks ]; then
118
+        rm -rf /var/lib/sks
158
     fi
119
     fi
159
-    if [ -f /usr/bin/keyserver-stop ]; then
160
-        rm /usr/bin/keyserver-stop
161
-    fi
162
-    groupdel -f keyserver
163
-    userdel -r keyserver
164
 }
120
 }
165
 
121
 
166
 function install_interactive_keyserver {
122
 function install_interactive_keyserver {
178
     APP_INSTALLED=1
134
     APP_INSTALLED=1
179
 }
135
 }
180
 
136
 
137
+function keyserver_import_keys {
138
+    dialog --title $"Import public keys database" \
139
+           --backtitle $"Freedombone Control Panel" \
140
+           --defaultno \
141
+           --yesno $"\nThis will download many gigabytes of data and so depending on your bandwidth it could take several days.\n\nContinue?" 10 60
142
+    sel=$?
143
+    case $sel in
144
+        1) return;;
145
+        255) return;;
146
+    esac
147
+    if [ ! -d /var/lib/sks/dump ]; then
148
+        mkdir -p /var/lib/sks/dump
149
+    fi
150
+    cd /var/lib/sks/dump
151
+    echo $'Getting keyserver dump. This may take a few days or longer, so be patient.'
152
+    rm -rf cd /var/lib/sks/dump/*
153
+    KEYSERVER_DUMP_URL="https://keyserver.mattrude.com/dump/$(date +%F)/"
154
+    wget -crp -e robots=off --level=1 --cut-dirs=3 -nH \
155
+         -A pgp,txt $KEYSERVER_DUMP_URL
156
+
157
+    cd /var/lib/sks
158
+    echo $'Building the keyserver database from the downloaded dump'
159
+    sks build
160
+}
161
+
162
+function configure_interactive_keyserver {
163
+    while true
164
+    do
165
+        data=$(tempfile 2>/dev/null)
166
+        trap "rm -f $data" 0 1 2 5 15
167
+        dialog --backtitle $"Freedombone Control Panel" \
168
+               --title $"SKS Keyserver" \
169
+               --radiolist $"Choose an operation:" 10 70 2 \
170
+               1 $"Import public keys database" off \
171
+               2 $"Exit" on 2> $data
172
+        sel=$?
173
+        case $sel in
174
+            1) return;;
175
+            255) return;;
176
+        esac
177
+        case $(cat $data) in
178
+            1) keyserver_import_keys;;
179
+            2) break;;
180
+        esac
181
+    done
182
+}
183
+
181
 function install_keyserver {
184
 function install_keyserver {
182
-    apt-get -qy install build-essential gcc ocaml libdb-dev wget
185
+    apt-get -qy install build-essential gcc ocaml libdb-dev wget sks
186
+    sks build
187
+    chown -Rc debian-sks: /var/lib/sks/DB
188
+    sed -i 's|initstart=.*|initstart=yes|g' /etc/default/sks
189
+    systemctl restart sks
183
 
190
 
184
     if [ ! -d /var/www/$KEYSERVER_DOMAIN_NAME ]; then
191
     if [ ! -d /var/www/$KEYSERVER_DOMAIN_NAME ]; then
185
         mkdir /var/www/$KEYSERVER_DOMAIN_NAME
192
         mkdir /var/www/$KEYSERVER_DOMAIN_NAME
186
     fi
193
     fi
187
 
194
 
188
-    if [ ! -d $INSTALL_DIR ]; then
189
-        mkdir -p $INSTALL_DIR
190
-    fi
191
-    cd $INSTALL_DIR
192
-    if [ -d /repos/keyserver ]; then
193
-        mkdir $INSTALL_DIR/keyserver
194
-        cp -r -p /repos/keyserver/. $INSTALL_DIR/keyserver
195
-        cd $INSTALL_DIR/keyserver
196
-        git pull
197
-    else
198
-        if [ -d $INSTALL_DIR/keyserver ]; then
199
-            cd $INSTALL_DIR/keyserver
200
-            pull
201
-        else
202
-            git_clone $KEYSERVER_SKS_REPO $INSTALL_DIR/keyserver
203
-        fi
204
-    fi
205
-
206
-    cd $INSTALL_DIR/keyserver
207
-    git checkout $KEYSERVER_SKS_COMMIT -b $KEYSERVER_SKS_COMMIT
208
-    set_completion_param "keyserver commit" "$KEYSERVER_SKS_COMMIT"
209
-
210
     cd /var/www/$KEYSERVER_DOMAIN_NAME
195
     cd /var/www/$KEYSERVER_DOMAIN_NAME
211
     if [ -d /var/www/$KEYSERVER_DOMAIN_NAME/htdocs ]; then
196
     if [ -d /var/www/$KEYSERVER_DOMAIN_NAME/htdocs ]; then
212
         rm -rf /var/www/$KEYSERVER_DOMAIN_NAME/htdocs
197
         rm -rf /var/www/$KEYSERVER_DOMAIN_NAME/htdocs
220
     else
205
     else
221
         git_clone $KEYSERVER_WEB_REPO htdocs
206
         git_clone $KEYSERVER_WEB_REPO htdocs
222
     fi
207
     fi
208
+    if [ ! -d /var/www/$KEYSERVER_DOMAIN_NAME/htdocs ]; then
209
+        echo $"/var/www/$KEYSERVER_DOMAIN_NAME/htdocs not found"
210
+        exit 6539230
211
+    fi
223
 
212
 
224
     cd /var/www/$KEYSERVER_DOMAIN_NAME/htdocs
213
     cd /var/www/$KEYSERVER_DOMAIN_NAME/htdocs
225
     git checkout $KEYSERVER_WEB_COMMIT -b $KEYSERVER_WEB_COMMIT
214
     git checkout $KEYSERVER_WEB_COMMIT -b $KEYSERVER_WEB_COMMIT
226
     set_completion_param "keyserver web commit" "$KEYSERVER_WEB_COMMIT"
215
     set_completion_param "keyserver web commit" "$KEYSERVER_WEB_COMMIT"
227
 
216
 
228
-    cd $INSTALL_DIR/keyserver
229
-    if [ ! -f Makefile.local.unused ]; then
230
-        echo $'Unused makefile not found'
231
-        exit 72398
232
-    fi
233
-    cp Makefile.local.unused Makefile.local
234
-    sed -i 's|LIBDB=.*|LIBDB=-ldb-5.3.1|g' Makefile.local
235
-
236
-    make dep
237
-    make all
238
-    if [ ! "$?" = "0" ]; then
239
-        echo $'Unable to build sks-keyserver'
240
-        exit 8356328
241
-    fi
242
-    make install
243
-
244
-    if [ ! -f /usr/local/bin/sks_build.sh ]; then
245
-        echo $'/usr/local/bin/sks_build.sh not found'
246
-        exit 238460
247
-    fi
248
 
217
 
249
     USER_EMAIL_ADDRESS=$MY_USERNAME@$HOSTNAME
218
     USER_EMAIL_ADDRESS=$MY_USERNAME@$HOSTNAME
250
     GPG_ID=$(su -m root -c "gpg --list-keys $USER_EMAIL_ADDRESS | sed -n '2p' | sed 's/^[ \t]*//'" - $MY_USERNAME)
219
     GPG_ID=$(su -m root -c "gpg --list-keys $USER_EMAIL_ADDRESS | sed -n '2p' | sed 's/^[ \t]*//'" - $MY_USERNAME)
278
     echo 'stat_hour:                      12' >> $sksconf_file
247
     echo 'stat_hour:                      12' >> $sksconf_file
279
     echo '' >> $sksconf_file
248
     echo '' >> $sksconf_file
280
     echo 'max_matches:                    500' >> $sksconf_file
249
     echo 'max_matches:                    500' >> $sksconf_file
281
-
282
-    if [ ! -d /var/lib/sks/dump ]; then
283
-        mkdir -p /var/lib/sks/dump
284
-    fi
285
-    cd /var/lib/sks/dump
286
-    echo $'Getting keyserver dump. This may take a few hours, so be patient.'
287
-    wget -crp -e robots=off --level=1 --cut-dirs=3 -nH \
288
-         -A pgp,txt $KEYSERVER_DUMP_URL
289
-
290
-    cd /var/lib/sks
291
-    echo $'Building the keyserver database from the downloaded dump'
292
-    echo '2' | /usr/local/bin/sks_build.sh
250
+    chown debian-sks: $sksconf_file
293
 
251
 
294
     KEYSERVER_ONION_HOSTNAME=$(add_onion_service keyserver 80 ${KEYSERVER_ONION_PORT})
252
     KEYSERVER_ONION_HOSTNAME=$(add_onion_service keyserver 80 ${KEYSERVER_ONION_PORT})
295
 
253
 
296
-    echo '#!/bin/sh' > /usr/bin/keyserver-start
297
-    echo 'cd /var/lib/sks' >> /usr/bin/keyserver-start
298
-    echo 'echo -n \ sks_db' >> /usr/bin/keyserver-start
299
-    echo '$DAEMON db &' >> /usr/bin/keyserver-start
300
-    echo 'echo -n \ sks_recon' >> /usr/bin/keyserver-start
301
-    echo '$DAEMON recon &' >> /usr/bin/keyserver-start
302
-    chmod +x /usr/bin/keyserver-start
303
-
304
-    echo '#!/bin/sh' > /usr/bin/keyserver-stop
305
-    echo 'killall sks' >> /usr/bin/keyserver-stop
306
-    echo 'sleep 5' >> /usr/bin/keyserver-stop
307
-    chmod +x /usr/bin/keyserver-stop
308
-
309
-    echo '[Unit]' > /etc/systemd/system/keyserver.service
310
-    echo 'Description=SKS Keyserver' >> /etc/systemd/system/keyserver.service
311
-    echo 'After=syslog.target network.target nginx.target' >> /etc/systemd/system/keyserver.service
312
-    echo '' >> /etc/systemd/system/keyserver.service
313
-    echo '[Service]' >> /etc/systemd/system/keyserver.service
314
-    echo 'User=keyserver' >> /etc/systemd/system/keyserver.service
315
-    echo 'Group=keyserver' >> /etc/systemd/system/keyserver.service
316
-    echo "WorkingDirectory=/var/lib/sks" >> /etc/systemd/system/keyserver.service
317
-    echo "ExecStart=/usr/bin/keyserver-start" >> /etc/systemd/system/keyserver.service
318
-    echo "ExecStop=/usr/bin/keyserver-stop" >> /etc/systemd/system/keyserver.service
319
-    echo 'Restart=always' >> /etc/systemd/system/keyserver.service
320
-    echo 'RestartSec=10' >> /etc/systemd/system/keyserver.service
321
-    echo '' >> /etc/systemd/system/keyserver.service
322
-    echo '[Install]' >> /etc/systemd/system/keyserver.service
323
-    echo 'WantedBy=multi-user.target' >> /etc/systemd/system/keyserver.service
324
-    chmod +x /etc/systemd/system/keyserver.service
325
-
326
     keyserver_nginx_site=/etc/nginx/sites-available/$KEYSERVER_DOMAIN_NAME
254
     keyserver_nginx_site=/etc/nginx/sites-available/$KEYSERVER_DOMAIN_NAME
327
     if [[ $ONION_ONLY == "no" ]]; then
255
     if [[ $ONION_ONLY == "no" ]]; then
328
         function_check nginx_http_redirect
256
         function_check nginx_http_redirect
416
         chown root:root /etc/ssl/private/${KEYSERVER_DOMAIN_NAME}.key
344
         chown root:root /etc/ssl/private/${KEYSERVER_DOMAIN_NAME}.key
417
     fi
345
     fi
418
 
346
 
419
-    groupadd keyserver
420
-    useradd -c "SKS Keyserver system account" -d /var/lib/sks -m -r -g keyserver keyserver
421
-    chown -R keyserver:keyserver /var/lib/sks
422
     chown -R www-data:www-data /var/www/$KEYSERVER_DOMAIN_NAME/htdocs
347
     chown -R www-data:www-data /var/www/$KEYSERVER_DOMAIN_NAME/htdocs
423
 
348
 
424
     function_check nginx_ensite
349
     function_check nginx_ensite
425
     nginx_ensite $KEYSERVER_DOMAIN_NAME
350
     nginx_ensite $KEYSERVER_DOMAIN_NAME
426
 
351
 
427
-    systemctl enable keyserver
428
-    systemctl daemon-reload
429
-    systemctl start keyserver
430
     systemctl restart nginx
352
     systemctl restart nginx
431
 
353
 
432
     set_completion_param "keyserver domain" "$KEYSERVER_DOMAIN_NAME"
354
     set_completion_param "keyserver domain" "$KEYSERVER_DOMAIN_NAME"
355
+    set_completion_param "keyserver onion domain" "$KEYSERVER_ONION_HOSTNAME"
433
 
356
 
434
     APP_INSTALLED=1
357
     APP_INSTALLED=1
435
 }
358
 }