|
@@ -46,6 +46,16 @@ keyserver_variables=(ONION_ONLY
|
46
|
46
|
KEYSERVER_DOMAIN_NAME
|
47
|
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
|
59
|
function configure_firewall_for_keyserver {
|
50
|
60
|
if [[ $ONION_ONLY != "no" ]]; then
|
51
|
61
|
return
|
|
@@ -115,6 +125,10 @@ function upgrade_keyserver {
|
115
|
125
|
}
|
116
|
126
|
|
117
|
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
|
132
|
source_directory=/var/lib/sks/DB
|
119
|
133
|
if [ -d $source_directory ]; then
|
120
|
134
|
systemctl stop sks
|
|
@@ -158,6 +172,10 @@ function restore_local_keyserver {
|
158
|
172
|
}
|
159
|
173
|
|
160
|
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
|
179
|
source_directory=/var/lib/sks/DB
|
162
|
180
|
if [ -d $source_directory ]; then
|
163
|
181
|
systemctl stop sks
|
|
@@ -247,7 +265,23 @@ function install_interactive_keyserver {
|
247
|
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
|
283
|
function keyserver_import_keys {
|
|
284
|
+ # NOTE: this function isn't used, but kept for reference
|
251
|
285
|
dialog --title $"Import public keys database" \
|
252
|
286
|
--backtitle $"Freedombone Control Panel" \
|
253
|
287
|
--defaultno \
|
|
@@ -277,7 +311,7 @@ function keyserver_sync {
|
277
|
311
|
trap "rm -f $data" 0 1 2 5 15
|
278
|
312
|
dialog --backtitle $"Freedombone Control Panel" \
|
279
|
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
|
315
|
$"Domain:" 1 1 "" 1 18 32 32 \
|
282
|
316
|
$"Port:" 2 1 "11370" 2 18 8 8 \
|
283
|
317
|
2> $data
|
|
@@ -306,6 +340,7 @@ function keyserver_sync {
|
306
|
340
|
if [ ${#other_keyserver_port} -lt 4 ]; then
|
307
|
341
|
return
|
308
|
342
|
fi
|
|
343
|
+ keyserver_create_membership
|
309
|
344
|
if grep -q "$other_keyserver_domain $other_keyserver_port" /etc/sks/membership; then
|
310
|
345
|
return
|
311
|
346
|
fi
|
|
@@ -321,6 +356,9 @@ function keyserver_sync {
|
321
|
356
|
}
|
322
|
357
|
|
323
|
358
|
function keyserver_edit {
|
|
359
|
+ if [ ! -f /etc/sks/membership ]; then
|
|
360
|
+ return
|
|
361
|
+ fi
|
324
|
362
|
editor /etc/sks/membership
|
325
|
363
|
chown -Rc debian-sks: /etc/sks/membership
|
326
|
364
|
systemctl restart sks
|
|
@@ -333,11 +371,10 @@ function configure_interactive_keyserver {
|
333
|
371
|
trap "rm -f $data" 0 1 2 5 15
|
334
|
372
|
dialog --backtitle $"Freedombone Control Panel" \
|
335
|
373
|
--title $"SKS Keyserver" \
|
336
|
|
- --radiolist $"Choose an operation:" 12 70 4 \
|
|
374
|
+ --radiolist $"Choose an operation:" 11 70 3 \
|
337
|
375
|
1 $"Sync with other keyserver" off \
|
338
|
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
|
378
|
sel=$?
|
342
|
379
|
case $sel in
|
343
|
380
|
1) return;;
|
|
@@ -346,8 +383,7 @@ function configure_interactive_keyserver {
|
346
|
383
|
case $(cat $data) in
|
347
|
384
|
1) keyserver_sync;;
|
348
|
385
|
2) keyserver_edit;;
|
349
|
|
- 3) keyserver_import_keys;;
|
350
|
|
- 4) break;;
|
|
386
|
+ 3) break;;
|
351
|
387
|
esac
|
352
|
388
|
done
|
353
|
389
|
}
|