Przeglądaj źródła

Don't backup infeasibly large keyserver databases

Bob Mottram 7 lat temu
rodzic
commit
0bbfd412b5
1 zmienionych plików z 42 dodań i 6 usunięć
  1. 42
    6
      src/freedombone-app-keyserver

+ 42
- 6
src/freedombone-app-keyserver Wyświetl plik

46
                      KEYSERVER_DOMAIN_NAME
46
                      KEYSERVER_DOMAIN_NAME
47
                      KEYSERVER_CODE)
47
                      KEYSERVER_CODE)
48
 
48
 
49
+function check_keyserver_directory_size {
50
+    dirsize=$(du /var/lib/sks/DB | awk -F ' ' '{print $1}')
51
+    # 500M
52
+    if [ $dirsize -gt 500000 ]; then
53
+        echo "1"
54
+        return
55
+    fi
56
+    echo "0"
57
+}
58
+
49
 function configure_firewall_for_keyserver {
59
 function configure_firewall_for_keyserver {
50
     if [[ $ONION_ONLY != "no" ]]; then
60
     if [[ $ONION_ONLY != "no" ]]; then
51
         return
61
         return
115
 }
125
 }
116
 
126
 
117
 function backup_local_keyserver {
127
 function backup_local_keyserver {
128
+    if [[ "$(check_keyserver_directory_size)" != "0" ]]; then
129
+        echo $'WARNING: Keyserver database size is too large to backup'
130
+        return
131
+    fi
118
     source_directory=/var/lib/sks/DB
132
     source_directory=/var/lib/sks/DB
119
     if [ -d $source_directory ]; then
133
     if [ -d $source_directory ]; then
120
         systemctl stop sks
134
         systemctl stop sks
158
 }
172
 }
159
 
173
 
160
 function backup_remote_keyserver {
174
 function backup_remote_keyserver {
175
+    if [[ "$(check_keyserver_directory_size)" != "0" ]]; then
176
+        echo $'WARNING: Keyserver database size is too large to backup'
177
+        return
178
+    fi
161
     source_directory=/var/lib/sks/DB
179
     source_directory=/var/lib/sks/DB
162
     if [ -d $source_directory ]; then
180
     if [ -d $source_directory ]; then
163
         systemctl stop sks
181
         systemctl stop sks
247
     APP_INSTALLED=1
265
     APP_INSTALLED=1
248
 }
266
 }
249
 
267
 
268
+function keyserver_create_membership {
269
+    if [ -f /etc/sks/membership ]; then
270
+        return
271
+    fi
272
+    systemctl stop sks
273
+    echo $"# List of other $PROJECT_NAME SKS Keyservers to sync with." > /etc/sks/membership
274
+    echo '#' >> /etc/sks/membership
275
+    echo $"# Don't add major keyservers here, because it will take an" >> /etc/sks/membership
276
+    echo $'# Infeasible amount of time to sync and backups will become' >> /etc/sks/membership
277
+    echo $'# absurdly long and probably break your system. You have been warned.' >> /etc/sks/membership
278
+    echo '' >> /etc/sks/membership
279
+    chown -Rc debian-sks: /etc/sks/membership
280
+    systemctl start sks
281
+}
282
+
250
 function keyserver_import_keys {
283
 function keyserver_import_keys {
284
+    # NOTE: this function isn't used, but kept for reference
251
     dialog --title $"Import public keys database" \
285
     dialog --title $"Import public keys database" \
252
            --backtitle $"Freedombone Control Panel" \
286
            --backtitle $"Freedombone Control Panel" \
253
            --defaultno \
287
            --defaultno \
277
     trap "rm -f $data" 0 1 2 5 15
311
     trap "rm -f $data" 0 1 2 5 15
278
     dialog --backtitle $"Freedombone Control Panel" \
312
     dialog --backtitle $"Freedombone Control Panel" \
279
            --title $"Sync with other keyserver" \
313
            --title $"Sync with other keyserver" \
280
-           --form "\nDetails for the other server:" 10 50 3 \
314
+           --form $"\nEnter details for the other server. Please be aware that it's not a good idea to sync with major keyservers which have exceptionally large databases. This is intended to sync with other $PROJECT_NAME systems each having a small database for a particular community." 15 60 2 \
281
            $"Domain:" 1 1 "" 1 18 32 32 \
315
            $"Domain:" 1 1 "" 1 18 32 32 \
282
            $"Port:" 2 1 "11370" 2 18 8 8 \
316
            $"Port:" 2 1 "11370" 2 18 8 8 \
283
            2> $data
317
            2> $data
306
     if [ ${#other_keyserver_port} -lt 4 ]; then
340
     if [ ${#other_keyserver_port} -lt 4 ]; then
307
         return
341
         return
308
     fi
342
     fi
343
+    keyserver_create_membership
309
     if grep -q "$other_keyserver_domain $other_keyserver_port" /etc/sks/membership; then
344
     if grep -q "$other_keyserver_domain $other_keyserver_port" /etc/sks/membership; then
310
         return
345
         return
311
     fi
346
     fi
321
 }
356
 }
322
 
357
 
323
 function keyserver_edit {
358
 function keyserver_edit {
359
+    if [ ! -f /etc/sks/membership ]; then
360
+        return
361
+    fi
324
     editor /etc/sks/membership
362
     editor /etc/sks/membership
325
     chown -Rc debian-sks: /etc/sks/membership
363
     chown -Rc debian-sks: /etc/sks/membership
326
     systemctl restart sks
364
     systemctl restart sks
333
         trap "rm -f $data" 0 1 2 5 15
371
         trap "rm -f $data" 0 1 2 5 15
334
         dialog --backtitle $"Freedombone Control Panel" \
372
         dialog --backtitle $"Freedombone Control Panel" \
335
                --title $"SKS Keyserver" \
373
                --title $"SKS Keyserver" \
336
-               --radiolist $"Choose an operation:" 12 70 4 \
374
+               --radiolist $"Choose an operation:" 11 70 3 \
337
                1 $"Sync with other keyserver" off \
375
                1 $"Sync with other keyserver" off \
338
                2 $"Edit sync keyservers" off \
376
                2 $"Edit sync keyservers" off \
339
-               3 $"Import public keys database" off \
340
-               4 $"Exit" on 2> $data
377
+               3 $"Exit" on 2> $data
341
         sel=$?
378
         sel=$?
342
         case $sel in
379
         case $sel in
343
             1) return;;
380
             1) return;;
346
         case $(cat $data) in
383
         case $(cat $data) in
347
             1) keyserver_sync;;
384
             1) keyserver_sync;;
348
             2) keyserver_edit;;
385
             2) keyserver_edit;;
349
-            3) keyserver_import_keys;;
350
-            4) break;;
386
+            3) break;;
351
         esac
387
         esac
352
     done
388
     done
353
 }
389
 }