From 0d235bac481fc167270dd5107ff50085b4a5bdd6 Mon Sep 17 00:00:00 2001 From: Ycarus Date: Fri, 23 Mar 2018 20:23:27 +0100 Subject: [PATCH] Basic wizard --- luci-app-openmptcprouter/Makefile | 14 ++++ .../luasrc/controller/openmptcprouter.lua | 51 +++++++++++++ .../luasrc/view/openmptcprouter/wizard.htm | 71 +++++++++++++++++++ 3 files changed, 136 insertions(+) create mode 100644 luci-app-openmptcprouter/Makefile create mode 100644 luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua create mode 100644 luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm diff --git a/luci-app-openmptcprouter/Makefile b/luci-app-openmptcprouter/Makefile new file mode 100644 index 000000000..9ff51ec70 --- /dev/null +++ b/luci-app-openmptcprouter/Makefile @@ -0,0 +1,14 @@ +# +# Copyright (C) 2018 Ycarus (Yannick Chabanois) +# +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI Support for OpenMPTCProuter + +PKG_LICENSE:=Apache-2.0 + +include ../luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua new file mode 100644 index 000000000..9b09c5104 --- /dev/null +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -0,0 +1,51 @@ +local ucic = uci.cursor() +module("luci.controller.openmptcprouter", package.seeall) + +function index() +-- entry({"admin", "openmptcprouter"}, firstchild(), _("OpenMPTCProuter"), 19).index = true +-- entry({"admin", "openmptcprouter", "wizard"}, template("openmptcprouter/wizard"), _("Wizard"), 1).leaf = true +-- entry({"admin", "openmptcprouter", "wizard_add"}, post("wizard_add")).leaf = true + entry({"admin", "system", "openmptcprouter"}, template("openmptcprouter/wizard"), _("Settings Wizard"), 1) + entry({"admin", "system", "openmptcprouter", "wizard_add"}, post("wizard_add")) +end + +function wizard_add() + local server_ip = luci.http.formvalue("server_ip") + local shadowsocks_key = luci.http.formvalue("shadowsocks_key") + local glorytun_key = luci.http.formvalue("glorytun_key") + if shadowsocks_key ~= "" then + ucic:set("shadowsocks-libev","sss0","server",server_ip) + ucic:set("shadowsocks-libev","sss0","key",shadowsocks_key) + ucic:set("shadowsocks-libev","sss0","method","aes-256-cfb") + ucic:set("shadowsocks-libev","sss0","server_port","65101") + ucic:set("shadowsocks-libev","sss0","disabled",0) + ucic:save("shadowsocks-libev") + ucic:commit("shadowsocks-libev") + end + if glorytun_key ~= "" then + ucic:set("glorytun","vpn","host",server_ip) + ucic:set("glorytun","vpn","port","65001") + ucic:set("glorytun","vpn","key",glorytun_key) + ucic:set("glorytun","vpn","enable",1) + ucic:set("glorytun","vpn","mptcp",1) + ucic:set("glorytun","vpn","chacha20",1) + ucic:set("glorytun","vpn","proto","tcp") + ucic:save("glorytun") + ucic:commit("glorytun") + end + + local interfaces = luci.http.formvaluetable("intf") + for intf, _ in pairs(interfaces) do + local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) + local netmask = luci.http.formvalue("cbid.network.%s.netmask" % intf) + local gateway = luci.http.formvalue("cbid.network.%s.gateway" % intf) + ucic:set("network",intf,"ipaddr",ipaddr) + ucic:set("network",intf,"netmask",netmask) + ucic:set("network",intf,"gateway",gateway) + end + ucic:save("network") + ucic:commit("network") + luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/glorytun restart >/dev/null 2>/dev/null") + luci.http.redirect(luci.dispatcher.build_url("admin/network/network")) +end \ No newline at end of file diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm new file mode 100644 index 000000000..a576d4e0b --- /dev/null +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -0,0 +1,71 @@ +<%+header%> + +<% + local uci = require("luci.model.uci").cursor() + local net = require "luci.model.network".init() + local ifaces = net:get_interfaces() +%> + +<% if stderr and #stderr > 0 then %>
<%=pcdata(stderr)%>
<% end %> +
+
+

<%:Server settings%>

+
+ +
+ " data-type="ip4addr"> +
+
+
+ +
+ " data-type="base64"> +
+
+
+ +
+ "> +
+
+
+
+

<%:Interfaces settings%>

+<% + for _, iface in ipairs(ifaces) do + --if not (iface == "lo" or iface:match("^tun.*")) then + local ifname = iface:name() + if (ifname:match("^wan.*")) then +%> +

<%=ifname%>

+ +
+ +
+ " data-type="ip4addr"> +
+
+
+ +
+ " data-type="ip4addr"> +
+
+
+ +
+ " data-type="ip4addr"> +
+
+ +<% + end + end +%> +
+
+ + +
+
+<%+footer%>