summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-ffwizard-leipzig/luasrc/tools/ffwizard.lua
diff options
context:
space:
mode:
authorManuel Munz <freifunk@somakoma.de>2011-01-25 21:04:57 +0000
committerManuel Munz <freifunk@somakoma.de>2011-01-25 21:04:57 +0000
commitc36fd44de2db30c08848bf326365a1e372b7879c (patch)
treeaa34a63d3270b4d9ba953c5bed9000aa961de745 /applications/luci-ffwizard-leipzig/luasrc/tools/ffwizard.lua
parent9c03a76fc28dac4efe4714f0e61bb41bf2784ef7 (diff)
applications/ffwizard: Massive changes to the ffwizard to make it more generic. Also introduces changes to the community profiles. ffwizard replaces ffwizard-leipzig now. It is not completely finished yet, but should work in most cases.
Diffstat (limited to 'applications/luci-ffwizard-leipzig/luasrc/tools/ffwizard.lua')
-rw-r--r--applications/luci-ffwizard-leipzig/luasrc/tools/ffwizard.lua149
1 files changed, 0 insertions, 149 deletions
diff --git a/applications/luci-ffwizard-leipzig/luasrc/tools/ffwizard.lua b/applications/luci-ffwizard-leipzig/luasrc/tools/ffwizard.lua
deleted file mode 100644
index 217cd44bb..000000000
--- a/applications/luci-ffwizard-leipzig/luasrc/tools/ffwizard.lua
+++ /dev/null
@@ -1,149 +0,0 @@
---[[
-LuCI - Lua Configuration Interface
-
-Copyright 2008 Steven Barth <steven@midlink.org>
-Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-$Id$
-
-]]--
-
-local uci = require "luci.model.uci"
-local util = require "luci.util"
-local table = require "table"
-
-local type = type
-
-module "luci.tools.ffwizard"
-
--- Deletes all references of a wifi device
-function wifi_delete_ifaces(device)
- local cursor = uci.cursor()
- cursor:delete_all("wireless", "wifi-iface", {device=device})
- cursor:save("wireless")
-end
-
--- Deletes a network interface and all occurences of it in firewall zones and dhcp
-function network_remove_interface(iface)
- local cursor = uci.cursor()
-
- if not cursor:delete("network", iface) then
- return false
- end
-
- local aliases = {iface}
- cursor:foreach("network", "alias",
- function(section)
- if section.interface == iface then
- table.insert(aliases, section[".name"])
- end
- end)
-
- -- Delete Aliases and Routes
- cursor:delete_all("network", "route", {interface=iface})
- cursor:delete_all("network", "alias", {interface=iface})
-
- -- Delete DHCP sections
- cursor:delete_all("dhcp", "dhcp",
- function(section)
- return util.contains(aliases, section.interface)
- end)
-
- -- Remove OLSR sections
- cursor:delete_all("olsrd", "Interface", {Interface=iface})
-
- -- Remove Splash sections
- cursor:delete_all("luci-splash", "iface", {network=iface})
-
- cursor:save("network")
- cursor:save("olsr")
- cursor:save("dhcp")
- cursor:save("luci-splash")
-end
-
--- Creates a firewall zone
-function firewall_create_zone(zone, input, output, forward, masq)
- local cursor = uci.cursor()
- if not firewall_find_zone(zone) then
- local stat = cursor:section("firewall", "zone", nil, {
- input = input,
- output = output,
- forward = forward,
- masq = masq and "1",
- name = zone
- })
- cursor:save("firewall")
- return stat
- end
-end
-
--- Adds interface to zone, creates zone on-demand
-function firewall_zone_add_interface(name, interface)
- local cursor = uci.cursor()
- local zone = firewall_find_zone(name)
- local net = cursor:get("firewall", zone, "network")
- local old = net or (cursor:get("network", name) and name)
- cursor:set("firewall", zone, "network", (old and old .. " " or "") .. interface)
- cursor:save("firewall")
-end
-
--- Removes interface from zone
-function firewall_zone_remove_interface(name, interface)
- local cursor = uci.cursor()
- local zone = firewall_find_zone(name)
- if zone then
- local net = cursor:get("firewall", zone, "network")
- local new = remove_list_entry(net, interface)
- if new then
- if #new > 0 then
- cursor:set("firewall", zone, "network", new)
- else
- cursor:delete("firewall", zone, "network")
- end
- cursor:save("firewall")
- end
- end
-end
-
-
--- Finds the firewall zone with given name
-function firewall_find_zone(name)
- local find
-
- uci.cursor():foreach("firewall", "zone",
- function (section)
- if section.name == name then
- find = section[".name"]
- end
- end)
-
- return find
-end
-
-
-
--- Helpers --
-
--- Removes a listentry, handles real and pseduo lists transparently
-function remove_list_entry(value, entry)
- if type(value) == "nil" then
- return nil
- end
-
- local result = type(value) == "table" and value or util.split(value, " ")
- local key = util.contains(result, entry)
-
- while key do
- table.remove(result, key)
- key = util.contains(result, entry)
- end
-
- result = type(value) == "table" and result or table.concat(result, " ")
- return result ~= value and result
-end