Bob Mottram 10 лет назад
Родитель
Сommit
5b854bd09a
1 измененных файлов: 119 добавлений и 0 удалений
  1. 119
    0
      src/freedombone

+ 119
- 0
src/freedombone Просмотреть файл

@@ -281,6 +281,11 @@ CHECK_MESSAGE="Check your internet connection, /etc/network/interfaces and /etc/
281 281
 # web site used to obtain the external IP address of the system
282 282
 GET_IP_ADDRESS_URL="checkip.two-dns.de"
283 283
 
284
+# Password used for VoIP server
285
+VOIP_SERVER_PASSWORD=
286
+# Port on which VoIP server listens
287
+VOIP_PORT=64738
288
+
284 289
 # other possible services to obtain the external IP address
285 290
 EXTERNAL_IP_SERVICES=( \
286 291
   'https://check.torproject.org/' \
@@ -367,6 +372,8 @@ function show_help {
367 372
   echo '     --email            Your email address'
368 373
   echo '     --usb              Path for the USB drive (eg. /dev/sdb1)'
369 374
   echo '     --cjdns            Enable CJDNS'
375
+  echo '     --vpass            VoIP server password'
376
+  echo '     --vport            VoIP server port'
370 377
   echo ''
371 378
   echo 'system types'
372 379
   echo '------------'
@@ -943,6 +950,16 @@ case $key in
943 950
     shift
944 951
     ENABLE_CJDNS="yes"
945 952
     ;;
953
+    # VoIP server password
954
+    --vpass)
955
+    shift
956
+    VOIP_SERVER_PASSWORD=$1
957
+    ;;
958
+    # VoIP server port
959
+    --vport)
960
+    shift
961
+    VOIP_PORT=$1
962
+    ;;
946 963
     *)
947 964
     # unknown option
948 965
     ;;
@@ -995,6 +1012,12 @@ function read_configuration {
995 1012
   fi
996 1013
 
997 1014
   if [ -f $CONFIGURATION_FILE ]; then
1015
+      if grep -q "VOIP_PORT" $CONFIGURATION_FILE; then
1016
+          VOIP_PORT=$(grep "VOIP_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1017
+      fi
1018
+      if grep -q "VOIP_SERVER_PASSWORD" $CONFIGURATION_FILE; then
1019
+          VOIP_SERVER_PASSWORD=$(grep "VOIP_SERVER_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1020
+      fi
998 1021
       if grep -q "GET_IP_ADDRESS_URL" $CONFIGURATION_FILE; then
999 1022
           GET_IP_ADDRESS_URL=$(grep "GET_IP_ADDRESS_URL" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1000 1023
       fi
@@ -4509,6 +4532,19 @@ function save_firewall_settings {
4509 4532
   chmod +x /etc/network/if-up.d/iptables
4510 4533
 }
4511 4534
 
4535
+function configure_firewall_for_voip {
4536
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
4537
+      return
4538
+  fi
4539
+  if grep -Fxq "configure_firewall_for_voip" $COMPLETION_FILE; then
4540
+      return
4541
+  fi
4542
+  iptables -A INPUT -i eth0 -p udp --dport $VOIP_PORT -j ACCEPT
4543
+  iptables -A INPUT -i eth0 -p tcp --dport $VOIP_PORT -j ACCEPT
4544
+  save_firewall_settings
4545
+  echo 'configure_firewall_for_voip' >> $COMPLETION_FILE
4546
+}
4547
+
4512 4548
 function configure_firewall_for_cjdns {
4513 4549
   if grep -Fxq "configure_firewall_for_cjdns" $COMPLETION_FILE; then
4514 4550
       return
@@ -8338,6 +8374,87 @@ function install_dynamicdns {
8338 8374
   echo 'install_dynamicdns' >> $COMPLETION_FILE
8339 8375
 }
8340 8376
 
8377
+function get_voip_server_password {
8378
+  if [ -f /home/$MY_USERNAME/README ]; then
8379
+      if grep -q "VoIP server password" /home/$MY_USERNAME/README; then
8380
+          if [ ! $VOIP_SERVER_PASSWORD ]; then
8381
+              VOIP_SERVER_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "VoIP server password" | awk -F ':' '{print $2}' | sed 's/^ *//')
8382
+          fi
8383
+      fi
8384
+  fi
8385
+}
8386
+
8387
+function install_voip {
8388
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
8389
+      return
8390
+  fi
8391
+  if grep -Fxq "install_voip" $COMPLETION_FILE; then
8392
+      return
8393
+  fi
8394
+  apt-get -y install mumble-server
8395
+
8396
+  get_voip_server_password
8397
+  if [ ! $VOIP_SERVER_PASSWORD ]; then
8398
+      VOIP_SERVER_PASSWORD=$(openssl rand -base64 $MINIMUM_PASSWORD_LENGTH)
8399
+  fi
8400
+  if [ ${#VOIP_SERVER_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
8401
+      VOIP_SERVER_PASSWORD=$(openssl rand -base64 $MINIMUM_PASSWORD_LENGTH)
8402
+  fi
8403
+
8404
+  # Make an ssl cert for the server
8405
+  makecert mumble
8406
+
8407
+  # Check that the cert was created
8408
+  if [ ! -f /etc/ssl/certs/mumble.crt ]; then
8409
+      echo 'VoIP server certificate not created'
8410
+      exit 57892
8411
+  fi
8412
+  if [ ! -f /etc/ssl/private/mumble.key ]; then
8413
+      echo 'VoIP server key not created'
8414
+      exit 57893
8415
+  fi
8416
+
8417
+  sed -i "s|welcometext=.*|welcometext=\"<br />Welcome to $DOMAIN_NAME <b>VoIP</b>.<br />Chat freely!<br />\"|g" /etc/mumble-server.ini
8418
+
8419
+  if [ $VOIP_SERVER_PASSWORD ]; then
8420
+      sed -i "s|serverpassword=.*|serverpassword=$VOIP_SERVER_PASSWORD|g" /etc/mumble-server.ini
8421
+  fi
8422
+
8423
+  sed -i 's|#autobanAttempts.*|autobanAttempts = 10|g' /etc/mumble-server.ini
8424
+  sed -i 's|#autobanTimeframe.*|autobanTimeframe = 120|g' /etc/mumble-server.ini
8425
+  sed -i 's|#autobanTime.*|autobanTime = 300|g' /etc/mumble-server.ini
8426
+  sed -i 's|#sendversion=.*|sendversion=False|g' /etc/mumble-server.ini
8427
+  sed -i 's|sendversion=.*|sendversion=False|g' /etc/mumble-server.ini
8428
+  if ! grep -q "allowping" /etc/mumble-server.ini; then
8429
+      echo 'allowping=False' >> /etc/mumble-server.ini
8430
+  fi
8431
+  sed -i 's|allowping=.*|allowping=False|g' /etc/mumble-server.ini
8432
+  sed -i 's|#sslCert=.*|sslCert=/etc/ssl/certs/mumble.crt|g' /etc/mumble-server.ini
8433
+  sed -i 's|#sslKey=.*|sslKey=/etc/ssl/privare/mumble.key|g' /etc/mumble-server.ini
8434
+  sed -i 's|#certrequired=.*|certrequired=True|g' /etc/mumble-server.ini
8435
+  sed -i 's|users=100|users=10|g' /etc/mumble-server.ini
8436
+  sed -i 's|#channelnestinglimit=10|channelnestinglimit=10|g' /etc/mumble-server.ini
8437
+  sed -i 's|#textmessagelength=.*|textmessagelength=1000|g' /etc/mumble-server.ini
8438
+  sed -i 's|textmessagelength=.*|textmessagelength=1000|g' /etc/mumble-server.ini
8439
+  sed -i 's|#imagemessagelength=.*|imagemessagelength=131072|g' /etc/mumble-server.ini
8440
+  sed -i 's|#allowhtml=.*|allowhtml=False|g' /etc/mumble-server.ini
8441
+  sed -i 's|allowhtml=.*|allowhtml=False|g' /etc/mumble-server.ini
8442
+  sed -i "s|port=.*|port=$VOIP_PORT|g" /etc/mumble-server.ini
8443
+
8444
+  service mumble-server restart
8445
+
8446
+  if ! grep -q "VoIP Server" /home/$MY_USERNAME/README; then
8447
+      echo '' >> /home/$MY_USERNAME/README
8448
+      echo '' >> /home/$MY_USERNAME/README
8449
+      echo 'VoIP Server' >> /home/$MY_USERNAME/README
8450
+      echo '===========' >> /home/$MY_USERNAME/README
8451
+      echo 'VoIP server password: $VOIP_SERVER_PASSWORD' >> /home/$MY_USERNAME/README
8452
+      chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
8453
+  fi
8454
+
8455
+  echo 'install_voip' >> $COMPLETION_FILE
8456
+}
8457
+
8341 8458
 function install_final {
8342 8459
   if grep -Fxq "install_final" $COMPLETION_FILE; then
8343 8460
       return
@@ -8369,6 +8486,7 @@ configure_firewall_for_dns
8369 8486
 configure_firewall_for_ftp
8370 8487
 configure_firewall_for_web_access
8371 8488
 configure_firewall_for_cjdns
8489
+configure_firewall_for_voip
8372 8490
 remove_proprietary_repos
8373 8491
 change_debian_repos
8374 8492
 enable_backports
@@ -8422,6 +8540,7 @@ install_xmpp
8422 8540
 configure_firewall_for_xmpp
8423 8541
 install_irc_server
8424 8542
 configure_firewall_for_irc
8543
+install_voip
8425 8544
 install_wiki
8426 8545
 install_blog
8427 8546
 install_gnu_social