applications: add frontend for the MultiWAN agent
authorJo-Philipp Wich <jow@openwrt.org>
Fri, 16 Apr 2010 14:06:42 +0000 (14:06 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Fri, 16 Apr 2010 14:06:42 +0000 (14:06 +0000)
applications/luci-multiwan/Makefile [new file with mode: 0644]
applications/luci-multiwan/luasrc/controller/multiwan.lua [new file with mode: 0644]
applications/luci-multiwan/luasrc/model/cbi/multiwan/multiwan.lua [new file with mode: 0644]
applications/luci-multiwan/root/lib/uci/schema/default/multiwan [new file with mode: 0644]
contrib/package/luci/Makefile
po/en/multiwan.po [new file with mode: 0644]
po/templates/multiwan.pot [new file with mode: 0644]

diff --git a/applications/luci-multiwan/Makefile b/applications/luci-multiwan/Makefile
new file mode 100644 (file)
index 0000000..cab4e30
--- /dev/null
@@ -0,0 +1,4 @@
+PO = multiwan
+
+include ../../build/config.mk
+include ../../build/module.mk
diff --git a/applications/luci-multiwan/luasrc/controller/multiwan.lua b/applications/luci-multiwan/luasrc/controller/multiwan.lua
new file mode 100644 (file)
index 0000000..1cbcf9e
--- /dev/null
@@ -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
diff --git a/applications/luci-multiwan/luasrc/model/cbi/multiwan/multiwan.lua b/applications/luci-multiwan/luasrc/model/cbi/multiwan/multiwan.lua
new file mode 100644 (file)
index 0000000..a1696b5
--- /dev/null
@@ -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
diff --git a/applications/luci-multiwan/root/lib/uci/schema/default/multiwan b/applications/luci-multiwan/root/lib/uci/schema/default/multiwan
new file mode 100644 (file)
index 0000000..61f34e7
--- /dev/null
@@ -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
+
index c89cdd074e1e845cd8895d595f63548934df5bfc..45eaf1c811b4e25eec40e01e472c1a6a98c26ee0 100644 (file)
@@ -767,6 +767,17 @@ define Package/luci-app-p2pblock/install
         $(call Package/luci/install/template,$(1),applications/luci-p2pblock)
 endef
 
         $(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 ###
 
 
 ### 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-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),)
 
 
 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-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))
 
 $(eval $(call BuildPackage,luci-sgi-cgi))
 $(eval $(call BuildPackage,luci-sgi-uhttpd))
diff --git a/po/en/multiwan.po b/po/en/multiwan.po
new file mode 100644 (file)
index 0000000..54919b5
--- /dev/null
@@ -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"
+
diff --git a/po/templates/multiwan.pot b/po/templates/multiwan.pot
new file mode 100644 (file)
index 0000000..1ed3c7b
--- /dev/null
@@ -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 ""
+