require("luci.tools.webadmin") m = Map("multiwan", translate("Multi-WAN"), translate("Multi-WAN allows for the use of multiple uplinks for load balancing and failover.")) 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 s = m:section(TypedSection, "mwanfw", translate("Multi-WAN Traffic Rules"), translate("Configure rules for directing outbound traffic through specified WAN Uplinks.")) s.template = "cbi/tblsection" s.anonymous = true s.addremove = true src = s:option(Value, "src", translate("Source Address")) src.rmempty = true src:value("", translate("all")) luci.tools.webadmin.cbi_add_knownips(src) dst = s:option(Value, "dst", translate("Destination Address")) 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("WAN Uplink")) luci.tools.webadmin.cbi_add_networks(wanrule) wanrule:value("fastbalancer", translate("Fast Balancer")) wanrule:value("balancer", translate("Load Balancer")) wanrule.default = "fastbalancer" wanrule.optional = false wanrule.rmempty = false s = m:section(NamedSection, "config", "", "") s.addremove = false default_route = s:option(ListValue, "default_route", translate("Default Route")) luci.tools.webadmin.cbi_add_networks(default_route) default_route:value("fastbalancer", translate("Fast Balancer")) default_route:value("balancer", translate("Load Balancer")) default_route.default = "balancer" default_route.optional = false default_route.rmempty = false return m