1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00

New interface for Glorytun UDP VPN

This commit is contained in:
Ycarus (Yannick Chabanois) 2020-12-03 11:23:57 +01:00
parent 9ceaa526a5
commit e4103cea03
8 changed files with 239 additions and 14 deletions

View file

@ -0,0 +1,16 @@
#
# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
#
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Interface to Glorytun UDP
LUCI_DEPENDS:=+glorytun-udp
PKG_LICENSE:=GPLv3
#include ../luci/luci.mk
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View file

@ -0,0 +1,104 @@
'use strict';
'require rpc';
'require poll';
'require form';
'require fs';
'require uci';
'require tools.widgets as widgets';
var callHostHints;
var callServiceList = rpc.declare({
object: 'service',
method: 'list',
params: [ 'name' ],
expect: { '': {} }
});
return L.view.extend({
callHostHints: rpc.declare({
object: 'luci-rpc',
method: 'getHostHints',
expect: { '': {} }
}),
load: function() {
return this.callHostHints();
},
render: function(hosts) {
var m, s, o;
m = new form.Map('glorytun-udp', _('Glorytun UDP'));
s = m.section(form.GridSection, 'glorytun-udp', _('Instances'));
s.addremove = true;
s.anonymous = true;
s.nodescriptions = true;
s.tab('general', _('General Settings'));
s.tab('advanced', _('Advanced Settings'));
o = s.taboption('general', form.Flag, 'enable', _('Enabled'));
o.default = o.enabled;
o = s.taboption('general', form.ListValue, 'mode', _('Mode'));
o.value('to',_('Client'));
o.value('from',_('Server'));
o.modalonly = true;
o = s.taboption('general', form.Value, 'host', _('Host'));
o.rmempty = false;
o = s.taboption('general', form.Value, 'port', _('Port'));
o.rmempty = false;
o = s.taboption('general', form.Value, 'key', _('Key'));
o.rmempty = false;
o.modalonly = true;
o = s.taboption('general', form.Value, 'dev', _('Interface name'));
o.rmempty = false;
o.modalonly = true;
o = s.taboption('general', form.Value, 'localip', _('Local IP'));
o.datatype = 'or(ip4addr,ip6addr)';
o.rmempty = false;
o = s.taboption('general', form.Value, 'remoteip', _('Remote IP'));
o.datatype = 'or(ip4addr,ip6addr)';
o.rmempty = false;
o = s.taboption('advanced', form.Flag, 'persist', _('Persist'), _('Keep the tunnel device after exiting'));
o.default = o.enabled;
o.modalonly = true;
o = s.taboption('advanced', form.Flag, 'chacha', _('chacha'), _('Force fallback cipher'));
o.default = o.enabled;
o.modalonly = true;
o = s.taboption('advanced', form.Value, 'kxtimeout', _('Key rotation timeout'));
o.default = '7d';
o.rmempty = false;
o.modalonly = true;
o = s.taboption('advanced', form.Value, 'timetolerance', _('Clock sync tolerance'));
o.default = '10m';
o.rmempty = false;
o.modalonly = true;
o = s.taboption('advanced', form.Value, 'keepalive', _('Keep alive timeout'));
o.default = '25s';
o.rmempty = false;
o.modalonly = true;
o = s.taboption('advanced', form.Flag, 'auto', _('Dynamic rate detection'));
o.rmempty = false;
o.modalonly = true;
o = s.taboption('general',form.Value, 'label', _('Label'));
o.rmempty = true;
return m.render();
}
});

View file

@ -0,0 +1,10 @@
config glorytun-udp 'vpn'
option enable '0'
option host '127.0.0.1'
option port '65001'
option dev 'tun0'
option key ''
option chacha '1'
option localip '10.255.254.2'
option remoteip '10.255.254.1'
option mode 'to'

View file

@ -0,0 +1,28 @@
#!/bin/sh
#
# Load the glorytun config
#
# Author: Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
# Released under GPL 3 or later
[ "$ACTION" = ifup -o "$ACTION" = ifupdate ] || exit 0
. /lib/functions.sh
. /lib/functions/network.sh
set_default() {
local localip
local remoteip
local config="$1"
local iface
config_get enable "$config" enable
config_get iface "$config" dev
[ "$iface" = "$DEVICE" ] && [ "$enable" = "1" ] && {
config_get localip "$config" localip
config_get remoteip "$config" remoteip
[ "$remoteip" != "" ] && [ "$localip" != "" ] && ifconfig $DEVICE $localip pointopoint $remoteip up
}
}
config_load glorytun-udp
config_foreach set_default glorytun-udp

View file

@ -0,0 +1,47 @@
#!/bin/sh
uci -q batch <<-EOF >/dev/null
delete glorytun-udp[-1]
add ucitrack glorytun-udp
set ucitrack.@glorytun-udp[-1].init=glorytun-udp
commit ucitrack
EOF
if [ "$(uci -q get network.glorytun-udp)" = "" ] && [ "$(uci -q get network.omrvpn)" = "" ]; then
uci -q batch <<-EOF >/dev/null
delete network.glorytun-udp
set network.glorytun-udp=interface
set network.glorytun-udp.ifname=tun0
set network.glorytun-udp.proto=dhcp
set network.glorytun-udp.ip4table=vpn
set network.glorytun-udp.multipath=off
set network.glorytun-udp.leasetime=12h
commit network
EOF
fi
if [ "$(uci -q show firewall | grep glorytun-udp)" = "" ] && [ "$(uci -q get network.omrvpn)" = "" ]; then
uci -q batch <<-EOF >/dev/null
set firewall.zone_vpn=zone
set firewall.zone_vpn.name=vpn
set firewall.zone_vpn.network=glorytun-udp
set firewall.zone_vpn.masq=1
set firewall.zone_vpn.input=REJECT
set firewall.zone_vpn.forward=ACCEPT
set firewall.zone_vpn.output=ACCEPT
commit firewall
EOF
fi
if [ "$(uci -q show firewall | grep Allow-All-LAN-to-VPN)" = "" ]; then
uci -q batch <<-EOF >/dev/null
add firewall rule
set firewall.@rule[-1].enabled='1'
set firewall.@rule[-1].target='ACCEPT'
set firewall.@rule[-1].name='Allow-All-LAN-to-VPN'
set firewall.@rule[-1].dest='vpn'
set firewall.@rule[-1].src='lan'
commit firewall
EOF
fi
rm -f /tmp/luci-indexcache
exit 0

View file

@ -0,0 +1,13 @@
{
"admin/vpn/glorytun-udp": {
"title": "Glorytun UDP",
"order": 60,
"action": {
"type": "view",
"path": "services/glorytun-udp"
},
"depends": {
"acl": [ "luci-app-glorytun-udp" ]
}
}
}

View file

@ -0,0 +1,11 @@
{
"luci-app-glorytun-udp": {
"description": "Grant access to glorytun UDP",
"read": {
"uci": [ "glorytun-udp" ]
},
"write": {
"uci": [ "glorytun-udp" ]
}
}
}