-
Notifications
You must be signed in to change notification settings - Fork 0
/
run.sh
91 lines (73 loc) · 2.38 KB
/
run.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/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}