浏览代码

Only update files when they change

Bob Mottram 7 年前
父节点
当前提交
db091e1d72

+ 12
- 2
src/freedombone-app-keyserver 查看文件

@@ -66,7 +66,7 @@ function keyserver_watchdog {
66 66
     read_config_param KEYSERVER_DOMAIN_NAME
67 67
 
68 68
     # check database size hourly
69
-    keyserver_watchdog_script=/etc/cron.hourly/keyserver-watchdog
69
+    keyserver_watchdog_script=/tmp/keyserver-watchdog
70 70
     echo '#!/bin/bash' > $keyserver_watchdog_script
71 71
     echo "dirsize=\$(du /var/lib/sks/DB | awk -F ' ' '{print \$1}')" >> $keyserver_watchdog_script
72 72
     echo 'if [ $dirsize -gt 450000 ]; then' >> $keyserver_watchdog_script
@@ -80,8 +80,18 @@ function keyserver_watchdog {
80 80
     echo "    echo \"$keyserver_disabled_warning\" | mail -s \"$keyserver_mail_subject_line_disabled\" $ADMIN_EMAIL_ADDRESS" >> $keyserver_watchdog_script
81 81
     echo '  fi' >> $keyserver_watchdog_script
82 82
     echo 'fi' >> $keyserver_watchdog_script
83
-
84 83
     chmod +x $keyserver_watchdog_script
84
+
85
+    if [ ! -f /etc/cron.hourly/keyserver-watchdog ]; then
86
+        cp $keyserver_watchdog_script /etc/cron.hourly/keyserver-watchdog
87
+    else
88
+        HASH1=$(sha256sum $keyserver_watchdog_script | awk -F ' ' '{print $1}')
89
+        HASH2=$(sha256sum /etc/cron.hourly/keyserver-watchdog | awk -F ' ' '{print $1}')
90
+        if [[ "$HASH1" != "$HASH2" ]]; then
91
+            cp $keyserver_watchdog_script /etc/cron.hourly/keyserver-watchdog
92
+        fi
93
+    fi
94
+    rm $keyserver_watchdog_script
85 95
 }
86 96
 
87 97
 

+ 15
- 4
src/freedombone-base-email 查看文件

@@ -326,11 +326,10 @@ function encrypt_all_email {
326 326
     fi
327 327
 
328 328
     if [ -f /usr/local/bin/${PROJECT_NAME}-encrypt-mail ]; then
329
-        cp /usr/local/bin/${PROJECT_NAME}-encrypt-mail /usr/bin/encmaildir
329
+        cp -u /usr/local/bin/${PROJECT_NAME}-encrypt-mail /usr/bin/encmaildir
330 330
     else
331
-        cp /usr/bin/${PROJECT_NAME}-encrypt-mail /usr/bin/encmaildir
331
+        cp -u /usr/bin/${PROJECT_NAME}-encrypt-mail /usr/bin/encmaildir
332 332
     fi
333
-    chmod +x /usr/bin/encmaildir
334 333
 
335 334
     if [[ $(is_completed $FUNCNAME) == "1" ]]; then
336 335
         return
@@ -1648,7 +1647,7 @@ function configure_gpg {
1648 1647
 }
1649 1648
 
1650 1649
 function refresh_gpg_keys {
1651
-    REFRESH_GPG_KEYS_SCRIPT=/usr/bin/update-gpg-keys
1650
+    REFRESH_GPG_KEYS_SCRIPT=/tmp/update-gpg-keys
1652 1651
     echo '#!/bin/bash' > $REFRESH_GPG_KEYS_SCRIPT
1653 1652
     echo "if [ -f /usr/local/bin/${PROJECT_NAME}-sec ]; then" >> $REFRESH_GPG_KEYS_SCRIPT
1654 1653
     echo "    /usr/bin/timeout 600 /usr/local/bin/${PROJECT_NAME}-sec --refresh yes" >> $REFRESH_GPG_KEYS_SCRIPT
@@ -1658,6 +1657,18 @@ function refresh_gpg_keys {
1658 1657
     echo 'exit 0' >> $REFRESH_GPG_KEYS_SCRIPT
1659 1658
     chmod +x $REFRESH_GPG_KEYS_SCRIPT
1660 1659
 
1660
+    if [ ! -f /usr/bin/update-gpg-keys ]; then
1661
+        cp $REFRESH_GPG_KEYS_SCRIPT /usr/bin/update-gpg-keys
1662
+    else
1663
+        HASH1=$(sha256sum $REFRESH_GPG_KEYS_SCRIPT | awk -F ' ' '{print $1}')
1664
+        HASH2=$(sha256sum /usr/bin/update-gpg-keys | awk -F ' ' '{print $1}')
1665
+        if [[ "$HASH1" != "$HASH2" ]]; then
1666
+            cp $REFRESH_GPG_KEYS_SCRIPT /usr/bin/update-gpg-keys
1667
+        fi
1668
+        rm $REFRESH_GPG_KEYS_SCRIPT
1669
+    fi
1670
+
1671
+    REFRESH_GPG_KEYS_SCRIPT=/usr/bin/update-gpg-keys
1661 1672
     if grep -q "${PROJECT_NAME}-sec" /etc/crontab; then
1662 1673
         sed -i "/${PROJECT_NAME}-sec /d" /etc/crontab
1663 1674
     fi

+ 1
- 1
src/freedombone-client 查看文件

@@ -96,7 +96,7 @@ function refresh_gpg_keys {
96 96
     fi
97 97
     sudo cp /etc/crontab ~/temp_crontab
98 98
     sudo chown $CURR_USER:$CURR_GROUP ~/temp_crontab
99
-    if ! grep -q "gpg --refresh-keys" ~/temp_crontab; then
99
+    if ! grep -q 'gpg --refresh-keys' ~/temp_crontab; then
100 100
         echo "0            */$REFRESH_GPG_KEYS_HOURS *   *   *   $CURR_USER /usr/bin/gpg --refresh-keys > /dev/null" >> ~/temp_crontab
101 101
         sudo cp ~/temp_crontab /etc/crontab
102 102
         sudo chown root:root /etc/crontab

+ 2
- 2
src/freedombone-utils-git 查看文件

@@ -95,10 +95,10 @@ function set_repo_commit {
95 95
             chown -R www-data:www-data $repo_dir
96 96
         fi
97 97
         if [[ $repo_dir == *"gpgit" ]]; then
98
-            cp gpgit.pl /usr/bin/gpgit.pl
98
+            cp -u gpgit.pl /usr/bin/gpgit.pl
99 99
         fi
100 100
         if [[ $repo_dir == *"cleanup-maildir" ]]; then
101
-            cp $INSTALL_DIR/cleanup-maildir/cleanup-maildir /usr/bin
101
+            cp -u $INSTALL_DIR/cleanup-maildir/cleanup-maildir /usr/bin
102 102
         fi
103 103
         if [[ $repo_dir == *"nginx_ensite" ]]; then
104 104
             make install

+ 3
- 1
src/freedombone-utils-setup 查看文件

@@ -145,7 +145,9 @@ function separate_tmp_filesystem {
145 145
 }
146 146
 
147 147
 function proc_filesystem_settings {
148
-    sed -i 's|proc /proc proc defaults |proc /proc proc defaults,nodev,nosuid |g' /etc/fstab
148
+    if ! grep -q "proc proc defaults,nodev,nosuid " /etc/fstab; then
149
+       sed -i 's|proc /proc proc defaults |proc /proc proc defaults,nodev,nosuid |g' /etc/fstab
150
+    fi
149 151
 }
150 152
 
151 153
 function remove_bluetooth {

+ 10
- 1
src/freedombone-utils-upgrade 查看文件

@@ -32,7 +32,16 @@
32 32
 UPGRADE_SCRIPT_NAME="${PROJECT_NAME}-upgrade"
33 33
 
34 34
 function create_upgrade_script {
35
-    cp $(which ${PROJECT_NAME}-upgrade) /etc/cron.weekly/$UPGRADE_SCRIPT_NAME
35
+    upgrade_command_file=$(which ${PROJECT_NAME}-upgrade)
36
+    if [ ! -f /etc/cron.weekly/$UPGRADE_SCRIPT_NAME ]; then
37
+        cp $upgrade_command_file /etc/cron.weekly/$UPGRADE_SCRIPT_NAME
38
+    else
39
+        HASH1=$(sha256sum $upgrade_command_file | awk -F ' ' '{print $1}')
40
+        HASH2=$(sha256sum /etc/cron.weekly/$UPGRADE_SCRIPT_NAME | awk -F ' ' '{print $1}')
41
+        if [[ "$HASH1" != "$HASH2" ]]; then
42
+            cp $upgrade_command_file /etc/cron.weekly/$UPGRADE_SCRIPT_NAME
43
+        fi
44
+    fi
36 45
 
37 46
     if [[ $(is_completed $FUNCNAME) == "1" ]]; then
38 47
         return

+ 24
- 2
src/freedombone-utils-web 查看文件

@@ -318,8 +318,8 @@ function letsencrypt_renewals {
318 318
         return
319 319
     fi
320 320
 
321
-    renewals_script=/etc/cron.monthly/letsencrypt
322
-    renewals_retry_script=/etc/cron.daily/letsencrypt
321
+    renewals_script=/tmp/renewals_letsencrypt
322
+    renewals_retry_script=/tmp/renewals_retry_letsencrypt
323 323
     renewal_failure_msg=$'The certificate for $LETSENCRYPT_DOMAIN could not be renewed'
324 324
     renewal_email_title=$'${PROJECT_NAME} Lets Encrypt certificate renewal'
325 325
 
@@ -361,6 +361,17 @@ function letsencrypt_renewals {
361 361
     echo 'fi' >> $renewals_script
362 362
     chmod +x $renewals_script
363 363
 
364
+    if [ ! -f /etc/cron.monthly/letsencrypt ]; then
365
+        cp $renewals_script /etc/cron.monthly/letsencrypt
366
+    else
367
+        HASH1=$(sha256sum $renewals_script | awk -F ' ' '{print $1}')
368
+        HASH2=$(sha256sum /etc/cron.monthly/letsencrypt | awk -F ' ' '{print $1}')
369
+        if [[ "$HASH1" != "$HASH2" ]]; then
370
+            cp $renewals_script /etc/cron.monthly/letsencrypt
371
+        fi
372
+    fi
373
+    rm $renewals_script
374
+
364 375
     # a secondary script keeps trying to renew after a failure
365 376
     echo '#!/bin/bash' > $renewals_retry_script
366 377
     echo '' >> $renewals_retry_script
@@ -398,6 +409,17 @@ function letsencrypt_renewals {
398 409
     echo '    fi' >> $renewals_retry_script
399 410
     echo 'fi' >> $renewals_retry_script
400 411
     chmod +x $renewals_retry_script
412
+
413
+    if [ ! -f /etc/cron.daily/letsencrypt ]; then
414
+        cp $renewals_retry_script /etc/cron.daily/letsencrypt
415
+    else
416
+        HASH1=$(sha256sum $renewals_retry_script | awk -F ' ' '{print $1}')
417
+        HASH2=$(sha256sum /etc/cron.daily/letsencrypt | awk -F ' ' '{print $1}')
418
+        if [[ "$HASH1" != "$HASH2" ]]; then
419
+            cp $renewals_retry_script /etc/cron.daily/letsencrypt
420
+        fi
421
+    fi
422
+    rm $renewals_retry_script
401 423
 }
402 424
 
403 425
 function configure_php {