X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=modules%2Fadmin-full%2Fluasrc%2Fmodel%2Fcbi%2Fadmin_network%2Fifaces.lua;h=ad2631798be656ae7d6c888e69d2ae22a3ce1173;hp=6d1fb4f391bb1bc271aa9facff2edf04ad078b05;hb=08a89f42b51bf708f41a8b3f60e3712063a36783;hpb=e42779fcabec3995b87a50e233e95a2f3f7bc466 diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua index 6d1fb4f39..ad2631798 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua @@ -12,19 +12,39 @@ You may obtain a copy of the License at $Id$ ]]-- + require("luci.tools.webadmin") arg[1] = arg[1] or "" + +local has_3g = luci.fs.mtime("/usr/bin/gcom") +local has_pptp = luci.fs.mtime("/usr/sbin/pptp") +local has_pppd = luci.fs.mtime("/usr/sbin/pppd") +local has_pppoe = luci.fs.glob("/usr/lib/pppd/*/rp-pppoe.so") +local has_pppoa = luci.fs.glob("/usr/lib/pppd/*/pppoatm.so") + m = Map("network", translate("interfaces"), translate("a_n_ifaces1")) s = m:section(NamedSection, arg[1], "interface") s.addremove = true +back = s:option(DummyValue, "_overview", translate("overview")) +back.value = "" +back.titleref = luci.dispatcher.build_url("admin", "network", "network") + p = s:option(ListValue, "proto", translate("protocol")) +p.override_scheme = true +p.default = "static" p:value("static", translate("static")) p:value("dhcp", "DHCP") -p:value("pppoe", "PPPoE") -p:value("pptp", "PPTP") -p.default = "static" +if has_pppd then p:value("ppp", "PPP") end +if has_pppoe then p:value("pppoe", "PPPoE") end +if has_pppoa then p:value("pppoa", "PPPoA") end +if has_3g then p:value("3g", "UMTS/3G") end +if has_pptp then p:value("pptp", "PPTP") end + +if not ( has_pppd and has_pppoe and has_pppoa and has_3g and has_pptp ) then + p.description = translate("network_interface_prereq") +end br = s:option(Flag, "type", translate("a_n_i_bridge"), translate("a_n_i_bridge1")) br.enabled = "bridge" @@ -39,40 +59,48 @@ for i,d in ipairs(luci.sys.net.devices()) do end local zones = luci.tools.webadmin.network_get_zones(arg[1]) -if zones and #zones == 0 then - m:chain("firewall") - - fwzone = s:option(Value, "_fwzone", - translate("network_interface_fwzone"), - translate("network_interface_fwzone_desc")) - fwzone.rmempty = true - fwzone:value("", "- " .. translate("none") .. " -") - fwzone:value(arg[1]) - luci.model.uci.foreach("firewall", "zone", - function (section) - fwzone:value(section.name) - end - ) - - function fwzone.write(self, section, value) - local zone = luci.tools.webadmin.firewall_find_zone(value) - local stat - - if not zone then - stat = luci.model.uci.section("firewall", "zone", nil, { - name = value, - network = section - }) - else - local net = luci.model.uci.get("firewall", zone, "network") - net = (net or value) .. " " .. section - stat = luci.model.uci.set("firewall", zone, "network", net) - end - - if stat then - self.render = function() end +if zones then + if #zones == 0 then + m:chain("firewall") + + fwzone = s:option(Value, "_fwzone", + translate("network_interface_fwzone"), + translate("network_interface_fwzone_desc")) + fwzone.rmempty = true + fwzone:value("", "- " .. translate("none") .. " -") + fwzone:value(arg[1]) + m.uci:load("firewall") + m.uci:foreach("firewall", "zone", + function (section) + fwzone:value(section.name) + end + ) + + function fwzone.write(self, section, value) + local zone = luci.tools.webadmin.firewall_find_zone(value) + local stat + + if not zone then + stat = m.uci:section("firewall", "zone", nil, { + name = value, + network = section + }) + else + local net = m.uci:get("firewall", zone, "network") + net = (net or value) .. " " .. section + stat = m.uci:set("firewall", zone, "network", net) + end + + if stat then + self.render = function() end + end end + else + fwzone = s:option(DummyValue, "_fwzone", translate("zone")) + fwzone.value = table.concat(zones, ", ") end + fwzone.titleref = luci.dispatcher.build_url("admin", "network", "firewall", "zones") + m.uci:unload("firewall") end ipaddr = s:option(Value, "ipaddr", translate("ipaddress")) @@ -118,33 +146,110 @@ srv = s:option(Value, "server", translate("network_interface_server")) srv:depends("proto", "pptp") srv.rmempty = true +service = s:option(ListValue, "service", translate("network_interface_service")) +service:value("umts", "UMTS/GPRS") +service:value("cdma", "CDMA") +service:value("evdo", "EV-DO") +service:depends("proto", "3g") + +apn = s:option(Value, "apn", translate("network_interface_apn")) +apn:depends("proto", "3g") + +pincode = s:option(Value, "pincode", + translate("network_interface_pincode"), + translate("network_interface_pincode_desc") +) +pincode:depends("proto", "3g") + user = s:option(Value, "username", translate("username")) user.rmempty = true user:depends("proto", "pptp") user:depends("proto", "pppoe") +user:depends("proto", "ppp") +user:depends("proto", "3g") pass = s:option(Value, "password", translate("password")) pass.rmempty = true +pass.password = true pass:depends("proto", "pptp") pass:depends("proto", "pppoe") +pass:depends("proto", "ppp") +pass:depends("proto", "3g") ka = s:option(Value, "keepalive", translate("network_interface_keepalive"), translate("network_interface_keepalive_desc") ) -ka.rmempty = true +ka.optional = true ka:depends("proto", "pptp") ka:depends("proto", "pppoe") +ka:depends("proto", "ppp") +ka:depends("proto", "3g") -demand = s:option(Value, "demand", +demand = s:option(Value, "demand", translate("network_interface_demand"), translate("network_interface_demand_desc") ) -demand.rmempty = true +demand.optional = true demand:depends("proto", "pptp") demand:depends("proto", "pppoe") +demand:depends("proto", "ppp") +demand:depends("proto", "3g") +device = s:option(Value, "device", + translate("network_interface_device"), + translate("network_interface_device_desc") +) +device:depends("proto", "ppp") +device:depends("proto", "3g") + +defaultroute = s:option(Flag, "defaultroute", + translate("network_interface_defaultroute"), + translate("network_interface_defaultroute_desc") +) +defaultroute:depends("proto", "ppp") +defaultroute:depends("proto", "3g") +peerdns = s:option(Flag, "peerdns", + translate("network_interface_peerdns"), + translate("network_interface_peerdns_desc") +) +peerdns:depends("proto", "ppp") + +ipv6 = s:option(Flag, "ipv6", translate("network_interface_ipv6") ) +ipv6:depends("proto", "ppp") +--ipv6:depends("proto", "3g") + +connect = s:option(Value, "connect", + translate("network_interface_connect"), + translate("network_interface_connect_desc") +) +connect.optional = true +connect:depends("proto", "ppp") +connect:depends("proto", "3g") + +disconnect = s:option(Value, "disconnect", + translate("network_interface_disconnect"), + translate("network_interface_disconnect_desc") +) +disconnect.optional = true +disconnect:depends("proto", "ppp") +disconnect:depends("proto", "3g") + +pppd_options = s:option(Value, "pppd_options", + translate("network_interface_pppd_options"), + translate("network_interface_pppd_options_desc") +) +pppd_options.optional = true +pppd_options:depends("proto", "ppp") +pppd_options:depends("proto", "3g") + +maxwait = s:option(Value, "maxwait", + translate("network_interface_maxwait"), + translate("network_interface_maxwait_desc") +) +maxwait.optional = true +maxwait:depends("proto", "3g") s2 = m:section(TypedSection, "alias", translate("aliases"))