first commit
commit
b5ed8b8cf6
@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
|
||||||
|
LUCI_TITLE:=LuCI support for TorGuard OpenVPN
|
||||||
|
LUCI_PKGARCH:=all
|
||||||
|
LUCI_DEPENDS:=+openvpn-openssl
|
||||||
|
|
||||||
|
define Package/tgopenvpn/conffiles
|
||||||
|
/etc/config/tgopenvpn_cfg
|
||||||
|
endef
|
||||||
|
|
||||||
|
include $(TOPDIR)/feeds/luci/luci.mk
|
||||||
|
|
||||||
|
# call BuildPackage - OpenWrt buildroot signature
|
@ -0,0 +1,4 @@
|
|||||||
|
module("luci.controller.admin.tgopenvpn", package.seeall)
|
||||||
|
function index()
|
||||||
|
entry({"admin", "vpn", "tgopenvpn"}, cbi("torguard/tgopenvpn"), _("TorGuard OpenVPN"), 102)
|
||||||
|
end
|
@ -0,0 +1,134 @@
|
|||||||
|
-- Import the necessary LuCI modules
|
||||||
|
local uci = require("luci.model.uci").cursor()
|
||||||
|
local sys = require("luci.sys")
|
||||||
|
local util = require("luci.util")
|
||||||
|
|
||||||
|
-- Define the model
|
||||||
|
m = Map("tgopenvpn_cfg", "TorGuard OpenVPN Setup")
|
||||||
|
|
||||||
|
-- Define the section for the OpenVPN settings
|
||||||
|
s = m:section(TypedSection, "ovpnconfig", "OpenVPN Settings")
|
||||||
|
s.anonymous = true
|
||||||
|
s.addremove = false
|
||||||
|
|
||||||
|
-- Define the input fields for the OpenVPN settings
|
||||||
|
user = s:option(Value, "username", translate("VPN Username"))
|
||||||
|
pass = s:option(Value, "password", translate("VPN Password"))
|
||||||
|
pass.password = true
|
||||||
|
|
||||||
|
svr = s:option(ListValue, "server", translate("VPN Server"))
|
||||||
|
-- Add all servers here
|
||||||
|
svr:value("ar.torguard.com", "Argentina")
|
||||||
|
svr:value("au.torguard.com", "Australia Sydney")
|
||||||
|
svr:value("aus.torguard.com", "Austria")
|
||||||
|
svr:value("bg.torguard.com", "Belgium")
|
||||||
|
svr:value("br.torguard.com", "Brazil 1")
|
||||||
|
svr:value("br2.torguard.com", "Brazil 2")
|
||||||
|
svr:value("bul.torguard.com", "Bulgaria")
|
||||||
|
svr:value("ca.torguard.com", "Canada Toronto")
|
||||||
|
svr:value("cavan.torguard.com", "Canada Vancouver")
|
||||||
|
svr:value("ch.torguard.com", "Chile")
|
||||||
|
svr:value("cz.torguard.com", "Czech Republic")
|
||||||
|
svr:value("dn.torguard.com", "Denmark")
|
||||||
|
svr:value("fn.torguard.com", "Finland")
|
||||||
|
svr:value("fr.torguard.com", "France")
|
||||||
|
svr:value("ger.torguard.com", "Germany")
|
||||||
|
svr:value("gre.torguard.com", "Greece")
|
||||||
|
svr:value("hk.torguard.com", "Hong Kong")
|
||||||
|
svr:value("hg.torguard.com", "Hungary")
|
||||||
|
svr:value("ice.torguard.com", "Iceland")
|
||||||
|
svr:value("in.torguard.com", "India Mumbai")
|
||||||
|
svr:value("ire.torguard.com", "Ireland")
|
||||||
|
svr:value("isr-loc1.torguard.com", "Israel Tel Aviv")
|
||||||
|
svr:value("it.torguard.com", "Italy")
|
||||||
|
svr:value("id.torguard.com", "Indonesia")
|
||||||
|
svr:value("jp.torguard.com", "Japan")
|
||||||
|
svr:value("lux.torguard.com", "Luxembourg")
|
||||||
|
svr:value("mx.torguard.com", "Mexico")
|
||||||
|
svr:value("md.torguard.com", "Moldova")
|
||||||
|
svr:value("nl.torguard.com", "Netherlands")
|
||||||
|
svr:value("nz.torguard.com", "New Zealand")
|
||||||
|
svr:value("no.torguard.com", "Norway")
|
||||||
|
svr:value("pl.torguard.com", "Poland")
|
||||||
|
svr:value("pg.torguard.com", "Portugal")
|
||||||
|
svr:value("ro.torguard.com", "Romania")
|
||||||
|
svr:value("ru.torguard.com", "Russia")
|
||||||
|
svr:value("sg.torguard.com", "Singapore")
|
||||||
|
svr:value("slk.torguard.com", "Slovakia")
|
||||||
|
svr:value("sp.torguard.com", "Spain")
|
||||||
|
svr:value("sk.torguard.com", "South Korea")
|
||||||
|
svr:value("sa.torguard.com", "South Africa")
|
||||||
|
svr:value("swe.torguard.com", "Sweden")
|
||||||
|
svr:value("swiss.torguard.com", "Switzerland")
|
||||||
|
svr:value("tw.torguard.com", "Taiwan")
|
||||||
|
svr:value("th.torguard.com", "Thailand")
|
||||||
|
svr:value("tk.torguard.com", "Turkey")
|
||||||
|
svr:value("uae.torguard.com", "UAE")
|
||||||
|
svr:value("uk.torguard.com", "UK London")
|
||||||
|
svr:value("uk.man.torguard.com", "UK Manchester")
|
||||||
|
svr:value("ukr.torguard.com", "Ukraine")
|
||||||
|
svr:value("us-fl.torguard.com", "USA Miami")
|
||||||
|
svr:value("us-atl.torguard.com", "USA Atlanta")
|
||||||
|
svr:value("us-ny.torguard.com", "USA New York")
|
||||||
|
svr:value("us-chi.torguard.com", "USA Chicago")
|
||||||
|
svr:value("us-chi-loc2.torguard.com", "USA Chicago 2")
|
||||||
|
svr:value("us-dal.torguard.com", "USA Dallas")
|
||||||
|
svr:value("us-dal-loc2.torguard.com", "USA Dallas 2")
|
||||||
|
svr:value("us-la.torguard.com", "USA LA")
|
||||||
|
svr:value("us-lv.torguard.com", "USA Las Vegas")
|
||||||
|
svr:value("us-sa.torguard.com", "USA Seattle")
|
||||||
|
svr:value("us-sf.torguard.com", "USA San Francisco")
|
||||||
|
svr:value("us-nj.torguard.com", "USA New Jersey")
|
||||||
|
svr:value("us-nj-loc2.torguard.com", "USA New Jersey 2")
|
||||||
|
svr:value("us-slc.torguard.com", "USA Salt Lake City")
|
||||||
|
|
||||||
|
dedicated = s:option(ListValue, "dedicated", translate("Use Dedicated IP"))
|
||||||
|
dedicated:value("YES")
|
||||||
|
dedicated:value("NO")
|
||||||
|
|
||||||
|
dediserver = s:option(Value, "dediserver", translate("Dedicated IP"))
|
||||||
|
|
||||||
|
protocol = s:option(ListValue, "protocol", translate("VPN Protocol"))
|
||||||
|
protocol:value("udp")
|
||||||
|
protocol:value("tcp")
|
||||||
|
|
||||||
|
port = s:option(ListValue, "port", translate("VPN Port"))
|
||||||
|
-- Add all ports here
|
||||||
|
port:value("1912|SHA256", "1912|SHA256")
|
||||||
|
port:value("1195|SHA256", "1195|SHA256")
|
||||||
|
port:value("53|SHA256", "53|SHA256")
|
||||||
|
port:value("1198|SHA256", "1198|SHA256")
|
||||||
|
port:value("9201|SHA256", "9201|SHA256")
|
||||||
|
port:value("501|SHA256", "501|SHA256")
|
||||||
|
port:value("1194|SHA1", "1194|SHA1")
|
||||||
|
port:value("995|SHA1", "995|SHA1")
|
||||||
|
port:value("1215|SHA512", "1215|SHA512")
|
||||||
|
port:value("389|SHA512", "389|SHA512")
|
||||||
|
port:value("80|SHA1", "80|SHA1")
|
||||||
|
port:value("443|SHA1", "443|SHA1")
|
||||||
|
|
||||||
|
cipher = s:option(ListValue, "cipher", translate("VPN Cipher"))
|
||||||
|
-- Add all cipher options here
|
||||||
|
cipher:value("AES-128-CBC")
|
||||||
|
cipher:value("AES-256-CBC")
|
||||||
|
cipher:value("AES-128-GCM")
|
||||||
|
cipher:value("AES-256-GCM")
|
||||||
|
cipher:value("BF-CBC")
|
||||||
|
|
||||||
|
-- VPN Control: Start/Stop OpenVPN
|
||||||
|
ctrl = m:section(TypedSection, "ovpnconfig", "VPN Control: Start/Stop OpenVPN")
|
||||||
|
ctrl.anonymous = true
|
||||||
|
ctrl.addremove = false
|
||||||
|
|
||||||
|
btnStop = ctrl:option(Button, "_btn_start", translate("Click to Stop OpenVPN"))
|
||||||
|
function btnStop.write()
|
||||||
|
io.popen("/etc/init.d/tgopenvpn stop")
|
||||||
|
end
|
||||||
|
|
||||||
|
btnStart = ctrl:option(Button, "_btn_stop", translate("Click to Start OpenVPN"))
|
||||||
|
function btnStart.write()
|
||||||
|
io.popen("/etc/init.d/tgopenvpn start")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Return the configuration page
|
||||||
|
return m
|
@ -0,0 +1,9 @@
|
|||||||
|
config ovpnconfig 'settings'
|
||||||
|
option server 'ar.torguard.com'
|
||||||
|
option dedicated 'NO'
|
||||||
|
option dediserver ''
|
||||||
|
option protocol 'tcp'
|
||||||
|
option port '1912|SHA256'
|
||||||
|
option cipher 'AES-256-GCM'
|
||||||
|
option username ''
|
||||||
|
option password ''
|
@ -0,0 +1,171 @@
|
|||||||
|
#!/bin/bash /etc/rc.common
|
||||||
|
# TorGuard OpenVPN init script
|
||||||
|
|
||||||
|
START=10
|
||||||
|
STOP=15
|
||||||
|
|
||||||
|
USE_PROCD=1
|
||||||
|
|
||||||
|
NAME=tgopenvpn
|
||||||
|
|
||||||
|
stop_service() {
|
||||||
|
procd_kill openvpn
|
||||||
|
rm /etc/openvpn/torguard/userpass.txt
|
||||||
|
rm /etc/openvpn/client.conf
|
||||||
|
|
||||||
|
# Check if 'lan' to 'wan' forwarding exists
|
||||||
|
lan_wan_exists=0
|
||||||
|
lan_ovpn_indexes=()
|
||||||
|
forwarding_indexes=$(uci show firewall | awk -F'[][]' '/@forwarding/{print $2}')
|
||||||
|
|
||||||
|
for index in $forwarding_indexes; do
|
||||||
|
src=$(uci get firewall.@forwarding[$index].src)
|
||||||
|
dest=$(uci get firewall.@forwarding[$index].dest)
|
||||||
|
|
||||||
|
if [[ "$src" == "lan" && "$dest" == "wan" ]]; then
|
||||||
|
lan_wan_exists=1
|
||||||
|
elif [[ "$src" == "lan" && "$dest" == "ovpn" ]]; then
|
||||||
|
lan_ovpn_indexes+=($index)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# If 'lan' to 'wan' forwarding doesn't exist, add it
|
||||||
|
if [[ "$lan_wan_exists" -eq "0" ]]; then
|
||||||
|
uci add firewall forwarding
|
||||||
|
uci set firewall.@forwarding[-1].src="lan"
|
||||||
|
uci set firewall.@forwarding[-1].dest="wan"
|
||||||
|
uci commit firewall
|
||||||
|
/etc/init.d/firewall reload
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Delete 'lan' to 'ovpn' forwarding
|
||||||
|
for index in ${lan_ovpn_indexes[@]}; do
|
||||||
|
uci delete firewall.@forwarding[$index]
|
||||||
|
done
|
||||||
|
uci commit firewall
|
||||||
|
/etc/init.d/firewall reload
|
||||||
|
}
|
||||||
|
|
||||||
|
start_service() {
|
||||||
|
config_load tgopenvpn_cfg
|
||||||
|
|
||||||
|
local server
|
||||||
|
local dedicated
|
||||||
|
local dediserver
|
||||||
|
local protocol
|
||||||
|
local port
|
||||||
|
local cipher
|
||||||
|
local username
|
||||||
|
local password
|
||||||
|
local auth
|
||||||
|
|
||||||
|
config_get server settings server
|
||||||
|
config_get dedicated settings dedicated
|
||||||
|
config_get dediserver settings dediserver
|
||||||
|
config_get protocol settings protocol
|
||||||
|
config_get port settings port
|
||||||
|
config_get cipher settings cipher
|
||||||
|
config_get username settings username
|
||||||
|
config_get password settings password
|
||||||
|
|
||||||
|
if [ "$dedicated" = "YES" ]; then
|
||||||
|
vpnserver=$dediserver
|
||||||
|
else
|
||||||
|
vpnserver=$server
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add the OpenVPN interface
|
||||||
|
uci -q delete network.ovpn
|
||||||
|
uci set network.ovpn="interface"
|
||||||
|
uci set network.ovpn.proto="none"
|
||||||
|
uci set network.ovpn.device="tun0"
|
||||||
|
uci commit network
|
||||||
|
/etc/init.d/network reload
|
||||||
|
|
||||||
|
# Add the 'ovpn' network to the 'wan' firewall zone
|
||||||
|
uci rename firewall.@zone[0]="lan"
|
||||||
|
uci rename firewall.@zone[1]="wan"
|
||||||
|
uci del_list firewall.wan.device="tun+"
|
||||||
|
uci add_list firewall.wan.device="tun+"
|
||||||
|
uci -q delete firewall.ovpn
|
||||||
|
uci set firewall.ovpn="zone"
|
||||||
|
uci set firewall.ovpn.output="ACCEPT"
|
||||||
|
uci set firewall.ovpn.forward="REJECT"
|
||||||
|
uci set firewall.ovpn.input="REJECT"
|
||||||
|
uci set firewall.ovpn.masq="1"
|
||||||
|
uci set firewall.ovpn.name="ovpn"
|
||||||
|
uci add_list firewall.ovpn.network="ovpn"
|
||||||
|
uci commit firewall
|
||||||
|
|
||||||
|
# Check if 'lan' to 'ovpn' forwarding exists
|
||||||
|
lan_ovpn_exists=0
|
||||||
|
forwarding_indexes=$(uci show firewall | awk -F'[][]' '/@forwarding/{print $2}')
|
||||||
|
|
||||||
|
for index in $forwarding_indexes; do
|
||||||
|
src=$(uci get firewall.@forwarding[$index].src)
|
||||||
|
dest=$(uci get firewall.@forwarding[$index].dest)
|
||||||
|
|
||||||
|
if [[ "$src" == "lan" && "$dest" == "ovpn" ]]; then
|
||||||
|
lan_ovpn_exists=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# If 'lan' to 'ovpn' forwarding doesn't exist, add it
|
||||||
|
if [[ "$lan_ovpn_exists" -eq "0" ]]; then
|
||||||
|
uci add firewall forwarding
|
||||||
|
uci set firewall.@forwarding[-1].src="lan"
|
||||||
|
uci set firewall.@forwarding[-1].dest="ovpn"
|
||||||
|
uci commit firewall
|
||||||
|
/etc/init.d/firewall reload
|
||||||
|
fi
|
||||||
|
|
||||||
|
/etc/init.d/firewall reload
|
||||||
|
reload_config
|
||||||
|
|
||||||
|
IFS='|' read -r portnumber auth <<< "$port"
|
||||||
|
|
||||||
|
if [ ! -f /etc/openvpn/torguard/userpass.txt ]; then
|
||||||
|
umask go=
|
||||||
|
cat << EOF > /etc/openvpn/torguard/userpass.txt
|
||||||
|
$username
|
||||||
|
$password
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
chmod 600 /etc/openvpn/torguard/userpass.txt
|
||||||
|
|
||||||
|
if [ ! -f /etc/openvpn/client.conf ]; then
|
||||||
|
umask go=
|
||||||
|
cat << EOF > /etc/openvpn/client.conf
|
||||||
|
client
|
||||||
|
dev tun
|
||||||
|
proto $protocol
|
||||||
|
resolv-retry infinite
|
||||||
|
nobind
|
||||||
|
persist-key
|
||||||
|
persist-tun
|
||||||
|
ca /etc/openvpn/torguard/ca.crt
|
||||||
|
remote-cert-tls server
|
||||||
|
tls-auth /etc/openvpn/torguard/ta.key 1
|
||||||
|
cipher $cipher
|
||||||
|
comp-lzo
|
||||||
|
verb 3
|
||||||
|
fast-io
|
||||||
|
auth-user-pass /etc/openvpn/torguard/userpass.txt
|
||||||
|
remote-random
|
||||||
|
auth $auth
|
||||||
|
reneg-sec 0
|
||||||
|
remote $vpnserver $portnumber
|
||||||
|
sndbuf 393216
|
||||||
|
rcvbuf 393216
|
||||||
|
log /tmp/openvpn.log
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
procd_open_instance
|
||||||
|
procd_set_param command /usr/sbin/openvpn --config /etc/openvpn/client.conf
|
||||||
|
procd_set_param file /etc/openvpn/client.conf
|
||||||
|
procd_set_param stdout 1
|
||||||
|
procd_set_param stderr 1
|
||||||
|
procd_close_instance
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDMTCCAhmgAwIBAgIJAKnGGJK6qLqSMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
|
||||||
|
BAMMCVRHLVZQTi1DQTAgFw0xOTA1MjExNDIzMTFaGA8yMDU5MDUxMTE0MjMxMVow
|
||||||
|
FDESMBAGA1UEAwwJVEctVlBOLUNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||||
|
CgKCAQEAlv0UgPD3xVAvhhP6q1HCmeAWbH+9HPkyQ2P6qM5oHY5dntjmq8YT48FZ
|
||||||
|
GHWv7+s9O47v6Bv7rEc4UwQx15cc2LByivX2JwmE8JACvNfwEnZXYAPq9WU3ZgRr
|
||||||
|
AGvA09ItuLqK2fQ4A7h8bFhmyxCbSzP1sSIT/zJY6ebuh5rDQSMJRMaoI0t1zorE
|
||||||
|
Z7PlEmh+o0w5GPs0D0vY50UcnEzB4GOdWC9pJREwEqppWYLN7RRdG8JyIqmA59mh
|
||||||
|
ARCnQFUo38HWic4trxFe71jtD7YInNV7ShQtg0S0sXo36Rqfz72Jo08qqI70dNs5
|
||||||
|
DN1aGNkQ/tRK9DhL5DLmTkaCw7mEFQIDAQABo4GDMIGAMB0GA1UdDgQWBBR7Dcym
|
||||||
|
XBp6u/jAaZOPUjUhEyhXfjBEBgNVHSMEPTA7gBR7DcymXBp6u/jAaZOPUjUhEyhX
|
||||||
|
fqEYpBYwFDESMBAGA1UEAwwJVEctVlBOLUNBggkAqcYYkrqoupIwDAYDVR0TBAUw
|
||||||
|
AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAE79ngbdSlP7IBbf
|
||||||
|
nJ+2Ju7vqt9/GyhcsYtjibp6gsMUxKlD8HuvlSGj5kNO5wiwN7XXqsjYtJfdhmzz
|
||||||
|
VbXksi8Fnbnfa8GhFl4IAjLJ5cxaWOxjr6wx2AhIs+BVVARjaU7iTK91RXJnl6u7
|
||||||
|
UDHTkQylBTl7wgpMeG6GjhaHfcOL1t7D2w8x23cTO+p+n53P3cBq+9TiAUORdzXJ
|
||||||
|
vbCxlPMDSDArsgBjC57W7dtdnZo7gTfQG77JTDFBeSwPwLF7PjBB4S6rzU/4fcYw
|
||||||
|
y83XKP6zDn9tgUJDnpFb/7jJ/PbNkK4BWYJp3XytOtt66v9SEKw+v/fJ+VkjU16v
|
||||||
|
E/9Q3h4=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
@ -0,0 +1,18 @@
|
|||||||
|
-----BEGIN OpenVPN Static key V1-----
|
||||||
|
770e8de5fc56e0248cc7b5aab56be80d
|
||||||
|
0e19cbf003c1b3ed68efbaf08613c3a1
|
||||||
|
a019dac6a4b84f13a6198f73229ffc21
|
||||||
|
fa512394e288f82aa2cf0180f01fb3eb
|
||||||
|
1a71e00a077a20f6d7a83633f5b4f47f
|
||||||
|
27e30617eaf8485dd8c722a8606d56b3
|
||||||
|
c183f65da5d3c9001a8cbdb96c793d93
|
||||||
|
6251098b24fe52a6dd2472e98cfccbc4
|
||||||
|
66e63520d63ade7a0eacc36208c3142a
|
||||||
|
1068236a52142fbb7b3ed83d785e12a2
|
||||||
|
8261bccfb3bcb62a8d2f6d18f5df5f36
|
||||||
|
52e59c5627d8d9c8f7877c4d7b08e19a
|
||||||
|
5c363556ba68d392be78b75152dd55ba
|
||||||
|
0f74d45089e84f77f4492d886524ea6c
|
||||||
|
82b9f4dd83d46528d4f5c3b51cfeaf28
|
||||||
|
38d938bd0597c426b0e440434f2c451f
|
||||||
|
-----END OpenVPN Static key V1-----
|
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
uci -q batch <<-EOF >/dev/null
|
||||||
|
delete ucitrack.@tgopenvpn_def[-1]
|
||||||
|
add ucitrack tgopenvpn
|
||||||
|
set ucitrack.@tgopenvpn[-1].init=tgopenvpn
|
||||||
|
commit ucitrack
|
||||||
|
EOF
|
||||||
|
|
||||||
|
rm -f /tmp/luci-indexcache
|
||||||
|
exit 0
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
module("luci.controller.admin.tgopenvpn", package.seeall)
|
||||||
|
function index()
|
||||||
|
entry({"admin", "vpn", "tgopenvpn"}, cbi("torguard/tgopenvpn"), _("TorGuard OpenVPN"), 102)
|
||||||
|
end
|
@ -0,0 +1,134 @@
|
|||||||
|
-- Import the necessary LuCI modules
|
||||||
|
local uci = require("luci.model.uci").cursor()
|
||||||
|
local sys = require("luci.sys")
|
||||||
|
local util = require("luci.util")
|
||||||
|
|
||||||
|
-- Define the model
|
||||||
|
m = Map("tgopenvpn_cfg", "TorGuard OpenVPN Setup")
|
||||||
|
|
||||||
|
-- Define the section for the OpenVPN settings
|
||||||
|
s = m:section(TypedSection, "ovpnconfig", "OpenVPN Settings")
|
||||||
|
s.anonymous = true
|
||||||
|
s.addremove = false
|
||||||
|
|
||||||
|
-- Define the input fields for the OpenVPN settings
|
||||||
|
user = s:option(Value, "username", translate("VPN Username"))
|
||||||
|
pass = s:option(Value, "password", translate("VPN Password"))
|
||||||
|
pass.password = true
|
||||||
|
|
||||||
|
svr = s:option(ListValue, "server", translate("VPN Server"))
|
||||||
|
-- Add all servers here
|
||||||
|
svr:value("ar.torguard.com", "Argentina")
|
||||||
|
svr:value("au.torguard.com", "Australia Sydney")
|
||||||
|
svr:value("aus.torguard.com", "Austria")
|
||||||
|
svr:value("bg.torguard.com", "Belgium")
|
||||||
|
svr:value("br.torguard.com", "Brazil 1")
|
||||||
|
svr:value("br2.torguard.com", "Brazil 2")
|
||||||
|
svr:value("bul.torguard.com", "Bulgaria")
|
||||||
|
svr:value("ca.torguard.com", "Canada Toronto")
|
||||||
|
svr:value("cavan.torguard.com", "Canada Vancouver")
|
||||||
|
svr:value("ch.torguard.com", "Chile")
|
||||||
|
svr:value("cz.torguard.com", "Czech Republic")
|
||||||
|
svr:value("dn.torguard.com", "Denmark")
|
||||||
|
svr:value("fn.torguard.com", "Finland")
|
||||||
|
svr:value("fr.torguard.com", "France")
|
||||||
|
svr:value("ger.torguard.com", "Germany")
|
||||||
|
svr:value("gre.torguard.com", "Greece")
|
||||||
|
svr:value("hk.torguard.com", "Hong Kong")
|
||||||
|
svr:value("hg.torguard.com", "Hungary")
|
||||||
|
svr:value("ice.torguard.com", "Iceland")
|
||||||
|
svr:value("in.torguard.com", "India Mumbai")
|
||||||
|
svr:value("ire.torguard.com", "Ireland")
|
||||||
|
svr:value("isr-loc1.torguard.com", "Israel Tel Aviv")
|
||||||
|
svr:value("it.torguard.com", "Italy")
|
||||||
|
svr:value("id.torguard.com", "Indonesia")
|
||||||
|
svr:value("jp.torguard.com", "Japan")
|
||||||
|
svr:value("lux.torguard.com", "Luxembourg")
|
||||||
|
svr:value("mx.torguard.com", "Mexico")
|
||||||
|
svr:value("md.torguard.com", "Moldova")
|
||||||
|
svr:value("nl.torguard.com", "Netherlands")
|
||||||
|
svr:value("nz.torguard.com", "New Zealand")
|
||||||
|
svr:value("no.torguard.com", "Norway")
|
||||||
|
svr:value("pl.torguard.com", "Poland")
|
||||||
|
svr:value("pg.torguard.com", "Portugal")
|
||||||
|
svr:value("ro.torguard.com", "Romania")
|
||||||
|
svr:value("ru.torguard.com", "Russia")
|
||||||
|
svr:value("sg.torguard.com", "Singapore")
|
||||||
|
svr:value("slk.torguard.com", "Slovakia")
|
||||||
|
svr:value("sp.torguard.com", "Spain")
|
||||||
|
svr:value("sk.torguard.com", "South Korea")
|
||||||
|
svr:value("sa.torguard.com", "South Africa")
|
||||||
|
svr:value("swe.torguard.com", "Sweden")
|
||||||
|
svr:value("swiss.torguard.com", "Switzerland")
|
||||||
|
svr:value("tw.torguard.com", "Taiwan")
|
||||||
|
svr:value("th.torguard.com", "Thailand")
|
||||||
|
svr:value("tk.torguard.com", "Turkey")
|
||||||
|
svr:value("uae.torguard.com", "UAE")
|
||||||
|
svr:value("uk.torguard.com", "UK London")
|
||||||
|
svr:value("uk.man.torguard.com", "UK Manchester")
|
||||||
|
svr:value("ukr.torguard.com", "Ukraine")
|
||||||
|
svr:value("us-fl.torguard.com", "USA Miami")
|
||||||
|
svr:value("us-atl.torguard.com", "USA Atlanta")
|
||||||
|
svr:value("us-ny.torguard.com", "USA New York")
|
||||||
|
svr:value("us-chi.torguard.com", "USA Chicago")
|
||||||
|
svr:value("us-chi-loc2.torguard.com", "USA Chicago 2")
|
||||||
|
svr:value("us-dal.torguard.com", "USA Dallas")
|
||||||
|
svr:value("us-dal-loc2.torguard.com", "USA Dallas 2")
|
||||||
|
svr:value("us-la.torguard.com", "USA LA")
|
||||||
|
svr:value("us-lv.torguard.com", "USA Las Vegas")
|
||||||
|
svr:value("us-sa.torguard.com", "USA Seattle")
|
||||||
|
svr:value("us-sf.torguard.com", "USA San Francisco")
|
||||||
|
svr:value("us-nj.torguard.com", "USA New Jersey")
|
||||||
|
svr:value("us-nj-loc2.torguard.com", "USA New Jersey 2")
|
||||||
|
svr:value("us-slc.torguard.com", "USA Salt Lake City")
|
||||||
|
|
||||||
|
dedicated = s:option(ListValue, "dedicated", translate("Use Dedicated IP"))
|
||||||
|
dedicated:value("YES")
|
||||||
|
dedicated:value("NO")
|
||||||
|
|
||||||
|
dediserver = s:option(Value, "dediserver", translate("Dedicated IP"))
|
||||||
|
|
||||||
|
protocol = s:option(ListValue, "protocol", translate("VPN Protocol"))
|
||||||
|
protocol:value("udp")
|
||||||
|
protocol:value("tcp")
|
||||||
|
|
||||||
|
port = s:option(ListValue, "port", translate("VPN Port"))
|
||||||
|
-- Add all ports here
|
||||||
|
port:value("1912|SHA256", "1912|SHA256")
|
||||||
|
port:value("1195|SHA256", "1195|SHA256")
|
||||||
|
port:value("53|SHA256", "53|SHA256")
|
||||||
|
port:value("1198|SHA256", "1198|SHA256")
|
||||||
|
port:value("9201|SHA256", "9201|SHA256")
|
||||||
|
port:value("501|SHA256", "501|SHA256")
|
||||||
|
port:value("1194|SHA1", "1194|SHA1")
|
||||||
|
port:value("995|SHA1", "995|SHA1")
|
||||||
|
port:value("1215|SHA512", "1215|SHA512")
|
||||||
|
port:value("389|SHA512", "389|SHA512")
|
||||||
|
port:value("80|SHA1", "80|SHA1")
|
||||||
|
port:value("443|SHA1", "443|SHA1")
|
||||||
|
|
||||||
|
cipher = s:option(ListValue, "cipher", translate("VPN Cipher"))
|
||||||
|
-- Add all cipher options here
|
||||||
|
cipher:value("AES-128-CBC")
|
||||||
|
cipher:value("AES-256-CBC")
|
||||||
|
cipher:value("AES-128-GCM")
|
||||||
|
cipher:value("AES-256-GCM")
|
||||||
|
cipher:value("BF-CBC")
|
||||||
|
|
||||||
|
-- VPN Control: Start/Stop OpenVPN
|
||||||
|
ctrl = m:section(TypedSection, "ovpnconfig", "VPN Control: Start/Stop OpenVPN")
|
||||||
|
ctrl.anonymous = true
|
||||||
|
ctrl.addremove = false
|
||||||
|
|
||||||
|
btnStop = ctrl:option(Button, "_btn_start", translate("Click to Stop OpenVPN"))
|
||||||
|
function btnStop.write()
|
||||||
|
io.popen("/etc/init.d/tgopenvpn stop")
|
||||||
|
end
|
||||||
|
|
||||||
|
btnStart = ctrl:option(Button, "_btn_stop", translate("Click to Start OpenVPN"))
|
||||||
|
function btnStart.write()
|
||||||
|
io.popen("/etc/init.d/tgopenvpn start")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Return the configuration page
|
||||||
|
return m
|
Loading…
Reference in New Issue