mirror of
https://github.com/haugene/docker-transmission-openvpn.git
synced 2025-08-12 01:07:11 +02:00
82 lines
2.9 KiB
Bash
Executable File
82 lines
2.9 KiB
Bash
Executable File
#!/bin/sh
|
|
vpn_provider="$(echo $OPENVPN_PROVIDER | tr '[A-Z]' '[a-z]')"
|
|
vpn_provider_configs="/etc/openvpn/$vpn_provider"
|
|
if [ ! -d "$vpn_provider_configs" ]; then
|
|
echo "Could not find OpenVPN provider: $OPENVPN_PROVIDER"
|
|
echo "Please check your settings."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Using OpenVPN provider: $OPENVPN_PROVIDER"
|
|
|
|
if [ ! -z "$OPENVPN_CONFIG" ]
|
|
then
|
|
if [ -f $vpn_provider_configs/"${OPENVPN_CONFIG}".ovpn ]
|
|
then
|
|
echo "Starting OpenVPN using config ${OPENVPN_CONFIG}.ovpn"
|
|
OPENVPN_CONFIG=$vpn_provider_configs/${OPENVPN_CONFIG}.ovpn
|
|
else
|
|
echo "Supplied config ${OPENVPN_CONFIG}.ovpn could not be found."
|
|
echo "Using default OpenVPN gateway for provider ${vpn_provider}"
|
|
OPENVPN_CONFIG=$vpn_provider_configs/default.ovpn
|
|
fi
|
|
else
|
|
echo "No VPN configuration provided. Using default."
|
|
OPENVPN_CONFIG=$vpn_provider_configs/default.ovpn
|
|
fi
|
|
|
|
# add OpenVPN user/pass
|
|
if [ "${OPENVPN_USERNAME}" = "**None**" ] || [ "${OPENVPN_PASSWORD}" = "**None**" ] ; then
|
|
echo "OpenVPN credentials not set. Exiting."
|
|
exit 1
|
|
else
|
|
echo "Setting OPENVPN credentials..."
|
|
mkdir -p /config
|
|
echo $OPENVPN_USERNAME > /config/openvpn-credentials.txt
|
|
echo $OPENVPN_PASSWORD >> /config/openvpn-credentials.txt
|
|
chmod 600 /config/openvpn-credentials.txt
|
|
fi
|
|
|
|
# add transmission credentials from env vars
|
|
echo $TRANSMISSION_RPC_USERNAME > /config/transmission-credentials.txt
|
|
echo $TRANSMISSION_RPC_PASSWORD >> /config/transmission-credentials.txt
|
|
|
|
# Persist transmission settings for use by transmission-daemon
|
|
dockerize -template /etc/transmission/environment-variables.tmpl:/etc/transmission/environment-variables.sh /bin/true
|
|
|
|
TRANSMISSION_CONTROL_OPTS="--script-security 2 --up-delay --up /etc/openvpn/tunnelUp.sh --down /etc/openvpn/tunnelDown.sh"
|
|
|
|
if [ "true" = "$ENABLE_UFW" ]; then
|
|
# Enable firewall
|
|
echo "enabling firewall"
|
|
sed -i -e s/IPV6=yes/IPV6=no/ /etc/default/ufw
|
|
ufw enable
|
|
|
|
if [ "true" = "$TRANSMISSION_PEER_PORT_RANDOM_ON_START" ]; then
|
|
PEER_PORT="$TRANSMISSION_PEER_PORT_RANDOM_LOW:$TRANSMISSION_PEER_PORT_RANDOM_HIGH/tcp"
|
|
else
|
|
PEER_PORT=$TRANSMISSION_PEER_PORT
|
|
fi
|
|
|
|
echo "allowing $PEER_PORT through the firewall"
|
|
ufw allow $PEER_PORT
|
|
|
|
eval $(/sbin/ip r l m 0.0.0.0 | awk '{if($5!="tun0"){print "GW="$3"\nINT="$5; exit}}')
|
|
echo "allowing access to $TRANSMISSION_RPC_PORT from $GW"
|
|
ufw allow proto tcp from $GW to any port $TRANSMISSION_RPC_PORT
|
|
fi
|
|
|
|
if [ -n "${LOCAL_NETWORK-}" ]; then
|
|
eval $(/sbin/ip r l m 0.0.0.0 | awk '{if($5!="tun0"){print "GW="$3"\nINT="$5; exit}}')
|
|
if [ -n "${GW-}" -a -n "${INT-}" ]; then
|
|
echo "adding route to local network $LOCAL_NETWORK via $GW dev $INT"
|
|
/sbin/ip r a "$LOCAL_NETWORK" via "$GW" dev "$INT"
|
|
if [ "true" = "$ENABLE_UFW" ]; then
|
|
echo "allowing access to $TRANSMISSION_RPC_PORT from $LOCAL_NETWORK"
|
|
ufw allow proto tcp from $LOCAL_NETWORK to any port $TRANSMISSION_RPC_PORT
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
exec openvpn $TRANSMISSION_CONTROL_OPTS $OPENVPN_OPTS --config "$OPENVPN_CONFIG"
|