Преглед на файлове

Beginning of Let's Encrypt implementation

Bob Mottram преди 9 години
родител
ревизия
c26b60bd39
променени са 1 файла, в които са добавени 71 реда и са изтрити 0 реда
  1. 71
    0
      src/freedombone

+ 71
- 0
src/freedombone Целия файл

@@ -2606,6 +2606,12 @@ function create_backup_script {
2606 2606
       echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2607 2607
   fi
2608 2608
 
2609
+  echo 'if [ -d /etc/letsencrypt ]; then' >> /usr/bin/$BACKUP_SCRIPT_NAME
2610
+  echo '    echo "Backing up Lets Encrypt settings"' >> /usr/bin/$BACKUP_SCRIPT_NAME
2611
+  echo '    backup_directory_to_usb /etc/letsencrypt letsencrypt' >> /usr/bin/$BACKUP_SCRIPT_NAME
2612
+  echo 'fi' >> /usr/bin/$BACKUP_SCRIPT_NAME
2613
+  echo '' >> /usr/bin/$BACKUP_SCRIPT_NAME
2614
+  
2609 2615
   if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
2610 2616
       BACKUP_INCLUDES_DATABASES="yes"
2611 2617
       echo 'backup_database gnusocial' >> /usr/bin/$BACKUP_SCRIPT_NAME
@@ -3211,6 +3217,16 @@ function create_restore_script {
3211 3217
 
3212 3218
   RESTORE_SUBDIR='home/'
3213 3219
   if [[ $BACKUP_TYPE != 'obnam' ]]; then
3220
+      RESTORE_SUBDIR='usb/backup/letsencrypt/'
3221
+  fi
3222
+  echo 'if [ -d $USB_MOUNT/backup/letsencrypt ]; then' >> /usr/bin/$RESTORE_SCRIPT_NAME
3223
+  echo '    echo "Restoring Lets Encrypt settings"' >> /usr/bin/$RESTORE_SCRIPT_NAME
3224
+  echo '    restore_directory_from_usb / letsencrypt' >> /usr/bin/$RESTORE_SCRIPT_NAME
3225
+  echo 'fi' >> /usr/bin/$RESTORE_SCRIPT_NAME
3226
+  echo '' >> /usr/bin/$RESTORE_SCRIPT_NAME
3227
+
3228
+  RESTORE_SUBDIR='home/'
3229
+  if [[ $BACKUP_TYPE != 'obnam' ]]; then
3214 3230
       RESTORE_SUBDIR='usb/backup/mutt/'
3215 3231
   fi
3216 3232
   echo 'if [ -d $USB_MOUNT/backup/mutt ]; then' >> /usr/bin/$RESTORE_SCRIPT_NAME
@@ -4090,6 +4106,12 @@ function backup_to_friends_servers {
4090 4106
   backup_database_to_friend
4091 4107
   echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4092 4108
 
4109
+  echo 'if [ -d /etc/letsencrypt ]; then' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4110
+  echo '    echo "Backing up Lets Encrypt settings"' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4111
+  echo '    backup_directory_to_friend /etc/letsencrypt letsencrypt' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4112
+  echo 'fi' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4113
+  echo '' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
4114
+  
4093 4115
   if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
4094 4116
       BACKUP_INCLUDES_DATABASES="yes"
4095 4117
       echo 'backup_database_to_friend gnusocial' >> /usr/bin/$BACKUP_TO_FRIENDS_SCRIPT_NAME
@@ -4770,6 +4792,16 @@ function restore_from_friend {
4770 4792
 
4771 4793
   RESTORE_SUBDIR='home/'
4772 4794
   if [[ $BACKUP_TYPE != 'obnam' ]]; then
4795
+      RESTORE_SUBDIR='remoterestore/backup/letsencrypt/'
4796
+  fi
4797
+  echo 'if [ -d $SERVER_DIRECTORY/backup/letsencrypt ]; then' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
4798
+  echo '    echo "Restoring Lets Encrypt settings"' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
4799
+  echo '    restore_directory_from_friend / letsencrypt' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
4800
+  echo 'fi' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
4801
+  echo '' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
4802
+
4803
+  RESTORE_SUBDIR='home/'
4804
+  if [[ $BACKUP_TYPE != 'obnam' ]]; then
4773 4805
       RESTORE_SUBDIR='remoterestore/backup/mutt/'
4774 4806
   fi
4775 4807
   echo 'for d in $SERVER_DIRECTORY/backup/mutt/*/ ; do' >> /usr/bin/$RESTORE_FROM_FRIEND_SCRIPT_NAME
@@ -7920,6 +7952,44 @@ function install_web_server {
7920 7952
   echo 'install_web_server' >> $COMPLETION_FILE
7921 7953
 }
7922 7954
 
7955
+function install_letsencrypt {
7956
+  if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
7957
+      return
7958
+  fi
7959
+  if grep -Fxq "install_letsencrypt" $COMPLETION_FILE; then
7960
+      return
7961
+  fi
7962
+  #apt-get -y install python-pip git
7963
+  #pip install -U setuptools
7964
+  #pip install --upgrade cffi
7965
+  cd $INSTALL_DIR
7966
+
7967
+  # This is experimental developer preview and I hope at some stage
7968
+  # there will be a debian package for it.
7969
+  
7970
+  # obtain the repo
7971
+  if [ ! -d $INSTALL_DIR/letsencrypt ]; then
7972
+      git clone https://github.com/letsencrypt/letsencrypt
7973
+      if [ ! -d $INSTALL_DIR/letsencrypt ]; then
7974
+          exit 76283
7975
+      fi
7976
+  else
7977
+      cd $INSTALL_DIR/letsencrypt
7978
+      git stash
7979
+      git pull
7980
+  fi
7981
+
7982
+  cd $INSTALL_DIR/letsencrypt
7983
+  # TODO this requires user interaction - is there a non-interactive mode?
7984
+  ./letsencrypt-auto --agree-dev-preview --server https://acme-v01.api.letsencrypt.org/directory certonly
7985
+  if [ ! "$?" = "0" ]; then
7986
+      echo 'Failed to install letsencrypt'
7987
+      exit 63216      
7988
+  fi
7989
+  
7990
+  echo 'install_letsencrypt' >> $COMPLETION_FILE
7991
+}
7992
+
7923 7993
 function configure_php {
7924 7994
   sed -i "s/memory_limit = 128M/memory_limit = ${MAX_PHP_MEMORY}M/g" /etc/php5/fpm/php.ini
7925 7995
   sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php5/fpm/php.ini
@@ -11116,6 +11186,7 @@ encrypt_all_email
11116 11186
 import_email
11117 11187
 script_for_attaching_usb_drive
11118 11188
 install_web_server
11189
+#install_letsencrypt
11119 11190
 configure_firewall_for_web_server
11120 11191
 install_owncloud
11121 11192
 install_owncloud_music_app