You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

start.sh 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #!/bin/bash
  2. vpn_provider="$(echo $OPENVPN_PROVIDER | tr '[A-Z]' '[a-z]')"
  3. vpn_provider_configs="/etc/openvpn/$vpn_provider"
  4. if [ ! -d "$vpn_provider_configs" ]; then
  5. echo "Could not find OpenVPN provider: $OPENVPN_PROVIDER"
  6. echo "Please check your settings."
  7. exit 1
  8. fi
  9. echo "Using OpenVPN provider: $OPENVPN_PROVIDER"
  10. if [ ! -z "$OPENVPN_CONFIG" ]
  11. then
  12. if [ -f $vpn_provider_configs/"${OPENVPN_CONFIG}".ovpn ]
  13. then
  14. echo "Starting OpenVPN using config ${OPENVPN_CONFIG}.ovpn"
  15. OPENVPN_CONFIG=$vpn_provider_configs/${OPENVPN_CONFIG}.ovpn
  16. else
  17. echo "Supplied config ${OPENVPN_CONFIG}.ovpn could not be found."
  18. echo "Using default OpenVPN gateway for provider ${vpn_provider}"
  19. OPENVPN_CONFIG=$vpn_provider_configs/default.ovpn
  20. fi
  21. else
  22. echo "No VPN configuration provided. Using default."
  23. OPENVPN_CONFIG=$vpn_provider_configs/default.ovpn
  24. fi
  25. # add OpenVPN user/pass
  26. if [ "${OPENVPN_USERNAME}" = "**None**" ] || [ "${OPENVPN_PASSWORD}" = "**None**" ] ; then
  27. if [ ! -f /config/openvpn-credentials.txt ] ; then
  28. echo "OpenVPN credentials not set. Exiting."
  29. exit 1
  30. fi
  31. echo "Found existing OPENVPN credentials..."
  32. else
  33. echo "Setting OPENVPN credentials..."
  34. mkdir -p /config
  35. echo $OPENVPN_USERNAME > /config/openvpn-credentials.txt
  36. echo $OPENVPN_PASSWORD >> /config/openvpn-credentials.txt
  37. chmod 600 /config/openvpn-credentials.txt
  38. fi
  39. # add transmission credentials from env vars
  40. echo $TRANSMISSION_RPC_USERNAME > /config/transmission-credentials.txt
  41. echo $TRANSMISSION_RPC_PASSWORD >> /config/transmission-credentials.txt
  42. # Persist transmission settings for use by transmission-daemon
  43. dockerize -template /etc/transmission/environment-variables.tmpl:/etc/transmission/environment-variables.sh
  44. TRANSMISSION_CONTROL_OPTS="--script-security 2 --up-delay --up /etc/transmission/start.sh --down /etc/transmission/stop.sh"
  45. if [ "true" = "$ENABLE_UFW" ]; then
  46. # Enable firewall
  47. echo "enabling firewall"
  48. sed -i -e s/IPV6=yes/IPV6=no/ /etc/default/ufw
  49. ufw enable
  50. if [ "true" = "$TRANSMISSION_PEER_PORT_RANDOM_ON_START" ]; then
  51. PEER_PORT="$TRANSMISSION_PEER_PORT_RANDOM_LOW:$TRANSMISSION_PEER_PORT_RANDOM_HIGH/tcp"
  52. else
  53. PEER_PORT=$TRANSMISSION_PEER_PORT
  54. fi
  55. echo "allowing $PEER_PORT through the firewall"
  56. ufw allow $PEER_PORT
  57. eval $(/sbin/ip r l m 0.0.0.0 | awk '{if($5!="tun0"){print "GW="$3"\nINT="$5; exit}}')
  58. echo "allowing access to $TRANSMISSION_RPC_PORT from $GW"
  59. ufw allow proto tcp from $GW to any port $TRANSMISSION_RPC_PORT
  60. if [ ! -z "${UFW_EXTRA_PORTS}" ]; then
  61. for port in ${UFW_EXTRA_PORTS//,/ }; do
  62. echo "allowing access to ${port} from $GW"
  63. ufw allow proto tcp from $GW to any port ${port}
  64. done
  65. fi
  66. fi
  67. if [ -n "${LOCAL_NETWORK-}" ]; then
  68. eval $(/sbin/ip r l m 0.0.0.0 | awk '{if($5!="tun0"){print "GW="$3"\nINT="$5; exit}}')
  69. if [ -n "${GW-}" -a -n "${INT-}" ]; then
  70. echo "adding route to local network $LOCAL_NETWORK via $GW dev $INT"
  71. /sbin/ip r a "$LOCAL_NETWORK" via "$GW" dev "$INT"
  72. if [ "true" = "$ENABLE_UFW" ]; then
  73. echo "allowing access to $TRANSMISSION_RPC_PORT from $LOCAL_NETWORK"
  74. ufw allow proto tcp from $LOCAL_NETWORK to any port $TRANSMISSION_RPC_PORT
  75. if [ ! -z "${UFW_EXTRA_PORTS}" ]; then
  76. for port in ${UFW_EXTRA_PORTS//,/ }; do
  77. echo "allowing access to ${port} from $LOCAL_NETWORK"
  78. ufw allow proto tcp from $LOCAL_NETWORK to any port ${port}
  79. done
  80. fi
  81. fi
  82. fi
  83. fi
  84. exec openvpn $TRANSMISSION_CONTROL_OPTS $OPENVPN_OPTS --config "$OPENVPN_CONFIG"