浏览代码

Install turn server for sip

Bob Mottram 9 年前
父节点
当前提交
f72c92b08e
共有 1 个文件被更改,包括 190 次插入20 次删除
  1. 190
    20
      src/freedombone

+ 190
- 20
src/freedombone 查看文件

@@ -381,6 +381,9 @@ VOIP_SERVER_PASSWORD=
381 381
 VOIP_PORT=64738
382 382
 SIP_SERVER_PASSWORD=
383 383
 SIP_PORT=5060
384
+VOIP_TURN_PORT=3478
385
+VOIP_TURN_TLS_PORT=5349
386
+VOIP_TURN_NONCE=
384 387
 
385 388
 # Location of VoIP database and configuration
386 389
 VOIP_DATABASE="mumble-server.sqlite"
@@ -1065,6 +1068,15 @@ function read_configuration {
1065 1068
         # Ensure that a copy of the config exists for upgrade purposes
1066 1069
         if [[ $CONFIGURATION_FILE != "/root/${PROJECT_NAME}.cfg" ]]; then
1067 1070
             cp $CONFIGURATION_FILE /root/${PROJECT_NAME}.cfg
1071
+        fi      
1072
+        if grep -q "VOIP_TURN_PORT" $CONFIGURATION_FILE; then
1073
+            VOIP_TURN_PORT=$(grep "VOIP_TURN_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1074
+        fi
1075
+        if grep -q "VOIP_TURN_TLS_PORT" $CONFIGURATION_FILE; then
1076
+            VOIP_TURN_TLS_PORT=$(grep "VOIP_TURN_TLS_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1077
+        fi
1078
+        if grep -q "VOIP_TURN_NONCE" $CONFIGURATION_FILE; then
1079
+            VOIP_TURN_NONCE=$(grep "VOIP_TURN_NONCE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
1068 1080
         fi
1069 1081
         if grep -q "DEFAULT_SEARCH" $CONFIGURATION_FILE; then
1070 1082
             DEFAULT_SEARCH=$(grep "DEFAULT_SEARCH" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
@@ -4002,6 +4014,24 @@ function configure_firewall_for_voip {
4002 4014
     echo 'configure_firewall_for_voip' >> $COMPLETION_FILE
4003 4015
 }
4004 4016
 
4017
+function configure_firewall_for_voip_turn {
4018
+    if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_DEVELOPER" ]]; then
4019
+        return
4020
+    fi
4021
+    if grep -Fxq "configure_firewall_for_voip_turn" $COMPLETION_FILE; then
4022
+        return
4023
+    fi
4024
+    if [[ $ONION_ONLY != "no" ]]; then
4025
+        return
4026
+    fi
4027
+    iptables -A INPUT -p udp --dport $VOIP_TURN_PORT -j ACCEPT
4028
+    iptables -A INPUT -p tcp --dport $VOIP_TURN_PORT -j ACCEPT
4029
+    iptables -A INPUT -p tcp --dport $VOIP_TURN_TLS_PORT -j ACCEPT
4030
+    save_firewall_settings
4031
+    echo 'configure_firewall_for_voip_turn' >> $COMPLETION_FILE
4032
+}
4033
+
4034
+
4005 4035
 function configure_firewall_for_sip {
4006 4036
     if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_DEVELOPER" ]]; then
4007 4037
         return
@@ -10347,6 +10377,144 @@ function install_sip {
10347 10377
     echo 'install_sip' >> $COMPLETION_FILE
10348 10378
 }
10349 10379
 
10380
+function install_sip_turn {
10381
+    if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_DEVELOPER" ]]; then
10382
+        return
10383
+    fi
10384
+    if grep -Fxq "install_sip_turn" $COMPLETION_FILE; then
10385
+        return
10386
+    fi
10387
+
10388
+    apt-get -y install turnserver
10389
+
10390
+    if [ ! $VOIP_TURN_NONCE ]; then
10391
+        VOIP_TURN_NONCE="$(openssl rand -base64 32 | cut -c1-30)"
10392
+    fi
10393
+
10394
+    echo '##' > /etc/turnserver/turnserver.conf
10395
+    echo '# TurnServer configuration file.' >> /etc/turnserver/turnserver.conf
10396
+    echo '#' >> /etc/turnserver/turnserver.conf
10397
+    echo '' >> /etc/turnserver/turnserver.conf
10398
+    echo '## Public IPv4 address of any relayed address (if not set, no relay for IPv4).' >> /etc/turnserver/turnserver.conf
10399
+    echo '## To have multiple address, separate addresses with a comma' >> /etc/turnserver/turnserver.conf
10400
+    echo '## (i.e. listen_address = { "172.16.0.1", "172.17.0.1" }).' >> /etc/turnserver/turnserver.conf
10401
+    echo "listen_address = { \"192.168.0.1\" }" >> /etc/turnserver/turnserver.conf
10402
+    echo '' >> /etc/turnserver/turnserver.conf
10403
+    echo '## Public IPv6 address of any relayed address (if not set, no relay for IPv6).' >> /etc/turnserver/turnserver.conf
10404
+    echo '## To have multiple address, separate address with a comma' >> /etc/turnserver/turnserver.conf
10405
+    echo '## (i.e. listen_addressv6 = { "2001:db8:1::1", "2001:db8:2::1" }).' >> /etc/turnserver/turnserver.conf
10406
+    echo "#listen_addressv6 = { \"2001:db8::1\" }" >> /etc/turnserver/turnserver.conf
10407
+    echo '' >> /etc/turnserver/turnserver.conf
10408
+    echo '## UDP listening port.' >> /etc/turnserver/turnserver.conf
10409
+    echo "udp_port = $VOIP_TURN_PORT" >> /etc/turnserver/turnserver.conf
10410
+    echo '' >> /etc/turnserver/turnserver.conf
10411
+    echo '## TCP listening port.' >> /etc/turnserver/turnserver.conf
10412
+    echo "tcp_port = $VOIP_TURN_PORT" >> /etc/turnserver/turnserver.conf
10413
+    echo '' >> /etc/turnserver/turnserver.conf
10414
+    echo '## TLS listening port.' >> /etc/turnserver/turnserver.conf
10415
+    echo "tls_port = $VOIP_TURN_TLS_PORT" >> /etc/turnserver/turnserver.conf
10416
+    echo '' >> /etc/turnserver/turnserver.conf
10417
+    echo '## TLS support.' >> /etc/turnserver/turnserver.conf
10418
+    echo 'tls = true' >> /etc/turnserver/turnserver.conf
10419
+    echo '' >> /etc/turnserver/turnserver.conf
10420
+    echo '## DTLS support. It is an experimental feature and is not defined in TURN' >> /etc/turnserver/turnserver.conf
10421
+    echo '## standard.' >> /etc/turnserver/turnserver.conf
10422
+    echo 'dtls = false' >> /etc/turnserver/turnserver.conf
10423
+    echo '' >> /etc/turnserver/turnserver.conf
10424
+    echo '## Maximum allocation port number.' >> /etc/turnserver/turnserver.conf
10425
+    echo 'max_port = 65535' >> /etc/turnserver/turnserver.conf
10426
+    echo '' >> /etc/turnserver/turnserver.conf
10427
+    echo '## Minimum allocation port number.' >> /etc/turnserver/turnserver.conf
10428
+    echo '' >> /etc/turnserver/turnserver.conf
10429
+    echo 'min_port = 49152' >> /etc/turnserver/turnserver.conf
10430
+    echo '' >> /etc/turnserver/turnserver.conf
10431
+    echo '## TURN-TCP support.' >> /etc/turnserver/turnserver.conf
10432
+    echo '' >> /etc/turnserver/turnserver.conf
10433
+    echo 'turn_tcp = true' >> /etc/turnserver/turnserver.conf
10434
+    echo '' >> /etc/turnserver/turnserver.conf
10435
+    echo '## TURN-TCP buffering mode:' >> /etc/turnserver/turnserver.conf
10436
+    echo '## - true, use userspace buffering;' >> /etc/turnserver/turnserver.conf
10437
+    echo '## - false, use kernel buffering.' >> /etc/turnserver/turnserver.conf
10438
+    echo 'tcp_buffer_userspace = true' >> /etc/turnserver/turnserver.conf
10439
+    echo '' >> /etc/turnserver/turnserver.conf
10440
+    echo '## TURN-TCP maximum buffer size.' >> /etc/turnserver/turnserver.conf
10441
+    echo 'tcp_buffer_size = 32768' >> /etc/turnserver/turnserver.conf
10442
+    echo '' >> /etc/turnserver/turnserver.conf
10443
+    echo '## Daemon mode.' >> /etc/turnserver/turnserver.conf
10444
+    echo 'daemon = true' >> /etc/turnserver/turnserver.conf
10445
+    echo '' >> /etc/turnserver/turnserver.conf
10446
+    echo '## Unprivileged user.' >> /etc/turnserver/turnserver.conf
10447
+    echo '## If you want to use this feature create a system user.' >> /etc/turnserver/turnserver.conf
10448
+    echo '## On Linux: adduser --system --group turnserver' >> /etc/turnserver/turnserver.conf
10449
+    echo 'unpriv_user = turnserver' >> /etc/turnserver/turnserver.conf
10450
+    echo '' >> /etc/turnserver/turnserver.conf
10451
+    echo '## Realm value.' >> /etc/turnserver/turnserver.conf
10452
+    echo "realm = \"$DEFAULT_DOMAIN_NAME\"" >> /etc/turnserver/turnserver.conf
10453
+    echo '' >> /etc/turnserver/turnserver.conf
10454
+    echo '## Nonce key.' >> /etc/turnserver/turnserver.conf
10455
+    echo "nonce_key = \"$VOIP_TURN_NONCE\"" >> /etc/turnserver/turnserver.conf
10456
+    echo '' >> /etc/turnserver/turnserver.conf
10457
+    echo '## Max relay per username.' >> /etc/turnserver/turnserver.conf
10458
+    echo 'max_relay_per_username = 5' >> /etc/turnserver/turnserver.conf
10459
+    echo '' >> /etc/turnserver/turnserver.conf
10460
+    echo '## Allocation lifetime.' >> /etc/turnserver/turnserver.conf
10461
+    echo 'allocation_lifetime = 1800' >> /etc/turnserver/turnserver.conf
10462
+    echo '' >> /etc/turnserver/turnserver.conf
10463
+    echo '## Allocation bandwidth limitation (in KBytes/s).' >> /etc/turnserver/turnserver.conf
10464
+    echo '## 0 value means bandwidth quota disabled.' >> /etc/turnserver/turnserver.conf
10465
+    echo 'bandwidth_per_allocation = 150' >> /etc/turnserver/turnserver.conf
10466
+    echo '' >> /etc/turnserver/turnserver.conf
10467
+    echo '## Restricted user bandwidth (in KBytes/s).' >> /etc/turnserver/turnserver.conf
10468
+    echo '## 0 value means bandwidth limitation disabled.' >> /etc/turnserver/turnserver.conf
10469
+    echo 'restricted_bandwidth = 10' >> /etc/turnserver/turnserver.conf
10470
+    echo '' >> /etc/turnserver/turnserver.conf
10471
+    echo '## Denied addresses.' >> /etc/turnserver/turnserver.conf
10472
+    echo '' >> /etc/turnserver/turnserver.conf
10473
+    echo '# disallow relaying to localhost' >> /etc/turnserver/turnserver.conf
10474
+    echo 'denied_address {' >> /etc/turnserver/turnserver.conf
10475
+    echo '  address = "127.0.0.1"' >> /etc/turnserver/turnserver.conf
10476
+    echo '  mask = "8"' >> /etc/turnserver/turnserver.conf
10477
+    echo '  port = 0' >> /etc/turnserver/turnserver.conf
10478
+    echo '}' >> /etc/turnserver/turnserver.conf
10479
+    echo '' >> /etc/turnserver/turnserver.conf
10480
+    echo '# disallow relaying to ip6-localhost' >> /etc/turnserver/turnserver.conf
10481
+    echo 'denied_address {' >> /etc/turnserver/turnserver.conf
10482
+    echo '  address = "::1"' >> /etc/turnserver/turnserver.conf
10483
+    echo '  mask = "128"' >> /etc/turnserver/turnserver.conf
10484
+    echo '  port = 0' >> /etc/turnserver/turnserver.conf
10485
+    echo '}' >> /etc/turnserver/turnserver.conf
10486
+    echo '' >> /etc/turnserver/turnserver.conf
10487
+    echo '## Certification Authority file.' >> /etc/turnserver/turnserver.conf
10488
+    echo "ca_file = \"/etc/ssl/certs/ca-certificates.crt\"" >> /etc/turnserver/turnserver.conf
10489
+    echo '' >> /etc/turnserver/turnserver.conf
10490
+    echo '## Server certificate file.' >> /etc/turnserver/turnserver.conf
10491
+    if [ -f /etc/ssl/certs/$DEFAULT_DOMAIN_NAME.pem ]; then
10492
+        echo "cert_file = \"/etc/ssl/certs/$DEFAULT_DOMAIN_NAME.pem\"" >> /etc/turnserver/turnserver.conf
10493
+    else
10494
+        if [ -f /etc/ssl/certs/$DEFAULT_DOMAIN_NAME.crt ]; then
10495
+            echo "cert_file = \"/etc/ssl/certs/$DEFAULT_DOMAIN_NAME.crt\"" >> /etc/turnserver/turnserver.conf
10496
+        else
10497
+
10498
+        fi
10499
+    fi
10500
+    echo '' >> /etc/turnserver/turnserver.conf
10501
+    echo '## Private key file.' >> /etc/turnserver/turnserver.conf
10502
+    echo "private_key_file = \"/etc/ssl/certs/$DEFAULT_DOMAIN_NAME.key\"" >> /etc/turnserver/turnserver.conf
10503
+    echo '' >> /etc/turnserver/turnserver.conf
10504
+    echo '## Account method.' >> /etc/turnserver/turnserver.conf
10505
+    echo "account_method = \"file\"" >> /etc/turnserver/turnserver.conf
10506
+    echo '' >> /etc/turnserver/turnserver.conf
10507
+    echo '## Account file (if account_method = file).' >> /etc/turnserver/turnserver.conf
10508
+    echo "account_file = \"/etc/turnserver/turnusers.txt\"" >> /etc/turnserver/turnserver.conf
10509
+    echo '' >> /etc/turnserver/turnserver.conf
10510
+    echo '## mod_tmpuser.' >> /etc/turnserver/turnserver.conf
10511
+    echo 'mod_tmpuser = false' >> /etc/turnserver/turnserver.conf
10512
+
10513
+    systemctl restart turnserver
10514
+
10515
+    echo 'install_sip_turn' >> $COMPLETION_FILE
10516
+}
10517
+
10350 10518
 function install_final {
10351 10519
     if grep -Fxq "install_final" $COMPLETION_FILE; then
10352 10520
         return
@@ -10361,29 +10529,29 @@ function install_final {
10361 10529
     clear
10362 10530
     echo ''
10363 10531
     echo $"
10364
-  *** ${PROJECT_NAME} installation is complete. Rebooting... ***
10532
+    *** ${PROJECT_NAME} installation is complete. Rebooting... ***
10365 10533
 
10366 10534
     Now forward these ports from your internet router
10367 10535
 
10368
-                     HTTP     80
10369
-                     HTTPS    443
10370
-                     SSH      2222
10371
-                     DLNA     1900
10372
-                     DLNA     8200
10373
-                     XMPP     5222-5223
10374
-                     XMPP     5269
10375
-                     XMPP     5280-5281
10376
-                     IRC      6697
10377
-                     Git      9418
10378
-                     Email    25
10379
-                     Email    587
10380
-                     Email    465
10381
-                     Email    993
10382
-                     VoIP     64738
10383
-                     VoIP     5060
10384
-                     Tox      33445
10385
-                     IPFS     4001
10386
-"
10536
+    HTTP     80
10537
+    HTTPS    443
10538
+    SSH      2222
10539
+    DLNA     1900
10540
+    DLNA     8200
10541
+    XMPP     5222-5223
10542
+    XMPP     5269
10543
+    XMPP     5280-5281
10544
+    IRC      6697
10545
+    Git      9418
10546
+    Email    25
10547
+    Email    587
10548
+    Email    465
10549
+    Email    993
10550
+    VoIP     64738
10551
+    VoIP     5060
10552
+    Tox      33445
10553
+    IPFS     4001
10554
+    "
10387 10555
     if [ -f "/home/$MY_USERNAME/README" ]; then
10388 10556
         echo $"See /home/$MY_USERNAME/README for post-installation instructions."
10389 10557
         echo ''
@@ -10412,6 +10580,7 @@ configure_firewall_for_dns
10412 10580
 configure_firewall_for_ftp
10413 10581
 configure_firewall_for_web_access
10414 10582
 configure_firewall_for_voip
10583
+configure_firewall_for_voip_turn
10415 10584
 configure_firewall_for_sip
10416 10585
 configure_firewall_for_avahi
10417 10586
 configure_firewall_for_zeronet
@@ -10501,6 +10670,7 @@ install_voip
10501 10670
 install_sip
10502 10671
 update_sipwitch_daemon
10503 10672
 install_wiki
10673
+install_sip_turn
10504 10674
 install_blog
10505 10675
 mark_blog_domain
10506 10676
 install_gnu_social