X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=modules%2Fadmin-full%2Fluasrc%2Fmodel%2Fcbi%2Fadmin_network%2Fifaces.lua;h=f9c141a71247545fe9f385cf1559d0f2e4dd80ec;hb=76fe25932830df72b8c957c809202cf6dc75b4ff;hp=c85b6a182169183587cb64f23d2deaeaaeccac74;hpb=01a4a3ab7333c393faf1c859af8a2dc3f6eb27b0;p=project%2Fluci.git 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 c85b6a182..f9c141a71 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua @@ -2,6 +2,7 @@ LuCI - Lua Configuration Interface Copyright 2008 Steven Barth +Copyright 2008 Jo-Philipp Wich Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -11,33 +12,23 @@ You may obtain a copy of the License at $Id$ ]]-- +require("luci.tools.webadmin") +arg[1] = arg[1] or "" m = Map("network", translate("interfaces"), translate("a_n_ifaces1")) -arg = arg or {} +s = m:section(NamedSection, arg[1], "interface") +s.addremove = true -s = m:section(TypedSection, "interface", translate("interfaces")) -function s.create(self, section) - local stat = TypedSection.create(self, section) - if stat then - arg = {section or stat} - end - return stat -end - -function s.filter(self, section) - return section ~= "loopback" and - (not arg or not arg[1] or arg[1] == section) -end - -if not arg or not arg[1] then - s.addremove = true -end -s:depends("proto", "static") -s:depends("proto", "dhcp") +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:value("static", translate("static")) p:value("dhcp", "DHCP") +p:value("pppoe", "PPPoE") +p:value("ppp", "PPP") +p:value("pptp", "PPTP") p.default = "static" br = s:option(Flag, "type", translate("a_n_i_bridge"), translate("a_n_i_bridge1")) @@ -52,6 +43,50 @@ for i,d in ipairs(luci.sys.net.devices()) do end end +local zones = luci.tools.webadmin.network_get_zones(arg[1]) +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")) ipaddr.rmempty = true @@ -92,24 +127,89 @@ mac = s:option(Value, "macaddr", translate("macaddress")) mac.optional = true +srv = s:option(Value, "server", translate("network_interface_server")) +srv:depends("proto", "pptp") +srv.rmempty = true + +user = s:option(Value, "username", translate("username")) +user.rmempty = true +user:depends("proto", "pptp") +user:depends("proto", "pppoe") +user:depends("proto", "ppp") + +pass = s:option(Value, "password", translate("password")) +pass.rmempty = true +pass:depends("proto", "pptp") +pass:depends("proto", "pppoe") +pass:depends("proto", "ppp") + +ka = s:option(Value, "keepalive", + translate("network_interface_keepalive"), + translate("network_interface_keepalive_desc") +) +ka.rmempty = true +ka:depends("proto", "pptp") +ka:depends("proto", "pppoe") +ka:depends("proto", "ppp") + +demand = s:option(Value, "demand", + translate("network_interface_demand"), + translate("network_interface_demand_desc") +) +demand.rmempty = true +demand:depends("proto", "pptp") +demand:depends("proto", "pppoe") +demand:depends("proto", "ppp") + +device = s:option(Value, "device", + translate("network_interface_device"), + translate("network_interface_device_desc") +) +device.rmempty = true +device:depends("proto", "ppp") + +defaultroute = s:option(Flag, "defaultroute", + translate("network_interface_defaultroute"), + translate("network_interface_defaultroute_desc") +) +defaultroute:depends("proto", "ppp") + +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") + +connect = s:option(Value, "connect", + translate("network_interface_connect"), + translate("network_interface_connect_desc") +) +connect.rmempty = true +connect:depends("proto", "ppp") + +disconnect = s:option(Value, "disconnect", + translate("network_interface_disconnect"), + translate("network_interface_disconnect_desc") +) +disconnect.rmempty = true +disconnect:depends("proto", "ppp") + +pppd_options = s:option(Value, "pppd_options", + translate("network_interface_pppd_options"), + translate("network_interface_pppd_options_desc") +) +pppd_options.rmempty = true +pppd_options:depends("proto", "ppp") s2 = m:section(TypedSection, "alias", translate("aliases")) s2.addremove = true -if arg and arg[1] then - s2:depends("interface", arg[1]) - s2.defaults.interface = arg[1] -else - parent = s2:option(ListValue, "interface", translate("interface")) - luci.model.uci.foreach("network", "interface", - function (section) - if section[".name"] ~= "loopback" then - parent:value(section[".name"]) - end - end - ) -end +s2:depends("interface", arg[1]) +s2.defaults.interface = arg[1] s2.defaults.proto = "static"