Bob Mottram 10 anni fa
parent
commit
ba0f5d24e8
1 ha cambiato i file con 87 aggiunte e 80 eliminazioni
  1. 87
    80
      install-freedombone.sh

+ 87
- 80
install-freedombone.sh Vedi File

106
 
106
 
107
 SSH_PORT=2222
107
 SSH_PORT=2222
108
 
108
 
109
+# parameters used when adding a new domain
110
+CURRENT_DDNS_PROVIDER="freedns.afraid.org"
111
+CURRENT_DDNS_DOMAIN=
112
+CURRENT_DDNS_USERNAME=
113
+CURRENT_DDNS_PASSWORD=
114
+CURRENT_DDNS_CODE=
115
+
109
 # number of CPU cores
116
 # number of CPU cores
110
 CPU_CORES=1
117
 CPU_CORES=1
111
 
118
 
4914
   echo 'folders_for_email_addresses' >> $COMPLETION_FILE
4921
   echo 'folders_for_email_addresses' >> $COMPLETION_FILE
4915
 }
4922
 }
4916
 
4923
 
4917
-function dynamic_dns_freedns {
4918
-  if grep -Fxq "dynamic_dns_freedns" $COMPLETION_FILE; then
4919
-      return
4920
-  fi
4921
-
4922
-  echo '#!/bin/bash' > /usr/bin/dynamicdns
4923
-  echo '# subdomain name 1' >> /usr/bin/dynamicdns
4924
-  echo "wget -O - https://freedns.afraid.org/dynamic/update.php?$FREEDNS_SUBDOMAIN_CODE== >> /dev/null 2>&1" >> /usr/bin/dynamicdns
4925
-  echo '# add any other subdomains below' >> /usr/bin/dynamicdns
4926
-  chmod 600 /usr/bin/dynamicdns
4927
-  chmod +x /usr/bin/dynamicdns
4928
-
4929
-  if ! grep -q "dynamicdns" /etc/crontab; then
4930
-    echo '*/5 * * * * root /usr/bin/timeout 240 /usr/bin/dynamicdns' >> /etc/crontab
4931
-  fi
4932
-  service cron restart
4933
-  echo 'dynamic_dns_freedns' >> $COMPLETION_FILE
4934
-}
4935
-
4936
 function create_public_mailing_list {
4924
 function create_public_mailing_list {
4937
   if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
4925
   if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
4938
       return
4926
       return
5435
   echo 'install_owncloud_music_app' >> $COMPLETION_FILE
5423
   echo 'install_owncloud_music_app' >> $COMPLETION_FILE
5436
 }
5424
 }
5437
 
5425
 
5426
+function add_ddns_domain {
5427
+  if [ ! $CURRENT_DDNS_DOMAIN ]; then
5428
+      echo 'ddns domain not specified'
5429
+      exit 5638
5430
+  fi
5431
+  if [ ! -f /etc/inadyn.conf ]; then
5432
+      echo 'Unable to find inadyn configuration file /etc/inadyn.conf'
5433
+      exit 5745
5434
+  fi
5435
+  if ! grep -q "$CURRENT_DDNS_PROVIDER" /etc/inadyn.conf; then
5436
+      echo '' >> /etc/inadyn.conf
5437
+      echo "system default@$CURRENT_DDNS_PROVIDER" >> /etc/inadyn.conf
5438
+      echo '  ssl' >> /etc/inadyn.conf
5439
+      if [ $CURRENT_DDNS_USERNAME ]; then
5440
+          echo "  username $CURRENT_DDNS_USERNAME" >> /etc/inadyn.conf
5441
+      fi
5442
+      if [ $CURRENT_DDNS_PASSWORD ]; then
5443
+          echo "  password $CURRENT_DDNS_PASSWORD" >> /etc/inadyn.conf
5444
+      fi
5445
+  fi
5446
+
5447
+  if ! grep -q "$CURRENT_DDNS_DOMAIN" /etc/inadyn.conf; then
5448
+      if [ $CURRENT_DDNS_CODE ]; then
5449
+          echo "  alias $CURRENT_DDNS_DOMAIN,$CURRENT_DDNS_CODE" >> /etc/inadyn.conf
5450
+      else
5451
+          echo "  alias $CURRENT_DDNS_DOMAIN" >> /etc/inadyn.conf
5452
+      fi
5453
+  fi
5454
+  chmod 600 /etc/inadyn.conf
5455
+  service inadyn restart
5456
+
5457
+  # clear the arguments
5458
+  CURRENT_DDNS_DOMAIN=
5459
+  CURRENT_DDNS_CODE=
5460
+}
5461
+
5438
 function install_owncloud {
5462
 function install_owncloud {
5439
   if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
5463
   if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
5440
       return
5464
       return
5653
   service nginx restart
5677
   service nginx restart
5654
 
5678
 
5655
   # update the dynamic DNS
5679
   # update the dynamic DNS
5656
-  if [ $OWNCLOUD_FREEDNS_SUBDOMAIN_CODE ]; then
5657
-      if [[ $OWNCLOUD_FREEDNS_SUBDOMAIN_CODE != $FREEDNS_SUBDOMAIN_CODE ]]; then
5658
-          if ! grep -q "$OWNCLOUD_DOMAIN_NAME" /usr/bin/dynamicdns; then
5659
-              echo "# $OWNCLOUD_DOMAIN_NAME" >> /usr/bin/dynamicdns
5660
-              echo "wget -O - https://freedns.afraid.org/dynamic/update.php?$OWNCLOUD_FREEDNS_SUBDOMAIN_CODE== >> /dev/null 2>&1" >> /usr/bin/dynamicdns
5661
-          fi
5662
-      fi
5663
-  else
5664
-      echo 'WARNING: No freeDNS subdomain code given for Owncloud. It is assumed that you are using some other dynamic DNS provider.'
5665
-  fi
5680
+  CURRENT_DDNS_DOMAIN=$OWNCLOUD_DOMAIN_NAME
5681
+  CURRENT_DDNS_CODE=$OWNCLOUD_FREEDNS_SUBDOMAIN_CODE
5682
+  add_ddns_domain
5666
 
5683
 
5667
   echo 'install_owncloud' >> $COMPLETION_FILE
5684
   echo 'install_owncloud' >> $COMPLETION_FILE
5668
 
5685
 
6138
   service nginx restart
6155
   service nginx restart
6139
 
6156
 
6140
   # update the dynamic DNS
6157
   # update the dynamic DNS
6141
-  if [ $WIKI_FREEDNS_SUBDOMAIN_CODE ]; then
6142
-      if [[ $WIKI_FREEDNS_SUBDOMAIN_CODE != $FREEDNS_SUBDOMAIN_CODE ]]; then
6143
-          if ! grep -q "$WIKI_DOMAIN_NAME" /usr/bin/dynamicdns; then
6144
-              echo "# $WIKI_DOMAIN_NAME" >> /usr/bin/dynamicdns
6145
-              echo "wget -O - https://freedns.afraid.org/dynamic/update.php?$WIKI_FREEDNS_SUBDOMAIN_CODE== >> /dev/null 2>&1" >> /usr/bin/dynamicdns
6146
-          fi
6147
-      fi
6148
-  else
6149
-      echo 'WARNING: No freeDNS subdomain code given for wiki installation. It is assumed that you are using some other dynamic DNS provider.'
6150
-  fi
6158
+  CURRENT_DDNS_DOMAIN=$WIKI_DOMAIN_NAME
6159
+  CURRENT_DDNS_CODE=$WIKI_FREEDNS_SUBDOMAIN_CODE
6160
+  add_ddns_domain
6151
 
6161
 
6152
   # add some post-install instructions
6162
   # add some post-install instructions
6153
   if ! grep -q "Wiki password" /home/$MY_USERNAME/README; then
6163
   if ! grep -q "Wiki password" /home/$MY_USERNAME/README; then
6406
   service nginx restart
6416
   service nginx restart
6407
 
6417
 
6408
   # update the dynamic DNS
6418
   # update the dynamic DNS
6409
-  if [ $FULLBLOG_FREEDNS_SUBDOMAIN_CODE ]; then
6410
-      if [[ $FULLBLOG_FREEDNS_SUBDOMAIN_CODE != $FREEDNS_SUBDOMAIN_CODE ]]; then
6411
-          if ! grep -q "$FULLBLOG_DOMAIN_NAME" /usr/bin/dynamicdns; then
6412
-              echo "# $FULLBLOG_DOMAIN_NAME" >> /usr/bin/dynamicdns
6413
-              echo "wget -O - https://freedns.afraid.org/dynamic/update.php?$FULLBLOG_FREEDNS_SUBDOMAIN_CODE== >> /dev/null 2>&1" >> /usr/bin/dynamicdns
6414
-          fi
6415
-      fi
6416
-  else
6417
-      echo 'WARNING: No freeDNS subdomain code given for blog installation. It is assumed that you are using some other dynamic DNS provider.'
6418
-  fi
6419
+  CURRENT_DDNS_DOMAIN=$FULLBLOG_DOMAIN_NAME
6420
+  CURRENT_DDNS_CODE=$FULLBLOG_FREEDNS_SUBDOMAIN_CODE
6421
+  add_ddns_domain
6419
 
6422
 
6420
   echo 'install_blog' >> $COMPLETION_FILE
6423
   echo 'install_blog' >> $COMPLETION_FILE
6421
 }
6424
 }
6488
   newaliases
6491
   newaliases
6489
 
6492
 
6490
   # update the dynamic DNS
6493
   # update the dynamic DNS
6491
-  if [ $MICROBLOG_FREEDNS_SUBDOMAIN_CODE ]; then
6492
-      if [[ $MICROBLOG_FREEDNS_SUBDOMAIN_CODE != $FREEDNS_SUBDOMAIN_CODE ]]; then
6493
-          if ! grep -q "$MICROBLOG_DOMAIN_NAME" /usr/bin/dynamicdns; then
6494
-              echo "# $MICROBLOG_DOMAIN_NAME" >> /usr/bin/dynamicdns
6495
-              echo "wget -O - https://freedns.afraid.org/dynamic/update.php?$MICROBLOG_FREEDNS_SUBDOMAIN_CODE== >> /dev/null 2>&1" >> /usr/bin/dynamicdns
6496
-          fi
6497
-      fi
6498
-  else
6499
-      echo 'WARNING: No freeDNS subdomain code given for microblog. It is assumed that you are using some other dynamic DNS provider.'
6500
-  fi
6494
+  CURRENT_DDNS_DOMAIN=$MICROBLOG_DOMAIN_NAME
6495
+  CURRENT_DDNS_CODE=$MICROBLOG_FREEDNS_SUBDOMAIN_CODE
6496
+  add_ddns_domain
6501
 
6497
 
6502
   echo 'server {' > /etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME
6498
   echo 'server {' > /etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME
6503
   echo '    listen 80;' >> /etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME
6499
   echo '    listen 80;' >> /etc/nginx/sites-available/$MICROBLOG_DOMAIN_NAME
6736
   fi
6732
   fi
6737
 
6733
 
6738
   # update the dynamic DNS
6734
   # update the dynamic DNS
6739
-  if [ $REDMATRIX_FREEDNS_SUBDOMAIN_CODE ]; then
6740
-      if [[ $REDMATRIX_FREEDNS_SUBDOMAIN_CODE != $FREEDNS_SUBDOMAIN_CODE ]]; then
6741
-          if ! grep -q "$REDMATRIX_DOMAIN_NAME" /usr/bin/dynamicdns; then
6742
-              echo "# $REDMATRIX_DOMAIN_NAME" >> /usr/bin/dynamicdns
6743
-              echo "wget -O - https://freedns.afraid.org/dynamic/update.php?$REDMATRIX_FREEDNS_SUBDOMAIN_CODE== >> /dev/null 2>&1" >> /usr/bin/dynamicdns
6744
-          fi
6745
-      fi
6746
-  else
6747
-      echo 'WARNING: No freeDNS code given for Red Matrix. It is assumed that you are using some other dynamic DNS provider.'
6748
-  fi
6735
+  CURRENT_DDNS_DOMAIN=$REDMATRIX_DOMAIN_NAME
6736
+  CURRENT_DDNS_CODE=$REDMATRIX_FREEDNS_SUBDOMAIN_CODE
6737
+  add_ddns_domain
6749
 
6738
 
6750
   echo 'server {' > /etc/nginx/sites-available/$REDMATRIX_DOMAIN_NAME
6739
   echo 'server {' > /etc/nginx/sites-available/$REDMATRIX_DOMAIN_NAME
6751
   echo '    listen 80;' >> /etc/nginx/sites-available/$REDMATRIX_DOMAIN_NAME
6740
   echo '    listen 80;' >> /etc/nginx/sites-available/$REDMATRIX_DOMAIN_NAME
7085
   su -c "cp $MEDIAGOBLIN_PATH/paste.ini $MEDIAGOBLIN_PATH/paste_local.ini" - mediagoblin
7074
   su -c "cp $MEDIAGOBLIN_PATH/paste.ini $MEDIAGOBLIN_PATH/paste_local.ini" - mediagoblin
7086
 
7075
 
7087
   # update the dynamic DNS
7076
   # update the dynamic DNS
7088
-  if [ $MEDIAGOBLIN_FREEDNS_SUBDOMAIN_CODE ]; then
7089
-      if [[ $MEDIAGOBLIN_FREEDNS_SUBDOMAIN_CODE != $FREEDNS_SUBDOMAIN_CODE ]]; then
7090
-          if ! grep -q "$MEDIAGOBLIN_DOMAIN_NAME" /usr/bin/dynamicdns; then
7091
-              echo "# $MEDIAGOBLIN_DOMAIN_NAME" >> /usr/bin/dynamicdns
7092
-              echo "wget -O - https://freedns.afraid.org/dynamic/update.php?$MEDIAGOBLIN_FREEDNS_SUBDOMAIN_CODE== >> /dev/null 2>&1" >> /usr/bin/dynamicdns
7093
-          fi
7094
-      fi
7095
-  else
7096
-      echo 'WARNING: No freeDNS subdomain code given for mediagoblin. It is assumed that you are using some other dynamic DNS provider.'
7097
-  fi
7077
+  CURRENT_DDNS_DOMAIN=$MEDIAGOBLIN_DOMAIN_NAME
7078
+  CURRENT_DDNS_CODE=$MEDIAGOBLIN_FREEDNS_SUBDOMAIN_CODE
7079
+  add_ddns_domain
7098
 
7080
 
7099
   # see https://wiki.mediagoblin.org/Deployment / uwsgi with configs
7081
   # see https://wiki.mediagoblin.org/Deployment / uwsgi with configs
7100
   apt-get -y --force-yes install uwsgi uwsgi-plugin-python nginx-full supervisor
7082
   apt-get -y --force-yes install uwsgi uwsgi-plugin-python nginx-full supervisor
7556
   echo 'backup_github_projects' >> $COMPLETION_FILE
7538
   echo 'backup_github_projects' >> $COMPLETION_FILE
7557
 }
7539
 }
7558
 
7540
 
7541
+function install_dynamicdns {
7542
+  if grep -Fxq "install_dynamicdns" $COMPLETION_FILE; then
7543
+      return
7544
+  fi
7545
+  apt-get -y install inadyn curl
7546
+
7547
+  if [ ! -f /etc/inadyn.conf ]; then
7548
+      echo 'Unable to find inadyn configuration file /etc/inadyn.conf'
7549
+      exit 57894
7550
+  fi
7551
+
7552
+  sed -i "s/# bind eth.*/# bind eth0/g" /etc/inadyn.conf
7553
+
7554
+  # clear existing settings
7555
+  sed -i 's/system <provider>//g' /etc/inadyn.conf
7556
+  sed -i 's/# Your username//g' /etc/inadyn.conf
7557
+  sed -i 's/username <username>//g' /etc/inadyn.conf
7558
+  sed -i 's/# Your password//g' /etc/inadyn.conf
7559
+  sed -i 's/password <password>//g' /etc/inadyn.conf
7560
+  sed -i 's/# Your hostname. This option can appear multiple times//g' /etc/inadyn.conf
7561
+  sed -i 's/alias <hostname>//g' /etc/inadyn.conf
7562
+
7563
+  echo 'install_dynamicdns' >> $COMPLETION_FILE
7564
+}
7565
+
7559
 function install_final {
7566
 function install_final {
7560
   if grep -Fxq "install_final" $COMPLETION_FILE; then
7567
   if grep -Fxq "install_final" $COMPLETION_FILE; then
7561
       return
7568
       return
7591
 change_debian_repos
7598
 change_debian_repos
7592
 enable_backports
7599
 enable_backports
7593
 configure_dns
7600
 configure_dns
7601
+install_dynamicdns
7594
 initial_setup
7602
 initial_setup
7595
 enforce_good_passwords
7603
 enforce_good_passwords
7596
 install_editor
7604
 install_editor
7626
 configure_firewall_for_email
7634
 configure_firewall_for_email
7627
 folders_for_mailing_lists
7635
 folders_for_mailing_lists
7628
 folders_for_email_addresses
7636
 folders_for_email_addresses
7629
-dynamic_dns_freedns
7630
 create_public_mailing_list
7637
 create_public_mailing_list
7631
 #create_private_mailing_list
7638
 #create_private_mailing_list
7632
 encrypt_all_email
7639
 encrypt_all_email