X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=modules%2Fadmin-full%2Fluasrc%2Fmodel%2Fcbi%2Fadmin_network%2Fifaces.lua;h=267c41c9d3c7e16425886c69707dff8aea4e5f65;hb=4d34417ebc3e46cc16529e7e6da46e80229787c5;hp=8afe0510307b07bc391d5fa4f73c64b6648bb813;hpb=e73752cae95905eec118e7ca8e6aee2b6e70a9f7;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 8afe05103..267c41c9d 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,35 +12,126 @@ 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(TypedSection, "interface", "") +s = m:section(NamedSection, arg[1], "interface") s.addremove = true -s:exclude("loopback") -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.override_scheme = true +p.default = "static" p:value("static", translate("static")) p:value("dhcp", "DHCP") -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 +p:value("none", translate("none")) + +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" br.rmempty = true -s:option(Value, "ifname", translate("interface")).rmempty = true +ifname = s:option(Value, "ifname", translate("interface")) +ifname.rmempty = true +for i,d in ipairs(luci.sys.net.devices()) do + if d ~= "lo" then + ifname:value(d) + 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 -s:option(Value, "ipaddr", translate("ipaddress")) +ipaddr = s:option(Value, "ipaddr", translate("ipaddress")) +ipaddr.rmempty = true +ipaddr:depends("proto", "static") -s:option(Value, "netmask", translate("netmask")):depends("proto", "static") +nm = s:option(Value, "netmask", translate("netmask")) +nm.rmempty = true +nm:depends("proto", "static") +nm:value("255.255.255.0") +nm:value("255.255.0.0") +nm:value("255.0.0.0") gw = s:option(Value, "gateway", translate("gateway")) gw:depends("proto", "static") gw.rmempty = true +bcast = s:option(Value, "bcast", translate("broadcast")) +bcast:depends("proto", "static") +bcast.optional = true + +ip6addr = s:option(Value, "ip6addr", translate("ip6address"), translate("cidr6")) +ip6addr.optional = true +ip6addr:depends("proto", "static") + +ip6gw = s:option(Value, "ip6gw", translate("gateway6")) +ip6gw:depends("proto", "static") +ip6gw.optional = true + dns = s:option(Value, "dns", translate("dnsserver")) -dns:depends("proto", "static") dns.optional = true mtu = s:option(Value, "mtu", "MTU") @@ -49,4 +141,155 @@ mtu.isinteger = true mac = s:option(Value, "macaddr", translate("macaddress")) mac.optional = true -return m \ No newline at end of file + +srv = s:option(Value, "server", translate("network_interface_server")) +srv:depends("proto", "pptp") +srv.rmempty = true + +if has_3g then + service = s:option(ListValue, "service", translate("network_interface_service")) + service:value("", translate("cbi_select")) + service:value("umts", "UMTS/GPRS") + service:value("cdma", "CDMA") + service:value("evdo", "EV-DO") + service:depends("proto", "3g") + service.rmempty = true + + 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") +end + +if has_pppd or has_pppoe or has_3g or has_pptp then + 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.optional = true + ka:depends("proto", "pptp") + ka:depends("proto", "pppoe") + ka:depends("proto", "ppp") + ka:depends("proto", "3g") + + demand = s:option(Value, "demand", + translate("network_interface_demand"), + translate("network_interface_demand_desc") + ) + demand.optional = true + demand:depends("proto", "pptp") + demand:depends("proto", "pppoe") + demand:depends("proto", "ppp") + demand:depends("proto", "3g") +end + +if has_pppd or has_3g then + 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") +end + +s2 = m:section(TypedSection, "alias", translate("aliases")) +s2.addremove = true + +s2:depends("interface", arg[1]) +s2.defaults.interface = arg[1] + + +s2.defaults.proto = "static" + +ipaddr = s2:option(Value, "ipaddr", translate("ipaddress")) +ipaddr.rmempty = true + +nm = s2:option(Value, "netmask", translate("netmask")) +nm.rmempty = true +nm:value("255.255.255.0") +nm:value("255.255.0.0") +nm:value("255.0.0.0") + +gw = s2:option(Value, "gateway", translate("gateway")) +gw.rmempty = true + +bcast = s2:option(Value, "bcast", translate("broadcast")) +bcast.optional = true + +ip6addr = s2:option(Value, "ip6addr", translate("ip6address"), translate("cidr6")) +ip6addr.optional = true + +ip6gw = s2:option(Value, "ip6gw", translate("gateway6")) +ip6gw.optional = true + +dns = s2:option(Value, "dns", translate("dnsserver")) +dns.optional = true + +return m