applications: add frontend for the MultiWAN agent
This commit is contained in:
parent
daca626e86
commit
be09c6ca6e
7 changed files with 516 additions and 0 deletions
4
applications/luci-multiwan/Makefile
Normal file
4
applications/luci-multiwan/Makefile
Normal file
|
@ -0,0 +1,4 @@
|
|||
PO = multiwan
|
||||
|
||||
include ../../build/config.mk
|
||||
include ../../build/module.mk
|
13
applications/luci-multiwan/luasrc/controller/multiwan.lua
Normal file
13
applications/luci-multiwan/luasrc/controller/multiwan.lua
Normal file
|
@ -0,0 +1,13 @@
|
|||
module("luci.controller.multiwan", package.seeall)
|
||||
|
||||
function index()
|
||||
local fs = luci.fs or nixio.fs
|
||||
if not fs.access("/etc/config/multiwan") then
|
||||
return
|
||||
end
|
||||
|
||||
local page = entry({"admin", "network", "multiwan"}, cbi("multiwan/multiwan"), "Multi-WAN")
|
||||
page.i18n = "multiwan"
|
||||
page.dependent = true
|
||||
|
||||
end
|
|
@ -0,0 +1,145 @@
|
|||
require("luci.tools.webadmin")
|
||||
m = Map("multiwan")
|
||||
|
||||
s = m:section(NamedSection, "config", "multiwan", "")
|
||||
e = s:option(Flag, "enabled", translate("enable"))
|
||||
e.rmempty = false
|
||||
|
||||
function e.write(self, section, value)
|
||||
local cmd = (value == "1") and "enable" or "disable"
|
||||
if value ~= "1" then
|
||||
os.execute("/etc/init.d/multiwan stop")
|
||||
end
|
||||
os.execute("/etc/init.d/multiwan " .. cmd)
|
||||
end
|
||||
|
||||
function e.cfgvalue(self, section)
|
||||
return (os.execute("/etc/init.d/multiwan enabled") == 0) and "1" or "0"
|
||||
end
|
||||
|
||||
default_route = s:option(ListValue, "default_route", translate("default_route"))
|
||||
luci.tools.webadmin.cbi_add_networks(default_route)
|
||||
default_route:value("balancer", translate("balancer"))
|
||||
default_route.default = "balancer"
|
||||
default_route.optional = false
|
||||
default_route.rmempty = false
|
||||
|
||||
resolv_conf = s:option(Value, "resolv_conf", translate("resolv_conf"), translate("resolv_conf_desc"))
|
||||
resolv_conf.default = "/tmp/resolv.conf.auto"
|
||||
resolv_conf.optional = false
|
||||
resolv_conf.rmempty = false
|
||||
|
||||
s = m:section(TypedSection, "interface", translate("interfaces"), translate("interfaces_desc"))
|
||||
s.addremove = true
|
||||
|
||||
weight = s:option(ListValue, "weight", translate("weight"))
|
||||
weight:value("10", "10")
|
||||
weight:value("9", "9")
|
||||
weight:value("8", "8")
|
||||
weight:value("7", "7")
|
||||
weight:value("6", "6")
|
||||
weight:value("5", "5")
|
||||
weight:value("4", "4")
|
||||
weight:value("3", "3")
|
||||
weight:value("2", "2")
|
||||
weight:value("1", "1")
|
||||
weight:value("disable", translate("none"))
|
||||
weight.default = "5"
|
||||
weight.optional = false
|
||||
weight.rmempty = false
|
||||
|
||||
interval = s:option(ListValue, "health_interval", translate("health_interval"))
|
||||
interval:value("disable", translate("disable"))
|
||||
interval:value("5", "5 sec.")
|
||||
interval:value("10", "10 sec.")
|
||||
interval:value("20", "20 sec.")
|
||||
interval:value("30", "30 sec.")
|
||||
interval:value("60", "60 sec.")
|
||||
interval:value("120", "120 sec.")
|
||||
interval.default = "10"
|
||||
interval.optional = false
|
||||
interval.rmempty = false
|
||||
|
||||
icmp_hosts = s:option(Value, "icmp_hosts", translate("icmp_hosts"))
|
||||
icmp_hosts:value("disable", translate("disable"))
|
||||
icmp_hosts:value("dns", "DNS Server(s)")
|
||||
icmp_hosts:value("gateway", "WAN Gateway")
|
||||
icmp_hosts.default = "dns"
|
||||
icmp_hosts.optional = false
|
||||
icmp_hosts.rmempty = false
|
||||
|
||||
timeout = s:option(ListValue, "timeout", translate("timeout"))
|
||||
timeout:value("1", "1 sec.")
|
||||
timeout:value("2", "2 sec.")
|
||||
timeout:value("3", "3 sec.")
|
||||
timeout:value("4", "4 sec.")
|
||||
timeout:value("5", "5 sec.")
|
||||
timeout:value("10", "10 sec.")
|
||||
timeout.default = "3"
|
||||
timeout.optional = false
|
||||
timeout.rmempty = false
|
||||
|
||||
fail = s:option(ListValue, "health_fail_retries", translate("health_fail_retries"))
|
||||
fail:value("1", "1")
|
||||
fail:value("3", "3")
|
||||
fail:value("5", "5")
|
||||
fail:value("10", "10")
|
||||
fail:value("15", "15")
|
||||
fail:value("20", "20")
|
||||
fail.default = "3"
|
||||
fail.optional = false
|
||||
fail.rmempty = false
|
||||
|
||||
recovery = s:option(ListValue, "health_recovery_retries", translate("health_recovery_retries"))
|
||||
recovery:value("1", "1")
|
||||
recovery:value("3", "3")
|
||||
recovery:value("5", "5")
|
||||
recovery:value("10", "10")
|
||||
recovery:value("15", "15")
|
||||
recovery:value("20", "20")
|
||||
recovery.default = "5"
|
||||
recovery.optional = false
|
||||
recovery.rmempty = false
|
||||
|
||||
failover_to = s:option(ListValue, "failover_to", translate("failover_to"))
|
||||
failover_to:value("disable", translate("none"))
|
||||
luci.tools.webadmin.cbi_add_networks(failover_to)
|
||||
failover_to:value("balancer", translate("balancer"))
|
||||
failover_to.default = "balancer"
|
||||
failover_to.optional = false
|
||||
failover_to.rmempty = false
|
||||
|
||||
s = m:section(TypedSection, "mwanfw", translate("mwanfw"), translate("mwanfw_desc"))
|
||||
s.template = "cbi/tblsection"
|
||||
s.anonymous = true
|
||||
s.addremove = true
|
||||
|
||||
src = s:option(Value, "src", translate("src"))
|
||||
src.rmempty = true
|
||||
src:value("", translate("all"))
|
||||
luci.tools.webadmin.cbi_add_knownips(src)
|
||||
|
||||
dst = s:option(Value, "dst", translate("dst"))
|
||||
dst.rmempty = true
|
||||
dst:value("", translate("all"))
|
||||
luci.tools.webadmin.cbi_add_knownips(dst)
|
||||
|
||||
proto = s:option(ListValue, "proto", translate("protocol"))
|
||||
proto:value("", translate("all"))
|
||||
proto:value("tcp", "TCP")
|
||||
proto:value("udp", "UDP")
|
||||
proto:value("icmp", "ICMP")
|
||||
proto.rmempty = true
|
||||
|
||||
ports = s:option(Value, "ports", translate("ports"))
|
||||
ports.rmempty = true
|
||||
ports:value("", translate("all", translate("all")))
|
||||
|
||||
wanrule = s:option(ListValue, "wanrule", translate("wanrule"))
|
||||
luci.tools.webadmin.cbi_add_networks(wanrule)
|
||||
wanrule:value("balancer", translate("balancer"))
|
||||
wanrule.default = "balancer"
|
||||
wanrule.optional = false
|
||||
wanrule.rmempty = false
|
||||
|
||||
return m
|
107
applications/luci-multiwan/root/lib/uci/schema/default/multiwan
Normal file
107
applications/luci-multiwan/root/lib/uci/schema/default/multiwan
Normal file
|
@ -0,0 +1,107 @@
|
|||
package multiwan
|
||||
|
||||
config package
|
||||
option title `Multi-WAN Agent'
|
||||
|
||||
config section
|
||||
option name 'multiwan'
|
||||
option title 'Settings'
|
||||
option named true
|
||||
option required true
|
||||
|
||||
config variable
|
||||
option name 'default_route'
|
||||
option title 'Default Route'
|
||||
option section 'multiwan.multiwan'
|
||||
option required true
|
||||
|
||||
config variable
|
||||
option name 'resolv_conf'
|
||||
option title 'DNS configuration file'
|
||||
option section 'multiwan.multiwan'
|
||||
option required true
|
||||
|
||||
config section
|
||||
option name 'interface'
|
||||
option title 'WAN Uplinks Configuration'
|
||||
option named true
|
||||
option required true
|
||||
|
||||
config variable
|
||||
option name 'weight'
|
||||
option title 'Load Balancer Weight'
|
||||
option section 'multiwan.interface'
|
||||
option datatype 'integer'
|
||||
option required true
|
||||
|
||||
config variable
|
||||
option name 'health_interval'
|
||||
option title 'Health Monitor - Interval'
|
||||
option section 'multiwan.multiwan'
|
||||
option datatype 'integer'
|
||||
option required true
|
||||
|
||||
config variable
|
||||
option name 'icmp_hosts'
|
||||
option title 'Health Monitor - ICMP Host(s)'
|
||||
option section 'multiwan.interface'
|
||||
option required true
|
||||
|
||||
config variable
|
||||
option name 'timeout'
|
||||
option title 'Health Monitor - ICMP Timeout'
|
||||
option section 'multiwan.interface'
|
||||
option datatype 'integer'
|
||||
option required true
|
||||
|
||||
config variable
|
||||
option name 'health_fail_retries'
|
||||
option title 'Attempts Before WAN Failover'
|
||||
option section 'multiwan.interface'
|
||||
option datatype 'integer'
|
||||
option required true
|
||||
|
||||
config variable
|
||||
option name 'health_recovery_retries'
|
||||
option title 'Attempts Before WAN Recovery'
|
||||
option section 'multiwan.interface'
|
||||
option datatype 'integer'
|
||||
option required true
|
||||
|
||||
config variable
|
||||
option name 'failover_to'
|
||||
option title 'Failover Traffic Destination'
|
||||
option section 'multiwan.interface'
|
||||
option required true
|
||||
|
||||
config section
|
||||
option name 'mwanfw'
|
||||
option title 'Multi-WAN Traffic Rules'
|
||||
option package 'multiwan.mwanfw'
|
||||
|
||||
config section
|
||||
option name 'src'
|
||||
option title 'Match by Source Address'
|
||||
option section 'dualwan.dualwanfw'
|
||||
|
||||
config section
|
||||
option name 'dst'
|
||||
option title 'Match by Destination Address'
|
||||
option section 'dualwan.dualwanfw'
|
||||
|
||||
config section
|
||||
option name 'proto'
|
||||
option title 'Match by Protocol'
|
||||
option section 'dualwan.dualwanfw'
|
||||
|
||||
config section
|
||||
option name 'ports'
|
||||
option title 'Match by Destination Ports'
|
||||
option section 'dualwan.dualwanfw'
|
||||
|
||||
config section
|
||||
option name 'wanrule'
|
||||
option title 'WAN Traffic Decision'
|
||||
option section 'multiwan.mwanfw'
|
||||
option required true
|
||||
|
|
@ -767,6 +767,17 @@ define Package/luci-app-p2pblock/install
|
|||
$(call Package/luci/install/template,$(1),applications/luci-p2pblock)
|
||||
endef
|
||||
|
||||
define Package/luci-app-multiwan
|
||||
$(call Package/luci/webtemplate)
|
||||
TITLE:=LuCI Support for the OpenWrt MultiWAN agent
|
||||
DEPENDS+=+luci-admin-core +luci-app-firewall \
|
||||
+PACKAGE_luci-app-multiwan:multiwan
|
||||
endef
|
||||
|
||||
define Package/luci-app-multiwan/install
|
||||
$(call Package/luci/install/template,$(1),applications/luci-multiwan)
|
||||
endef
|
||||
|
||||
|
||||
### Server Gateway Interfaces ###
|
||||
|
||||
|
@ -1188,6 +1199,9 @@ endif
|
|||
ifneq ($(CONFIG_PACKAGE_luci-app-p2pblock),)
|
||||
PKG_SELECTED_MODULES+=applications/luci-p2pblock
|
||||
endif
|
||||
ifneq ($(CONFIG_PACKAGE_luci-app-multiwan),)
|
||||
PKG_SELECTED_MODULES+=applications/luci-multiwan
|
||||
endif
|
||||
|
||||
|
||||
ifneq ($(CONFIG_PACKAGE_luci-sgi-cgi),)
|
||||
|
@ -1322,6 +1336,7 @@ $(eval $(call BuildPackage,luci-app-asterisk))
|
|||
$(eval $(call BuildPackage,luci-app-polipo))
|
||||
$(eval $(call BuildPackage,luci-app-openvpn))
|
||||
$(eval $(call BuildPackage,luci-app-p2pblock))
|
||||
$(eval $(call BuildPackage,luci-app-multiwan))
|
||||
|
||||
$(eval $(call BuildPackage,luci-sgi-cgi))
|
||||
$(eval $(call BuildPackage,luci-sgi-uhttpd))
|
||||
|
|
116
po/en/multiwan.po
Normal file
116
po/en/multiwan.po
Normal file
|
@ -0,0 +1,116 @@
|
|||
# multiwan.po
|
||||
# generated from /tmp/i18n/luasrc/i18n/multiwan.en.lua
|
||||
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:1
|
||||
#. Multi-WAN
|
||||
msgid "multiwan"
|
||||
msgstr "Multi-WAN"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:2
|
||||
#. Multi-WAN allows for the use of multiple uplinks for load balancing and failover.
|
||||
msgid "multiwan_desc"
|
||||
msgstr "Multi-WAN allows for the use of multiple uplinks for load balancing and failover."
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:3
|
||||
#. Default Route
|
||||
msgid "default_route"
|
||||
msgstr "Default Route"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:4
|
||||
#. DNS configuration file
|
||||
msgid "resolv_conf"
|
||||
msgstr "DNS configuration file"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:5
|
||||
#. (dnsmasq uses /tmp/resolv.conf.auto)
|
||||
msgid "resolv_conf_desc"
|
||||
msgstr "(dnsmasq uses /tmp/resolv.conf.auto)"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:6
|
||||
#. WAN Uplinks Configuration
|
||||
msgid "interfaces"
|
||||
msgstr "WAN Uplinks Configuration"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:7
|
||||
#. Health Monitor detects and corrects network changes and failed connections.
|
||||
msgid "interfaces_desc"
|
||||
msgstr "Health Monitor detects and corrects network changes and failed connections."
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:8
|
||||
#. Load Balancer Distribution
|
||||
msgid "weight"
|
||||
msgstr "Load Balancer Distribution"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:9
|
||||
#. None
|
||||
msgid "none"
|
||||
msgstr "None"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:10
|
||||
#. Health Monitor Frequency
|
||||
msgid "health_interval"
|
||||
msgstr "Health Monitor Frequency"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:11
|
||||
#. Health Monitor ICMP Host(s)
|
||||
msgid "icmp_hosts"
|
||||
msgstr "Health Monitor ICMP Host(s)"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:12
|
||||
#. Health Monitor ICMP Timeout
|
||||
msgid "timeout"
|
||||
msgstr "Health Monitor ICMP Timeout"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:13
|
||||
#. Attempts Before WAN Failover
|
||||
msgid "health_fail_retries"
|
||||
msgstr "Attempts Before WAN Failover"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:14
|
||||
#. Attempts Before WAN Recovery
|
||||
msgid "health_recovery_retries"
|
||||
msgstr "Attempts Before WAN Recovery"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:15
|
||||
#. Failover Traffic Destination
|
||||
msgid "failover_to"
|
||||
msgstr "Failover Traffic Destination"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:16
|
||||
#. Multi-WAN Traffic Rules
|
||||
msgid "mwanfw"
|
||||
msgstr "Multi-WAN Traffic Rules"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:17
|
||||
#. Configure rules for directing outbound traffic through specified WAN Uplinks.
|
||||
msgid "mwanfw_desc"
|
||||
msgstr "Configure rules for directing outbound traffic through specified WAN Uplinks."
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:18
|
||||
#. Source Address
|
||||
msgid "src"
|
||||
msgstr "Source Address"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:19
|
||||
#. Destination Address
|
||||
msgid "dst"
|
||||
msgstr "Destination Address"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:20
|
||||
#. WAN Uplink
|
||||
msgid "wanrule"
|
||||
msgstr "WAN Uplink"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:21
|
||||
#. Load Balancer
|
||||
msgid "balancer"
|
||||
msgstr "Load Balancer"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:22
|
||||
#. Disable
|
||||
msgid "disable"
|
||||
msgstr "Disable"
|
||||
|
116
po/templates/multiwan.pot
Normal file
116
po/templates/multiwan.pot
Normal file
|
@ -0,0 +1,116 @@
|
|||
# multiwan.pot
|
||||
# generated from /tmp/i18n/luasrc/i18n/multiwan.en.lua
|
||||
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:1
|
||||
#. Multi-WAN
|
||||
msgid "multiwan"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:2
|
||||
#. Multi-WAN allows for the use of multiple uplinks for load balancing and failover.
|
||||
msgid "multiwan_desc"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:3
|
||||
#. Default Route
|
||||
msgid "default_route"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:4
|
||||
#. DNS configuration file
|
||||
msgid "resolv_conf"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:5
|
||||
#. (dnsmasq uses /tmp/resolv.conf.auto)
|
||||
msgid "resolv_conf_desc"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:6
|
||||
#. WAN Uplinks Configuration
|
||||
msgid "interfaces"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:7
|
||||
#. Health Monitor detects and corrects network changes and failed connections.
|
||||
msgid "interfaces_desc"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:8
|
||||
#. Load Balancer Distribution
|
||||
msgid "weight"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:9
|
||||
#. None
|
||||
msgid "none"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:10
|
||||
#. Health Monitor Frequency
|
||||
msgid "health_interval"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:11
|
||||
#. Health Monitor ICMP Host(s)
|
||||
msgid "icmp_hosts"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:12
|
||||
#. Health Monitor ICMP Timeout
|
||||
msgid "timeout"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:13
|
||||
#. Attempts Before WAN Failover
|
||||
msgid "health_fail_retries"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:14
|
||||
#. Attempts Before WAN Recovery
|
||||
msgid "health_recovery_retries"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:15
|
||||
#. Failover Traffic Destination
|
||||
msgid "failover_to"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:16
|
||||
#. Multi-WAN Traffic Rules
|
||||
msgid "mwanfw"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:17
|
||||
#. Configure rules for directing outbound traffic through specified WAN Uplinks.
|
||||
msgid "mwanfw_desc"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:18
|
||||
#. Source Address
|
||||
msgid "src"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:19
|
||||
#. Destination Address
|
||||
msgid "dst"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:20
|
||||
#. WAN Uplink
|
||||
msgid "wanrule"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:21
|
||||
#. Load Balancer
|
||||
msgid "balancer"
|
||||
msgstr ""
|
||||
|
||||
#: /tmp/i18n/luasrc/i18n/multiwan.en.lua:22
|
||||
#. Disable
|
||||
msgid "disable"
|
||||
msgstr ""
|
||||
|
Loading…
Reference in a new issue