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.
This commit is contained in:
parent
9c03a76fc2
commit
c36fd44de2
64 changed files with 816 additions and 1442 deletions
|
@ -1,4 +0,0 @@
|
||||||
PO =
|
|
||||||
|
|
||||||
include ../../build/config.mk
|
|
||||||
include ../../build/module.mk
|
|
|
@ -1,21 +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$
|
|
||||||
|
|
||||||
]]--
|
|
||||||
|
|
||||||
module "luci.controller.ffwizard"
|
|
||||||
|
|
||||||
function index()
|
|
||||||
entry({"admin", "freifunk", "ffwizard"}, form("ffwizard"), "Freifunkassistent", 50)
|
|
||||||
end
|
|
|
@ -1,493 +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".cursor()
|
|
||||||
local tools = require "luci.tools.ffwizard"
|
|
||||||
local util = require "luci.util"
|
|
||||||
local sys = require "luci.sys"
|
|
||||||
local ip = require "luci.ip"
|
|
||||||
|
|
||||||
local function mksubnet(community, meship)
|
|
||||||
local subnet_prefix = tonumber(uci:get("freifunk", community, "splash_prefix")) or 27
|
|
||||||
local pool_network = uci:get("freifunk", community, "splash_network") or "10.104.0.0/16"
|
|
||||||
local pool = luci.ip.IPv4(pool_network)
|
|
||||||
|
|
||||||
if pool then
|
|
||||||
local hosts_per_subnet = 2^(32 - subnet_prefix)
|
|
||||||
local number_of_subnets = (2^pool:prefix())/hosts_per_subnet
|
|
||||||
|
|
||||||
local seed1, seed2 = meship:match("(%d+)%.(%d+)$")
|
|
||||||
math.randomseed(seed1 * seed2)
|
|
||||||
|
|
||||||
local subnet = pool:add(hosts_per_subnet * math.random(number_of_subnets))
|
|
||||||
|
|
||||||
local subnet_ipaddr = subnet:network(subnet_prefix):add(1):string()
|
|
||||||
local subnet_netmask = subnet:mask(subnet_prefix):string()
|
|
||||||
|
|
||||||
return subnet_ipaddr, subnet_netmask
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
-------------------- View --------------------
|
|
||||||
f = SimpleForm("ffwizward", "Freifunkassistent",
|
|
||||||
"Dieser Assistent unterstüzt bei der Einrichtung des Routers für das Freifunknetz.")
|
|
||||||
|
|
||||||
|
|
||||||
dev = f:field(ListValue, "device", "WLAN-Gerät")
|
|
||||||
uci:foreach("wireless", "wifi-device",
|
|
||||||
function(section)
|
|
||||||
dev:value(section[".name"])
|
|
||||||
end)
|
|
||||||
|
|
||||||
|
|
||||||
main = f:field(Flag, "wifi", "Freifunkzugang einrichten")
|
|
||||||
|
|
||||||
net = f:field(Value, "net", "Freifunk Community", "Mesh Netzbereich")
|
|
||||||
net.rmempty = true
|
|
||||||
net:depends("wifi", "1")
|
|
||||||
uci:foreach("freifunk", "community", function(s)
|
|
||||||
net:value(s[".name"], "%s (%s)" % {s.name, s.mesh_network or "?"})
|
|
||||||
end)
|
|
||||||
|
|
||||||
function net.cfgvalue(self, section)
|
|
||||||
return uci:get("freifunk", "wizard", "net")
|
|
||||||
end
|
|
||||||
function net.write(self, section, value)
|
|
||||||
uci:set("freifunk", "wizard", "net", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
|
|
||||||
meship = f:field(Value, "meship", "Mesh IP Adresse", "Netzweit eindeutige Identifikation")
|
|
||||||
meship.rmempty = true
|
|
||||||
meship:depends("wifi", "1")
|
|
||||||
function meship.cfgvalue(self, section)
|
|
||||||
return uci:get("freifunk", "wizard", "meship")
|
|
||||||
end
|
|
||||||
function meship.write(self, section, value)
|
|
||||||
uci:set("freifunk", "wizard", "meship", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
function meship.validate(self, value)
|
|
||||||
local x = ip.IPv4(value)
|
|
||||||
return ( x and x:prefix() == 32 ) and x:string() or ""
|
|
||||||
end
|
|
||||||
|
|
||||||
client = f:field(Flag, "client", "WLAN-DHCP anbieten")
|
|
||||||
client:depends("wifi", "1")
|
|
||||||
client.rmempty = false
|
|
||||||
function client.cfgvalue(self, section)
|
|
||||||
return uci:get("freifunk", "wizard", "dhcp_splash") or "0"
|
|
||||||
end
|
|
||||||
|
|
||||||
olsr = f:field(Flag, "olsr", "OLSR einrichten")
|
|
||||||
olsr.rmempty = true
|
|
||||||
|
|
||||||
lat = f:field(Value, "lat", "Latitude")
|
|
||||||
lat:depends("olsr", "1")
|
|
||||||
function lat.cfgvalue(self, section)
|
|
||||||
return uci:get("freifunk", "wizard", "latitude")
|
|
||||||
end
|
|
||||||
function lat.write(self, section, value)
|
|
||||||
uci:set("freifunk", "wizard", "latitude", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
|
|
||||||
lon = f:field(Value, "lon", "Longitude")
|
|
||||||
lon:depends("olsr", "1")
|
|
||||||
function lon.cfgvalue(self, section)
|
|
||||||
return uci:get("freifunk", "wizard", "longitude")
|
|
||||||
end
|
|
||||||
function lon.write(self, section, value)
|
|
||||||
uci:set("freifunk", "wizard", "longitude", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
|
|
||||||
share = f:field(Flag, "sharenet", "Eigenen Internetzugang freigeben")
|
|
||||||
share.rmempty = true
|
|
||||||
|
|
||||||
wansec = f:field(Flag, "wansec", "WAN-Zugriff auf Gateway beschränken")
|
|
||||||
wansec.rmempty = false
|
|
||||||
wansec:depends("sharenet", "1")
|
|
||||||
function wansec.cfgvalue(self, section)
|
|
||||||
return uci:get("freifunk", "wizard", "wan_security")
|
|
||||||
end
|
|
||||||
function wansec.write(self, section, value)
|
|
||||||
uci:set("freifunk", "wizard", "wan_security", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
|
|
||||||
-------------------- Control --------------------
|
|
||||||
function f.handle(self, state, data)
|
|
||||||
if state == FORM_VALID then
|
|
||||||
luci.http.redirect(luci.dispatcher.build_url("admin", "uci", "changes"))
|
|
||||||
return false
|
|
||||||
elseif state == FORM_INVALID then
|
|
||||||
self.errmessage = "Ungültige Eingabe: Bitte die Formularfelder auf Fehler prüfen."
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
local function _strip_internals(tbl)
|
|
||||||
tbl = tbl or {}
|
|
||||||
for k, v in pairs(tbl) do
|
|
||||||
if k:sub(1, 1) == "." then
|
|
||||||
tbl[k] = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return tbl
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Configure Freifunk checked
|
|
||||||
function main.write(self, section, value)
|
|
||||||
if value == "0" then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local device = dev:formvalue(section)
|
|
||||||
local node_ip, external
|
|
||||||
|
|
||||||
-- Collect IP-Address
|
|
||||||
local community = net:formvalue(section)
|
|
||||||
|
|
||||||
-- Invalidate fields
|
|
||||||
if not community then
|
|
||||||
net.tag_missing[section] = true
|
|
||||||
else
|
|
||||||
external = uci:get("freifunk", community, "external") or ""
|
|
||||||
network = ip.IPv4(uci:get("freifunk", community, "mesh_network") or "104.0.0.0/8")
|
|
||||||
node_ip = meship:formvalue(section) and ip.IPv4(meship:formvalue(section))
|
|
||||||
|
|
||||||
if not node_ip or not network or not network:contains(node_ip) then
|
|
||||||
meship.tag_missing[section] = true
|
|
||||||
node_ip = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if not node_ip then return end
|
|
||||||
|
|
||||||
|
|
||||||
-- Cleanup
|
|
||||||
tools.wifi_delete_ifaces(device)
|
|
||||||
tools.network_remove_interface(device)
|
|
||||||
tools.firewall_zone_remove_interface("freifunk", device)
|
|
||||||
|
|
||||||
-- Tune community settings
|
|
||||||
if community and uci:get("freifunk", community) then
|
|
||||||
uci:tset("freifunk", "community", uci:get_all("freifunk", community))
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Tune wifi device
|
|
||||||
local devconfig = uci:get_all("freifunk", "wifi_device")
|
|
||||||
util.update(devconfig, uci:get_all(external, "wifi_device") or {})
|
|
||||||
uci:tset("wireless", device, devconfig)
|
|
||||||
|
|
||||||
-- Create wifi iface
|
|
||||||
local ifconfig = uci:get_all("freifunk", "wifi_iface")
|
|
||||||
util.update(ifconfig, uci:get_all(external, "wifi_iface") or {})
|
|
||||||
ifconfig.device = device
|
|
||||||
ifconfig.network = device
|
|
||||||
ifconfig.ssid = uci:get("freifunk", community, "ssid")
|
|
||||||
uci:section("wireless", "wifi-iface", nil, ifconfig)
|
|
||||||
|
|
||||||
-- Save wifi
|
|
||||||
uci:save("wireless")
|
|
||||||
|
|
||||||
-- Create firewall zone and add default rules (first time)
|
|
||||||
local newzone = tools.firewall_create_zone("freifunk", "REJECT", "ACCEPT", "REJECT", true)
|
|
||||||
if newzone then
|
|
||||||
uci:foreach("freifunk", "fw_forwarding", function(section)
|
|
||||||
uci:section("firewall", "forwarding", nil, section)
|
|
||||||
end)
|
|
||||||
uci:foreach(external, "fw_forwarding", function(section)
|
|
||||||
uci:section("firewall", "forwarding", nil, section)
|
|
||||||
end)
|
|
||||||
|
|
||||||
uci:foreach("freifunk", "fw_rule", function(section)
|
|
||||||
uci:section("firewall", "rule", nil, section)
|
|
||||||
end)
|
|
||||||
uci:foreach(external, "fw_rule", function(section)
|
|
||||||
uci:section("firewall", "rule", nil, section)
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Enforce firewall include
|
|
||||||
local has_include = false
|
|
||||||
uci:foreach("firewall", "include",
|
|
||||||
function(section)
|
|
||||||
if section.path == "/etc/firewall.freifunk" then
|
|
||||||
has_include = true
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
if not has_include then
|
|
||||||
uci:section("firewall", "include", nil,
|
|
||||||
{ path = "/etc/firewall.freifunk" })
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Allow state: invalid packets
|
|
||||||
uci:foreach("firewall", "defaults",
|
|
||||||
function(section)
|
|
||||||
uci:set("firewall", section[".name"], "drop_invalid", "0")
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- Prepare advanced config
|
|
||||||
local has_advanced = false
|
|
||||||
uci:foreach("firewall", "advanced",
|
|
||||||
function(section) has_advanced = true end)
|
|
||||||
|
|
||||||
if not has_advanced then
|
|
||||||
uci:section("firewall", "advanced", nil,
|
|
||||||
{ tcp_ecn = "0", ip_conntrack_max = "8192", tcp_westwood = "1" })
|
|
||||||
end
|
|
||||||
|
|
||||||
uci:save("firewall")
|
|
||||||
|
|
||||||
|
|
||||||
-- Create network interface
|
|
||||||
local netconfig = uci:get_all("freifunk", "interface")
|
|
||||||
util.update(netconfig, uci:get_all(external, "interface") or {})
|
|
||||||
netconfig.proto = "static"
|
|
||||||
netconfig.ipaddr = node_ip:string()
|
|
||||||
uci:section("network", "interface", device, netconfig)
|
|
||||||
|
|
||||||
uci:save("network")
|
|
||||||
|
|
||||||
tools.firewall_zone_add_interface("freifunk", device)
|
|
||||||
|
|
||||||
|
|
||||||
local new_hostname = node_ip:string():gsub("%.", "-")
|
|
||||||
local old_hostname = sys.hostname()
|
|
||||||
|
|
||||||
uci:foreach("system", "system",
|
|
||||||
function(s)
|
|
||||||
-- Make crond silent
|
|
||||||
uci:set("system", s['.name'], "cronloglevel", "10")
|
|
||||||
|
|
||||||
-- Set hostname
|
|
||||||
if old_hostname == "OpenWrt" or old_hostname:match("^%d+-%d+-%d+-%d+$") then
|
|
||||||
uci:set("system", s['.name'], "hostname", new_hostname)
|
|
||||||
sys.hostname(new_hostname)
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
uci:save("system")
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function olsr.write(self, section, value)
|
|
||||||
if value == "0" then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local device = dev:formvalue(section)
|
|
||||||
|
|
||||||
local community = net:formvalue(section)
|
|
||||||
local external = community and uci:get("freifunk", community, "external") or ""
|
|
||||||
|
|
||||||
local latval = tonumber(lat:formvalue(section))
|
|
||||||
local lonval = tonumber(lon:formvalue(section))
|
|
||||||
|
|
||||||
|
|
||||||
-- Delete old interface
|
|
||||||
uci:delete_all("olsrd", "Interface", {interface=device})
|
|
||||||
|
|
||||||
-- Write new interface
|
|
||||||
local olsrbase = uci:get_all("freifunk", "olsr_interface")
|
|
||||||
util.update(olsrbase, uci:get_all(external, "olsr_interface") or {})
|
|
||||||
olsrbase.interface = device
|
|
||||||
olsrbase.ignore = "0"
|
|
||||||
uci:section("olsrd", "Interface", nil, olsrbase)
|
|
||||||
|
|
||||||
-- Delete old watchdog settings
|
|
||||||
uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_watchdog.so.0.1"})
|
|
||||||
|
|
||||||
-- Write new watchdog settings
|
|
||||||
uci:section("olsrd", "LoadPlugin", nil, {
|
|
||||||
library = "olsrd_watchdog.so.0.1",
|
|
||||||
file = "/var/run/olsrd.watchdog",
|
|
||||||
interval = "30"
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Delete old nameservice settings
|
|
||||||
uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_nameservice.so.0.3"})
|
|
||||||
|
|
||||||
-- Write new nameservice settings
|
|
||||||
uci:section("olsrd", "LoadPlugin", nil, {
|
|
||||||
library = "olsrd_nameservice.so.0.3",
|
|
||||||
suffix = ".olsr",
|
|
||||||
hosts_file = "/var/etc/hosts.olsr",
|
|
||||||
latlon_file = "/var/run/latlon.js",
|
|
||||||
lat = latval and string.format("%.15f", latval) or "",
|
|
||||||
lon = lonval and string.format("%.15f", lonval) or ""
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Save latlon to system too
|
|
||||||
if latval and lonval then
|
|
||||||
uci:foreach("system", "system", function(s)
|
|
||||||
uci:set("system", s[".name"], "latlon",
|
|
||||||
string.format("%.15f %.15f", latval, lonval))
|
|
||||||
end)
|
|
||||||
else
|
|
||||||
uci:foreach("system", "system", function(s)
|
|
||||||
uci:delete("system", s[".name"], "latlon")
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Import hosts
|
|
||||||
uci:foreach("dhcp", "dnsmasq", function(s)
|
|
||||||
uci:set("dhcp", s[".name"], "addnhosts", "/var/etc/hosts.olsr")
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- Make sure that OLSR is enabled
|
|
||||||
sys.exec("/etc/init.d/olsrd enable")
|
|
||||||
|
|
||||||
uci:save("olsrd")
|
|
||||||
uci:save("dhcp")
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function share.write(self, section, value)
|
|
||||||
uci:delete_all("firewall", "forwarding", {src="freifunk", dest="wan"})
|
|
||||||
uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_dyn_gw_plain.so.0.4"})
|
|
||||||
uci:foreach("firewall", "zone",
|
|
||||||
function(s)
|
|
||||||
if s.name == "wan" then
|
|
||||||
uci:delete("firewall", s['.name'], "local_restrict")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
if value == "1" then
|
|
||||||
uci:section("firewall", "forwarding", nil, {src="freifunk", dest="wan"})
|
|
||||||
uci:section("olsrd", "LoadPlugin", nil, {library="olsrd_dyn_gw_plain.so.0.4"})
|
|
||||||
|
|
||||||
if wansec:formvalue(section) == "1" then
|
|
||||||
uci:foreach("firewall", "zone",
|
|
||||||
function(s)
|
|
||||||
if s.name == "wan" then
|
|
||||||
uci:set("firewall", s['.name'], "local_restrict", "1")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
uci:save("firewall")
|
|
||||||
uci:save("olsrd")
|
|
||||||
uci:save("system")
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function client.write(self, section, value)
|
|
||||||
if value == "0" then
|
|
||||||
uci:delete("freifunk", "wizard", "dhcp_splash")
|
|
||||||
uci:save("freifunk")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local device = dev:formvalue(section)
|
|
||||||
|
|
||||||
-- Collect IP-Address
|
|
||||||
local node_ip = meship:formvalue(section)
|
|
||||||
|
|
||||||
if not node_ip then return end
|
|
||||||
|
|
||||||
local community = net:formvalue(section)
|
|
||||||
local external = community and uci:get("freifunk", community, "external") or ""
|
|
||||||
local splash_ip, splash_mask = mksubnet(community, node_ip)
|
|
||||||
|
|
||||||
-- Delete old alias
|
|
||||||
uci:delete("network", device .. "dhcp")
|
|
||||||
|
|
||||||
-- Create alias
|
|
||||||
local aliasbase = uci:get_all("freifunk", "alias")
|
|
||||||
util.update(aliasbase, uci:get_all(external, "alias") or {})
|
|
||||||
aliasbase.interface = device
|
|
||||||
aliasbase.ipaddr = splash_ip
|
|
||||||
aliasbase.netmask = splash_mask
|
|
||||||
aliasbase.proto = "static"
|
|
||||||
uci:section("network", "alias", device .. "dhcp", aliasbase)
|
|
||||||
uci:save("network")
|
|
||||||
|
|
||||||
|
|
||||||
-- Create dhcp
|
|
||||||
local dhcpbase = uci:get_all("freifunk", "dhcp")
|
|
||||||
util.update(dhcpbase, uci:get_all(external, "dhcp") or {})
|
|
||||||
dhcpbase.interface = device .. "dhcp"
|
|
||||||
dhcpbase.start = dhcpbeg
|
|
||||||
dhcpbase.limit = limit
|
|
||||||
dhcpbase.force = 1
|
|
||||||
|
|
||||||
uci:section("dhcp", "dhcp", device .. "dhcp", dhcpbase)
|
|
||||||
uci:save("dhcp")
|
|
||||||
|
|
||||||
uci:delete_all("firewall", "rule", {
|
|
||||||
src="freifunk",
|
|
||||||
proto="udp",
|
|
||||||
dest_port="53"
|
|
||||||
})
|
|
||||||
uci:section("firewall", "rule", nil, {
|
|
||||||
src="freifunk",
|
|
||||||
proto="udp",
|
|
||||||
dest_port="53",
|
|
||||||
target="ACCEPT"
|
|
||||||
})
|
|
||||||
uci:delete_all("firewall", "rule", {
|
|
||||||
src="freifunk",
|
|
||||||
proto="udp",
|
|
||||||
src_port="68",
|
|
||||||
dest_port="67"
|
|
||||||
})
|
|
||||||
uci:section("firewall", "rule", nil, {
|
|
||||||
src="freifunk",
|
|
||||||
proto="udp",
|
|
||||||
src_port="68",
|
|
||||||
dest_port="67",
|
|
||||||
target="ACCEPT"
|
|
||||||
})
|
|
||||||
uci:delete_all("firewall", "rule", {
|
|
||||||
src="freifunk",
|
|
||||||
proto="tcp",
|
|
||||||
dest_port="8082",
|
|
||||||
})
|
|
||||||
uci:section("firewall", "rule", nil, {
|
|
||||||
src="freifunk",
|
|
||||||
proto="tcp",
|
|
||||||
dest_port="8082",
|
|
||||||
target="ACCEPT"
|
|
||||||
})
|
|
||||||
|
|
||||||
uci:save("firewall")
|
|
||||||
|
|
||||||
-- Delete old splash
|
|
||||||
uci:delete_all("luci_splash", "iface", {network=device.."dhcp", zone="freifunk"})
|
|
||||||
|
|
||||||
-- Register splash
|
|
||||||
uci:section("luci_splash", "iface", nil, {network=device.."dhcp", zone="freifunk"})
|
|
||||||
uci:save("luci_splash")
|
|
||||||
|
|
||||||
-- Make sure that luci_splash is enabled
|
|
||||||
sys.exec("/etc/init.d/luci_splash enable")
|
|
||||||
|
|
||||||
-- Remember state
|
|
||||||
uci:set("freifunk", "wizard", "dhcp_splash", "1")
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
|
|
||||||
return f
|
|
|
@ -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
|
|
|
@ -18,6 +18,10 @@ $Id$
|
||||||
module "luci.controller.ffwizard"
|
module "luci.controller.ffwizard"
|
||||||
|
|
||||||
function index()
|
function index()
|
||||||
entry({"admin", "freifunk", "ffwizard"}, form("ffwizard"), "Freifunkassistent", 1)
|
entry({"admin", "freifunk", "ffwizard"}, form("freifunk/ffwizard"), "Freifunkassistent", 40)
|
||||||
assign({"mini", "freifunk", "ffwizard"}, {"admin", "freifunk", "ffwizard"}, "Freifunkassistent", 1)
|
assign({"mini", "freifunk", "ffwizard"}, {"admin", "freifunk", "ffwizard"}, "Freifunkassistent", 40)
|
||||||
end
|
|
||||||
|
entry({"admin", "freifunk", "ffwizard_error"}, template("freifunk/ffwizard_error"))
|
||||||
|
assign({"mini", "freifunk", "ffwizard_error"}, {"admin", "freifunk", "ffwizard_error"})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
|
@ -4,15 +4,13 @@ LuCI - Lua Configuration Interface
|
||||||
Copyright 2008 Steven Barth <steven@midlink.org>
|
Copyright 2008 Steven Barth <steven@midlink.org>
|
||||||
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
|
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
|
||||||
Copyright 2011 Patrick Grimm <patrick@pberg.freifunk.net>
|
Copyright 2011 Patrick Grimm <patrick@pberg.freifunk.net>
|
||||||
|
Copyright 2011 Manuel Munz <freifunk at somakoma dot de>
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
You may obtain a copy of the License at
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
$Id$
|
|
||||||
|
|
||||||
]]--
|
]]--
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,9 +31,19 @@ local has_autoipv6 = fs.access("/usr/bin/auto-ipv6")
|
||||||
local has_qos = fs.access("/etc/init.d/qos")
|
local has_qos = fs.access("/etc/init.d/qos")
|
||||||
local has_ipv6 = fs.access("/proc/sys/net/ipv6")
|
local has_ipv6 = fs.access("/proc/sys/net/ipv6")
|
||||||
local has_hb = fs.access("/sbin/heartbeat")
|
local has_hb = fs.access("/sbin/heartbeat")
|
||||||
|
local community = "profile_" .. (uci:get("freifunk", "community", "name") or "na")
|
||||||
|
local lat = uci:get_first("system", "system", "latitude")
|
||||||
|
local lon = uci:get_first("system", "system", "longitude")
|
||||||
|
local suffix = uci:get_first(community, "community", "suffix") or "olsr"
|
||||||
|
|
||||||
luci.i18n.loadc("freifunk")
|
luci.i18n.loadc("freifunk")
|
||||||
|
|
||||||
|
-- Check if all necessary variables are available
|
||||||
|
if not (community ~= "profile_na" and lat and lon) then
|
||||||
|
luci.http.redirect(luci.dispatcher.build_url(unpack(luci.dispatcher.context.requested.path), "freifunk", "ffwizard_error"))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
function get_mac(ix)
|
function get_mac(ix)
|
||||||
if string.find(ix, "radio") then
|
if string.find(ix, "radio") then
|
||||||
ix = string.gsub(ix,"radio", 'wlan')
|
ix = string.gsub(ix,"radio", 'wlan')
|
||||||
|
@ -52,6 +60,7 @@ function get_mac(ix)
|
||||||
end
|
end
|
||||||
return "?"
|
return "?"
|
||||||
end
|
end
|
||||||
|
|
||||||
function get_ula(imac)
|
function get_ula(imac)
|
||||||
if string.len(imac) == 17 then
|
if string.len(imac) == 17 then
|
||||||
local mac1 = string.sub(imac,4,8)
|
local mac1 = string.sub(imac,4,8)
|
||||||
|
@ -62,6 +71,33 @@ function get_ula(imac)
|
||||||
return "?"
|
return "?"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function gen_dhcp_range(n)
|
||||||
|
local subnet_prefix = tonumber(uci:get_first(community, "community", "splash_prefix")) or 27
|
||||||
|
local pool_network = uci:get_first(community, "community", "splash_network") or "10.104.0.0/16"
|
||||||
|
local pool = luci.ip.IPv4(pool_network)
|
||||||
|
local ip = tostring(n)
|
||||||
|
if pool and ip then
|
||||||
|
local hosts_per_subnet = 2^(32 - subnet_prefix)
|
||||||
|
local number_of_subnets = (2^pool:prefix())/hosts_per_subnet
|
||||||
|
local seed1, seed2 = ip:match("(%d+)%.(%d+)$")
|
||||||
|
if seed1 and seed2 then
|
||||||
|
math.randomseed((seed1+1)*(seed2+1))
|
||||||
|
end
|
||||||
|
local subnet = pool:add(hosts_per_subnet * math.random(number_of_subnets))
|
||||||
|
dhcp_ip = subnet:network(subnet_prefix):add(1):string()
|
||||||
|
dhcp_mask = subnet:mask(subnet_prefix):string()
|
||||||
|
end
|
||||||
|
return "?"
|
||||||
|
end
|
||||||
|
|
||||||
|
function hbconf(dev)
|
||||||
|
if has_hb then
|
||||||
|
local ifacelist = uci:get_list("manager", "heartbeat", "interface") or {}
|
||||||
|
table.insert(ifacelist,dev .. "dhcp")
|
||||||
|
uci:set_list("manager", "heartbeat", "interface", ifacelist)
|
||||||
|
uci:save("manager")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-------------------- View --------------------
|
-------------------- View --------------------
|
||||||
f = SimpleForm("ffwizward", "Freifunkassistent",
|
f = SimpleForm("ffwizward", "Freifunkassistent",
|
||||||
|
@ -82,80 +118,31 @@ if sys.exec("diff /rom/etc/passwd /etc/passwd") == "" then
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
net = f:field(ListValue, "net", "Freifunk Community", "Nutzen Sie die Einstellungen der Freifunk Gemeinschaft in ihrer Nachbarschaft.")
|
|
||||||
net.rmempty = false
|
|
||||||
net.optional = false
|
|
||||||
uci:foreach("freifunk", "community", function(s)
|
|
||||||
net:value(s[".name"], "%s (%s)" % {s.name, s.mesh_network or "?"})
|
|
||||||
end)
|
|
||||||
function net.cfgvalue(self, section)
|
|
||||||
return uci:get("freifunk", "wizard", "net")
|
|
||||||
end
|
|
||||||
function net.write(self, section, value)
|
|
||||||
uci:set("freifunk", "wizard", "net", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
net_lat = f:field(ListValue, "net_lat", "", "")
|
|
||||||
net_lat:depends("net", "0")
|
|
||||||
net_lon = f:field(ListValue, "net_lon", "", "")
|
|
||||||
net_lon:depends("net", "0")
|
|
||||||
|
|
||||||
uci:foreach("freifunk", "community", function(s)
|
|
||||||
if s.latitude then
|
|
||||||
net_lat:value(s[".name"], "%s" % {s.latitude or "?"})
|
|
||||||
end
|
|
||||||
if s.longitude then
|
|
||||||
net_lon:value(s[".name"], "%s" % {s.longitude or "?"})
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- hostname
|
|
||||||
hostname = f:field(Value, "hostname", "Knoten Name", "Geben Sie Ihrem Freifunk Router einen Namen. Wenn Sie dieses Feld leer lassen, wird der Name automatisch aus der Mesh IP generiert.")
|
|
||||||
hostname.rmempty = true
|
|
||||||
hostname.optional = false
|
|
||||||
function hostname.cfgvalue(self, section)
|
|
||||||
return sys.hostname()
|
|
||||||
end
|
|
||||||
function hostname.write(self, section, value)
|
|
||||||
uci:set("freifunk", "wizard", "hostname", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
function hostname.validate(self, value)
|
|
||||||
if (#value > 24) or string.find(value, "[^%w%.%-]") or string.find(string.sub(value, value:len()), "[%.%-]") or string.find(string.sub(value, 1), "[%.%-]") then
|
|
||||||
return
|
|
||||||
else
|
|
||||||
return value
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- location
|
|
||||||
location = f:field(Value, "location", "Standort", "Geben Sie den Standort ihres Gerätes an")
|
|
||||||
location.rmempty = false
|
|
||||||
location.optional = false
|
|
||||||
function location.cfgvalue(self, section)
|
|
||||||
return uci:get("freifunk", "contact", "location")
|
|
||||||
end
|
|
||||||
function location.write(self, section, value)
|
|
||||||
uci:set("freifunk", "contact", "location", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- mail
|
|
||||||
mail = f:field(Value, "mail", "E-Mail", "Bitte hinterlegen Sie eine Kontaktadresse.")
|
|
||||||
mail.rmempty = false
|
|
||||||
mail.optional = false
|
|
||||||
function mail.cfgvalue(self, section)
|
|
||||||
return uci:get("freifunk", "contact", "mail")
|
|
||||||
end
|
|
||||||
function mail.write(self, section, value)
|
|
||||||
uci:set("freifunk", "contact", "mail", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
-- main netconfig
|
-- main netconfig
|
||||||
|
|
||||||
|
local cc = uci:get(community, "wifi_device", "country") or "DE"
|
||||||
|
|
||||||
main = f:field(Flag, "netconfig", "Netzwerk einrichten", "Setzen Sie den Haken, wenn Sie Ihr Freifunk Netzwerk einrichten wollen.")
|
main = f:field(Flag, "netconfig", "Netzwerk einrichten", "Setzen Sie den Haken, wenn Sie Ihr Freifunk Netzwerk einrichten wollen.")
|
||||||
uci:foreach("wireless", "wifi-device",
|
uci:foreach("wireless", "wifi-device",
|
||||||
function(section)
|
function(section)
|
||||||
local device = section[".name"]
|
local device = section[".name"]
|
||||||
|
local hwtype = section.type
|
||||||
|
|
||||||
|
local syscc = uci:get("wireless", device, "country")
|
||||||
|
if not syscc then
|
||||||
|
if hwtype == "atheros" then
|
||||||
|
cc = sys.exec("grep -i '" .. cc .. "' /lib/wifi/cc_translate.txt |cut -d ' ' -f 2") or 0
|
||||||
|
sys.exec("echo " .. cc .. " > /proc/sys/dev/" .. device .. "/countrycode")
|
||||||
|
elseif hwtype == "mac80211" then
|
||||||
|
sys.exec("iw reg set " .. cc)
|
||||||
|
elseif hwtype == "broadcom" then
|
||||||
|
-- verify that ot works!
|
||||||
|
sys.exec ("wlc country " .. cc)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
cc = syscc
|
||||||
|
end
|
||||||
|
|
||||||
local dev = f:field(Flag, "device_" .. device , "<b>Drahtloses Netzwerk \"" .. device:upper() .. "\"</b> ", "Konfigurieren Sie Ihre drahtlose " .. device:upper() .. "Schnittstelle (WLAN).")
|
local dev = f:field(Flag, "device_" .. device , "<b>Drahtloses Netzwerk \"" .. device:upper() .. "\"</b> ", "Konfigurieren Sie Ihre drahtlose " .. device:upper() .. "Schnittstelle (WLAN).")
|
||||||
dev:depends("netconfig", "1")
|
dev:depends("netconfig", "1")
|
||||||
dev.rmempty = false
|
dev.rmempty = false
|
||||||
|
@ -189,7 +176,7 @@ uci:foreach("wireless", "wifi-device",
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local meship = f:field(Value, "meship_" .. device, device:upper() .. " Mesh IP Adresse einrichten", "Ihre Mesh IP Adresse erhalten Sie von der Freifunk Gemeinschaft in Ihrer Nachbarschaft. Es ist eine netzweit eindeutige Identifikation, z.B. 104.1.1.1.")
|
local meship = f:field(Value, "meship_" .. device, device:upper() .. " Mesh IP Adresse einrichten", "Ihre Mesh IP Adresse erhalten Sie von der Freifunk Gemeinschaft in Ihrer Nachbarschaft. Es ist eine netzweit eindeutige Identifikation, z.B. 104.1.1.1.")
|
||||||
meship:depends("device_" .. device, "1")
|
meship:depends("device_" .. device, "1")
|
||||||
meship.rmempty = true
|
meship.rmempty = true
|
||||||
function meship.cfgvalue(self, section)
|
function meship.cfgvalue(self, section)
|
||||||
|
@ -201,12 +188,6 @@ uci:foreach("wireless", "wifi-device",
|
||||||
end
|
end
|
||||||
function meship.write(self, sec, value)
|
function meship.write(self, sec, value)
|
||||||
uci:set("freifunk", "wizard", "meship_" .. device, value)
|
uci:set("freifunk", "wizard", "meship_" .. device, value)
|
||||||
local new_ip = ip.IPv4(value)
|
|
||||||
if new_ip then
|
|
||||||
local new_hostname = new_ip:string():gsub("%.", "-")
|
|
||||||
uci:set("freifunk", "wizard", "hostname", new_hostname)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if has_ipv6 then
|
if has_ipv6 then
|
||||||
local meship6 = f:field(Value, "meship6_" .. device, device:upper() .. " Mesh IPv6 Adresse einrichten", "Ihre Mesh IP Adresse wird automatisch berechnet")
|
local meship6 = f:field(Value, "meship6_" .. device, device:upper() .. " Mesh IPv6 Adresse einrichten", "Ihre Mesh IP Adresse wird automatisch berechnet")
|
||||||
|
@ -219,7 +200,7 @@ uci:foreach("wireless", "wifi-device",
|
||||||
|
|
||||||
local client = f:field(Flag, "client_" .. device, device:upper() .. " DHCP anbieten", "DHCP weist verbundenen Benutzern automatisch eine Adresse zu. Diese Option sollten Sie unbedingt aktivieren, wenn Sie Nutzer an der drahtlosen Schnittstelle erwarten.")
|
local client = f:field(Flag, "client_" .. device, device:upper() .. " DHCP anbieten", "DHCP weist verbundenen Benutzern automatisch eine Adresse zu. Diese Option sollten Sie unbedingt aktivieren, wenn Sie Nutzer an der drahtlosen Schnittstelle erwarten.")
|
||||||
client:depends("device_" .. device, "1")
|
client:depends("device_" .. device, "1")
|
||||||
client.rmempty = false
|
client.rmempty = true
|
||||||
function client.cfgvalue(self, section)
|
function client.cfgvalue(self, section)
|
||||||
return uci:get("freifunk", "wizard", "client_" .. device)
|
return uci:get("freifunk", "wizard", "client_" .. device)
|
||||||
end
|
end
|
||||||
|
@ -320,93 +301,6 @@ uci:foreach("network", "interface",
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
local syslat = uci:get("freifunk", "wizard", "latitude") or 52
|
|
||||||
local syslon = uci:get("freifunk", "wizard", "longitude") or 10
|
|
||||||
uci:foreach("system", "system", function(s)
|
|
||||||
if s.latitude then
|
|
||||||
syslat = s.latitude
|
|
||||||
end
|
|
||||||
if s.longitude then
|
|
||||||
syslon = s.longitude
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
uci:foreach("olsrd", "LoadPlugin", function(s)
|
|
||||||
if s.library == "olsrd_nameservice.so.0.3" then
|
|
||||||
if s.lat then
|
|
||||||
syslat = s.lat
|
|
||||||
end
|
|
||||||
if s.lon then
|
|
||||||
syslon = s.lon
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
lat = f:field(Value, "lat", "geographischer Breitengrad", "Setzen Sie den Breitengrad (Latitude) Ihres Geräts.")
|
|
||||||
lat:depends("netconfig", "1")
|
|
||||||
function lat.cfgvalue(self, section)
|
|
||||||
return syslat
|
|
||||||
end
|
|
||||||
function lat.write(self, section, value)
|
|
||||||
uci:set("freifunk", "wizard", "latitude", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
|
|
||||||
lon = f:field(Value, "lon", "geograpischer Längengrad", "Setzen Sie den Längengrad (Longitude) Ihres Geräts.")
|
|
||||||
lon:depends("netconfig", "1")
|
|
||||||
function lon.cfgvalue(self, section)
|
|
||||||
return syslon
|
|
||||||
end
|
|
||||||
function lon.write(self, section, value)
|
|
||||||
uci:set("freifunk", "wizard", "longitude", value)
|
|
||||||
uci:save("freifunk")
|
|
||||||
end
|
|
||||||
|
|
||||||
--[[
|
|
||||||
*Opens an OpenStreetMap iframe or popup
|
|
||||||
*Makes use of resources/OSMLatLon.htm and htdocs/resources/osm.js
|
|
||||||
(is that the right place for files like these?)
|
|
||||||
]]--
|
|
||||||
|
|
||||||
local class = util.class
|
|
||||||
|
|
||||||
OpenStreetMapLonLat = class(AbstractValue)
|
|
||||||
|
|
||||||
function OpenStreetMapLonLat.__init__(self, ...)
|
|
||||||
AbstractValue.__init__(self, ...)
|
|
||||||
self.template = "cbi/osmll_value"
|
|
||||||
self.latfield = nil
|
|
||||||
self.lonfield = nil
|
|
||||||
self.centerlat = ""
|
|
||||||
self.centerlon = ""
|
|
||||||
self.zoom = "0"
|
|
||||||
self.width = "100%" --popups will ignore the %-symbol, "100%" is interpreted as "100"
|
|
||||||
self.height = "600"
|
|
||||||
self.popup = false
|
|
||||||
self.displaytext="OpenStreetMap" --text on button, that loads and displays the OSMap
|
|
||||||
self.hidetext="X" -- text on button, that hides OSMap
|
|
||||||
end
|
|
||||||
|
|
||||||
osm = f:field(OpenStreetMapLonLat, "latlon", "Geokoordinaten mit OpenStreetMap ermitteln:", "Klicken Sie auf Ihren Standort in der Karte. Diese Karte funktioniert nur, wenn das Gerät bereits eine Verbindung zum Internet hat.")
|
|
||||||
osm:depends("netconfig", "1")
|
|
||||||
osm.latfield = "lat"
|
|
||||||
osm.lonfield = "lon"
|
|
||||||
osm.centerlat = syslat
|
|
||||||
osm.centerlon = syslon
|
|
||||||
osm.width = "100%"
|
|
||||||
osm.height = "600"
|
|
||||||
osm.popup = false
|
|
||||||
syslatlengh = string.len(syslat)
|
|
||||||
if syslatlengh > 7 then
|
|
||||||
osm.zoom = "15"
|
|
||||||
elseif syslatlengh > 5 then
|
|
||||||
osm.zoom = "12"
|
|
||||||
else
|
|
||||||
osm.zoom = "6"
|
|
||||||
end
|
|
||||||
osm.displaytext="OpenStreetMap anzeigen"
|
|
||||||
osm.hidetext="OpenStreetMap verbergen"
|
|
||||||
|
|
||||||
share = f:field(Flag, "sharenet", "Eigenen Internetzugang freigeben", "Geben Sie Ihren Internetzugang im Freifunknetz frei.")
|
share = f:field(Flag, "sharenet", "Eigenen Internetzugang freigeben", "Geben Sie Ihren Internetzugang im Freifunknetz frei.")
|
||||||
share.rmempty = false
|
share.rmempty = false
|
||||||
share:depends("netconfig", "1")
|
share:depends("netconfig", "1")
|
||||||
|
@ -420,8 +314,8 @@ end
|
||||||
|
|
||||||
wanproto = f:field(ListValue, "wanproto", "Protokoll des Internetzugangs", "Geben Sie das Protokol an ueber das eine Internet verbindung hergestellt werden kann.")
|
wanproto = f:field(ListValue, "wanproto", "Protokoll des Internetzugangs", "Geben Sie das Protokol an ueber das eine Internet verbindung hergestellt werden kann.")
|
||||||
wanproto:depends("sharenet", "1")
|
wanproto:depends("sharenet", "1")
|
||||||
wanproto:value("static", translate("manual", "manual"))
|
wanproto:value("static", translate("static", "static"))
|
||||||
wanproto:value("dhcp", translate("automatic", "automatic"))
|
wanproto:value("dhcp", translate("dhcp", "dhcp"))
|
||||||
if has_pppoe then wanproto:value("pppoe", "PPPoE") end
|
if has_pppoe then wanproto:value("pppoe", "PPPoE") end
|
||||||
if has_pptp then wanproto:value("pptp", "PPTP") end
|
if has_pptp then wanproto:value("pptp", "PPTP") end
|
||||||
function wanproto.cfgvalue(self, section)
|
function wanproto.cfgvalue(self, section)
|
||||||
|
@ -587,7 +481,6 @@ function f.handle(self, state, data)
|
||||||
uci:commit("luci_splash")
|
uci:commit("luci_splash")
|
||||||
uci:commit("firewall")
|
uci:commit("firewall")
|
||||||
uci:commit("system")
|
uci:commit("system")
|
||||||
uci:commit("uhttpd")
|
|
||||||
uci:commit("olsrd")
|
uci:commit("olsrd")
|
||||||
uci:commit("manager")
|
uci:commit("manager")
|
||||||
if has_autoipv6 then
|
if has_autoipv6 then
|
||||||
|
@ -603,7 +496,7 @@ function f.handle(self, state, data)
|
||||||
uci:commit("radvd")
|
uci:commit("radvd")
|
||||||
end
|
end
|
||||||
|
|
||||||
sys.exec("for s in network dnsmasq luci_splash firewall uhttpd olsrd radvd l2gvpn; do [ -x /etc/init.d/$s ] && /etc/init.d/$s restart;done > /dev/null &")
|
sys.exec("for s in network dnsmasq luci_splash firewall olsrd radvd l2gvpn; do [ -x /etc/init.d/$s ] && /etc/init.d/$s restart;done > /dev/null &" )
|
||||||
luci.http.redirect(luci.dispatcher.build_url(luci.dispatcher.context.path[1], "freifunk", "ffwizard"))
|
luci.http.redirect(luci.dispatcher.build_url(luci.dispatcher.context.path[1], "freifunk", "ffwizard"))
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
|
@ -630,8 +523,8 @@ function main.write(self, section, value)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
-- Collect IP-Address
|
-- Collect IP-Address
|
||||||
local community = net:formvalue(section)
|
uci:set("freifunk", "wizard", "net", uci:get_first(community, "community", "mesh_network"))
|
||||||
suffix = uci:get("freifunk", community, "suffix") or "olsr"
|
uci:save("freifunk")
|
||||||
|
|
||||||
-- Invalidate fields
|
-- Invalidate fields
|
||||||
if not community then
|
if not community then
|
||||||
|
@ -642,17 +535,14 @@ function main.write(self, section, value)
|
||||||
uci:set("freifunk", "wizard", "netconfig", "1")
|
uci:set("freifunk", "wizard", "netconfig", "1")
|
||||||
uci:save("freifunk")
|
uci:save("freifunk")
|
||||||
|
|
||||||
local external
|
|
||||||
external = uci:get("freifunk", community, "external") or ""
|
|
||||||
|
|
||||||
local netname = "wireless"
|
local netname = "wireless"
|
||||||
local network
|
local network
|
||||||
network = ip.IPv4(uci:get("freifunk", community, "mesh_network") or "104.0.0.0/8")
|
network = ip.IPv4(uci:get_first(community, "community", "mesh_network") or "104.0.0.0/8")
|
||||||
|
|
||||||
-- Tune community settings
|
-- Tune community settings
|
||||||
if community and uci:get("freifunk", community) then
|
-- if community and uci:get("freifunk", community) then
|
||||||
uci:tset("freifunk", "community", uci:get_all("freifunk", community))
|
-- uci:get_all(community)
|
||||||
end
|
-- end
|
||||||
|
|
||||||
-- Cleanup
|
-- Cleanup
|
||||||
uci:delete_all("firewall","zone", {name="freifunk"})
|
uci:delete_all("firewall","zone", {name="freifunk"})
|
||||||
|
@ -668,14 +558,14 @@ function main.write(self, section, value)
|
||||||
uci:foreach("freifunk", "fw_forwarding", function(section)
|
uci:foreach("freifunk", "fw_forwarding", function(section)
|
||||||
uci:section("firewall", "forwarding", nil, section)
|
uci:section("firewall", "forwarding", nil, section)
|
||||||
end)
|
end)
|
||||||
uci:foreach(external, "fw_forwarding", function(section)
|
uci:foreach(community, "fw_forwarding", function(section)
|
||||||
uci:section("firewall", "forwarding", nil, section)
|
uci:section("firewall", "forwarding", nil, section)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
uci:foreach("freifunk", "fw_rule", function(section)
|
uci:foreach("freifunk", "fw_rule", function(section)
|
||||||
uci:section("firewall", "rule", nil, section)
|
uci:section("firewall", "rule", nil, section)
|
||||||
end)
|
end)
|
||||||
uci:foreach(external, "fw_rule", function(section)
|
uci:foreach(community, "fw_rule", function(section)
|
||||||
uci:section("firewall", "rule", nil, section)
|
uci:section("firewall", "rule", nil, section)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
@ -688,7 +578,7 @@ function main.write(self, section, value)
|
||||||
uci:delete_all("olsrd", "olsrd")
|
uci:delete_all("olsrd", "olsrd")
|
||||||
local olsrbase
|
local olsrbase
|
||||||
olsrbase = uci:get_all("freifunk", "olsrd") or {}
|
olsrbase = uci:get_all("freifunk", "olsrd") or {}
|
||||||
util.update(olsrbase, uci:get_all(external, "olsrd") or {})
|
util.update(olsrbase, uci:get_all(community, "olsrd") or {})
|
||||||
if has_ipv6 then
|
if has_ipv6 then
|
||||||
olsrbase.IpVersion='6and4'
|
olsrbase.IpVersion='6and4'
|
||||||
else
|
else
|
||||||
|
@ -765,12 +655,12 @@ function main.write(self, section, value)
|
||||||
end
|
end
|
||||||
-- New Config
|
-- New Config
|
||||||
-- Tune wifi device
|
-- Tune wifi device
|
||||||
local ssid = uci:get("freifunk", community, "ssid") or "olsr.freifunk.net"
|
local ssid = uci:get_first(community, "community", "ssid") or "olsr.freifunk.net"
|
||||||
local devconfig = uci:get_all("freifunk", "wifi_device")
|
local devconfig = uci:get_all("freifunk", "wifi_device")
|
||||||
util.update(devconfig, uci:get_all(external, "wifi_device") or {})
|
util.update(devconfig, uci:get_all(community, "wifi_device") or {})
|
||||||
local channel = luci.http.formvalue("cbid.ffwizward.1.chan_" .. device)
|
local channel = luci.http.formvalue("cbid.ffwizward.1.chan_" .. device)
|
||||||
local hwmode = "11bg"
|
local hwmode = "11bg"
|
||||||
local bssid = uci:get_all(external, "wifi_iface", "bssid") or "02:CA:FF:EE:BA:BE"
|
local bssid = uci:get_all(community, "wifi_iface", "bssid") or "02:CA:FF:EE:BA:BE"
|
||||||
local mrate = 5500
|
local mrate = 5500
|
||||||
-- set bssid, see https://kifuse02.pberg.freifunk.net/moin/channel-bssid-essid for schema
|
-- set bssid, see https://kifuse02.pberg.freifunk.net/moin/channel-bssid-essid for schema
|
||||||
if channel and channel ~= "default" then
|
if channel and channel ~= "default" then
|
||||||
|
@ -786,23 +676,21 @@ function main.write(self, section, value)
|
||||||
elseif chan >= 36 and chan <= 64 then
|
elseif chan >= 36 and chan <= 64 then
|
||||||
hwmode = "11a"
|
hwmode = "11a"
|
||||||
mrate = ""
|
mrate = ""
|
||||||
outdoor = 0
|
|
||||||
bssid = "00:" .. channel ..":CA:FF:EE:EE"
|
bssid = "00:" .. channel ..":CA:FF:EE:EE"
|
||||||
elseif chan >= 100 and chan <= 140 then
|
elseif chan >= 100 and chan <= 140 then
|
||||||
hwmode = "11a"
|
hwmode = "11a"
|
||||||
mrate = ""
|
mrate = ""
|
||||||
outdoor = 1
|
|
||||||
bssid = "01:" .. string.sub(channel, 2) .. ":CA:FF:EE:EE"
|
bssid = "01:" .. string.sub(channel, 2) .. ":CA:FF:EE:EE"
|
||||||
end
|
end
|
||||||
devconfig.hwmode = hwmode
|
devconfig.hwmode = hwmode
|
||||||
devconfig.outdoor = outdoor
|
|
||||||
end
|
end
|
||||||
|
devconfig.country = cc
|
||||||
ssid = ssid .. " - ch" .. channel
|
ssid = ssid .. " - ch" .. channel
|
||||||
end
|
end
|
||||||
uci:tset("wireless", device, devconfig)
|
uci:tset("wireless", device, devconfig)
|
||||||
-- Create wifi iface
|
-- Create wifi iface
|
||||||
local ifconfig = uci:get_all("freifunk", "wifi_iface")
|
local ifconfig = uci:get_all("freifunk", "wifi_iface")
|
||||||
util.update(ifconfig, uci:get_all(external, "wifi_iface") or {})
|
util.update(ifconfig, uci:get_all(community, "wifi_iface") or {})
|
||||||
ifconfig.device = device
|
ifconfig.device = device
|
||||||
ifconfig.network = nif
|
ifconfig.network = nif
|
||||||
ifconfig.ssid = ssid
|
ifconfig.ssid = ssid
|
||||||
|
@ -810,7 +698,7 @@ function main.write(self, section, value)
|
||||||
ifconfig.encryption="none"
|
ifconfig.encryption="none"
|
||||||
-- Read Preset
|
-- Read Preset
|
||||||
local netconfig = uci:get_all("freifunk", "interface")
|
local netconfig = uci:get_all("freifunk", "interface")
|
||||||
util.update(netconfig, uci:get_all(external, "interface") or {})
|
util.update(netconfig, uci:get_all(community, "interface") or {})
|
||||||
netconfig.proto = "static"
|
netconfig.proto = "static"
|
||||||
netconfig.ipaddr = node_ip:string()
|
netconfig.ipaddr = node_ip:string()
|
||||||
if has_ipv6 then
|
if has_ipv6 then
|
||||||
|
@ -834,14 +722,11 @@ function main.write(self, section, value)
|
||||||
})
|
})
|
||||||
uci:save("radvd")
|
uci:save("radvd")
|
||||||
end
|
end
|
||||||
local new_hostname = node_ip:string():gsub("%.", "-")
|
|
||||||
uci:set("freifunk", "wizard", "hostname", new_hostname)
|
|
||||||
uci:save("freifunk")
|
|
||||||
tools.firewall_zone_add_interface("freifunk", nif)
|
tools.firewall_zone_add_interface("freifunk", nif)
|
||||||
uci:save("firewall")
|
uci:save("firewall")
|
||||||
-- Write new olsrv4 interface
|
-- Write new olsrv4 interface
|
||||||
local olsrifbase = uci:get_all("freifunk", "olsr_interface")
|
local olsrifbase = uci:get_all("freifunk", "olsr_interface")
|
||||||
util.update(olsrifbase, uci:get_all(external, "olsr_interface") or {})
|
util.update(olsrifbase, uci:get_all(community, "olsr_interface") or {})
|
||||||
olsrifbase.interface = nif
|
olsrifbase.interface = nif
|
||||||
olsrifbase.ignore = "0"
|
olsrifbase.ignore = "0"
|
||||||
uci:section("olsrd", "Interface", nil, olsrifbase)
|
uci:section("olsrd", "Interface", nil, olsrifbase)
|
||||||
|
@ -849,12 +734,15 @@ function main.write(self, section, value)
|
||||||
local client = luci.http.formvalue("cbid.ffwizward.1.client_" .. device)
|
local client = luci.http.formvalue("cbid.ffwizward.1.client_" .. device)
|
||||||
if client then
|
if client then
|
||||||
local dhcpmeshnet = luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device) and ip.IPv4(luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device))
|
local dhcpmeshnet = luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device) and ip.IPv4(luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device))
|
||||||
|
hbconf(nif)
|
||||||
|
--[[
|
||||||
if has_hb then
|
if has_hb then
|
||||||
local ifacelist = uci:get_list("manager", "heartbeat", "interface") or {}
|
local ifacelist = uci:get_list("manager", "heartbeat", "interface") or {}
|
||||||
table.insert(ifacelist,nif .. "dhcp")
|
table.insert(ifacelist,nif .. "dhcp")
|
||||||
uci:set_list("manager", "heartbeat", "interface", ifacelist)
|
uci:set_list("manager", "heartbeat", "interface", ifacelist)
|
||||||
uci:save("manager")
|
uci:save("manager")
|
||||||
end
|
end
|
||||||
|
]]
|
||||||
if dhcpmeshnet then
|
if dhcpmeshnet then
|
||||||
if not dhcpmeshnet:minhost() or not dhcpmeshnet:mask() then
|
if not dhcpmeshnet:minhost() or not dhcpmeshnet:mask() then
|
||||||
dhcpmesh.tag_missing[section] = true
|
dhcpmesh.tag_missing[section] = true
|
||||||
|
@ -883,26 +771,12 @@ function main.write(self, section, value)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
else
|
else
|
||||||
local subnet_prefix = tonumber(uci:get("freifunk", community, "splash_prefix")) or 27
|
gen_dhcp_range(netconfig.ipaddr)
|
||||||
local pool_network = uci:get("freifunk", community, "splash_network") or "10.104.0.0/16"
|
|
||||||
local pool = luci.ip.IPv4(pool_network)
|
|
||||||
local ip = tostring(node_ip)
|
|
||||||
if pool and ip then
|
|
||||||
local hosts_per_subnet = 2^(32 - subnet_prefix)
|
|
||||||
local number_of_subnets = (2^pool:prefix())/hosts_per_subnet
|
|
||||||
local seed1, seed2 = ip:match("(%d+)%.(%d+)$")
|
|
||||||
if seed1 and seed2 then
|
|
||||||
math.randomseed(seed1 * seed2)
|
|
||||||
end
|
|
||||||
local subnet = pool:add(hosts_per_subnet * math.random(number_of_subnets))
|
|
||||||
dhcp_ip = subnet:network(subnet_prefix):add(1):string()
|
|
||||||
dhcp_mask = subnet:mask(subnet_prefix):string()
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if dhcp_ip and dhcp_mask then
|
if dhcp_ip and dhcp_mask then
|
||||||
-- Create alias
|
-- Create alias
|
||||||
local aliasbase = uci:get_all("freifunk", "alias")
|
local aliasbase = uci:get_all("freifunk", "alias")
|
||||||
util.update(aliasbase, uci:get_all(external, "alias") or {})
|
util.update(aliasbase, uci:get_all(community, "alias") or {})
|
||||||
aliasbase.ipaddr = dhcp_ip
|
aliasbase.ipaddr = dhcp_ip
|
||||||
aliasbase.netmask = dhcp_mask
|
aliasbase.netmask = dhcp_mask
|
||||||
aliasbase.proto = "static"
|
aliasbase.proto = "static"
|
||||||
|
@ -943,7 +817,7 @@ function main.write(self, section, value)
|
||||||
end
|
end
|
||||||
-- Create dhcp
|
-- Create dhcp
|
||||||
local dhcpbase = uci:get_all("freifunk", "dhcp")
|
local dhcpbase = uci:get_all("freifunk", "dhcp")
|
||||||
util.update(dhcpbase, uci:get_all(external, "dhcp") or {})
|
util.update(dhcpbase, uci:get_all(community, "dhcp") or {})
|
||||||
dhcpbase.interface = nif .. "dhcp"
|
dhcpbase.interface = nif .. "dhcp"
|
||||||
dhcpbase.force = 1
|
dhcpbase.force = 1
|
||||||
uci:section("dhcp", "dhcp", nif .. "dhcp", dhcpbase)
|
uci:section("dhcp", "dhcp", nif .. "dhcp", dhcpbase)
|
||||||
|
@ -1011,9 +885,9 @@ function main.write(self, section, value)
|
||||||
end
|
end
|
||||||
if device ~= "loopback" and not string.find(device, "wifi") and not string.find(device, "wl") and not string.find(device, "wlan") and not string.find(device, "wireless") and not string.find(device, "radio") then
|
if device ~= "loopback" and not string.find(device, "wifi") and not string.find(device, "wl") and not string.find(device, "wlan") and not string.find(device, "wireless") and not string.find(device, "radio") then
|
||||||
local node_ip
|
local node_ip
|
||||||
node_ip = luci.http.formvalue("cbid.ffwizward.1.meship_" .. device) and ip.IPv4(luci.http.formvalue("cbid.ffwizward.1.meship_" .. device))
|
node_ip = luci.http.formvalue("cbid.ffwizward.1.meship_" .. device) --and ip.IPv4(luci.http.formvalue("cbid.ffwizward.1.meship_" .. device))
|
||||||
if has_ipv6 then
|
if has_ipv6 then
|
||||||
node_ip6 = luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device) and ip.IPv6(luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device))
|
node_ip6 = luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device) --and ip.IPv6(luci.http.formvalue("cbid.ffwizward.1.meship6_" .. device))
|
||||||
end
|
end
|
||||||
if not node_ip or not network or not network:contains(node_ip) then
|
if not node_ip or not network or not network:contains(node_ip) then
|
||||||
meship.tag_missing[section] = true
|
meship.tag_missing[section] = true
|
||||||
|
@ -1039,7 +913,7 @@ function main.write(self, section, value)
|
||||||
end
|
end
|
||||||
-- New Config
|
-- New Config
|
||||||
local netconfig = uci:get_all("freifunk", "interface")
|
local netconfig = uci:get_all("freifunk", "interface")
|
||||||
util.update(netconfig, uci:get_all(external, "interface") or {})
|
util.update(netconfig, uci:get_all(community, "interface") or {})
|
||||||
netconfig.proto = "static"
|
netconfig.proto = "static"
|
||||||
netconfig.ipaddr = node_ip:string()
|
netconfig.ipaddr = node_ip:string()
|
||||||
if has_ipv6 then
|
if has_ipv6 then
|
||||||
|
@ -1064,14 +938,11 @@ function main.write(self, section, value)
|
||||||
})
|
})
|
||||||
uci:save("radvd")
|
uci:save("radvd")
|
||||||
end
|
end
|
||||||
local new_hostname = node_ip:string():gsub("%.", "-")
|
|
||||||
uci:set("freifunk", "wizard", "hostname", new_hostname)
|
|
||||||
uci:save("freifunk")
|
|
||||||
tools.firewall_zone_add_interface("freifunk", device)
|
tools.firewall_zone_add_interface("freifunk", device)
|
||||||
uci:save("firewall")
|
uci:save("firewall")
|
||||||
-- Write new olsrv4 interface
|
-- Write new olsrv4 interface
|
||||||
local olsrifbase = uci:get_all("freifunk", "olsr_interface")
|
local olsrifbase = uci:get_all("freifunk", "olsr_interface")
|
||||||
util.update(olsrifbase, uci:get_all(external, "olsr_interface") or {})
|
util.update(olsrifbase, uci:get_all(community, "olsr_interface") or {})
|
||||||
olsrifbase.interface = device
|
olsrifbase.interface = device
|
||||||
olsrifbase.ignore = "0"
|
olsrifbase.ignore = "0"
|
||||||
uci:section("olsrd", "Interface", nil, olsrifbase)
|
uci:section("olsrd", "Interface", nil, olsrifbase)
|
||||||
|
@ -1080,12 +951,17 @@ function main.write(self, section, value)
|
||||||
local client = luci.http.formvalue("cbid.ffwizward.1.client_" .. device)
|
local client = luci.http.formvalue("cbid.ffwizward.1.client_" .. device)
|
||||||
if client then
|
if client then
|
||||||
local dhcpmeshnet = luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device) and ip.IPv4(luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device))
|
local dhcpmeshnet = luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device) and ip.IPv4(luci.http.formvalue("cbid.ffwizward.1.dhcpmesh_" .. device))
|
||||||
|
hbconf(device)
|
||||||
|
--[[
|
||||||
if has_hb then
|
if has_hb then
|
||||||
|
hbconf(device)
|
||||||
local ifacelist = uci:get_list("manager", "heartbeat", "interface") or {}
|
local ifacelist = uci:get_list("manager", "heartbeat", "interface") or {}
|
||||||
table.insert(ifacelist,device .. "dhcp")
|
table.insert(ifacelist,device .. "dhcp")
|
||||||
uci:set_list("manager", "heartbeat", "interface", ifacelist)
|
uci:set_list("manager", "heartbeat", "interface", ifacelist)
|
||||||
uci:save("manager")
|
uci:save("manager")
|
||||||
|
|
||||||
end
|
end
|
||||||
|
]]
|
||||||
if dhcpmeshnet then
|
if dhcpmeshnet then
|
||||||
if not dhcpmeshnet:minhost() or not dhcpmeshnet:mask() then
|
if not dhcpmeshnet:minhost() or not dhcpmeshnet:mask() then
|
||||||
dhcpmesh.tag_missing[section] = true
|
dhcpmesh.tag_missing[section] = true
|
||||||
|
@ -1108,26 +984,12 @@ function main.write(self, section, value)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
else
|
else
|
||||||
local subnet_prefix = tonumber(uci:get("freifunk", community, "splash_prefix")) or 27
|
gen_dhcp_range(netconfig.ipaddr)
|
||||||
local pool_network = uci:get("freifunk", community, "splash_network") or "10.104.0.0/16"
|
|
||||||
local pool = luci.ip.IPv4(pool_network)
|
|
||||||
local ip = tostring(node_ip)
|
|
||||||
if pool and ip then
|
|
||||||
local hosts_per_subnet = 2^(32 - subnet_prefix)
|
|
||||||
local number_of_subnets = (2^pool:prefix())/hosts_per_subnet
|
|
||||||
local seed1, seed2 = ip:match("(%d+)%.(%d+)$")
|
|
||||||
if seed1 and seed2 then
|
|
||||||
math.randomseed(seed1 * seed2)
|
|
||||||
end
|
|
||||||
local subnet = pool:add(hosts_per_subnet * math.random(number_of_subnets))
|
|
||||||
dhcp_ip = subnet:network(subnet_prefix):add(1):string()
|
|
||||||
dhcp_mask = subnet:mask(subnet_prefix):string()
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
if dhcp_ip and dhcp_mask then
|
if dhcp_ip and dhcp_mask then
|
||||||
-- Create alias
|
-- Create alias
|
||||||
local aliasbase = uci:get_all("freifunk", "alias")
|
local aliasbase = uci:get_all("freifunk", "alias")
|
||||||
util.update(aliasbase, uci:get_all(external, "alias") or {})
|
util.update(aliasbase, uci:get_all(community, "alias") or {})
|
||||||
aliasbase.interface = device
|
aliasbase.interface = device
|
||||||
aliasbase.ipaddr = dhcp_ip
|
aliasbase.ipaddr = dhcp_ip
|
||||||
aliasbase.netmask = dhcp_mask
|
aliasbase.netmask = dhcp_mask
|
||||||
|
@ -1135,7 +997,7 @@ function main.write(self, section, value)
|
||||||
uci:section("network", "alias", device .. "dhcp", aliasbase)
|
uci:section("network", "alias", device .. "dhcp", aliasbase)
|
||||||
-- Create dhcp
|
-- Create dhcp
|
||||||
local dhcpbase = uci:get_all("freifunk", "dhcp")
|
local dhcpbase = uci:get_all("freifunk", "dhcp")
|
||||||
util.update(dhcpbase, uci:get_all(external, "dhcp") or {})
|
util.update(dhcpbase, uci:get_all(community, "dhcp") or {})
|
||||||
dhcpbase.interface = device .. "dhcp"
|
dhcpbase.interface = device .. "dhcp"
|
||||||
dhcpbase.force = 1
|
dhcpbase.force = 1
|
||||||
uci:section("dhcp", "dhcp", device .. "dhcp", dhcpbase)
|
uci:section("dhcp", "dhcp", device .. "dhcp", dhcpbase)
|
||||||
|
@ -1226,9 +1088,6 @@ function main.write(self, section, value)
|
||||||
uci:save("firewall")
|
uci:save("firewall")
|
||||||
uci:save("dhcp")
|
uci:save("dhcp")
|
||||||
|
|
||||||
local new_hostname = uci:get("freifunk", "wizard", "hostname")
|
|
||||||
local old_hostname = sys.hostname()
|
|
||||||
|
|
||||||
if has_hb then
|
if has_hb then
|
||||||
local dhcphb = hb:formvalue(section)
|
local dhcphb = hb:formvalue(section)
|
||||||
if dhcphb then
|
if dhcphb then
|
||||||
|
@ -1243,7 +1102,6 @@ function main.write(self, section, value)
|
||||||
uci:save("manager")
|
uci:save("manager")
|
||||||
end
|
end
|
||||||
|
|
||||||
local custom_hostname = hostname:formvalue(section)
|
|
||||||
uci:foreach("system", "system",
|
uci:foreach("system", "system",
|
||||||
function(s)
|
function(s)
|
||||||
-- Make crond silent
|
-- Make crond silent
|
||||||
|
@ -1251,18 +1109,6 @@ function main.write(self, section, value)
|
||||||
-- Make set timzone and zonename
|
-- Make set timzone and zonename
|
||||||
uci:set("system", s['.name'], "zonename", "Europe/Berlin")
|
uci:set("system", s['.name'], "zonename", "Europe/Berlin")
|
||||||
uci:set("system", s['.name'], "timezone", 'CET-1CEST,M3.5.0,M10.5.0/3')
|
uci:set("system", s['.name'], "timezone", 'CET-1CEST,M3.5.0,M10.5.0/3')
|
||||||
-- Set hostname
|
|
||||||
if custom_hostname then
|
|
||||||
uci:set("system", s['.name'], "hostname", custom_hostname)
|
|
||||||
sys.hostname(custom_hostname)
|
|
||||||
else
|
|
||||||
if new_hostname then
|
|
||||||
if old_hostname == "OpenWrt" or old_hostname:match("^%d+-%d+-%d+-%d+$") then
|
|
||||||
uci:set("system", s['.name'], "hostname", new_hostname)
|
|
||||||
sys.hostname(new_hostname)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Create time rdate_servers
|
-- Create time rdate_servers
|
||||||
|
@ -1275,29 +1121,6 @@ function main.write(self, section, value)
|
||||||
uci:section("system", "rdate", nil, rdate)
|
uci:section("system", "rdate", nil, rdate)
|
||||||
uci:save("system")
|
uci:save("system")
|
||||||
|
|
||||||
-- Create http splash port 8082
|
|
||||||
uci:set_list("uhttpd","main","listen_http",{"80"})
|
|
||||||
uci:set_list("uhttpd","main","listen_https",{"443"})
|
|
||||||
uci:save("uhttpd")
|
|
||||||
|
|
||||||
-- Read geos
|
|
||||||
local latval = tonumber(lat:formvalue(section))
|
|
||||||
local lonval = tonumber(lon:formvalue(section))
|
|
||||||
|
|
||||||
-- Save latlon to system too
|
|
||||||
if latval and lonval then
|
|
||||||
uci:foreach("system", "system", function(s)
|
|
||||||
uci:set("system", s[".name"], "latlon",string.format("%.15f %.15f", latval, lonval))
|
|
||||||
uci:set("system", s[".name"], "latitude",string.format("%.15f", latval))
|
|
||||||
uci:set("system", s[".name"], "longitude",string.format("%.15f", lonval))
|
|
||||||
end)
|
|
||||||
else
|
|
||||||
uci:foreach("system", "system", function(s)
|
|
||||||
uci:delete("system", s[".name"], "latlon")
|
|
||||||
uci:delete("system", s[".name"], "latitude")
|
|
||||||
uci:delete("system", s[".name"], "longitude")
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
-- Delete old watchdog settings
|
-- Delete old watchdog settings
|
||||||
uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_watchdog.so.0.1"})
|
uci:delete_all("olsrd", "LoadPlugin", {library="olsrd_watchdog.so.0.1"})
|
||||||
-- Write new watchdog settings
|
-- Write new watchdog settings
|
||||||
|
@ -1315,8 +1138,8 @@ function main.write(self, section, value)
|
||||||
suffix = "." .. suffix ,
|
suffix = "." .. suffix ,
|
||||||
hosts_file = "/var/etc/hosts.olsr",
|
hosts_file = "/var/etc/hosts.olsr",
|
||||||
latlon_file = "/var/run/latlon.js",
|
latlon_file = "/var/run/latlon.js",
|
||||||
lat = latval and string.format("%.15f", latval) or "",
|
lat = lat and string.format("%.15f", lat) or "",
|
||||||
lon = lonval and string.format("%.15f", lonval) or "",
|
lon = lon and string.format("%.15f", lon) or "",
|
||||||
services_file = "/var/etc/services.olsr"
|
services_file = "/var/etc/services.olsr"
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -1416,11 +1239,11 @@ function main.write(self, section, value)
|
||||||
uci:delete_all("l2gvpn", "supernode")
|
uci:delete_all("l2gvpn", "supernode")
|
||||||
-- Write olsr tunnel interface options
|
-- Write olsr tunnel interface options
|
||||||
local olsr_gvpnifbase = uci:get_all("freifunk", "olsr_gvpninterface")
|
local olsr_gvpnifbase = uci:get_all("freifunk", "olsr_gvpninterface")
|
||||||
util.update(olsr_gvpnifbase, uci:get_all(external, "olsr_gvpninterface") or {})
|
util.update(olsr_gvpnifbase, uci:get_all(community, "olsr_gvpninterface") or {})
|
||||||
uci:section("olsrd", "Interface", nil, olsr_gvpnifbase)
|
uci:section("olsrd", "Interface", nil, olsr_gvpnifbase)
|
||||||
local vpnip = gvpnip:formvalue(section)
|
local vpnip = gvpnip:formvalue(section)
|
||||||
local gvpnif = uci:get_all("freifunk", "gvpn_node")
|
local gvpnif = uci:get_all("freifunk", "gvpn_node")
|
||||||
util.update(gvpnif, uci:get_all(external, "gvpn_node") or {})
|
util.update(gvpnif, uci:get_all(community, "gvpn_node") or {})
|
||||||
if gvpnif and gvpnif.tundev and vpnip then
|
if gvpnif and gvpnif.tundev and vpnip then
|
||||||
uci:section("network", "interface", gvpnif.tundev, {
|
uci:section("network", "interface", gvpnif.tundev, {
|
||||||
ifname =gvpnif.tundev ,
|
ifname =gvpnif.tundev ,
|
|
@ -0,0 +1,27 @@
|
||||||
|
<%+header%>
|
||||||
|
|
||||||
|
<%
|
||||||
|
local uci = require "luci.model.uci".cursor()
|
||||||
|
local basicsurl = luci.dispatcher.build_url(luci.dispatcher.context.path[1], "freifunk", "basics")
|
||||||
|
local hostname = uci:get_first ("system", "system", "hostname")
|
||||||
|
local latitude = uci:get_first ("system", "system", "latitude")
|
||||||
|
local longitude = uci:get_first ("system", "system", "longitude")
|
||||||
|
local location = uci:get_first ("system", "system", "location")
|
||||||
|
%>
|
||||||
|
|
||||||
|
<h2><%:Error%></h2>
|
||||||
|
|
||||||
|
<%:You can not use the wizard because some necessary values are not set.%>
|
||||||
|
<p/>
|
||||||
|
|
||||||
|
<%
|
||||||
|
local co = uci:get("freifunk", "community", "name")
|
||||||
|
if not (co and hostname and latitude and longitude and location) then
|
||||||
|
%>
|
||||||
|
<%:Basic settings are missing. Please go to this page and fill all required fields: %>
|
||||||
|
<a href='<%=basicsurl%>'><%:Basic settings%></a>
|
||||||
|
<p/>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
<%+footer%>
|
|
@ -13,9 +13,6 @@ set_default_config()
|
||||||
set freifunk.wifi_device.rxantenna=1
|
set freifunk.wifi_device.rxantenna=1
|
||||||
set freifunk.wifi_device.disabled=0
|
set freifunk.wifi_device.disabled=0
|
||||||
set freifunk.wifi_device.txpower=""
|
set freifunk.wifi_device.txpower=""
|
||||||
set freifunk.wifi_device.country=276
|
|
||||||
set freifunk.wifi_device.regdomain="0x37"
|
|
||||||
set freifunk.wifi_device.outdoor="1"
|
|
||||||
set freifunk.wifi_device.hwmode=11g
|
set freifunk.wifi_device.hwmode=11g
|
||||||
set freifunk.wifi_device.distance=1000
|
set freifunk.wifi_device.distance=1000
|
||||||
set freifunk.wifi_iface=defaults
|
set freifunk.wifi_iface=defaults
|
||||||
|
@ -33,7 +30,6 @@ set_default_config()
|
||||||
set freifunk.wifi_device.diversity=""
|
set freifunk.wifi_device.diversity=""
|
||||||
set freifunk.wifi_device.disabled=0
|
set freifunk.wifi_device.disabled=0
|
||||||
set freifunk.wifi_device.txpower=""
|
set freifunk.wifi_device.txpower=""
|
||||||
set freifunk.wifi_device.country=DE
|
|
||||||
set freifunk.wifi_device.distance=1000
|
set freifunk.wifi_device.distance=1000
|
||||||
set freifunk.wifi_device.htmode='HT40-'
|
set freifunk.wifi_device.htmode='HT40-'
|
||||||
set freifunk.wifi_device.hwmode=11ng
|
set freifunk.wifi_device.hwmode=11ng
|
||||||
|
@ -50,7 +46,6 @@ set_default_config()
|
||||||
set freifunk.wifi_device.diversity=""
|
set freifunk.wifi_device.diversity=""
|
||||||
set freifunk.wifi_device.disabled=0
|
set freifunk.wifi_device.disabled=0
|
||||||
set freifunk.wifi_device.txpower=""
|
set freifunk.wifi_device.txpower=""
|
||||||
set freifunk.wifi_device.country=DE
|
|
||||||
set freifunk.wifi_device.txantenna=0
|
set freifunk.wifi_device.txantenna=0
|
||||||
set freifunk.wifi_device.rxantenna=0
|
set freifunk.wifi_device.rxantenna=0
|
||||||
set freifunk.wifi_device.hwmode=11g
|
set freifunk.wifi_device.hwmode=11g
|
||||||
|
|
|
@ -223,7 +223,7 @@ define Package/luci-mod-freifunk-community
|
||||||
TITLE:=Freifunk Community Meta-Package
|
TITLE:=Freifunk Community Meta-Package
|
||||||
DEPENDS+= \
|
DEPENDS+= \
|
||||||
+luci-lib-web +luci-app-splash \
|
+luci-lib-web +luci-app-splash \
|
||||||
+luci-app-ffwizard-leipzig \
|
+luci-app-ffwizard \
|
||||||
+luci-i18n-german \
|
+luci-i18n-german \
|
||||||
+PACKAGE_luci-mod-freifunk-community:olsrd +PACKAGE_luci-mod-freifunk-community:olsrd-mod-dyn-gw-plain \
|
+PACKAGE_luci-mod-freifunk-community:olsrd +PACKAGE_luci-mod-freifunk-community:olsrd-mod-dyn-gw-plain \
|
||||||
+PACKAGE_luci-mod-freifunk-community:olsrd-mod-txtinfo +PACKAGE_luci-mod-freifunk-community:olsrd-mod-nameservice \
|
+PACKAGE_luci-mod-freifunk-community:olsrd-mod-txtinfo +PACKAGE_luci-mod-freifunk-community:olsrd-mod-nameservice \
|
||||||
|
@ -322,10 +322,8 @@ define Package/luci-app-diag-devinfo/conffiles
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
$(eval $(call application,ffwizard-leipzig,Freifunk Leipzig configuration wizard))
|
|
||||||
|
|
||||||
$(eval $(call application,ffwizard,Freifunk configuration wizard,\
|
$(eval $(call application,ffwizard,Freifunk configuration wizard,\
|
||||||
+luci-mod-freifunk))
|
+PACKAGE_luci-mod-freifunk))
|
||||||
|
|
||||||
$(eval $(call application,siitwizard,SIIT IPv4-over-IPv6 configuration wizard,\
|
$(eval $(call application,siitwizard,SIIT IPv4-over-IPv6 configuration wizard,\
|
||||||
+PACKAGE_luci-app-siitwizard:kmod-siit))
|
+PACKAGE_luci-app-siitwizard:kmod-siit))
|
||||||
|
|
|
@ -17,6 +17,7 @@ function index()
|
||||||
local i18n = luci.i18n.translate
|
local i18n = luci.i18n.translate
|
||||||
local uci = require "luci.model.uci".cursor()
|
local uci = require "luci.model.uci".cursor()
|
||||||
|
|
||||||
|
-- Frontend
|
||||||
local page = node()
|
local page = node()
|
||||||
page.lock = true
|
page.lock = true
|
||||||
page.target = alias("freifunk")
|
page.target = alias("freifunk")
|
||||||
|
@ -41,6 +42,7 @@ function index()
|
||||||
local page = node("freifunk", "index", "contact")
|
local page = node("freifunk", "index", "contact")
|
||||||
page.target = template("freifunk/contact")
|
page.target = template("freifunk/contact")
|
||||||
page.title = "Kontakt"
|
page.title = "Kontakt"
|
||||||
|
page.order = 10
|
||||||
|
|
||||||
local page = node("freifunk", "status")
|
local page = node("freifunk", "status")
|
||||||
page.target = template("freifunk/public_status")
|
page.target = template("freifunk/public_status")
|
||||||
|
@ -60,22 +62,39 @@ function index()
|
||||||
assign({"freifunk", "graph"}, {"admin", "statistics", "graph"}, i18n("Statistics"), 40)
|
assign({"freifunk", "graph"}, {"admin", "statistics", "graph"}, i18n("Statistics"), 40)
|
||||||
end
|
end
|
||||||
|
|
||||||
assign({"mini", "freifunk"}, {"admin", "freifunk"}, "Freifunk", 15)
|
-- backend
|
||||||
entry({"admin", "freifunk"}, alias("admin", "freifunk", "index"), "Freifunk", 15)
|
assign({"mini", "freifunk"}, {"admin", "freifunk"}, "Freifunk", 5)
|
||||||
local page = node("admin", "freifunk", "index")
|
entry({"admin", "freifunk"}, alias("admin", "freifunk", "index"), "Freifunk", 5)
|
||||||
page.target = cbi("freifunk/freifunk")
|
|
||||||
|
local page = node("admin", "freifunk")
|
||||||
|
page.target = template("freifunk/adminindex")
|
||||||
page.title = "Freifunk"
|
page.title = "Freifunk"
|
||||||
page.order = 30
|
page.order = 5
|
||||||
|
|
||||||
|
local page = node("admin", "freifunk", "basics")
|
||||||
|
page.target = cbi("freifunk/basics")
|
||||||
|
page.title = "Grundeinstellungen"
|
||||||
|
page.order = 5
|
||||||
|
|
||||||
|
local page = node("admin", "freifunk", "basics", "profile")
|
||||||
|
page.target = cbi("freifunk/profile")
|
||||||
|
page.title = "Profile"
|
||||||
|
page.order = 10
|
||||||
|
|
||||||
|
local page = node("admin", "freifunk", "basics", "profile_expert")
|
||||||
|
page.target = cbi("freifunk/profile_expert")
|
||||||
|
page.title = "Profile (Expert)"
|
||||||
|
page.order = 20
|
||||||
|
|
||||||
local page = node("admin", "freifunk", "Index-Page")
|
local page = node("admin", "freifunk", "Index-Page")
|
||||||
page.target = cbi("freifunk/user_index")
|
page.target = cbi("freifunk/user_index")
|
||||||
page.title = "Index-Page"
|
page.title = "Index-Page"
|
||||||
page.order = 35
|
page.order = 50
|
||||||
|
|
||||||
local page = node("admin", "freifunk", "contact")
|
local page = node("admin", "freifunk", "contact")
|
||||||
page.target = cbi("freifunk/contact")
|
page.target = cbi("freifunk/contact")
|
||||||
page.title = "Kontakt"
|
page.title = "Kontakt"
|
||||||
page.order = 40
|
page.order = 15
|
||||||
|
|
||||||
entry({"freifunk", "map"}, template("freifunk-map/frame"), i18n("Karte"), 50)
|
entry({"freifunk", "map"}, template("freifunk-map/frame"), i18n("Karte"), 50)
|
||||||
entry({"freifunk", "map", "content"}, template("freifunk-map/map"), nil, 51)
|
entry({"freifunk", "map", "content"}, template("freifunk-map/map"), nil, 51)
|
||||||
|
@ -85,7 +104,6 @@ function index()
|
||||||
has_serv = true
|
has_serv = true
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
if has_serv then
|
if has_serv then
|
||||||
entry({"freifunk", "services"}, template("freifunk-services/services"), i18n("Services"), 60)
|
entry({"freifunk", "services"}, template("freifunk-services/services"), i18n("Services"), 60)
|
||||||
end
|
end
|
||||||
|
@ -296,4 +314,3 @@ function public_status_json()
|
||||||
luci.http.write_json(rv)
|
luci.http.write_json(rv)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
115
modules/freifunk/luasrc/model/cbi/freifunk/basics.lua
Normal file
115
modules/freifunk/luasrc/model/cbi/freifunk/basics.lua
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
--[[
|
||||||
|
LuCI - Lua Configuration Interface
|
||||||
|
|
||||||
|
Copyright 2008 Steven Barth <steven@midlink.org>
|
||||||
|
|
||||||
|
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: freifunk.lua 3291 2008-09-14 21:59:14Z Cyrus $
|
||||||
|
]]--
|
||||||
|
|
||||||
|
local fs = require "luci.fs"
|
||||||
|
local util = require "luci.util"
|
||||||
|
local uci = require "luci.model.uci".cursor()
|
||||||
|
local profiles = "/etc/config/profile_"
|
||||||
|
|
||||||
|
m = Map("freifunk", "Freifunk")
|
||||||
|
c = m:section(NamedSection, "community", "public", "Gemeinschaft", [[Dies sind die Grundeinstellungen
|
||||||
|
für die lokale Freifunkgemeinschaft. Diese Werte wirken sich NICHT auf die Konfiguration
|
||||||
|
des Routers aus, sondern definieren nur die Vorgaben für den Freifunkassistenten.]])
|
||||||
|
|
||||||
|
community = c:option(ListValue, "name", "Gemeinschaft")
|
||||||
|
community.rmempty = false
|
||||||
|
|
||||||
|
local list = { }
|
||||||
|
local list = fs.glob(profiles .. "*")
|
||||||
|
|
||||||
|
for k,v in ipairs(list) do
|
||||||
|
local name = uci:get_first(v, "community", "name") or "?"
|
||||||
|
local n = string.gsub(v, profiles, "")
|
||||||
|
community:value(n, name)
|
||||||
|
end
|
||||||
|
|
||||||
|
n = Map("system", translate("Basic system settings"))
|
||||||
|
b = n:section(TypedSection, "system", "Basic system settings")
|
||||||
|
b.anonymous = true
|
||||||
|
|
||||||
|
hn = b:option(Value, "hostname", "hostname")
|
||||||
|
hn.rmempty = false
|
||||||
|
function hn.validate(self, value)
|
||||||
|
if value == nil then
|
||||||
|
return
|
||||||
|
elseif (#value > 24) or string.match(value, "[^%w%.%-]") or string.match(value, "^[%-%.]") or string.match(value, "[%-%.]$") then
|
||||||
|
return nil, translate("Hostname may contain up to 24 alphanumeric characters. Minus and period are also allowed, but not in the beginning or the end of the hostname.")
|
||||||
|
else
|
||||||
|
return value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
loc = b:option(Value, "location", "Location")
|
||||||
|
loc.rmempty = false
|
||||||
|
|
||||||
|
lat = b:option(Value, "latitude", "latitude")
|
||||||
|
lat.rmempty = false
|
||||||
|
|
||||||
|
lon = b:option(Value, "longitude", "longitude")
|
||||||
|
lon.rmempty = false
|
||||||
|
|
||||||
|
--[[
|
||||||
|
Opens an OpenStreetMap iframe or popup
|
||||||
|
Makes use of resources/OSMLatLon.htm and htdocs/resources/osm.js
|
||||||
|
(is that the right place for files like these?)
|
||||||
|
]]--
|
||||||
|
|
||||||
|
local class = util.class
|
||||||
|
local co = "profile_augsburg"
|
||||||
|
local syslat = uci:get_first(co, "community", "latitude")
|
||||||
|
local syslon = uci:get_first(co, "community", "longitude")
|
||||||
|
|
||||||
|
OpenStreetMapLonLat = class(AbstractValue)
|
||||||
|
|
||||||
|
function OpenStreetMapLonLat.__init__(self, ...)
|
||||||
|
AbstractValue.__init__(self, ...)
|
||||||
|
self.template = "cbi/osmll_value"
|
||||||
|
self.latfield = nil
|
||||||
|
self.lonfield = nil
|
||||||
|
self.centerlat = ""
|
||||||
|
self.centerlon = ""
|
||||||
|
self.zoom = "0"
|
||||||
|
self.width = "100%" --popups will ignore the %-symbol, "100%" is interpreted as "100"
|
||||||
|
self.height = "600"
|
||||||
|
self.popup = false
|
||||||
|
self.displaytext="OpenStreetMap" --text on button, that loads and displays the OSMap
|
||||||
|
self.hidetext="X" -- text on button, that hides OSMap
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
f = SimpleForm("ffwizward", "OpenStreetMap", "Hier kann man die Geokoordinaten des Knotens herausfinden.")
|
||||||
|
|
||||||
|
osm = f:field(OpenStreetMapLonLat, "latlon", "Geokoordinaten mit OpenStreetMap ermitteln:", "Klicken Sie auf Ihren Standort in der Karte. Diese Karte funktioniert nur, wenn das Gerät bereits eine Verbindung zum Internet hat.")
|
||||||
|
osm.latfield = "lat"
|
||||||
|
osm.lonfield = "lon"
|
||||||
|
osm.centerlat = syslat
|
||||||
|
osm.centerlon = syslon
|
||||||
|
osm.width = "100%"
|
||||||
|
osm.height = "600"
|
||||||
|
osm.popup = false
|
||||||
|
|
||||||
|
syslatlengh = string.len(syslat)
|
||||||
|
if syslatlengh > 7 then
|
||||||
|
osm.zoom = "15"
|
||||||
|
elseif syslatlengh > 5 then
|
||||||
|
osm.zoom = "12"
|
||||||
|
else
|
||||||
|
osm.zoom = "6"
|
||||||
|
end
|
||||||
|
|
||||||
|
osm.displaytext="OpenStreetMap anzeigen"
|
||||||
|
osm.hidetext="OpenStreetMap verbergen"
|
||||||
|
|
||||||
|
|
||||||
|
return m, n
|
|
@ -18,17 +18,17 @@ m = Map("freifunk", translate("Contact"), translate("Please fill in your contact
|
||||||
|
|
||||||
c = m:section(NamedSection, "contact", "public", "")
|
c = m:section(NamedSection, "contact", "public", "")
|
||||||
|
|
||||||
c:option(Value, "nickname", translate("Nickname"))
|
local nick = c:option(Value, "nickname", translate("Nickname"))
|
||||||
c:option(Value, "name", translate("Realname"))
|
nick.rmempty = false
|
||||||
c:option(Value, "mail", translate("E-Mail"), translate("You really should provide your address here!"))
|
|
||||||
|
name = c:option(Value, "name", translate("Realname"))
|
||||||
|
name.rmempty = false
|
||||||
|
|
||||||
|
mail = c:option(Value, "mail", translate("E-Mail"))
|
||||||
|
mail.rmempty = false
|
||||||
|
|
||||||
c:option(Value, "phone", translate("Phone"))
|
c:option(Value, "phone", translate("Phone"))
|
||||||
c:option(Value, "location", translate("Location"))
|
|
||||||
c:option(Value, "note", translate("Notice"))
|
c:option(Value, "note", translate("Notice"))
|
||||||
|
|
||||||
m2 = Map("system", translate("Coordinates"))
|
return m
|
||||||
|
|
||||||
s = m2:section(TypedSection, "system", "")
|
|
||||||
s:option(Value, "latitude", translate("Latitude")).rmempty = true
|
|
||||||
s:option(Value, "longitude", translate("Longitude")).rmempty = true
|
|
||||||
|
|
||||||
return m, m2
|
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
--[[
|
|
||||||
LuCI - Lua Configuration Interface
|
|
||||||
|
|
||||||
Copyright 2008 Steven Barth <steven@midlink.org>
|
|
||||||
|
|
||||||
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$
|
|
||||||
]]--
|
|
||||||
m = Map("freifunk", "Freifunk")
|
|
||||||
|
|
||||||
c = m:section(NamedSection, "community", "public", "Gemeinschaft", [[Dies sind die Grundeinstellungen
|
|
||||||
für die lokale Freifunkgemeinschaft. Diese Werte wirken sich NICHT auf die Konfiguration
|
|
||||||
des Routers aus, sondern definieren nur die Vorgaben für den Freifunkassistenten.]])
|
|
||||||
c:option(Value, "name", "Gemeinschaft")
|
|
||||||
c:option(Value, "homepage", "Webseite")
|
|
||||||
c:option(Value, "ssid", "ESSID")
|
|
||||||
c:option(Value, "prefix", "Netzprefix")
|
|
||||||
|
|
||||||
return m
|
|
55
modules/freifunk/luasrc/model/cbi/freifunk/profile.lua
Normal file
55
modules/freifunk/luasrc/model/cbi/freifunk/profile.lua
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
--[[
|
||||||
|
LuCI - Lua Configuration Interface
|
||||||
|
|
||||||
|
Copyright 2011 Manuel Munz <freifunk at somakoma dot de>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
httc://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
]]--
|
||||||
|
|
||||||
|
local uci = require "luci.model.uci".cursor()
|
||||||
|
local community = "profile_" .. uci:get("freifunk", "community", "name")
|
||||||
|
--local community = "profile_augsburg"
|
||||||
|
|
||||||
|
|
||||||
|
m = Map(community, translate("Community settings"), translate("These are the settings of your local community"))
|
||||||
|
|
||||||
|
c = m:section(NamedSection, "profile", "community", "foobar")
|
||||||
|
|
||||||
|
name = c:option(Value, "name", "Name")
|
||||||
|
name.rmempty = false
|
||||||
|
|
||||||
|
homepage = c:option(Value, "homepage", "Webseite")
|
||||||
|
|
||||||
|
cc = c:option(Value, "country", "Countrycode")
|
||||||
|
function cc.cfgvalue(self, section)
|
||||||
|
return uci:get(community, "wifi_device", "country")
|
||||||
|
end
|
||||||
|
function cc.write(self, sec, value)
|
||||||
|
if value then
|
||||||
|
uci:set(community, "wifi_device", "country", value)
|
||||||
|
uci:save(community)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
ssid = c:option(Value, "ssid", "ESSID")
|
||||||
|
ssid.rmempty = false
|
||||||
|
|
||||||
|
prefix = c:option(Value, "mesh_network", "Netzprefix")
|
||||||
|
prefix.rmempty = false
|
||||||
|
|
||||||
|
splash_net = c:option(Value, "splash_network", "Netzwerk für Client-DHCP-Adressen")
|
||||||
|
splash_net.rmempty = false
|
||||||
|
|
||||||
|
splash_prefix = c:option(Value, "splash_prefix", "Netzgröße für Clientnetze")
|
||||||
|
splash_prefix.rmempty = false
|
||||||
|
|
||||||
|
lat = c:option(Value, "latitude", "Latitude")
|
||||||
|
lat.rmempty = false
|
||||||
|
|
||||||
|
lon = c:option(Value, "longitude", "longitude")
|
||||||
|
lon.rmempty = false
|
||||||
|
return m
|
|
@ -0,0 +1,36 @@
|
||||||
|
--[[
|
||||||
|
LuCI - Lua Configuration Interface
|
||||||
|
|
||||||
|
Copyright 2011 Manuel Munz <freifunk at somakoma dot de>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
httc://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
]]--
|
||||||
|
|
||||||
|
local fs = require "nixio.fs"
|
||||||
|
local uci = require "luci.model.uci".cursor()
|
||||||
|
local community = "/etc/config/profile_" .. uci:get("freifunk", "community", "name")
|
||||||
|
|
||||||
|
f = SimpleForm("community", translate("Community profile"), translate("This is the complete content of the selected community profile."))
|
||||||
|
|
||||||
|
t = f:field(TextValue, "cop")
|
||||||
|
t.rmempty = true
|
||||||
|
t.rows = 30
|
||||||
|
function t.cfgvalue()
|
||||||
|
return fs.readfile(community) or ""
|
||||||
|
end
|
||||||
|
|
||||||
|
function f.handle(self, state, data)
|
||||||
|
if state == FORM_VALID then
|
||||||
|
if data.cop then
|
||||||
|
fs.writefile(cop, data.rcs:gsub("\r\n", "\n"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
return f
|
||||||
|
|
33
modules/freifunk/luasrc/view/freifunk/adminindex.htm
Normal file
33
modules/freifunk/luasrc/view/freifunk/adminindex.htm
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<%+header%>
|
||||||
|
<%
|
||||||
|
local uci = require "luci.model.uci".cursor()
|
||||||
|
local contact = uci:get_all("freifunk", "contact")
|
||||||
|
local contacturl = luci.dispatcher.build_url(luci.dispatcher.context.path[1], "freifunk", "contact")
|
||||||
|
local hostname = uci:get_first ("system", "system", "hostname")
|
||||||
|
local latitude = uci:get_first ("system", "system", "latitude")
|
||||||
|
local longitude = uci:get_first ("system", "system", "longitude")
|
||||||
|
local location = uci:get_first ("system", "system", "location")
|
||||||
|
local basicsurl = luci.dispatcher.build_url(luci.dispatcher.context.path[1], "freifunk", "basics")
|
||||||
|
%>
|
||||||
|
|
||||||
|
<h2><%:Freifunk Overview%></h2>
|
||||||
|
|
||||||
|
<%:These pages will assist you in setting up your router for Freifunk or similar wireless community networks.%>
|
||||||
|
<p />
|
||||||
|
|
||||||
|
<% if not (hostname and latitude and longitude and location) then%>
|
||||||
|
<div class="error">
|
||||||
|
<%:Basic settings are missing. Please go to this page and fill all required fields: %>
|
||||||
|
<a href='<%=basicsurl%>'><%:Basic settings%></a>
|
||||||
|
</div>
|
||||||
|
<%end%>
|
||||||
|
<p />
|
||||||
|
|
||||||
|
<% if not (contact.nickname and contact.name and contact.mail) then%>
|
||||||
|
<div class="error">
|
||||||
|
<%:Contact information missing. Please go to this page and fill all required fields: %>
|
||||||
|
<a href='<%=contacturl%>'><%:Contact%></a>
|
||||||
|
</div>
|
||||||
|
<%end%>
|
||||||
|
|
||||||
|
<%+footer%>
|
|
@ -13,15 +13,23 @@ $Id$
|
||||||
|
|
||||||
-%>
|
-%>
|
||||||
<%+header%>
|
<%+header%>
|
||||||
<% local contact = luci.model.uci.cursor():get_all("freifunk", "contact") %>
|
|
||||||
|
<%
|
||||||
|
local uci = require "luci.model.uci".cursor()
|
||||||
|
local contact = uci:get_all("freifunk", "contact")
|
||||||
|
local location = uci:get_first("system", "system", "location")
|
||||||
|
local lon = uci:get_first("system", "system", "longitude")
|
||||||
|
local lat = uci:get_first("system", "system", "latitude")
|
||||||
|
%>
|
||||||
|
|
||||||
<h2><a id="content" name="content"><%:Contact%></a></h2>
|
<h2><a id="content" name="content"><%:Contact%></a></h2>
|
||||||
<table cellspacing="0" cellpadding="6">
|
<table cellspacing="0" cellpadding="6">
|
||||||
<tr><th><%:Nickname%>:</th><td><%=contact.nickname%></td></tr>
|
<tr><th><%:Nickname%>:</th><td><%=contact.nickname%></td></tr>
|
||||||
<tr><th><%:Realname%>:</th><td><%=contact.name%></td></tr>
|
<tr><th><%:Realname%>:</th><td><%=contact.name%></td></tr>
|
||||||
<tr><th><%:E-Mail%>:</th><td><%=contact.mail%></td></tr>
|
<tr><th><%:E-Mail%>:</th><td><%=contact.mail%></td></tr>
|
||||||
<tr><th><%:Phone%>:</th><td><%=contact.phone%></td></tr>
|
<tr><th><%:Phone%>:</th><td><%=contact.phone%></td></tr>
|
||||||
<tr><th><%:Location%>:</th><td><%=contact.location%></td></tr>
|
<tr><th><%:Location%>:</th><td><%=location%></td></tr>
|
||||||
<tr><th><%:Coordinates%>:</th><td><%=contact.geo%></td></tr>
|
<tr><th><%:Coordinates%>:</th><td><%=lat%> <%=lon%></td></tr>
|
||||||
<tr><th><%:Notice%>:</th><td><%=contact.note%></td></tr>
|
<tr><th><%:Notice%>:</th><td><%=contact.note%></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<%+footer%>
|
<%+footer%>
|
||||||
|
|
|
@ -14,7 +14,16 @@ $Id$
|
||||||
-%>
|
-%>
|
||||||
<%+header%>
|
<%+header%>
|
||||||
<%
|
<%
|
||||||
local ff = luci.model.uci.cursor():get_all("freifunk")
|
local uci = require "luci.model.uci".cursor()
|
||||||
|
local ff = uci:get_all("freifunk")
|
||||||
|
if not ff.community.name then
|
||||||
|
ff.community.name = ""
|
||||||
|
end
|
||||||
|
local co = "profile_" .. ff.community.name
|
||||||
|
local community = uci:get_first(co, "community", "name") or "Freifunk"
|
||||||
|
local url = uci:get_first(co, "community", "homepage") or "http://www.freifunk.net"
|
||||||
|
|
||||||
|
|
||||||
require("luci.fs")
|
require("luci.fs")
|
||||||
local usertext = luci.fs.readfile("/www/luci-static/index_user.html")
|
local usertext = luci.fs.readfile("/www/luci-static/index_user.html")
|
||||||
|
|
||||||
|
@ -23,7 +32,7 @@ if (ff.community.DefaultText or "") ~= "disabled" then
|
||||||
defaulttext = '<h2><a id="content" name="content">'..
|
defaulttext = '<h2><a id="content" name="content">'..
|
||||||
(translate("Hello and welcome in the network of"))..
|
(translate("Hello and welcome in the network of"))..
|
||||||
' '..
|
' '..
|
||||||
(ff.community.name or "Freifunk Deutschland")..
|
(community or "Freifunk Deutschland")..
|
||||||
'!</a></h2><p>'..
|
'!</a></h2><p>'..
|
||||||
translate("We are an initiative to establish a free, independent and open wireless mesh network.")..
|
translate("We are an initiative to establish a free, independent and open wireless mesh network.")..
|
||||||
'<br />'..
|
'<br />'..
|
||||||
|
@ -31,20 +40,16 @@ if (ff.community.DefaultText or "") ~= "disabled" then
|
||||||
' '..
|
' '..
|
||||||
luci.sys.hostname()..
|
luci.sys.hostname()..
|
||||||
'. '..
|
'. '..
|
||||||
translate("It is operated by")..
|
translate("It is operated by ")..
|
||||||
'<a href="'..
|
'<a href="'..
|
||||||
luci.dispatcher.build_url("freifunk", "index", "contact")..
|
luci.dispatcher.build_url("freifunk", "index", "contact")..
|
||||||
'"> '..
|
'">'..
|
||||||
(ff.contact.nickname or "Anonymous")..
|
(ff.contact.nickname or translate("Please set your contact information"))..
|
||||||
'</a>.</p><p>'..
|
'</a>.</p><p>'..
|
||||||
translate("You can find further information about the global Freifunk initiative at")..
|
translate("You can find further information about the global Freifunk initiative at")..
|
||||||
' <a href="http://freifunk.net">Freifunk.net</a>.<br />'..
|
' <a href="http://freifunk.net">Freifunk.net</a>.<br />'..
|
||||||
translate("If you are interested in our project then contact the local community")..
|
translate("If you are interested in our project then contact the local community")..
|
||||||
' <a href="'..
|
' <a href="'..url..'">'..community..'</a>.</p><p><strong>'..
|
||||||
(ff.community.homepage or "http//freifunk.net")..
|
|
||||||
'">'..
|
|
||||||
(ff.community.name or "Freifunk")..
|
|
||||||
'</a>.</p><p><strong>'..
|
|
||||||
translate("Notice")..
|
translate("Notice")..
|
||||||
'</strong>: '..
|
'</strong>: '..
|
||||||
translate("Internet access depends on technical and organisational conditions and may or may not work for you.")..
|
translate("Internet access depends on technical and organisational conditions and may or may not work for you.")..
|
||||||
|
|
|
@ -88,275 +88,3 @@ config 'defaults' 'time'
|
||||||
config 'defaults' 'upgrade'
|
config 'defaults' 'upgrade'
|
||||||
option 'repository' 'http://dev.luci.freifunk-halle.net/freifunk-snapshots'
|
option 'repository' 'http://dev.luci.freifunk-halle.net/freifunk-snapshots'
|
||||||
option 'rssfeed' 'http://firmware.leipzig.freifunk.net/kamikaze/.rss.xml'
|
option 'rssfeed' 'http://firmware.leipzig.freifunk.net/kamikaze/.rss.xml'
|
||||||
|
|
||||||
config 'community' 'leipzig'
|
|
||||||
option 'name' 'Freifunk Leipzig'
|
|
||||||
option 'homepage' 'http://leipzig.freifunk.net'
|
|
||||||
option 'ssid' 'leipzig.freifunk.net'
|
|
||||||
option 'mesh_network' '104.61.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '51.33348'
|
|
||||||
option 'longitude' '12.40297'
|
|
||||||
|
|
||||||
config 'community' 'halle'
|
|
||||||
option 'name' 'Freifunk Halle'
|
|
||||||
option 'homepage' 'http://halle.freifunk.net'
|
|
||||||
option 'ssid' 'halle.freifunk.net'
|
|
||||||
option 'mesh_network' '104.62.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '51.47911'
|
|
||||||
option 'longitude' '11.96901'
|
|
||||||
|
|
||||||
config 'community' 'l59'
|
|
||||||
option 'name' 'Freifunk L59'
|
|
||||||
option 'homepage' 'http://freifunk.net'
|
|
||||||
option 'ssid' 'start.freifunk.net'
|
|
||||||
option 'mesh_network' '104.59.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '52.26337'
|
|
||||||
option 'longitude' '10.52103'
|
|
||||||
|
|
||||||
config 'community' 'berlin'
|
|
||||||
option 'name' 'Freifunk Berlin'
|
|
||||||
option 'homepage' 'http://berlin.freifunk.net'
|
|
||||||
option 'ssid' 'olsr.freifunk.net'
|
|
||||||
option 'mesh_network' '104.0.0.0/8'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '52.52075'
|
|
||||||
option 'longitude' '13.40948'
|
|
||||||
option 'external' 'freifunk_berlin'
|
|
||||||
|
|
||||||
config 'community' 'potsdam'
|
|
||||||
option 'name' 'Freifunk Potsdam'
|
|
||||||
option 'homepage' 'http://potsdam.freifunk.net'
|
|
||||||
option 'ssid' 'www.freifunk-potsdam.de'
|
|
||||||
option 'mesh_network' '10.22.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '52.39349'
|
|
||||||
option 'longitude' '13.06489'
|
|
||||||
option 'external' 'freifunk_potsdam'
|
|
||||||
|
|
||||||
config 'community' 'hamburg'
|
|
||||||
option 'name' 'Freifunk Hamburg'
|
|
||||||
option 'homepage' 'http://hamburg.piratenpartei.de'
|
|
||||||
option 'ssid' 'hamburg.freifunk.net'
|
|
||||||
option 'mesh_network' '10.112.0.0/12'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '53.56262'
|
|
||||||
option 'longitude' '10.01069'
|
|
||||||
option 'external' 'freifunk_hamburg'
|
|
||||||
|
|
||||||
config 'community' 'hannover'
|
|
||||||
option 'name' 'Freifunk Hannover'
|
|
||||||
option 'homepage' 'http://hannover.freifunk.net'
|
|
||||||
option 'ssid' 'hannover.freifunk.net'
|
|
||||||
option 'mesh_network' '10.2.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '52.38427'
|
|
||||||
option 'longitude' '9.74359'
|
|
||||||
option 'external' 'freifunk_hannover'
|
|
||||||
|
|
||||||
config 'community' 'augsburg'
|
|
||||||
option 'name' 'Freifunk Augsburg'
|
|
||||||
option 'homepage' 'http://augsburg.freifunk.net'
|
|
||||||
option 'ssid' 'augsburg.freifunk.net'
|
|
||||||
option 'mesh_network' '10.11.0.0/18'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '48.37071'
|
|
||||||
option 'longitude' '10.89475'
|
|
||||||
option 'suffix' 'ffa'
|
|
||||||
option 'external' 'freifunk_augsburg'
|
|
||||||
|
|
||||||
config 'community' 'jena'
|
|
||||||
option 'name' 'Freifunk Jena'
|
|
||||||
option 'homepage' 'http://www.freifunk-jena.de'
|
|
||||||
option 'ssid' 'www.freifunk-jena.de'
|
|
||||||
option 'mesh_network' '10.127.0.0/20'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '29'
|
|
||||||
option 'latitude' '50.92779'
|
|
||||||
option 'longitude' '11.58431'
|
|
||||||
option 'external' 'freifunk_jena'
|
|
||||||
|
|
||||||
config 'community' 'mainz'
|
|
||||||
option 'name' 'Freifunk Mainz'
|
|
||||||
option 'homepage' 'http://mainz.freifunk.net'
|
|
||||||
option 'ssid' 'mainz.freifunk.net'
|
|
||||||
option 'mesh_network' '10.37.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '49.99635'
|
|
||||||
option 'longitude' '8.27417'
|
|
||||||
option 'external' 'freifunk_mainz'
|
|
||||||
|
|
||||||
config 'community' 'seefeld'
|
|
||||||
option 'name' 'Freifunk Seefeld'
|
|
||||||
option 'homepage' 'http://wiki.freifunk.net/Seefeld.freifunk.net'
|
|
||||||
option 'ssid' 'seefeld.freifunk.net'
|
|
||||||
option 'mesh_network' '10.111.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '48.03485'
|
|
||||||
option 'longitude' '11.21279'
|
|
||||||
option 'external' 'freifunk_seefeld'
|
|
||||||
|
|
||||||
config 'community' 'duesseldorf'
|
|
||||||
option 'name' 'Freifunk Duesseldorf'
|
|
||||||
option 'homepage' 'http://wiki.piratenpartei.de/D%C3%BCsseldorf/Freifunk'
|
|
||||||
option 'ssid' 'duesseldorf.freifunk.net'
|
|
||||||
option 'mesh_network' '10.40.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '51.22347'
|
|
||||||
option 'longitude' '6.78449'
|
|
||||||
option 'external' 'freifunk_duesseldorf'
|
|
||||||
|
|
||||||
config 'community' 'oldenburg'
|
|
||||||
option 'name' 'Freifunk Oldenburg'
|
|
||||||
option 'homepage' 'http://oldenburg.freifunk.net'
|
|
||||||
option 'ssid' 'oldenburg.freifunk.net'
|
|
||||||
option 'mesh_network' '10.18.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '53.14083'
|
|
||||||
option 'longitude' '8.21314'
|
|
||||||
option 'external' 'freifunk_oldenburg'
|
|
||||||
|
|
||||||
config 'community' 'kiberpipa'
|
|
||||||
option 'name' 'Kiberpipa.net'
|
|
||||||
option 'homepage' 'http://www.kiberpipa.net'
|
|
||||||
option 'ssid' 'open.kiberpipa.net'
|
|
||||||
option 'mesh_network' '10.14.0.0/16'
|
|
||||||
option 'splash_network' '10.14.128.0/17'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '46.05063'
|
|
||||||
option 'longitude' '14.50402'
|
|
||||||
option 'external' 'freifunk_kiberpipa'
|
|
||||||
|
|
||||||
config 'community' 'wlanljubljana'
|
|
||||||
option 'name' 'wlan ljubljana'
|
|
||||||
option 'homepage' 'http://wlan-lj.net'
|
|
||||||
option 'ssid' 'open.wlan-lj.net'
|
|
||||||
option 'mesh_network' '10.254.0.0/16'
|
|
||||||
option 'splash_network' '10.254.120.0/21'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '46.05063'
|
|
||||||
option 'longitude' '14.50402'
|
|
||||||
option 'external' 'freifunk_wlanljubljana'
|
|
||||||
|
|
||||||
config 'community' 'heppenheim'
|
|
||||||
option 'name' 'Freifunk Heppenheim'
|
|
||||||
option 'homepage' 'http://heppenheim.freifunk.net'
|
|
||||||
option 'ssid' 'heppenheim.freifunk.net'
|
|
||||||
option 'mesh_network' '10.48.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '51.151786'
|
|
||||||
option 'longitude' '10.415039'
|
|
||||||
|
|
||||||
config 'community' 'bensheim'
|
|
||||||
option 'name' 'Freifunk Bensheim'
|
|
||||||
option 'homepage' 'http://bensheim.freifunk.net'
|
|
||||||
option 'ssid' 'bensheim.freifunk.net'
|
|
||||||
option 'mesh_network' '10.49.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '49.63939'
|
|
||||||
option 'longitude' '8.633718'
|
|
||||||
|
|
||||||
config 'community' 'marburg'
|
|
||||||
option 'name' 'Freifunk Marburg'
|
|
||||||
option 'homepage' ' http://marburg.freifunk.de'
|
|
||||||
option 'ssid' 'marburg.freifunk.net'
|
|
||||||
option 'mesh_network' '10.128.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '29'
|
|
||||||
option 'latitude' '49.63939'
|
|
||||||
option 'longitude' '8.633718'
|
|
||||||
option 'external' 'freifunk_marburg'
|
|
||||||
|
|
||||||
config 'community' 'openwireless_bern'
|
|
||||||
option 'name' 'Openwireless Bern'
|
|
||||||
option 'homepage' 'http://bern.openwireless.ch/'
|
|
||||||
option 'ssid' 'www.openwireless.ch'
|
|
||||||
option 'mesh_network' '10.247.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '50.814788'
|
|
||||||
option 'longitude' '8.769239'
|
|
||||||
option 'external' 'openwireless_bern'
|
|
||||||
|
|
||||||
config 'community' 'piraten_BergischesLand'
|
|
||||||
option 'name' 'Piratenfreifunk Bergisches Land'
|
|
||||||
option 'homepage' 'http://www.piraten-bergisches-land.de'
|
|
||||||
option 'ssid' 'PiratenfunkBL'
|
|
||||||
option 'mesh_network' '10.3.0.0/16'
|
|
||||||
option 'splash_network' '192.168.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '51.26849'
|
|
||||||
option 'longitude' '7.19476'
|
|
||||||
option 'external' 'freifunk_bergischesland'
|
|
||||||
|
|
||||||
config 'community' 'piraten_dresden'
|
|
||||||
option 'name' 'Piratenfreifunk Dresden'
|
|
||||||
option 'homepage' 'http://www.piraten-sachsen.de/'
|
|
||||||
option 'ssid' 'dresden.freifunk.net'
|
|
||||||
option 'mesh_network' '10.12.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '51.05081'
|
|
||||||
option 'longitude' '13.73420'
|
|
||||||
option 'external' 'freifunk_dresden'
|
|
||||||
|
|
||||||
config 'community' 'dresden'
|
|
||||||
option 'name' 'Freifunk Dresden'
|
|
||||||
option 'homepage' 'http://ddmesh.de/'
|
|
||||||
option 'ssid' 'dresden.freifunk.net'
|
|
||||||
option 'mesh_network' '10.12.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '51.05081'
|
|
||||||
option 'longitude' '13.73420'
|
|
||||||
option 'external' 'freifunk_dresden'
|
|
||||||
|
|
||||||
config 'community' 'neuss'
|
|
||||||
option 'name' 'Freifunk Neuss'
|
|
||||||
option 'homepage' 'http://neuss.freifunk.net'
|
|
||||||
option 'ssid' 'neuss.freifunk.net'
|
|
||||||
option 'mesh_network' '172.28.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '51.19045'
|
|
||||||
option 'longitude' '6.69471'
|
|
||||||
option 'external' 'freifunk_neuss'
|
|
||||||
|
|
||||||
config 'community' 'pberg'
|
|
||||||
option 'name' 'Freifunk Berlin Prenzlauer Berg'
|
|
||||||
option 'homepage' 'http://pberg.freifunk.net'
|
|
||||||
option 'ssid' 'olsr.freifunk.net'
|
|
||||||
option 'mesh_network' '104.0.0.0/8'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '52.5427'
|
|
||||||
option 'longitude' '13.4172'
|
|
||||||
option 'external' 'freifunk_berlin'
|
|
||||||
|
|
||||||
config 'community' 'rosbach'
|
|
||||||
option 'name' 'Freifunk Rosbach'
|
|
||||||
option 'homepage' 'freifunk-rosbach.de'
|
|
||||||
option 'ssid' 'rosbach.freifunk.net'
|
|
||||||
option 'mesh_network' '10.212.0.0/16'
|
|
||||||
option 'splash_network' '10.104.0.0/16'
|
|
||||||
option 'splash_prefix' '27'
|
|
||||||
option 'latitude' '50.18'
|
|
||||||
option 'longitude' '8.42'
|
|
||||||
option 'external' 'freifunk_rosbach'
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
package 'freifunk_augsburg'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'netmask' '255.255.192.0'
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
package 'freifunk_bergischesland'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '11'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_iface'
|
|
||||||
option 'bssid' '02:40:00:42:42:42'
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
package 'freifunk_berlin'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '10'
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
package 'freifunk_dresden'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '1'
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
package 'freifunk_duesseldorf'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'netmask' '255.255.0.0'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '3'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_iface'
|
|
||||||
option 'bssid' '02:CA:FF:EE:BA:BE'
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
package 'freifunk_hamburg'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'netmask' '255.240.0.0'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '1'
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
package 'freifunk_hannover'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_iface'
|
|
||||||
option 'bssid' 'CA:FF:EE:CA:FF:EE'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'netmask' '255.255.0.0'
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
package 'freifunk_jena'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'dns' '217.11.48.200 217.11.49.200 8.8.8.8'
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
package 'freifunk_kiberpipa'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '8'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'dns' '10.14.0.1 208.67.222.220 208.67.220.222'
|
|
||||||
option 'netmask' '255.255.0.0'
|
|
|
@ -1,11 +0,0 @@
|
||||||
package 'freifunk_mainz'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_iface'
|
|
||||||
option 'bssid' '02:ca:ff:ee:ba:be'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '1'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'netmask' '255.255.0.0'
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
package 'freifunk_marburg'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'dns' '8.8.8.8 212.204.49.83'
|
|
||||||
option 'netmask' '255.255.0.0'
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
package 'freifunk_neuss'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '11'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'netmask' '255.255.0.0'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_iface'
|
|
||||||
option 'bssid' 'DE:AD:BE:EF:CA:FE'
|
|
|
@ -1,7 +0,0 @@
|
||||||
package 'freifunk_oldenburg'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '6'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_iface'
|
|
||||||
option 'bssid' '02:CA:FF:EE:BA:BE'
|
|
|
@ -1,8 +0,0 @@
|
||||||
package 'freifunk_potsdam'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'netmask' '255.255.0.0'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '13'
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
package 'freifunk_rosbach'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '13'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_iface'
|
|
||||||
option 'bssid' 'D2:CA:FF:EE:BA:BE'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'netmask' '255.255.0.0'
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
package 'freifunk_seefeld'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'netmask' '255.255.255.0'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '1'
|
|
||||||
option 'bssid' '02:CA:FF:EE:BA:BB'
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
package 'freifunk_wlanljubljana'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '8'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'dns' '10.254.0.1 10.254.0.2'
|
|
||||||
option 'netmask' '255.255.0.0'
|
|
|
@ -1,10 +0,0 @@
|
||||||
package 'openwireless_bern'
|
|
||||||
|
|
||||||
config 'defaults' 'interface'
|
|
||||||
option 'netmask' '255.255.0.0'
|
|
||||||
option 'dns' '208.67.222.222 208.67.220.220'
|
|
||||||
|
|
||||||
config 'defaults' 'wifi_device'
|
|
||||||
option 'channel' '10'
|
|
||||||
option 'country' '756'
|
|
||||||
|
|
11
modules/freifunk/root/etc/config/profile_-custom
Normal file
11
modules/freifunk/root/etc/config/profile_-custom
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Custom'
|
||||||
|
option 'homepage' 'http://example.freifunk.net'
|
||||||
|
option 'ssid' 'example.freifunk.net'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'latitude' '52.000'
|
||||||
|
option 'longitude' '10.000'
|
||||||
|
option 'external' 'freifunk_custom'
|
||||||
|
option 'splash_prefix' '28'
|
||||||
|
option 'mesh_network' '1.0.0.0/16'
|
||||||
|
|
14
modules/freifunk/root/etc/config/profile_augsburg
Normal file
14
modules/freifunk/root/etc/config/profile_augsburg
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Augsburg'
|
||||||
|
option 'homepage' 'http://augsburg.freifunk.net'
|
||||||
|
option 'ssid' 'augsburg.freifunk.net'
|
||||||
|
option 'mesh_network' '10.11.0.0/18'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'latitude' '48.37071'
|
||||||
|
option 'longitude' '10.89475'
|
||||||
|
option 'suffix' 'ffa'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.255.192.0'
|
||||||
|
|
9
modules/freifunk/root/etc/config/profile_bensheim
Normal file
9
modules/freifunk/root/etc/config/profile_bensheim
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Bensheim'
|
||||||
|
option 'homepage' 'http://bensheim.freifunk.net'
|
||||||
|
option 'ssid' 'bensheim.freifunk.net'
|
||||||
|
option 'mesh_network' '10.49.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '49.63939'
|
||||||
|
option 'longitude' '8.633718'
|
20
modules/freifunk/root/etc/config/profile_bergischesland
Normal file
20
modules/freifunk/root/etc/config/profile_bergischesland
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Piratenfreifunk Bergisches Land'
|
||||||
|
option 'homepage' 'http://www.piraten-bergisches-land.de'
|
||||||
|
option 'ssid' 'PiratenfunkBL'
|
||||||
|
option 'mesh_network' '10.3.0.0/16'
|
||||||
|
option 'splash_network' '192.168.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '51.26849'
|
||||||
|
option 'longitude' '7.19476'
|
||||||
|
option 'external' 'freifunk_bergischesland'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '11'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_iface'
|
||||||
|
option 'bssid' '02:40:00:42:42:42'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.255.0.0'
|
||||||
|
|
12
modules/freifunk/root/etc/config/profile_berlin
Normal file
12
modules/freifunk/root/etc/config/profile_berlin
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Berlin'
|
||||||
|
option 'homepage' 'http://berlin.freifunk.net'
|
||||||
|
option 'ssid' 'olsr.freifunk.net'
|
||||||
|
option 'mesh_network' '104.0.0.0/8'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '52.52075'
|
||||||
|
option 'longitude' '13.40948'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '10'
|
12
modules/freifunk/root/etc/config/profile_dresden
Normal file
12
modules/freifunk/root/etc/config/profile_dresden
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Dresden'
|
||||||
|
option 'homepage' 'http://ddmesh.de/'
|
||||||
|
option 'ssid' 'dresden.freifunk.net'
|
||||||
|
option 'mesh_network' '10.12.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '51.05081'
|
||||||
|
option 'longitude' '13.73420'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '1'
|
18
modules/freifunk/root/etc/config/profile_duesseldorf
Normal file
18
modules/freifunk/root/etc/config/profile_duesseldorf
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Duesseldorf'
|
||||||
|
option 'homepage' 'http://wiki.piratenpartei.de/D%C3%BCsseldorf/Freifunk'
|
||||||
|
option 'ssid' 'duesseldorf.freifunk.net'
|
||||||
|
option 'mesh_network' '10.40.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '51.22347'
|
||||||
|
option 'longitude' '6.78449'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.255.0.0'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '3'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_iface'
|
||||||
|
option 'bssid' '02:CA:FF:EE:BA:BE'
|
9
modules/freifunk/root/etc/config/profile_halle
Normal file
9
modules/freifunk/root/etc/config/profile_halle
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Halle'
|
||||||
|
option 'homepage' 'http://halle.freifunk.net'
|
||||||
|
option 'ssid' 'halle.freifunk.net'
|
||||||
|
option 'mesh_network' '104.62.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '51.47911'
|
||||||
|
option 'longitude' '11.96901'
|
15
modules/freifunk/root/etc/config/profile_hamburg
Normal file
15
modules/freifunk/root/etc/config/profile_hamburg
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Hamburg'
|
||||||
|
option 'homepage' 'http://hamburg.piratenpartei.de'
|
||||||
|
option 'ssid' 'hamburg.freifunk.net'
|
||||||
|
option 'mesh_network' '10.112.0.0/12'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '53.56262'
|
||||||
|
option 'longitude' '10.01069'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.240.0.0'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '1'
|
16
modules/freifunk/root/etc/config/profile_hannover
Normal file
16
modules/freifunk/root/etc/config/profile_hannover
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Hannover'
|
||||||
|
option 'homepage' 'http://hannover.freifunk.net'
|
||||||
|
option 'ssid' 'hannover.freifunk.net'
|
||||||
|
option 'mesh_network' '10.2.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '52.38427'
|
||||||
|
option 'longitude' '9.74359'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_iface'
|
||||||
|
option 'bssid' 'CA:FF:EE:CA:FF:EE'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.255.0.0'
|
||||||
|
|
9
modules/freifunk/root/etc/config/profile_heppenheim
Normal file
9
modules/freifunk/root/etc/config/profile_heppenheim
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Heppenheim'
|
||||||
|
option 'homepage' 'http://heppenheim.freifunk.net'
|
||||||
|
option 'ssid' 'heppenheim.freifunk.net'
|
||||||
|
option 'mesh_network' '10.48.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '51.151786'
|
||||||
|
option 'longitude' '10.415039'
|
12
modules/freifunk/root/etc/config/profile_jena
Normal file
12
modules/freifunk/root/etc/config/profile_jena
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Jena'
|
||||||
|
option 'homepage' 'http://www.freifunk-jena.de'
|
||||||
|
option 'ssid' 'www.freifunk-jena.de'
|
||||||
|
option 'mesh_network' '10.127.0.0/20'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '29'
|
||||||
|
option 'latitude' '50.92779'
|
||||||
|
option 'longitude' '11.58431'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'dns' '217.11.48.200 217.11.49.200 8.8.8.8'
|
16
modules/freifunk/root/etc/config/profile_kiberpipa
Normal file
16
modules/freifunk/root/etc/config/profile_kiberpipa
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Kiberpipa.net'
|
||||||
|
option 'homepage' 'http://www.kiberpipa.net'
|
||||||
|
option 'ssid' 'open.kiberpipa.net'
|
||||||
|
option 'mesh_network' '10.14.0.0/16'
|
||||||
|
option 'splash_network' '10.14.128.0/17'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '46.05063'
|
||||||
|
option 'longitude' '14.50402'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '8'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'dns' '10.14.0.1 208.67.222.220 208.67.220.222'
|
||||||
|
option 'netmask' '255.255.0.0'
|
9
modules/freifunk/root/etc/config/profile_l59
Normal file
9
modules/freifunk/root/etc/config/profile_l59
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk L59'
|
||||||
|
option 'homepage' 'http://freifunk.net'
|
||||||
|
option 'ssid' 'start.freifunk.net'
|
||||||
|
option 'mesh_network' '104.59.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '52.26337'
|
||||||
|
option 'longitude' '10.52103'
|
12
modules/freifunk/root/etc/config/profile_leipzig
Normal file
12
modules/freifunk/root/etc/config/profile_leipzig
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Leipzig'
|
||||||
|
option 'homepage' 'http://leipzig.freifunk.net'
|
||||||
|
option 'ssid' 'leipzig.freifunk.net'
|
||||||
|
option 'mesh_network' '104.61.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '51.33348'
|
||||||
|
option 'longitude' '12.40297'
|
||||||
|
|
||||||
|
|
||||||
|
|
19
modules/freifunk/root/etc/config/profile_mainz
Normal file
19
modules/freifunk/root/etc/config/profile_mainz
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Mainz'
|
||||||
|
option 'homepage' 'http://mainz.freifunk.net'
|
||||||
|
option 'ssid' 'mainz.freifunk.net'
|
||||||
|
option 'mesh_network' '10.37.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '49.99635'
|
||||||
|
option 'longitude' '8.27417'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_iface'
|
||||||
|
option 'bssid' '02:ca:ff:ee:ba:be'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '1'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.255.0.0'
|
||||||
|
|
13
modules/freifunk/root/etc/config/profile_marburg
Normal file
13
modules/freifunk/root/etc/config/profile_marburg
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Marburg'
|
||||||
|
option 'homepage' ' http://marburg.freifunk.de'
|
||||||
|
option 'ssid' 'marburg.freifunk.net'
|
||||||
|
option 'mesh_network' '10.128.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '29'
|
||||||
|
option 'latitude' '49.63939'
|
||||||
|
option 'longitude' '8.633718'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'dns' '8.8.8.8 212.204.49.83'
|
||||||
|
option 'netmask' '255.255.0.0'
|
18
modules/freifunk/root/etc/config/profile_neuss
Normal file
18
modules/freifunk/root/etc/config/profile_neuss
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Neuss'
|
||||||
|
option 'homepage' 'http://neuss.freifunk.net'
|
||||||
|
option 'ssid' 'neuss.freifunk.net'
|
||||||
|
option 'mesh_network' '172.28.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '51.19045'
|
||||||
|
option 'longitude' '6.69471'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '11'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.255.0.0'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_iface'
|
||||||
|
option 'bssid' 'DE:AD:BE:EF:CA:FE'
|
15
modules/freifunk/root/etc/config/profile_oldenburg
Normal file
15
modules/freifunk/root/etc/config/profile_oldenburg
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Oldenburg'
|
||||||
|
option 'homepage' 'http://oldenburg.freifunk.net'
|
||||||
|
option 'ssid' 'oldenburg.freifunk.net'
|
||||||
|
option 'mesh_network' '10.18.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '53.14083'
|
||||||
|
option 'longitude' '8.21314'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '6'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_iface'
|
||||||
|
option 'bssid' '02:CA:FF:EE:BA:BE'
|
19
modules/freifunk/root/etc/config/profile_openwireless_bern
Normal file
19
modules/freifunk/root/etc/config/profile_openwireless_bern
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Openwireless Bern'
|
||||||
|
option 'homepage' 'http://bern.openwireless.ch/'
|
||||||
|
option 'ssid' 'www.openwireless.ch'
|
||||||
|
option 'mesh_network' '10.247.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '50.814788'
|
||||||
|
option 'longitude' '8.769239'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.255.0.0'
|
||||||
|
option 'dns' '208.67.222.222 208.67.220.220'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '10'
|
||||||
|
option 'country' '756'
|
||||||
|
|
||||||
|
|
12
modules/freifunk/root/etc/config/profile_pberg
Normal file
12
modules/freifunk/root/etc/config/profile_pberg
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Berlin Prenzlauer Berg'
|
||||||
|
option 'homepage' 'http://pberg.freifunk.net'
|
||||||
|
option 'ssid' 'olsr.freifunk.net'
|
||||||
|
option 'mesh_network' '104.0.0.0/8'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '52.5427'
|
||||||
|
option 'longitude' '13.4172'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '10'
|
12
modules/freifunk/root/etc/config/profile_piraten_dresden
Normal file
12
modules/freifunk/root/etc/config/profile_piraten_dresden
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Piratenfreifunk Dresden'
|
||||||
|
option 'homepage' 'http://www.piraten-sachsen.de/'
|
||||||
|
option 'ssid' 'dresden.freifunk.net'
|
||||||
|
option 'mesh_network' '10.12.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '51.05081'
|
||||||
|
option 'longitude' '13.73420'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '1'
|
15
modules/freifunk/root/etc/config/profile_potsdam
Normal file
15
modules/freifunk/root/etc/config/profile_potsdam
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Potsdam'
|
||||||
|
option 'homepage' 'http://potsdam.freifunk.net'
|
||||||
|
option 'ssid' 'www.freifunk-potsdam.de'
|
||||||
|
option 'mesh_network' '10.22.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '52.39349'
|
||||||
|
option 'longitude' '13.06489'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.255.0.0'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '13'
|
18
modules/freifunk/root/etc/config/profile_rosbach
Normal file
18
modules/freifunk/root/etc/config/profile_rosbach
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Rosbach'
|
||||||
|
option 'homepage' 'freifunk-rosbach.de'
|
||||||
|
option 'ssid' 'rosbach.freifunk.net'
|
||||||
|
option 'mesh_network' '10.212.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '50.18'
|
||||||
|
option 'longitude' '8.42'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '13'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_iface'
|
||||||
|
option 'bssid' 'D2:CA:FF:EE:BA:BE'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.255.0.0'
|
16
modules/freifunk/root/etc/config/profile_seefeld
Normal file
16
modules/freifunk/root/etc/config/profile_seefeld
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'Freifunk Seefeld'
|
||||||
|
option 'homepage' 'http://wiki.freifunk.net/Seefeld.freifunk.net'
|
||||||
|
option 'ssid' 'seefeld.freifunk.net'
|
||||||
|
option 'mesh_network' '10.111.0.0/16'
|
||||||
|
option 'splash_network' '10.104.0.0/16'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '48.03485'
|
||||||
|
option 'longitude' '11.21279'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'netmask' '255.255.255.0'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '1'
|
||||||
|
option 'bssid' '02:CA:FF:EE:BA:BB'
|
16
modules/freifunk/root/etc/config/profile_wlanljubljana
Normal file
16
modules/freifunk/root/etc/config/profile_wlanljubljana
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
config 'community' 'profile'
|
||||||
|
option 'name' 'wlan ljubljana'
|
||||||
|
option 'homepage' 'http://wlan-lj.net'
|
||||||
|
option 'ssid' 'open.wlan-lj.net'
|
||||||
|
option 'mesh_network' '10.254.0.0/16'
|
||||||
|
option 'splash_network' '10.254.120.0/21'
|
||||||
|
option 'splash_prefix' '27'
|
||||||
|
option 'latitude' '46.05063'
|
||||||
|
option 'longitude' '14.50402'
|
||||||
|
|
||||||
|
config 'defaults' 'wifi_device'
|
||||||
|
option 'channel' '8'
|
||||||
|
|
||||||
|
config 'defaults' 'interface'
|
||||||
|
option 'dns' '10.254.0.1 10.254.0.2'
|
||||||
|
option 'netmask' '255.255.0.0'
|
|
@ -22,19 +22,16 @@ local cattree = category and luci.dispatcher.node(category)
|
||||||
local node = luci.dispatcher.context.dispatched
|
local node = luci.dispatcher.context.dispatched
|
||||||
local hostname = luci.sys.hostname()
|
local hostname = luci.sys.hostname()
|
||||||
|
|
||||||
local c = luci.model.uci.cursor():get_all("freifunk", "community")
|
|
||||||
|
|
||||||
if c and c.name then
|
local uci = require "luci.model.uci".cursor()
|
||||||
community = c.name
|
local ff = uci:get("freifunk", "community", "name")
|
||||||
else
|
if not ff then
|
||||||
community = "Freifunk"
|
ff = ""
|
||||||
end
|
end
|
||||||
|
local co = "profile_" .. ff
|
||||||
|
local community = uci:get_first(co, "community", "name") or "Freifunk"
|
||||||
|
local hp = uci:get_first(co, "community", "homepage") or "http://www.freifunk.net"
|
||||||
|
|
||||||
if c and c.homepage then
|
|
||||||
homepage = c.homepage
|
|
||||||
else
|
|
||||||
homepage = "http://freifunk.net"
|
|
||||||
end
|
|
||||||
|
|
||||||
local c = tree
|
local c = tree
|
||||||
for i,r in ipairs(request) do
|
for i,r in ipairs(request) do
|
||||||
|
@ -88,8 +85,8 @@ require("luci.http").prepare_content("application/xhtml+xml")
|
||||||
|
|
||||||
<div id="header">
|
<div id="header">
|
||||||
<span id="header_left">
|
<span id="header_left">
|
||||||
<a href="<%=homepage%>"><img src="/luci-static/freifunk-generic/logo.jpg" alt="FF Logo" /></a>
|
<a href="<%=hp%>"><img src="/luci-static/freifunk-generic/logo.jpg" alt="FF Logo" /></a>
|
||||||
<a href="<%=homepage%>"><%=community%></a>
|
<a href="<%=hp%>"><%=community%></a>
|
||||||
</span>
|
</span>
|
||||||
<p>
|
<p>
|
||||||
<%=luci.version.distversion%><br />
|
<%=luci.version.distversion%><br />
|
||||||
|
|
Loading…
Reference in a new issue