91 lines
2.4 KiB
Bash
Executable File
91 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set +u
|
|
|
|
CONFIG_PATH=/data/options.json
|
|
|
|
OVPNFILE="$(jq --raw-output '.ovpnfile' $CONFIG_PATH)"
|
|
OPENVPN_CONFIG=/share/${OVPNFILE}
|
|
|
|
########################################################################################################################
|
|
# Initialize the tun interface for OpenVPN if not already available
|
|
# Arguments:
|
|
# None
|
|
# Returns:
|
|
# None
|
|
########################################################################################################################
|
|
function init_tun_interface(){
|
|
# create the tunnel for the openvpn client
|
|
|
|
mkdir -p /dev/net
|
|
if [ ! -c /dev/net/tun ]; then
|
|
mknod /dev/net/tun c 10 200
|
|
fi
|
|
}
|
|
|
|
########################################################################################################################
|
|
# Check if all required files are available.
|
|
# Globals:
|
|
# REQUIRED_FILES
|
|
# STORAGE_LOCATION
|
|
# Arguments:
|
|
# None
|
|
# Returns:
|
|
# 0 if all files are available and 1 otherwise
|
|
########################################################################################################################
|
|
function check_files_available(){
|
|
failed=0
|
|
|
|
if [[ ! -f ${OPENVPN_CONFIG} ]]
|
|
then
|
|
echo "File ${OPENVPN_CONFIG} not found"
|
|
failed=1
|
|
break
|
|
fi
|
|
|
|
if [[ ${failed} == 0 ]]
|
|
then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
########################################################################################################################
|
|
# Wait until the user has uploaded all required certificates and keys in order to setup the VPN connection.
|
|
# Globals:
|
|
# REQUIRED_FILES
|
|
# CLIENT_CONFIG_LOCATION
|
|
# Arguments:
|
|
# None
|
|
# Returns:
|
|
# None
|
|
########################################################################################################################
|
|
function wait_configuration(){
|
|
|
|
echo "Wait until the user uploads the files."
|
|
# therefore, wait until the user upload the required certification files
|
|
while true; do
|
|
|
|
check_files_available
|
|
|
|
if [[ $? == 0 ]]
|
|
then
|
|
break
|
|
fi
|
|
|
|
sleep 5
|
|
done
|
|
echo "All files available!"
|
|
}
|
|
|
|
init_tun_interface
|
|
|
|
# wait until the user uploaded the configuration files
|
|
wait_configuration
|
|
|
|
echo "Setup the VPN connection with the following OpenVPN configuration."
|
|
|
|
# try to connect to the server using the used defined configuration
|
|
openvpn --config ${OPENVPN_CONFIG} |