Add new meshwizard (WIP)

This commit is contained in:
Manuel Munz 2011-06-23 15:52:00 +00:00
parent e88fd858a1
commit ab87896104
45 changed files with 2661 additions and 26 deletions

View file

@ -0,0 +1,4 @@
PO = mesh-wizard
include ../../build/config.mk
include ../../build/module.mk

View file

@ -0,0 +1,8 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
uci set ucitrack.meshwizard="meshwizard"
uci set ucitrack.meshwizard.exec="/etc/init.d/wizard restart"
uci commit
exit 0
}

View file

@ -0,0 +1,21 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2011 Manuel Munz <freifunk somakoma 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
http://www.apache.org/licenses/LICENSE-2.0
]]--
module "luci.controller.meshwizard"
function index()
require("luci.i18n").loadc("meshwizard")
local i18n = luci.i18n.translate
entry({"admin", "freifunk", "meshwizard"}, cbi("freifunk/meshwizard"), i18n("Mesh Wizard"), 40)
end

View file

@ -0,0 +1,149 @@
-- wizard rewrite wip
local uci = require "luci.model.uci".cursor()
local sys = require "luci.sys"
local util = require "luci.util"
local ip = require "luci.ip"
local community = "profile_" .. (uci:get("freifunk", "community", "name") or "Freifunk")
mesh_network = ip.IPv4(uci:get_first(community, "community", "mesh_network") or "10.0.0.0/8")
m = Map("meshwizard", translate("Wizard"), translate("This wizard will assist you in setting up your router for Freifunk " ..
"or another similar wireless community network."))
--m:chain("meshwizard")
n = m:section(TypedSection, "netconfig", translate("Interfaces"))
n.anonymous = true
-- common functions
function cbi_configure(device)
local configure = n:taboption(device, Flag, device .. "_config", translate("Configure this interface"))
end
function cbi_ip4addr(device)
local ip4addr = n:taboption(device, Value, device .. "_ip4addr", translate("Mesh IP address"),
translate("This is a unique address in the mesh (e.g. 10.1.1.1) and has to be registered at your local community."))
ip4addr:depends(device .. "_config", 1)
ip4addr.datatype = "ip4addr"
function ip4addr.validate(self, value)
local x = ip.IPv4(value)
if mesh_network:contains(x) then
return value
else
return nil, translate("The given IP address is not inside the mesh network range ") ..
"(" .. mesh_network:string() .. ")."
end
end
end
function cbi_dhcp(device)
local dhcp = n:taboption(device, Flag, device .. "_dhcp", translate("Enable DHCP"),
translate("DHCP will automatically assign ip addresses to clients"))
dhcp:depends(device .. "_config", 1)
dhcp.rmempty = true
end
function cbi_dhcprange(device)
local dhcprange = n:taboption(device, Value, device .. "_dhcprange", translate("DHCP IP range"),
translate("The IP range from which clients are assigned ip addresses (e.g. 10.1.2.1/28). " ..
"If this is a range inside your mesh network range, then it will be announced as HNA. Any other range will use NAT. " ..
"If left empty then the defaults from the community profile will be used."))
dhcprange:depends(device .. "_dhcp", "1")
dhcprange.rmempty = true
dhcprange.datatype = "ip4addr"
end
-- create tabs and config for wireless
local nets={}
uci:foreach("wireless", "wifi-device", function(section)
local device = section[".name"]
table.insert(nets, device)
end)
local wired_nets = {}
uci:foreach("network", "interface", function(section)
local device = section[".name"]
if not util.contains(nets, device) and device ~= "loopback" then
table.insert(nets, device)
table.insert(wired_nets, device)
end
end)
for _, net in util.spairs(nets, function(a,b) return (nets[a] < nets[b]) end) do
n:tab(net, net)
end
-- create cbi config for wireless
uci:foreach("wireless", "wifi-device", function(section)
local device = section[".name"]
local hwtype = section.type
local syscc = section.country or uci:get(community, "wifi_device", "country") or
uci:get("freifunk", "wifi_device", "country")
cbi_configure(device)
-- Channel selection
if hwtype == "atheros" then
local cc = util.trim(sys.exec("grep -i '" .. syscc .. "' /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 " .. syscc)
elseif hwtype == "broadcom" then
sys.exec ("wlc country " .. syscc)
end
local chan = n:taboption(device, ListValue, device .. "_channel", translate("Channel"),
translate("Your device and neighbouring nodes have to use the same channel."))
chan:depends(device .. "_config", 1)
chan:value('default')
for _, f in ipairs(sys.wifi.channels(device)) do
if not f.restricted then
chan:value(f.channel)
end
end
-- IPv4 address
cbi_ip4addr(device)
-- DHCP enable
cbi_dhcp(device)
-- DHCP range
cbi_dhcprange(device)
-- Enable VAP
if hwtype == "atheros" then
local vap = n:taboption(device, Flag, device .. "_vap", translate("Virtual Access Point (VAP)"),
translate("This will setup a new virtual wireless interface in Access Point mode."))
vap:depends(device .. "_dhcp", "1")
vap.rmempty = true
end
end)
for _, device in pairs(wired_nets) do
cbi_configure(device)
cbi_ip4addr(device)
cbi_dhcp(device)
cbi_dhcprange(device)
end
g = m:section(TypedSection, "general", translate("General Settings"))
g.anonymous = true
local cleanup = g:option(Flag, "cleanup", translate("Cleanup config"),
translate("If this is selected then config is cleaned before setting new config options."))
cleanup.default = "1"
local restrict = g:option(Flag, "local_restrict", translate("Protect LAN"),
translate("Check this to protect your LAN from other nodes or clients") .. " (" .. translate("recommended") .. ").")
local share = g:option(Flag, "sharenet", translate("Share your internet connection"),
translate("Select this to allow others to use your connection to access the internet."))
share.rmempty = true
--function m.on_after_commit (self)
-- sys.call("/usr/bin/mesh-wizard/wizard.sh >/dev/null")
--end
return m

View file

@ -197,9 +197,7 @@ define Package/luci-mod-freifunk-community
SUBMENU:=Freifunk SUBMENU:=Freifunk
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-i18n-german \
+luci-app-ffwizard \
+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 \
+PACKAGE_luci-mod-freifunk-community:olsrd-mod-watchdog +PACKAGE_luci-mod-freifunk-community:kmod-tun \ +PACKAGE_luci-mod-freifunk-community:olsrd-mod-watchdog +PACKAGE_luci-mod-freifunk-community:kmod-tun \
@ -309,6 +307,9 @@ $(eval $(call application,firewall,Firmware and Portforwarding application,\
$(eval $(call application,freifunk-policyrouting,Policy routing for mesh traffic,\ $(eval $(call application,freifunk-policyrouting,Policy routing for mesh traffic,\
+PACKAGE_luci-app-freifunk-policyrouting:freifunk-policyrouting +luci-mod-freifunk)) +PACKAGE_luci-app-freifunk-policyrouting:freifunk-policyrouting +luci-mod-freifunk))
$(eval $(call application,meshwizard, Shellscript based wizard to setup mesh networks,\
+meshwizard +luci-mod-freifunk))
$(eval $(call application,olsr,OLSR configuration and status module,\ $(eval $(call application,olsr,OLSR configuration and status module,\
+luci-mod-admin-full +PACKAGE_luci-app-olsr:olsrd +PACKAGE_luci-app-olsr:olsrd-mod-txtinfo)) +luci-mod-admin-full +PACKAGE_luci-app-olsr:olsrd +PACKAGE_luci-app-olsr:olsrd-mod-txtinfo))

View file

@ -0,0 +1,39 @@
# Copyright (C) 2011 Manuel Munz <freifunk at somakoma de>
# This is free software, licensed under the Apache 2.0 license.
include $(TOPDIR)/rules.mk
PKG_NAME:=meshwizard
PKG_RELEASE:=1
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/meshwizard
SECTION:=luci
CATEGORY:=LuCI
SUBMENU:=Freifunk
TITLE:=Shell script based wizard for Mesh networks
DEPENDS:=+firewall
endef
define Package/meshwizard/description
A shellscript based wizard to simplify the setup of a typical mesh node (e.g. for Freifunk.net)
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
endef
define Build/Configure
endef
define Build/Compile
endef
define Package/meshwizard/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,meshwizard))

View file

@ -0,0 +1,7 @@
config 'netconfig' 'netconfig'
config 'general' 'general'
option 'sharenet' '0'
option 'local_restrict' '1'
option 'cleanup' '1'

View file

@ -0,0 +1,63 @@
uci_remove_list_element() {
local option="$1"
local value="$2"
local list="$(uci get $option)"
local elem
uci delete $option
for elem in $list; do
if [ "$elem" != "$value" ]; then
uci add_list $option=$elem
fi
done
}
set_defaults() {
for def in $(env |grep "^$1"); do
option=${def/$1/}
uci set $2.$option
echo " ${option/=/: }"
done
}
# 1 argument: section to remove
section_cleanup() {
uci -q delete $1 && msg_cleanup $1 || msg_cleanup_error $1
}
# 3 arguements: 1=config name 2=oldname 3=newname
section_rename() {
uci -q rename $1.$2=$3 && msg_rename $1.$2 $1.$3 || msg_rename_error $1.2 $1.$3
}
msg_start() {
echo " Starting configuration of $1"
}
msg_cleanup() {
echo " Cleanup: Removed section $1."
}
msg_cleanup_error() {
echo -e " \033[1mWarning:\033[0m Cleanup of $1 failed."
}
msg_missing_value() {
echo -e " \033[1mWarning:\033[0m Configuration option for $2 is missing in $1."
}
msg_success() {
echo " Finished."
}
msg_error() {
echo " \033[1mError: \033[0mThere was a problem."
}
msg_rename() {
echo " Renamed unnamed section $1 to $2."
}
msg_rename_error() {
echo " \033[1mWarning:\033[0m Could not rename $1 to $2."
}

View file

@ -0,0 +1,31 @@
#!/bin/sh
# Checks whether a netrange is inside another netrange, returns 1 if true
# Takes two arguments: $1: net from which we want to know if it is inside $2
# nets need to be given in CIDR notation
dir=$(dirname $0)
awk -f $dir/common.awk -f - $* <<EOF
BEGIN {
slpos=index(ARGV[1],"/")
ipaddr=ip2int(substr(ARGV[1],0,slpos-1))
netmask=compl(2**(32-int(substr(ARGV[1],slpos+1)))-1)
network=and(ipaddr,netmask)
broadcast=or(network,compl(netmask))
slpos2=index(ARGV[2],"/")
ipaddr2=ip2int(substr(ARGV[2],0,slpos2-1))
netmask2=compl(2**(32-int(substr(ARGV[2],slpos2+1)))-1)
network2=and(ipaddr2,netmask2)
broadcast2=or(network2,compl(netmask2))
if (network >= network2) {
if (network <= broadcast2) {
if (broadcast <= broadcast2) {
print "1"
}
}
}
}
EOF

View file

@ -0,0 +1,20 @@
function bitcount(c) {
c=and(rshift(c, 1),0x55555555)+and(c,0x55555555)
c=and(rshift(c, 2),0x33333333)+and(c,0x33333333)
c=and(rshift(c, 4),0x0f0f0f0f)+and(c,0x0f0f0f0f)
c=and(rshift(c, 8),0x00ff00ff)+and(c,0x00ff00ff)
c=and(rshift(c,16),0x0000ffff)+and(c,0x0000ffff)
return c
}
function ip2int(ip) {
for (ret=0,n=split(ip,a,"\."),x=1;x<=n;x++) ret=or(lshift(ret,8),a[x])
return ret
}
function int2ip(ip,ret,x) {
ret=and(ip,255)
ip=rshift(ip,8)
for(;x<3;ret=and(ip,255)"."ret,ip=rshift(ip,8),x++);
return ret
}

View file

@ -0,0 +1,33 @@
#!/bin/sh
# create essid from channel, takes two args:
# $1 = channel (integer)
# $2 = community (optional)
channel=$1
community=$2
. /etc/functions.sh
# Try to get BSSID from profile first
config_load profile_$community
config_get bssid bssidscheme $channel
if [ -z "$bssid" ]; then
case $channel in
[1-9])
bssid="$(printf "%X\n" $channel)2:CA:FF:EE:BA:BE"
;;
1[0-4])
bssid="$(printf "%X\n" $channel)2:CA:FF:EE:BA:BE"
;;
[3-9][0-9])
bssid="00:$channel:CA:FF:EE:EE"
;;
1[0-9][0-9])
bssid="${channel/1/01:}:CA:FF:EE:EE"
;;
*) bssid="02:CA:FF:EE:BA:BE"
;;
esac
fi
echo $bssid

View file

@ -0,0 +1,6 @@
#!/bin/sh
# generates a dhcp-ip and netrange from a given ip/subnet
# takes 2 arguments:
# $1: Ip Address (of the Interface for which we want to generate an ip)
echo "$1" | awk 'BEGIN { FS = "." } ; { print "6."$3"."$4".1" }'

View file

@ -0,0 +1,59 @@
#!/bin/sh
# This is only run once (usually after flashing an image from the imagebuilder)
# It sets up the initial config for this node.
. /etc/functions.sh
. $dir/functions.sh
### System config
config_load system
# Rename system config
handle_system() {
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
section_rename system $1 system
fi
}
config_foreach handle_system system
if [ -n "$(uci -q get meshwizard.system)" ]; then
echo " + Setup system"
uci show meshwizard.system | sed 's/^meshwizard/uci set system/g' | while read line; do
eval $line
echo " $line"
done
uci -q delete meshwizard.system
fi
if [ -n "$(uci -q get meshwizard.community)" ]; then
echo " + Setup community"
uci show meshwizard.community | sed 's/^meshwizard/freifunk/g' | while read line; do
eval uci set $line
echo " $line"
done
uci -q delete meshwizard.community
fi
if [ -n "$(uci -q get meshwizard.contact)" ]; then
echo " + Setup contact"
uci show meshwizard.contact | sed 's/^meshwizard/freifunk/g' | while read line; do
eval uci set $line
echo " $line"
done
uci -q delete meshwizard.contact
fi
if [ -n "$(uci -q get meshwizard.luci_main)" ]; then
echo " + Setup luci"
uci show meshwizard.luci_main |sed -e 's/^meshwizard/luci/g' -e 's/luci_main/main/' | while read line; do
eval uci set $line
echo " $line"
done
uci -q delete meshwizard.luci_main
fi
uci commit

View file

@ -0,0 +1,41 @@
#!/bin/sh
dir=$(dirname $0)
awk -f $dir/common.awk -f - $* <<EOF
BEGIN {
slpos=index(ARGV[1],"/")
if (slpos == 0) {
ipaddr=ip2int(ARGV[1])
netmask=ip2int(ARGV[2])
} else {
ipaddr=ip2int(substr(ARGV[1],0,slpos-1))
netmask=compl(2**(32-int(substr(ARGV[1],slpos+1)))-1)
ARGV[4]=ARGV[3]
ARGV[3]=ARGV[2]
}
network=and(ipaddr,netmask)
broadcast=or(network,compl(netmask))
start=or(network,and(ip2int(ARGV[3]),compl(netmask)))
limit=network+1
if (start<limit) start=limit
end=start+ARGV[4]
limit=or(network,compl(netmask))-1
if (end>limit) end=limit
print "IP="int2ip(ipaddr)
print "NETMASK="int2ip(netmask)
print "BROADCAST="int2ip(broadcast)
print "NETWORK="int2ip(network)
print "PREFIX="32-bitcount(compl(netmask))
# range calculations:
# ipcalc <ip> <netmask> <start> <num>
if (ARGC > 3) {
print "START="int2ip(start)
print "END="int2ip(end)
}
}
EOF

View file

@ -0,0 +1,20 @@
#!/bin/sh
# This reads the settings we need to have to configure everything
# Argument $1: community
community="$1"
# reads variables from uci files, parameter $1 is the section
get_var() {
uci -q show $1 | cut -d "." -f 2-100 |grep "\." | sed -e 's/^\([a-z_]*\)\./\1_/g' -e 's/=\(.*\)$/="\1"/g'
}
# read default values from /etc/config/freifunk
for v in system wifi_device wifi_iface interface alias dhcp olsr_interface olsr_interfacedefaults zone_freifunk include; do
get_var freifunk.$v
done
# now read all values from the selected community profile, will override some values from the defaults before
for v in system wifi_device wifi_iface interface alias dhcp olsr_interface olsr_interfacedefaults profile zone_freifunk include; do
get_var profile_$community.$v
done

View file

@ -0,0 +1,43 @@
#!/bin/sh
# This script renames IB_wifi_ interface names into real interface names used on this system.
# E.g. wireless.IB_wifi0 would become wireless.wifi0 on madwifi and wireless.radio0 on mac80211
posIB=-1
IBwifis="$(uci show meshwizard.netconfig | grep -v 'netconfig=netconfig' | sed 's/meshwizard.netconfig\.\(IB_wifi.*\)_.*/\1/' |uniq)"
for w in $IBwifis; do
posIB=$(( $posIB + 1 ))
export IB_wifi$posIB="$w"
done
pos=0
syswifis="$(uci show wireless |grep wifi-device | sed 's/wireless\.\(.*\)=.*/\1/' |uniq)"
for s in $syswifis; do
export syswifi$pos="$s"
pos=$(( $pos + 1 ))
done
for i in `seq 0 $posIB`; do
IBwifi=$(eval echo \$IB_wifi$i)
syswifi=$(eval echo \$syswifi$i)
if [ -n "$syswifi" ]; then
case $IBwifi in
IB_wifi* )
# replace IB_wifi_* with actual wifi interface names, delete old ones first
uci show meshwizard.netconfig | grep $IBwifi | while read line; do
oldline=$(echo $line | cut -d "=" -f 1)
uci set $oldline=""
newline=$(echo $line |sed "s/$IBwifi/$syswifi/g")
uci set $newline
done
;;
esac
unset IBwifi
unset syswifi
fi
done
uci commit

View file

@ -0,0 +1,33 @@
#!/bin/sh
# Sets up the dhcp part of dnsmasq
. /etc/functions.sh
. $dir/functions.sh
net="$1"
handle_dnsmasq() {
config_get interface "$1" interface
if [ "$interface" == "${netrenamed}dhcp" ]; then
if [ "$cleanup" == 1 ]; then
section_cleanup dhcp.$1
else
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
section_rename dhcp $1 ${netrenamed}dhcp
fi
fi
fi
}
config_load dhcp
config_foreach handle_dnsmasq dhcp
uci batch << EOF
set dhcp.${netrenamed}dhcp="dhcp"
set dhcp.${netrenamed}dhcp.leasetime="${dhcp_leasetime}"
set dhcp.${netrenamed}dhcp.force="1"
set dhcp.${netrenamed}dhcp.interface="${netrenamed}dhcp"
EOF
echo " leasetime: ${dhcp_leasetime}
interface: ${netrenamed}dhcp"

View file

@ -0,0 +1,31 @@
#!/bin/sh
. /etc/functions.sh
. $dir/functions.sh
# Set dnsmasq config
handle_dhcp() {
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
section_rename dhcp $1 dnsmasq
fi
}
config_load dhcp
config_foreach handle_dhcp dnsmasq
echo " + Setup dnsmasq"
uci set dhcp.dnsmasq.local="/$profile_suffix/"
uci set dhcp.dnsmasq.domain="$profile_suffix"
echo " local: /$profile_suffix/
domain: $profile_suffix"
config_get addnhosts dnsmasq addnhosts
if [ -z "${addnhosts/\var\/etc\/hosts.olsr/}" ]; then
uci add_list dhcp.dnsmasq.addnhosts="/var/etc/hosts.olsr"
echo " addnhosts: /var/etc/hosts.olsr"
fi
uci commit

View file

@ -0,0 +1,156 @@
#!/bin/sh
# This will add $net to the zone firewall (and remove it from other zones where it is referenced)
# It will also setup rules defined in /etc/config/freifunk and /etc/config/profile_<community>
# Arg $1 = $net
net=$1
. /etc/functions.sh
. $dir/functions.sh
config_load firewall
# Get some variables
type="$(uci -q get wireless.$net.type)"
vap="$(uci -q get meshwizard.netconfig.$net\_vap)"
lan_ip="$(uci -q get network.lan.ipaddr)"
lan_mask="$(uci -q get network.lan.netmask)"
# Delete old firewall zone for freifunk
handle_fwzone() {
config_get name "$1" name
config_get network "$1" network
if [ "$2" == "zoneconf" ]; then
# clean zone
if [ "$name" == "freifunk" ]; then
if [ "$cleanup" == 1 ]; then
section_cleanup firewall.$1
else
# rename section if unnamed
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
section_rename firewall $1 zone_freifunk
fi
fi
else
if [ "$name" == "$netrenamed" ]; then
section_cleanup firewall.$1
fi
if [ -n "$netrenamed" -a -n "$(echo $network | grep $netrenamed)" ] && [ ! "$name" == "freifunk" ]; then
echo " Removed $netrenamed from firewall zone $name."
network_new=$(echo $network | sed -e 's/'$netrenamed'//' -e 's/^ //' -e 's/ / /' -e 's/ $//')
uci set firewall.$1.network="$network_new"
fi
fi
else
# clean fw_rule, fw_forwarding, include and advanced
for option in src tcp_ecn path; do
config_get $option $1 $option
done
if [ "$src" == "freifunk" -o "$path" == "/etc/firewall.freifunk" -o -n "$tcpecn" ]; then
section_cleanup firewall.$1
fi
fi
}
config_foreach handle_fwzone zone zoneconf
if [ "$cleanup" == 1 ]; then
for target in include advanced rule forwarding; do
config_foreach handle_fwzone $target
done
fi
# setup freifunk firewall zone
echo " + Setup firewall zone."
# add $netrenamed and if needed ${netrenamed}dhcp to the networks for this zone
config_get network zone_freifunk network
# remove ${netrenamed}dhcp from networks list
[ -n "$network" -a -n "$net" ] && network="${network/${netrenamed}dhcp/}"
network=$(echo $network) # Removes leading and trailing whitespaces
[ -n "$netrenamed" ] && [ -z "$(echo $network | grep $netrenamed)" ] && network="$network $netrenamed"
if [ "$type" == "atheros" -a "$vap" == 1 ]; then
[ -n "$netrenamed" ] && [ "$network" == "${network/${netrenamed}dhcp/}" ] && network="$network ${netrenamed}dhcp"
fi
uci batch << EOF
set firewall.zone_freifunk="zone"
set firewall.zone_freifunk.name="freifunk"
set firewall.zone_freifunk.network="$network"
set firewall.zone_freifunk.input="$zone_freifunk_input"
set firewall.zone_freifunk.forward="$zone_freifunk_forward"
set firewall.zone_freifunk.output="$zone_freifunk_output"
EOF
echo " network: $network
input: $zone_freifunk_input
forward: $zone_freifunk_forward
output: $zone_freifunk_output"
# Usually we need to setup masquerading for lan, except lan is an olsr interface or has an olsr hna
echo " + Setup masquerading rules"
eval $(ipcalc.sh $lan_ip $lan_mask)
handle_interface() {
config_get interface "$1" interface
if [ "$interface" == "lan" ]; then
no_masq_lan=1
fi
}
config_load olsrd
config_foreach handle_interface Interface
handle_hna() {
config_get netaddr "$1" netaddr
if [ "$NETWORK" == "$netaddr" ]; then
no_masq_lan=1
fi
}
config_foreach handle_hna Hna4
currms=$(uci -q get firewall.zone_freifunk.masq_src)
if [ ! "$no_masq_lan" == "1" ]; then
uci set firewall.zone_freifunk.masq="1" && echo " Enabled masquerading." || echo -e "\033[1mWarning:\033[0m: Could not enable masquerading."
[ -z "$(echo $currms |grep $NETWORK/$PREFIX)" ] && uci add_list firewall.zone_freifunk.masq_src="$NETWORK/$PREFIX"
fi
# If wifi-interfaces are outside of the mesh network they should be natted
for i in $networks; do
# Get dhcprange and meshnet
dhcprange=$(uci get meshwizard.netconfig.$i\_dhcprange)
meshnet="$(uci get profile_$community.profile.mesh_network)"
# check if the dhcprange is inside meshnet
dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprange $meshnet)"
if [ ! "$dhcpinmesh" == 1 ]; then
[ -z "$(echo $currms |grep $dhcprange)" ] && uci add_list firewall.zone_freifunk.masq_src="$dhcprange"
fi
done
# Rules, Forwardings, advanced config and includes
# Clear firewall configuration
echo " + Setup rules, forwardings, advanced config and includes."
for config in freifunk profile_$community; do
config_load $config
for section in advanced include fw_rule fw_forwarding; do
handle_firewall() {
local options=$(uci show $config."$1")
options=$(echo "$options" | sed -e "s/fw_//g" -e "s/^$config/firewall/g")
for o in $options; do
uci set $o
done
}
config_foreach handle_firewall $section
done
done
uci commit

View file

@ -0,0 +1,91 @@
# setup entry in /etc/config/network for a interface
# Argument $1: network interface
net="$1"
. /etc/functions.sh
. $dir/functions.sh
# Delete the network interface section for $net
if [ "$cleanup" == 1 ]; then
section_cleanup network.$netrenamed
fi
# Setup a (new) interface section for $net
ipaddr=$(uci get meshwizard.netconfig.$net\_ip4addr)
[ -z "$ipaddr" ] && msg_missing_value meshwizard $net\_ip4addr
[ -z "$interface_netmask" ] && interface netmask="255.255.0.0"
uci batch << EOF
set network.$netrenamed="interface"
set network.$netrenamed.proto="static"
set network.$netrenamed.ipaddr="$ipaddr"
set network.$netrenamed.netmask="$interface_netmask"
set network.$netrenamed.dns="$interface_dns"
EOF
echo " IP address: $ipaddr"
echo " Netmask : $interface_netmask"
# setup dhcp alias/interface
net_dhcp=$(uci -q get meshwizard.netconfig.${net}_dhcp)
if [ "$net_dhcp" == 1 ]; then
# Load meshwizard_settings
dhcprange="$(uci -q get meshwizard.netconfig.${net}_dhcprange)"
interface_ip="$(uci -q get meshwizard.netconfig.${net}_ip4addr)"
vap=$(uci -q get meshwizard.netconfig.${net}_vap)
# Clean/rename config
handle_dhcpalias() {
config_get interface "$1" interface
if [ "$interface" == "$netrenamed" ]; then
if [ "$cleanup" == 1 ]; then
section_cleanup network.$1
else
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
section_rename network $1 ${netrenamed}dhcp
fi
fi
fi
}
config_load network
config_foreach handle_dhcpalias alias
# Get IP/netmask and start-ip for $net dhcp
# If no dhcprange is given in /etc/config/meshwizard we autogenerate one
if [ -z "$dhcprange" ]; then
dhcprange="$($dir/helpers/gen_dhcp_ip.sh $interface_ip)/24"
uci set meshwizard.netconfig.${net}_dhcprange="$dhcprange"
fi
eval $(sh $dir/helpers/ipcalc-cidr.sh $dhcprange 1 0)
# setup wifi-dhcp interface or alias
# Setup alias for $net
if [ "$vap" == 1 ]; then
echo " + Setup interface ${netrenamed}dhcp."
uci set network.${netrenamed}dhcp=interface
else
echo " + Setup alias interface ${netrenamed}dhcp."
uci set network.${netrenamed}dhcp=alias
uci set network.${netrenamed}dhcp.interface="$netrenamed"
fi
uci batch << EOF
set network.${netrenamed}dhcp.proto=static
set network.${netrenamed}dhcp.ipaddr="$START"
set network.${netrenamed}dhcp.netmask="$NETMASK"
EOF
echo " interface: $net
ipaddr: $START
netmask: $NETMASK"
fi
uci commit

View file

@ -0,0 +1,126 @@
#!/bin/sh
# Sets up olsrd
# arg $1 = net
net=$1
. /etc/functions.sh
. $dir/functions.sh
# Clean or delete interface defaults
handle_interfacedefaults() {
if [ "$cleanup" == 1 ]; then
section_cleanup olsrd.$1
else
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
section_rename olsrd $1 InterfaceDefaults
fi
fi
}
config_load olsrd
config_foreach handle_interfacedefaults InterfaceDefaults
# Setup new InterfaceDefaults
echo " + Setup InterfaceDefaults"
uci set olsrd.InterfaceDefaults=InterfaceDefaults
set_defaults "olsr_interfacedefaults_" olsrd.InterfaceDefaults
# Delete old interface for $netrenamed
handle_interface() {
config_get interface "$1" Interface
if [ "$interface" == "$netrenamed" ]; then
if [ "$cleanup" == 1 ]; then
section_cleanup olsrd.$1
elif [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
section_rename olsrd $1 $netrenamed
fi
fi
}
config_foreach handle_interface Interface
# Setup new interface for $netrenamed
echo " + Setup Interface"
uci set olsrd.$netrenamed=Interface
set_defaults "olsr_interface_" olsrd.$net
uci set olsrd.$netrenamed.interface="$netrenamed"
echo " interface: $netrenamed"
# If dhcp-network is inside the mesh_network then add HNA for it
dhcprange=$(uci get meshwizard.netconfig.$net\_dhcprange)
meshnet="$(uci get profile_$community.profile.mesh_network)"
uci -q delete olsrd.${netrenamed}clients
# check if the dhcprange is inside meshnet
dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprange $meshnet)"
if [ "$dhcpinmesh" == 1 ]; then
echo " + Setting up HNA"
uci set olsrd.${netrenamed}clients="Hna4"
eval $(sh $dir/helpers/ipcalc-cidr.sh $dhcprange)
uci set olsrd.${netrenamed}clients.netaddr="$NETWORK"
uci set olsrd.${netrenamed}clients.netmask="$NETMASK"
echo " netaddr: $NETWORK"
echo " natmask: $NETMASK"
fi
# Delete nameservice, dyngw and httpinfo plugins
echo " + Configure Plugins"
handle_plugin() {
config_get library "$1" library
if [ "$cleanup" == 1 ]; then
case library in
olsrd_*)
section_cleanup olsrd.$1
esac
elif [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
new="$(echo $library | cut -d '.' -f 1)"
section_rename olsrd $1 $new
fi
}
config_foreach handle_plugin LoadPlugin
# Setup nameservice plugin
if [ -n "$profile_suffix" ]; then
suffix=".$profile_suffix"
else
suffix=".olsr"
fi
uci batch << EOF
set olsrd.olsrd_nameservice=LoadPlugin
set olsrd.olsrd_nameservice.library="olsrd_nameservice.so.0.3"
set olsrd.olsrd_nameservice.latlon_file="/var/run/latlon.js"
set olsrd.olsrd_nameservice.hosts_file="/var/etc/hosts.olsr"
set olsrd.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid"
set olsrd.olsrd_nameservice.suffix="$suffix"
EOF
echo " Nameservice Plugin configured."
# Setup dyngw_plain
# If Sharing of Internet is enabled then enable dyngw_plain plugin
sharenet=$(uci -q get meshwizard.general.sharenet)
if [ -n "$(uci -q get olsrd.dyngw_plain.library)" ]; then
section_cleanup olsrd.dyngw_plain
fi
if [ "$sharenet" == 1 ]; then
echo " + Setup dyngw_plain"
uci set olsrd.dyngw_plain=LoadPlugin
uci set olsrd.dyngw_plain.ignore=0
uci set olsrd.dyngw_plain.library="olsrd_dyn_gw_plain.so.0.4"
fi
uci commit

View file

@ -0,0 +1,32 @@
#!/bin/sh
# Setup_splash, takes 1 argument: 1=net
. /etc/functions.sh
. $dir/functions.sh
net=$1
handle_splash() {
config_get network "$1" network
if [ "$network" == "${netrenamed}dhcp" ]; then
if [ "$cleanup" == 1 ]; then
section_cleanup luci_splash.$1
else
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
section_rename luci_splash $1 ${netrenamed}dhcp
fi
fi
fi
}
config_load luci_splash
config_foreach handle_splash iface
uci batch << EOF
set luci_splash.${netrenamed}dhcp="iface"
set luci_splash.${netrenamed}dhcp.network="${net}dhcp"
set luci_splash.${netrenamed}dhcp.zone="freifunk"
EOF
echo " network: ${netrenamed}dhcp"
uci commit

View file

@ -0,0 +1,107 @@
#!/bin/sh
# sets up a wifi interface for meshing
# Arguments: $1 = network interface
net="$1"
. /etc/functions.sh
. $dir/functions.sh
##### wifi-device #####
echo " + Setup wifi-device"
# Get the type before we delete the wifi-device
config_load wireless
config_get type $net type
# Delete old wifi-device for $net
handle_wifidevice() {
if [ "$1" == "$net" -a "$cleanup" == 1 ]; then
section_cleanup wireless.${net}
else
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
section_rename wireless $1 $net
fi
fi
}
config_foreach handle_wifidevice wifi-device
# create new wifi-device for $net
uci set wireless.${net}=wifi-device
# get and set wifi-device defaults
set_defaults "wifi_device_" wireless.${net}
channel="$(uci -q get meshwizard.netconfig.$net\_channel)"
vap="$(uci -q get meshwizard.netconfig.$net\_vap)"
if [ -z "$channel" -o "$channel" == "default" ]; then
channel=$wifi_device_channel
fi
uci batch << EOF
set wireless.${net}.type="$type"
set wireless.${net}.channel="$channel"
EOF
echo " Type: $type"
echo " Channel: $channel"
##### wifi iface
echo " + Setup wifi-iface"
# Delete old wifi-iface for $net
handle_interface() {
config_get device "$1" device
if [ "$device" == "$net" ]; then
if [ "$cleanup" == 1 ]; then
section_cleanup wireless.${net}_iface
else
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
section_rename wireless $1 ${net}_iface
fi
fi
fi
}
config_foreach handle_interface wifi-iface
# create new wifi-device for $net
uci set wireless.$net\_iface=wifi-iface
# create new wifi-iface for $net from defaults
set_defaults "wifi_iface_" wireless.$net\_iface
# overwrite defaults
bssid="$($dir/helpers/gen_bssid.sh $channel $community)"
uci batch << EOF
set wireless.$net\_iface.device="${net}"
set wireless.$net\_iface.network="$netrenamed"
set wireless.$net\_iface.ssid="$profile_ssid - ch$channel"
set wireless.$net\_iface.bssid="$bssid"
EOF
echo " device: $net
network: $netrenamed
ssid: $profile_ssid - ch$channel
bssid: $bssid"
## VAP
ip4addr="$(uci get meshwizard.netconfig.$net\_ip4addr)"
if [ "$type" == "atheros" -a "$vap" == 1 ]; then
uci batch << EOF
set wireless.$net\_iface_dhcp="wifi-iface"
set wireless.$net\_iface_dhcp.device="$net"
set wireless.$net\_iface_dhcp.mode="ap"
set wireless.$net\_iface_dhcp.encryption="none"
set wireless.$net\_iface_dhcp.network="${netrenamed}dhcp"
set wireless.$net\_iface_dhcp.ssid="FF-AP-$ip4addr"
EOF
echo " + Setting up VAP interface for $net
device: $net
network: ${netrenamed}dhcp
ssid: AP-$profile_ssid-$ip4addr"
fi
uci commit

View file

@ -0,0 +1,96 @@
#!/bin/sh
# This script will take settings from /etc/config/meshwizard, /etc/config/freifunk and /etc/config/profile_<selected in freifunk>
# and setup the router to participate in wireless mesh networks
. /etc/functions.sh
# config
export dir="/usr/bin/meshwizard"
. $dir/functions.sh
debug=1
# Rename wifi interfaces
echo "++++ Renaming wifi-devices in /etc/config/meshwizard"
$dir/helpers/rename-wifi.sh
# Firstboot/initial config
echo "++++ Initial config"
$dir/helpers/initial_config.sh
# Get community
export community=$(uci get freifunk.community.name)
[ -z "$community" ] && echo "Error: Community is not set in /etc/config/freifunk, aborting now." && exit 1
# Check whether we want to cleanup uci config before setting new options or not
cleanup=$(uci -q get meshwizard.general.cleanup)
[ "$cleanup" == 1 ] && export cleanup=1
# Get a list of networks we need to setup
networks=$(uci show meshwizard.netconfig | grep -v "netconfig=" | sed -e 's/meshwizard.netconfig\.\(.*\)\_.*/\1/' |sort|uniq)
export networks
[ -z "$networks" ] && echo "Error: No networks to setup could be found in /etc/config/meshwizard, aborting now." && exit 1
echo "+++ wizard 0.0.1 +++
Community=$community
Network(s)=$networks"
# Read default values (first from /etc/config/freifunk, then from /etc/config/profile_$community,
# last will overwrite first
$dir/helpers/read_defaults.sh $community > /tmp/meshwizard.tmp
while read line; do
export "${line//\"/}"
done < /tmp/meshwizard.tmp
# dnsmasq
echo "++++ dnsmasq config"
$dir/helpers/setup_dnsmasq.sh
# Configure found networks
for net in $networks; do
netrenamed="${net/radio/wireless}"
export netrenamed
echo "++++ Configure interface $net"
config="network"
echo "$(msg_start $config)"
$dir/helpers/setup_network.sh $net
config="wireless"
echo "$(msg_start $config)"
$dir/helpers/setup_wifi.sh $net
config="OLSRd"
echo "$(msg_start $config)"
$dir/helpers/setup_olsrd.sh $net
net_dhcp=$(uci -q get meshwizard.netconfig.${net}_dhcp)
if [ "$net_dhcp" == 1 ]; then
config="DHCP"
echo "$(msg_start $config)"
$dir/helpers/setup_dhcp.sh $net
fi
config="luci_splash"
echo "$(msg_start $config)"
$dir/helpers/setup_splash.sh $net
config="firewall"
echo "$(msg_start $config)"
$dir/helpers/setup_firewall.sh $net
echo " Configuration of $net finished."
done
##### Restart services
services="network olsrd dnsmasq luci_splash"
echo " Restarting services:"
for s in $services; do
/etc/init.d/$s restart >/dev/null 2>&1
echo " * $s"
done

View file

@ -1,7 +1,5 @@
package 'freifunk' package 'freifunk'
config 'settings' 'wizard'
config 'public' 'contact' config 'public' 'contact'
option 'nickname' '' option 'nickname' ''
option 'name' '' option 'name' ''
@ -14,45 +12,75 @@ config 'public' 'community'
option 'name' 'Freifunk' option 'name' 'Freifunk'
option 'homepage' 'http://freifunk.net' option 'homepage' 'http://freifunk.net'
config 'fw_rule' 'icmp' config 'fw_zone' 'zone_freifunk'
option 'name' 'freifunk'
option 'input' 'REJECT'
option 'forward' 'REJECT'
option 'output' 'ACCEPT'
config 'fw_rule' 'fficmp'
option 'src' 'freifunk' option 'src' 'freifunk'
option 'target' 'ACCEPT' option 'target' 'ACCEPT'
option 'proto' 'icmp' option 'proto' 'icmp'
config 'fw_rule' 'http' config 'fw_rule' 'ffhttp'
option 'src' 'freifunk' option 'src' 'freifunk'
option 'target' 'ACCEPT' option 'target' 'ACCEPT'
option 'proto' 'tcp' option 'proto' 'tcp'
option 'dest_port' '80' option 'dest_port' '80'
config 'fw_rule' 'https' config 'fw_rule' 'ffhttps'
option 'src' 'freifunk' option 'src' 'freifunk'
option 'target' 'ACCEPT' option 'target' 'ACCEPT'
option 'proto' 'tcp' option 'proto' 'tcp'
option 'dest_port' '443' option 'dest_port' '443'
config 'fw_rule' 'ssh' config 'fw_rule' 'ffssh'
option 'src' 'freifunk' option 'src' 'freifunk'
option 'target' 'ACCEPT' option 'target' 'ACCEPT'
option 'proto' 'tcp' option 'proto' 'tcp'
option 'dest_port' '22' option 'dest_port' '22'
config 'fw_rule' 'olsr' config 'fw_rule' 'ffolsr'
option 'src' 'freifunk' option 'src' 'freifunk'
option 'target' 'ACCEPT' option 'target' 'ACCEPT'
option 'proto' 'udp' option 'proto' 'udp'
option 'dest_port' '698' option 'dest_port' '698'
config 'fw_rule' 'wprobe' config 'fw_rule' 'ffwprobe'
option 'src' 'freifunk' option 'src' 'freifunk'
option 'target' 'ACCEPT' option 'target' 'ACCEPT'
option 'proto' 'tcp' option 'proto' 'tcp'
option 'dest_port' '17990' option 'dest_port' '17990'
config 'fw_forwarding' 'lan' config 'fw_rule' 'ffdns'
option 'dest_port' '53'
option 'src' 'freifunk'
option 'target' 'ACCEPT'
option 'proto' 'udp'
config 'fw_rule' 'ffdhcp'
option 'src_port' '68'
option 'src' 'freifunk'
option 'target' 'ACCEPT'
option 'dest_port' '67'
option 'proto' 'udp'
option 'leasetime' '30m'
config 'fw_rule' 'ffsplash'
option 'dest_port' '8082'
option 'src' 'freifunk'
option 'target' 'ACCEPT'
option 'proto' 'tcp'
config 'fw_forwarding' 'lanfffwd'
option 'src' 'lan' option 'src' 'lan'
option 'dest' 'freifunk' option 'dest' 'freifunk'
config 'fw_forwarding' 'ffwanfwd'
option 'src' 'freifunk'
option 'dest' 'wan'
config 'fw_forwarding' 'fffwd' config 'fw_forwarding' 'fffwd'
option 'src' 'freifunk' option 'src' 'freifunk'
option 'dest' 'freifunk' option 'dest' 'freifunk'
@ -61,13 +89,18 @@ config 'defaults' 'wifi_device'
option 'channel' '1' option 'channel' '1'
option 'diversity' '1' option 'diversity' '1'
option 'disabled' '0' option 'disabled' '0'
option 'txpower' '15' option 'country' 'DE'
option 'country' '276' option 'hwmode' '11g'
option 'distance' '1000'
config 'defaults' 'wifi_iface' config 'defaults' 'wifi_iface'
option 'mode' 'adhoc' option 'mode' 'adhoc'
option 'bssid' '02:CA:FF:EE:BA:BE' option 'encryption' 'none'
option 'bgscan' '0'
option 'bssid' '12:CA:FF:EE:BA:BE'
option 'sw_merge' '1' option 'sw_merge' '1'
option 'mcast_rate' '5500'
option 'probereq' '1'
config 'defaults' 'interface' config 'defaults' 'interface'
option 'netmask' '255.255.0.0' option 'netmask' '255.255.0.0'
@ -79,9 +112,10 @@ config 'defaults' 'alias'
config 'defaults' 'dhcp' config 'defaults' 'dhcp'
option 'leasetime' '30m' option 'leasetime' '30m'
config 'defaults' 'olsr_interface' config 'defaults' 'olsr_interfacedefaults'
option 'Ip4Broadcast' '255.255.255.255' option 'Ip4Broadcast' '255.255.255.255'
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'

View file

@ -1,10 +0,0 @@
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 'splash_prefix' '28'
option 'mesh_network' '1.0.0.0/16'

View file

@ -0,0 +1,10 @@
config 'community' 'profile'
option 'name' 'Freifunk'
option 'homepage' 'http://freifunk.net'
option 'ssid' 'www.freifunk.net'
option 'splash_network' '10.104.0.0/16'
option 'latitude' '52.000'
option 'longitude' '10.000'
option 'splash_prefix' '28'
option 'mesh_network' '10.0.0.0/8'

View file

@ -12,3 +12,7 @@ config 'community' 'profile'
config 'defaults' 'interface' config 'defaults' 'interface'
option 'netmask' '255.255.192.0' option 'netmask' '255.255.192.0'
config 'defaults' 'bssidscheme'
option '1' '02:CA:FF:EE:BA:BE'
option '13' '13:CA:FF:EE:BA:BE'

81
po/ca/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/de/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/el/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/en/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/es/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/fr/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/it/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/ja/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/ms/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/no/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/pl/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/pt/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/pt_BR/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/ru/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

View file

@ -0,0 +1,84 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/vi/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""

81
po/zh_CN/meshwizard.po Normal file
View file

@ -0,0 +1,81 @@
msgid "Channel"
msgstr ""
msgid "Check this to protect your LAN from other nodes or clients"
msgstr ""
msgid "Cleanup config"
msgstr ""
msgid "Configure this interface"
msgstr ""
msgid "DHCP IP range"
msgstr ""
msgid "DHCP will automatically assign ip addresses to clients"
msgstr ""
msgid "Enable DHCP"
msgstr ""
msgid "General Settings"
msgstr ""
msgid ""
"If this is selected then config is cleaned before setting new config options."
msgstr ""
msgid "Interfaces"
msgstr ""
msgid "Mesh IP address"
msgstr ""
msgid "Mesh Wizard"
msgstr ""
msgid "Protect LAN"
msgstr ""
msgid ""
"Select this to allow others to use your connection to access the internet."
msgstr ""
msgid "Share your internet connection"
msgstr ""
msgid ""
"The IP range from which clients are assigned ip addresses (e.g. "
"10.1.2.1/28). If this is a range inside your mesh network range, then it "
"will be announced as HNA. Any other range will use NAT. If left empty then "
"the defaults from the community profile will be used."
msgstr ""
msgid "The given IP address is not inside the mesh network range"
msgstr ""
msgid ""
"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
"registered at your local community."
msgstr ""
msgid "This will setup a new virtual wireless interface in Access Point mode."
msgstr ""
msgid ""
"This wizard will assist you in setting up your router for Freifunk or "
"another similar wireless community network."
msgstr ""
msgid "Virtual Access Point (VAP)"
msgstr ""
msgid "Wizard"
msgstr ""
msgid "Your device and neighbouring nodes have to use the same channel."
msgstr ""
msgid "recommended"
msgstr ""