瀏覽代碼

Only update files when they change

Bob Mottram 7 年之前
父節點
當前提交
db091e1d72

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

66
     read_config_param KEYSERVER_DOMAIN_NAME
66
     read_config_param KEYSERVER_DOMAIN_NAME
67
 
67
 
68
     # check database size hourly
68
     # check database size hourly
69
-    keyserver_watchdog_script=/etc/cron.hourly/keyserver-watchdog
69
+    keyserver_watchdog_script=/tmp/keyserver-watchdog
70
     echo '#!/bin/bash' > $keyserver_watchdog_script
70
     echo '#!/bin/bash' > $keyserver_watchdog_script
71
     echo "dirsize=\$(du /var/lib/sks/DB | awk -F ' ' '{print \$1}')" >> $keyserver_watchdog_script
71
     echo "dirsize=\$(du /var/lib/sks/DB | awk -F ' ' '{print \$1}')" >> $keyserver_watchdog_script
72
     echo 'if [ $dirsize -gt 450000 ]; then' >> $keyserver_watchdog_script
72
     echo 'if [ $dirsize -gt 450000 ]; then' >> $keyserver_watchdog_script
80
     echo "    echo \"$keyserver_disabled_warning\" | mail -s \"$keyserver_mail_subject_line_disabled\" $ADMIN_EMAIL_ADDRESS" >> $keyserver_watchdog_script
80
     echo "    echo \"$keyserver_disabled_warning\" | mail -s \"$keyserver_mail_subject_line_disabled\" $ADMIN_EMAIL_ADDRESS" >> $keyserver_watchdog_script
81
     echo '  fi' >> $keyserver_watchdog_script
81
     echo '  fi' >> $keyserver_watchdog_script
82
     echo 'fi' >> $keyserver_watchdog_script
82
     echo 'fi' >> $keyserver_watchdog_script
83
-
84
     chmod +x $keyserver_watchdog_script
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
     fi
326
     fi
327
 
327
 
328
     if [ -f /usr/local/bin/${PROJECT_NAME}-encrypt-mail ]; then
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
     else
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
     fi
332
     fi
333
-    chmod +x /usr/bin/encmaildir
334
 
333
 
335
     if [[ $(is_completed $FUNCNAME) == "1" ]]; then
334
     if [[ $(is_completed $FUNCNAME) == "1" ]]; then
336
         return
335
         return
1648
 }
1647
 }
1649
 
1648
 
1650
 function refresh_gpg_keys {
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
     echo '#!/bin/bash' > $REFRESH_GPG_KEYS_SCRIPT
1651
     echo '#!/bin/bash' > $REFRESH_GPG_KEYS_SCRIPT
1653
     echo "if [ -f /usr/local/bin/${PROJECT_NAME}-sec ]; then" >> $REFRESH_GPG_KEYS_SCRIPT
1652
     echo "if [ -f /usr/local/bin/${PROJECT_NAME}-sec ]; then" >> $REFRESH_GPG_KEYS_SCRIPT
1654
     echo "    /usr/bin/timeout 600 /usr/local/bin/${PROJECT_NAME}-sec --refresh yes" >> $REFRESH_GPG_KEYS_SCRIPT
1653
     echo "    /usr/bin/timeout 600 /usr/local/bin/${PROJECT_NAME}-sec --refresh yes" >> $REFRESH_GPG_KEYS_SCRIPT
1658
     echo 'exit 0' >> $REFRESH_GPG_KEYS_SCRIPT
1657
     echo 'exit 0' >> $REFRESH_GPG_KEYS_SCRIPT
1659
     chmod +x $REFRESH_GPG_KEYS_SCRIPT
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
     if grep -q "${PROJECT_NAME}-sec" /etc/crontab; then
1672
     if grep -q "${PROJECT_NAME}-sec" /etc/crontab; then
1662
         sed -i "/${PROJECT_NAME}-sec /d" /etc/crontab
1673
         sed -i "/${PROJECT_NAME}-sec /d" /etc/crontab
1663
     fi
1674
     fi

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

96
     fi
96
     fi
97
     sudo cp /etc/crontab ~/temp_crontab
97
     sudo cp /etc/crontab ~/temp_crontab
98
     sudo chown $CURR_USER:$CURR_GROUP ~/temp_crontab
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
         echo "0            */$REFRESH_GPG_KEYS_HOURS *   *   *   $CURR_USER /usr/bin/gpg --refresh-keys > /dev/null" >> ~/temp_crontab
100
         echo "0            */$REFRESH_GPG_KEYS_HOURS *   *   *   $CURR_USER /usr/bin/gpg --refresh-keys > /dev/null" >> ~/temp_crontab
101
         sudo cp ~/temp_crontab /etc/crontab
101
         sudo cp ~/temp_crontab /etc/crontab
102
         sudo chown root:root /etc/crontab
102
         sudo chown root:root /etc/crontab

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

95
             chown -R www-data:www-data $repo_dir
95
             chown -R www-data:www-data $repo_dir
96
         fi
96
         fi
97
         if [[ $repo_dir == *"gpgit" ]]; then
97
         if [[ $repo_dir == *"gpgit" ]]; then
98
-            cp gpgit.pl /usr/bin/gpgit.pl
98
+            cp -u gpgit.pl /usr/bin/gpgit.pl
99
         fi
99
         fi
100
         if [[ $repo_dir == *"cleanup-maildir" ]]; then
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
         fi
102
         fi
103
         if [[ $repo_dir == *"nginx_ensite" ]]; then
103
         if [[ $repo_dir == *"nginx_ensite" ]]; then
104
             make install
104
             make install

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

145
 }
145
 }
146
 
146
 
147
 function proc_filesystem_settings {
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
 function remove_bluetooth {
153
 function remove_bluetooth {

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

32
 UPGRADE_SCRIPT_NAME="${PROJECT_NAME}-upgrade"
32
 UPGRADE_SCRIPT_NAME="${PROJECT_NAME}-upgrade"
33
 
33
 
34
 function create_upgrade_script {
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
     if [[ $(is_completed $FUNCNAME) == "1" ]]; then
46
     if [[ $(is_completed $FUNCNAME) == "1" ]]; then
38
         return
47
         return

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

318
         return
318
         return
319
     fi
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
     renewal_failure_msg=$'The certificate for $LETSENCRYPT_DOMAIN could not be renewed'
323
     renewal_failure_msg=$'The certificate for $LETSENCRYPT_DOMAIN could not be renewed'
324
     renewal_email_title=$'${PROJECT_NAME} Lets Encrypt certificate renewal'
324
     renewal_email_title=$'${PROJECT_NAME} Lets Encrypt certificate renewal'
325
 
325
 
361
     echo 'fi' >> $renewals_script
361
     echo 'fi' >> $renewals_script
362
     chmod +x $renewals_script
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
     # a secondary script keeps trying to renew after a failure
375
     # a secondary script keeps trying to renew after a failure
365
     echo '#!/bin/bash' > $renewals_retry_script
376
     echo '#!/bin/bash' > $renewals_retry_script
366
     echo '' >> $renewals_retry_script
377
     echo '' >> $renewals_retry_script
398
     echo '    fi' >> $renewals_retry_script
409
     echo '    fi' >> $renewals_retry_script
399
     echo 'fi' >> $renewals_retry_script
410
     echo 'fi' >> $renewals_retry_script
400
     chmod +x $renewals_retry_script
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
 function configure_php {
425
 function configure_php {