Merge pull request #787 from rogerpueyo/luci-proto-ipip
authorChristian Schoenebeck <christian.schoenebeck@gmail.com>
Thu, 1 Dec 2016 19:33:44 +0000 (20:33 +0100)
committerGitHub <noreply@github.com>
Thu, 1 Dec 2016 19:33:44 +0000 (20:33 +0100)
luci-proto-ipip: Add package

59 files changed:
applications/luci-app-rp-pppoe-server/Makefile [new file with mode: 0644]
applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua [new file with mode: 0644]
applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua [new file with mode: 0644]
applications/luci-app-statistics/root/etc/config/luci_statistics
applications/luci-app-statistics/root/usr/bin/stat-genconfig
applications/luci-app-travelmate/Makefile [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/controller/travelmate.lua [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua [new file with mode: 0644]
applications/luci-app-travelmate/po/templates/travelmate.pot [new file with mode: 0644]
applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate [new file with mode: 0755]
applications/luci-app-wifischedule/Makefile [new file with mode: 0644]
applications/luci-app-wifischedule/README.md [new file with mode: 0644]
applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua [new file with mode: 0644]
applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua [new file with mode: 0644]
applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm [new file with mode: 0644]
documentation/i18n.md
luci.mk
modules/luci-base/Makefile
modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
modules/luci-base/po/ca/base.po
modules/luci-base/po/cs/base.po
modules/luci-base/po/de/base.po
modules/luci-base/po/el/base.po
modules/luci-base/po/en/base.po
modules/luci-base/po/es/base.po
modules/luci-base/po/fr/base.po
modules/luci-base/po/he/base.po
modules/luci-base/po/hu/base.po
modules/luci-base/po/it/base.po
modules/luci-base/po/ja/base.po
modules/luci-base/po/ms/base.po
modules/luci-base/po/no/base.po
modules/luci-base/po/pl/base.po
modules/luci-base/po/pt-br/base.po
modules/luci-base/po/pt/base.po
modules/luci-base/po/ro/base.po
modules/luci-base/po/ru/base.po
modules/luci-base/po/sk/base.po
modules/luci-base/po/sv/base.po
modules/luci-base/po/templates/base.pot
modules/luci-base/po/tr/base.po
modules/luci-base/po/uk/base.po
modules/luci-base/po/vi/base.po
modules/luci-base/po/zh-cn/base.po
modules/luci-base/po/zh-tw/base.po
modules/luci-base/root/etc/config/luci
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_add.lua
modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full [new file with mode: 0755]
protocols/luci-proto-wireguard/Makefile [new file with mode: 0644]
protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua [new file with mode: 0644]
protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua [new file with mode: 0644]

diff --git a/applications/luci-app-rp-pppoe-server/Makefile b/applications/luci-app-rp-pppoe-server/Makefile
new file mode 100644 (file)
index 0000000..6cf4595
--- /dev/null
@@ -0,0 +1,15 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Roaring Penguing PPPoE Server
+LUCI_DEPENDS:=+rp-pppoe-server
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua b/applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua
new file mode 100644 (file)
index 0000000..105a80e
--- /dev/null
@@ -0,0 +1,13 @@
+-- Copyright 2015 Daniel Dickinson <openwrt@daniel.thecshore.com>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.rp-pppoe-server", package.seeall)
+
+function index()
+       if not nixio.fs.access("/etc/config/pppoe") then
+               return
+       end
+
+       entry({"admin", "services", "rp-pppoe-server"}, cbi("rp-pppoe-server"), _("RP PPPoE Server"))
+end
+
diff --git a/applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua b/applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua
new file mode 100644 (file)
index 0000000..ef15ed6
--- /dev/null
@@ -0,0 +1,72 @@
+-- Copyright 2015 Daniel Dickinson <openwrt@daniel.thecshore.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local m, s, o
+
+local nixio = require "nixio"
+
+m = Map("pppoe", translate("Roaring Penguin PPPoE Server"),
+       translate("PPPoE Server Configuration"))
+
+s = m:section(TypedSection, "pppoe_server", translate("Server Configuration"))
+s.addremove = false
+s.anonymous = true
+
+o = s:option(Value, "interface", translate("Interface"), translate("Interface on which to listen."))
+o.template = "cbi/network_ifacelist"
+o.nocreate = true
+
+o = s:option(Value, "ac_name", translate("Access Concentrator Name"))
+o.optional = true
+
+o = s:option(DynamicList, "service_name", translate("Service Name"))
+o.optional = true
+
+o = s:option(Value, "maxsessionsperpeer", translate("Maximum sessions per peer"))
+o.optional = true
+o.datatype = "uinteger"
+
+o = s:option(Value, "localip", translate("IP of listening side"))
+o.datetype = "ipaddr"
+
+o = s:option(Value, "firstremoteip", translate("First remote IP"))
+o.datatype = "ipaddr"
+
+o = s:option(Value, "maxsessions", translate("Maximum sessions"))
+o.datatype = "uinteger"
+o.default = 64
+o.optional = true
+
+o = s:option(Value, "optionsfile", translate("Options file"))
+o.default = "/etc/ppp/pppoe-server-options"
+o.optional = true
+
+o = s:option(Flag, "randomsessions", translate("Random session selection"), translate("Instead of starting at beginning and going to end, randomize session number"))
+o.optional = true
+
+o = s:option(Value, "unit", translate("Unit"), translate("PPP unit number"))
+o.optional = true
+o.datatype = "uinteger"
+o.default = 0
+
+o = s:option(Value, "offset", translate("Offset"), translate("PPP offset"))
+o.optional = true
+o.datatype = "uinteger"
+o.default = 0
+
+o = s:option(Value, "timeout", translate("Timeout"))
+o.optional = true
+o.datatype = "uinteger"
+o.default = 60
+
+o = s:option(Value, "mss", translate("MSS"))
+o.optional = true
+o.datatype = "uinteger"
+o.default = 1468
+
+
+o = s:option(Flag, "sync", translate("Sync"))
+o.optional = true
+o.default = false
+
+return m
index 3f26aee..36c5554 100644 (file)
@@ -25,6 +25,7 @@ function index()
 
                conntrack       = _("Conntrack"),
                cpu                     = _("Processor"),
+               cpufreq         = _("CPU Frequency"),
                csv                     = _("CSV Output"),
                df                      = _("Disk Space Usage"),
                disk            = _("Disk Usage"),
@@ -49,6 +50,7 @@ function index()
                sensors     = _("Sensors"),
                splash_leases = _("Splash Leases"),
                tcpconns        = _("TCP Connections"),
+               thermal =       _("Thermal"),
                unixsock        = _("UnixSock"),
                uptime          = _("Uptime")
        }
@@ -56,8 +58,12 @@ function index()
        -- our collectd menu
        local collectd_menu = {
                output  = { "csv", "network", "rrdtool", "unixsock" },
-               general = { "cpu", "df", "disk", "email", "entropy", "exec", "irq", "load", "memory", "nut", "processes", "sensors", "uptime" },
-               network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "openvpn", "ping", "splash_leases", "tcpconns", "iwinfo" }
+               general = { "cpu", "cpufreq", "df", "disk", "email",
+                       "entropy", "exec", "irq", "load", "memory",
+                       "nut", "processes", "sensors", "thermal", "uptime" },
+               network = { "conntrack", "dns", "interface", "iptables",
+                       "netlink", "olsrd", "openvpn", "ping",
+                       "splash_leases", "tcpconns", "iwinfo" }
        }
 
        -- create toplevel menu nodes
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua
new file mode 100644 (file)
index 0000000..d111663
--- /dev/null
@@ -0,0 +1,14 @@
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("luci_statistics",
+       translate("CPU Frequency Plugin Configuration"),
+       translate("This plugin collects statistics about the processor frequency scaling."))
+
+-- collectd_cpufreq config section
+s = m:section( NamedSection, "collectd_cpufreq", "luci_statistics" )
+
+-- collectd_cpufreq.enable
+enable = s:option( Flag, "enable", translate("Enable this plugin") )
+enable.default = 0
+
+return m
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua
new file mode 100644 (file)
index 0000000..bdf41b7
--- /dev/null
@@ -0,0 +1,29 @@
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("luci_statistics",
+       translate("Thermal Plugin Configuration"),
+       translate("The thermal plugin will monitor temperature of the system. " ..
+               "Data is typically read from /sys/class/thermal/*/temp " ..
+               "( '*' denotes the thermal device to be read, e.g. thermal_zone1 )")
+       )
+
+-- collectd_thermal config section
+s = m:section( NamedSection, "collectd_thermal", "luci_statistics" )
+
+-- collectd_thermal.enable
+enable = s:option( Flag, "enable", translate("Enable this plugin") )
+enable.default = 0
+
+-- collectd_thermal.tz (Device)
+tz = s:option( Value, "Device", translate("Monitor device(s) / thermal zone(s)"),
+               translate("Empty value = monitor all") )
+tz.optional = true
+tz:depends( "enable", 1 )
+
+-- collectd_thermal.ignoreselected (IgnoreSelected)
+ignoreselected = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") )
+ignoreselected.default  = 0
+ignoreselected.optional = true
+ignoreselected:depends( "enable", 1 )
+
+return m
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua
new file mode 100644 (file)
index 0000000..25a72d2
--- /dev/null
@@ -0,0 +1,25 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.cpufreq",package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+
+       return {
+               title = "%H: Processor frequency",
+               alt_autoscale = true,
+               vlabel = "Frequency (Hz)",
+               number_format = "%3.2lf%s",
+               data = {
+                       sources = {
+                               cpufreq = { "" }
+                       },
+                       options = {
+                               cpufreq_0 = { color = "ff0000", title = "Core 0", noarea=true, overlay=true },
+                               cpufreq_1 = { color = "0000ff", title = "Core 1", noarea=true, overlay=true },
+                               cpufreq_2 = { color = "00ff00", title = "Core 2", noarea=true, overlay=true },
+                               cpufreq_3 = { color = "00ffff", title = "Core 3", noarea=true, overlay=true }
+                       }
+               }
+       }
+end
+
index 8b04ab8..dd93196 100644 (file)
@@ -32,23 +32,24 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
 
                        options = {
                                current_output  = { color = "00e000", title = "Output current", noarea=true, overlay=true },
-                               current_battery = { color = "0000ff", title = "Battery current", noarea=true, overlay=true },
+                               current_battery = { color = "0000ff", title = "Battery current", noarea=true, overlay=true }
                        }
                }
        }
 
        local percentage = {
-               title = "%H: Battery charge on UPS \"%pi\"",
+               title = "%H: Battery charge/load on UPS \"%pi\"",
                vlabel = "Percent",
                y_min = "0",
                y_max = "100",
                number_format = "%5.1lf%%",
                data = {
                        instances = {
-                               percent = "charge"
+                               percent = { "charge", "load" }
                        },
                        options = {
-                               percent_charge = { color = "00ff00", title = "Charge level"  }
+                               percent_charge = { color = "00ff00", title = "Charge level"  },
+                               percent_load = { color = "ff0000", title = "Load"  }
                        }
                }
        }
@@ -78,10 +79,39 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
                                timeleft = { "battery" }
                        },
                        options = {
-                               timeleft_battery = { color = "0000ff", title = "Time left", transform_rpn = "60,/" }
+                               timeleft_battery = { color = "0000ff", title = "Time left", transform_rpn = "60,/", noarea=true }
                        }
                }
        }
 
-       return { voltages, currents, percentage, temperature, timeleft }
+       local power = {
+               title = "%H: Power on UPS \"%pi\"",
+               vlabel = "Power",
+               number_format = "%5.1lf%%",
+               data = {
+                       instances = {
+                               power = { "ups" }
+                       },
+                       options = {
+                               power_ups = { color = "00ff00", title = "Power level"  }
+                       }
+               }
+       }
+
+       local frequencies = {
+               title = "%H: Frequencies on UPS \"%pi\"",
+               vlabel = "Hz",
+               number_format = "%5.1lfHz",
+               data = {
+                       instances = {
+                               frequency = { "input", "output" }
+                       },
+
+                       options = {
+                               frequency_output  = { color = "00e000", title = "Output frequency", noarea=true, overlay=true },
+                               frequency_input   = { color = "ffb000", title = "Input frequency", noarea=true, overlay=true }
+                       }
+               }
+       }
+       return { voltages, currents, percentage, temperature, timeleft, power, frequencies }
 end
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua
new file mode 100644 (file)
index 0000000..5322464
--- /dev/null
@@ -0,0 +1,20 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.thermal",package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+
+       return {
+               title = "%H: Temperature of %pi",
+               alt_autoscale = true,
+               vlabel = "Celsius",
+               number_format = "%3.1lf%s",
+               data = {
+                       types = { "temperature" },
+                       options = {
+                               temperature = { color = "ff0000", title = "Temperature", noarea=true },
+                       }
+               }
+       }
+end
+
index 4435d5c..774a838 100644 (file)
@@ -55,6 +55,9 @@ config statistics 'collectd_conntrack'
 config statistics 'collectd_cpu'
        option enable '1'
 
+config statistics 'collectd_cpufreq'
+       option enable '0'
+
 config statistics 'collectd_df'
        option enable '0'
        option Devices '/dev/mtdblock/4'
@@ -151,6 +154,11 @@ config statistics 'collectd_tcpconns'
        option ListeningPorts '0'
        option LocalPorts '22 80'
 
+config statistics 'collectd_thermal'
+       option enable '0'
+       option IgnoreSelected '0'
+       option Device ''
+
 config statistics 'collectd_uptime'
        option enable '0'
 
index 49d8a09..df9af15 100755 (executable)
@@ -273,6 +273,12 @@ plugins = {
                { }
        },
 
+       cpufreq = {
+               { },
+               { },
+               { }
+       },
+
        csv     = {
                { "DataDir" },
                { "StoreRates" },
@@ -417,6 +423,12 @@ plugins = {
                { "LocalPorts", "RemotePorts" }
        },
 
+       thermal = {
+               { },
+               { "IgnoreSelected" },
+               { "Device" }
+       },
+
        unixsock = {
                { "SocketFile", "SocketGroup", "SocketPerms" },
                { },
diff --git a/applications/luci-app-travelmate/Makefile b/applications/luci-app-travelmate/Makefile
new file mode 100644 (file)
index 0000000..f4b1b0a
--- /dev/null
@@ -0,0 +1,13 @@
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI support for Travelmate
+LUCI_DEPENDS:=+travelmate
+LUCI_PKGARCH:=all
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-travelmate/luasrc/controller/travelmate.lua b/applications/luci-app-travelmate/luasrc/controller/travelmate.lua
new file mode 100644 (file)
index 0000000..27c19c4
--- /dev/null
@@ -0,0 +1,11 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.travelmate", package.seeall)
+
+function index()
+       if not nixio.fs.access("/etc/config/travelmate") then
+               return
+       end
+
+       entry({"admin", "services", "travelmate"}, cbi("travelmate"), _("Travelmate"), 60)
+end
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua
new file mode 100644 (file)
index 0000000..9050ae9
--- /dev/null
@@ -0,0 +1,53 @@
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("travelmate", translate("Travelmate"),
+       translate("Configuration of the Travelmate package to enable travel router functionality. ") .. [[</p>]] ..
+       translate("Brief advice: Create a wwan interface, configure it to use dhcp and " ..
+               "add it to the wan zone in firewall. Create the wifi interfaces to be used ('client' mode, " ..
+               "assigned to wwan network, left as disabled). Travelmate will try " ..
+               "to connect to the known wifi client interfaces in the defined order. ") ..
+       [[<a href="https://github.com/openwrt/packages/tree/master/net/travelmate/files/README.md" target="_blank">]] 
+       .. translate("Link to detailed advice")
+       .. [[</a>]] )
+
+-- General options
+
+s = m:section(NamedSection, "global", "travelmate", translate("Global options"))
+
+o = s:option(Flag, "trm_enabled", translate("Enable Travelmate"))
+o.rmempty = false
+o.default = 0
+
+o = s:option(Value, "trm_loop", translate("Loop timeout in seconds for wlan monitoring"),
+       translate("Default 30, range 5-60"))
+o.rmempty = false
+o.default = 30
+o.datatype = "range(5,60)"
+
+o = s:option(Value, "trm_maxretry", translate("Max. number of connection retries to an uplink"),
+       translate("Default 3, range 0-10. Set to 0 to allow unlimited retries"))
+o.rmempty = false
+o.default = 3
+o.datatype = "range(0,10)"
+
+-- Extra options
+
+e = m:section(NamedSection, "global", "travelmate", translate("Extra options"))
+
+a = e:option(Flag, "trm_debug", translate("Debug logging"))
+a.rmempty = true
+a.default = a.disabled
+
+a = e:option(Value, "trm_device", translate("Use only one radio, e.g. 'radio0'"),
+       translate("Default: empty = use all radios."))
+a.rmempty = true
+a.default = ""
+a.datatype = "uciname"
+
+a = e:option(Flag, "trm_iw", translate("Use iw for scanning"),
+       translate("Disable this if you want to use iwinfo instead of iw"))
+a.rmempty = true
+a.default = a.enabled
+
+return m
+
diff --git a/applications/luci-app-travelmate/po/templates/travelmate.pot b/applications/luci-app-travelmate/po/templates/travelmate.pot
new file mode 100644 (file)
index 0000000..533b3e2
--- /dev/null
@@ -0,0 +1,56 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid ""
+"Brief advice: Create a wwan interface, configure it to use dhcp and add it "
+"to the wan zone in firewall. Create the wifi interfaces to be used ('client' "
+"mode, assigned to wwan network, left as disabled). Travelmate will try to "
+"connect to the known wifi client interfaces in the defined order."
+msgstr ""
+
+msgid ""
+"Configuration of the Travelmate package to enable travel router "
+"functionality."
+msgstr ""
+
+msgid "Debug logging"
+msgstr ""
+
+msgid "Default 3, range 0-10. Set to 0 to allow unlimited retries"
+msgstr ""
+
+msgid "Default 30, range 5-60"
+msgstr ""
+
+msgid "Default: empty = use all radios."
+msgstr ""
+
+msgid "Disable this if you want to use iwinfo instead of iw"
+msgstr ""
+
+msgid "Enable Travelmate"
+msgstr ""
+
+msgid "Extra options"
+msgstr ""
+
+msgid "Global options"
+msgstr ""
+
+msgid "Link to detailed advice"
+msgstr ""
+
+msgid "Loop timeout in seconds for wlan monitoring"
+msgstr ""
+
+msgid "Max. number of connection retries to an uplink"
+msgstr ""
+
+msgid "Travelmate"
+msgstr ""
+
+msgid "Use iw for scanning"
+msgstr ""
+
+msgid "Use only one radio, e.g. 'radio0'"
+msgstr ""
diff --git a/applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate b/applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate
new file mode 100755 (executable)
index 0000000..f767677
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+       delete ucitrack.@travelmate[-1]
+       add ucitrack travelmate
+       set ucitrack.@travelmate[-1].init=travelmate
+       commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/applications/luci-app-wifischedule/Makefile b/applications/luci-app-wifischedule/Makefile
new file mode 100644 (file)
index 0000000..1708562
--- /dev/null
@@ -0,0 +1,22 @@
+# Copyright (c) 2016, prpl Foundation
+#
+# Permission to use, copy, modify, and/or distribute this software for any purpose with or without
+# fee is hereby granted, provided that the above copyright notice and this permission notice appear
+# in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
+# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
+# FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Author: Nils Koenig <openwrt@newk.it> 
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Turns WiFi on and off according to a schedule
+LUCI_DEPENDS:=+wifischedule
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-wifischedule/README.md b/applications/luci-app-wifischedule/README.md
new file mode 100644 (file)
index 0000000..591abb1
--- /dev/null
@@ -0,0 +1,86 @@
+# wifischedule
+Turns WiFi on and off according to a schedule on an openwrt router
+
+## Components
+* wifischedule: Shell script that creates cron jobs based on configuration provided in UCI and does all the other logic of enabling and disabling wifi with the use of `/sbin/wifi` and `/usr/bin/iwinfo`. Can be used standalone.
+* luci-app-wifischedule: LUCI frontend for creating the UCI configuration and triggering the actions. Depends on wifischedule.
+
+
+## Use cases
+You can create user-defined events when to enable or disable WiFi. 
+There are various use cases why you would like to do so:
+
+1. Reduce power consumption and therefore reduce CO2 emissions.
+2. Reduce emitted electromagnatic radiation.
+3. Force busincess hours when WiFi is available.
+
+Regarding 1: Please note, that you need to unload the wireless driver modules in order to get the most effect of saving power.
+In my test scenario only disabling WiFi saves about ~0.4 Watt, unloading the modules removes another ~0.4 Watt.
+
+Regarding 2: Think of a wireless accesspoint e.g. in your bedrom, kids room where you want to remove the ammount of radiation emitted.
+
+Regarding 3: E.g. in a company, why would wireless need to be enabled weekends if no one is there working? 
+Or think of an accesspoint in your kids room when you want the youngsters to sleep after 10 pm instead of facebooking...
+
+## Configuration
+You can create an arbitrary number of schedule events. Please note that there is on sanity check done wheather the start / stop times overlap or make sense.
+If start and stop time are equal, this leads to disabling the WiFi at the given time.
+
+Logging if enabled is done to the file `/var/log/wifi_schedule.log` and can be reviewed through the "View Logfile" tab.
+The cron jobs created can be reviewed through the "View Cron Jobs" tab.
+
+Please note that the "Unload Modules" function is currently considered as experimental. You can manually add / remove modules in the text field.
+The button "Determine Modules Automatically" tries to make a best guess determining regarding the driver module and its dependencies.
+When un-/loading the modules, there is a certain number of retries (`module_load`) performed.
+
+The option "Force disabling wifi even if stations associated" does what it says - when activated it simply shuts down WiFi.
+When unchecked, its checked every `recheck_interval` minutes if there are still stations associated. Once the stations disconnect, WiFi is disabled.
+
+Please note, that the parameters `module_load` and `recheck_interval` are only accessible through uci.
+
+## UCI Configuration `wifi_schedule`
+UCI configuration file: `/etc/config/wifi_schedule`:
+
+```
+config global
+        option logging '0'
+        option enabled '0'
+        option recheck_interval '10'
+        option modules_retries '10'
+
+config entry 'Businesshours'
+        option enabled '0'
+        option daysofweek 'Monday Tuesday Wednesday Thursday Friday'
+        option starttime '06:00'
+        option stoptime '22:00'
+        option forcewifidown '0'
+
+config entry 'Weekend'
+        option enabled '0'
+        option daysofweek 'Saturday Sunday'
+        option starttime '00:00'
+        option stoptime '00:00'
+        option forcewifidown '1'
+```
+
+## Script: `wifi_schedule.sh`
+This is the script that does the work. Make your changes to the UCI config file: `/etc/config/wifi_schedule`
+
+Then call the script as follows in order to get the necessary cron jobs created:
+
+`wifi_schedule.sh cron`
+
+All commands:
+```
+wifi_schedule.sh cron|start|stop|forcestop|recheck|getmodules|savemodules|help
+
+    cron: Create cronjob entries.
+    start: Start wifi.
+    stop: Stop wifi gracefully, i.e. check if there are stations associated and if so keep retrying.
+    forcestop: Stop wifi immediately.
+    recheck: Recheck if wifi can be disabled now.
+    getmodules: Returns a list of modules used by the wireless driver(s)
+    savemodules: Saves a list of automatic determined modules to UCI
+    help: This description.
+```
diff --git a/applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua b/applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua
new file mode 100644 (file)
index 0000000..a33c7aa
--- /dev/null
@@ -0,0 +1,32 @@
+-- Copyright (c) 2016, prpl Foundation
+--
+-- Permission to use, copy, modify, and/or distribute this software for any purpose with or without
+-- fee is hereby granted, provided that the above copyright notice and this permission notice appear
+-- in all copies.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
+-- INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
+-- FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+-- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+-- ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+--
+-- Author: Nils Koenig <openwrt@newk.it>
+
+module("luci.controller.wifischedule.wifi_schedule", package.seeall)  
+
+function index()
+     entry({"admin", "wifi_schedule"}, firstchild(), "Wifi Schedule", 60).dependent=false  
+     entry({"admin", "wifi_schedule", "tab_from_cbi"}, cbi("wifischedule/wifi_schedule"), "Schedule", 1)
+     entry({"admin", "wifi_schedule", "wifi_schedule"}, call("wifi_schedule_log"), "View Logfile", 2) 
+     entry({"admin", "wifi_schedule", "cronjob"}, call("view_crontab"), "View Cron Jobs", 3) 
+end
+
+function wifi_schedule_log()
+        local logfile = luci.sys.exec("cat /tmp/log/wifi_schedule.log")
+        luci.template.render("wifischedule/file_viewer", {title="Wifi Schedule Logfile", content=logfile})
+end
+
+function view_crontab()
+        local crontab = luci.sys.exec("cat /etc/crontabs/root")
+        luci.template.render("wifischedule/file_viewer", {title="Cron Jobs", content=crontab})
+end
diff --git a/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua b/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua
new file mode 100644 (file)
index 0000000..2cca476
--- /dev/null
@@ -0,0 +1,259 @@
+-- Copyright (c) 2016, prpl Foundation
+--
+-- Permission to use, copy, modify, and/or distribute this software for any purpose with or without
+-- fee is hereby granted, provided that the above copyright notice and this permission notice appear
+-- in all copies.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
+-- INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
+-- FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+-- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+-- ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+--
+-- Author: Nils Koenig <openwrt@newk.it>
+
+function file_exists(name)
+   local f=io.open(name,"r")
+   if f~=nil then io.close(f) return true else return false end
+end
+
+
+function time_validator(self, value, desc)
+    if value ~= nil then
+        
+        h_str, m_str = string.match(value, "^(%d%d?):(%d%d?)$")
+        h = tonumber(h_str)
+        m = tonumber(m_str)
+        if ( h ~= nil and
+             h >= 0   and
+             h <= 23  and
+             m ~= nil and
+             m >= 0   and
+             m <= 59) then
+            return value
+        end
+    end 
+    return nil, translate("The value '" .. desc .. "' is invalid")
+end
+
+-- -------------------------------------------------------------------------------------------------
+
+-- BEGIN Map
+m = Map("wifi_schedule", translate("Wifi Schedule"), translate("Defines a schedule when to turn on and off wifi.")) 
+function m.on_commit(self)
+    luci.sys.exec("/usr/bin/wifi_schedule.sh cron")
+end
+-- END Map
+
+-- BEGIN Global Section
+global_section = m:section(TypedSection, "global", "Global Settings")
+global_section.optional = false
+global_section.rmempty = false
+global_section.anonymous = true
+-- END Section
+
+-- BEGIN Global Enable Checkbox
+global_enable = global_section:option(Flag, "enabled", translate("Enable Wifi Schedule"))
+global_enable.optional=false; 
+global_enable.rmempty = false;
+
+function global_enable.validate(self, value, global_section)
+    if value == "1" then
+        if ( file_exists("/sbin/wifi") and
+             file_exists("/usr/bin/wifi_schedule.sh") )then
+            return value
+        else
+            return nil, translate("Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi")
+        end
+    else
+        return "0"
+    end
+end
+-- END Global Enable Checkbox
+
+
+-- BEGIN Global Logging Checkbox
+global_logging = global_section:option(Flag, "logging", translate("Enable logging"))
+global_logging.optional=false; 
+global_logging.rmempty = false;
+global_logging.default = 0
+-- END Global Enable Checkbox
+
+-- BEGIN Global Activate WiFi Button
+enable_wifi = global_section:option(Button, "enable_wifi", translate("Activate wifi"))
+function enable_wifi.write()
+    luci.sys.exec("/usr/bin/wifi_schedule.sh start manual")
+end
+-- END Global Activate Wifi Button
+
+-- BEGIN Global Disable WiFi Gracefully Button
+disable_wifi_gracefully = global_section:option(Button, "disable_wifi_gracefully", translate("Disable wifi gracefully"))
+function disable_wifi_gracefully.write()
+    luci.sys.exec("/usr/bin/wifi_schedule.sh stop manual")
+end
+-- END Global Disable Wifi Gracefully Button 
+
+-- BEGIN Disable WiFi Forced Button
+disable_wifi_forced = global_section:option(Button, "disable_wifi_forced", translate("Disabled wifi forced"))
+function disable_wifi_forced.write()
+    luci.sys.exec("/usr/bin/wifi_schedule.sh forcestop manual")
+end
+-- END Global Disable WiFi Forced Button
+
+-- BEGIN Global Unload Modules Checkbox
+global_unload_modules = global_section:option(Flag, "unload_modules", translate("Unload Modules (experimental; saves more power)"))
+global_unload_modules.optional = false;
+global_unload_modules.rmempty = false;
+global_unload_modules.default = 0
+-- END Global Unload Modules Checkbox
+
+
+-- BEGIN Modules
+modules = global_section:option(TextValue, "modules", "")
+modules:depends("unload_modules", global_unload_modules.enabled);
+modules.wrap    = "off"
+modules.rows    = 10
+
+function modules.cfgvalue(self, section)
+    mod=uci.get("wifi_schedule", section, "modules")
+    if mod == nil then
+        mod=""
+    end
+    return mod:gsub(" ", "\r\n")
+end
+
+function modules.write(self, section, value)
+    if value then
+        value_list = value:gsub("\r\n", " ")
+        ListValue.write(self, section, value_list)
+        uci.set("wifi_schedule", section, "modules", value_list)
+    end
+end
+-- END Modules
+
+-- BEGIN Determine Modules 
+determine_modules = global_section:option(Button, "determine_modules", translate("Determine Modules Automatically"))
+determine_modules:depends("unload_modules", global_unload_modules.enabled);
+function determine_modules.write(self, section)
+    output = luci.sys.exec("/usr/bin/wifi_schedule.sh getmodules")
+    modules:write(section, output)
+end
+-- END Determine Modules
+
+
+-- BEGIN Section
+d = m:section(TypedSection, "entry", "Schedule events")
+d.addremove = true  
+--d.anonymous = true
+-- END Section
+
+-- BEGIN Enable Checkbox
+c = d:option(Flag, "enabled", translate("Enable"))
+c.optional=false; c.rmempty = false;
+-- END Enable Checkbox
+
+
+-- BEGIN Day(s) of Week
+dow = d:option(MultiValue, "daysofweek", translate("Day(s) of Week"))
+dow.optional = false
+dow.rmempty = false
+dow:value("Monday")
+dow:value("Tuesday")
+dow:value("Wednesday")
+dow:value("Thursday")
+dow:value("Friday")
+dow:value("Saturday")
+dow:value("Sunday")
+-- END Day(s) of Weel
+
+-- BEGIN Start Wifi Dropdown
+starttime =  d:option(Value, "starttime", translate("Start WiFi"))
+starttime.optional=false; 
+starttime.rmempty = false;
+starttime:value("00:00")
+starttime:value("01:00")
+starttime:value("02:00")
+starttime:value("03:00")
+starttime:value("04:00")
+starttime:value("05:00")
+starttime:value("06:00")
+starttime:value("07:00")
+starttime:value("08:00")
+starttime:value("09:00")
+starttime:value("10:00")
+starttime:value("11:00")
+starttime:value("12:00")
+starttime:value("13:00")
+starttime:value("14:00")
+starttime:value("15:00")
+starttime:value("16:00")
+starttime:value("17:00")
+starttime:value("18:00")
+starttime:value("19:00")
+starttime:value("20:00")
+starttime:value("21:00")
+starttime:value("22:00")
+starttime:value("23:00")
+
+function starttime.validate(self, value, d)
+    return time_validator(self, value, translate("Start Time"))
+end
+
+-- END Start Wifi Dropdown
+
+
+-- BEGIN Stop Wifi Dropdown
+stoptime =  d:option(Value, "stoptime", translate("Stop WiFi"))
+stoptime.optional=false;
+stoptime.rmempty = false;
+stoptime:value("00:00")
+stoptime:value("01:00")
+stoptime:value("02:00")
+stoptime:value("03:00")
+stoptime:value("04:00")
+stoptime:value("05:00")
+stoptime:value("06:00")
+stoptime:value("07:00")
+stoptime:value("08:00")
+stoptime:value("09:00")
+stoptime:value("10:00")
+stoptime:value("11:00")
+stoptime:value("12:00")
+stoptime:value("13:00")
+stoptime:value("14:00")
+stoptime:value("15:00")
+stoptime:value("16:00")
+stoptime:value("17:00")
+stoptime:value("18:00")
+stoptime:value("19:00")
+stoptime:value("20:00")
+stoptime:value("21:00")
+stoptime:value("22:00")
+stoptime:value("23:00")
+
+function stoptime.validate(self, value, d)
+    return time_validator(self, value, translate("Stop Time"))
+end
+-- END Stop Wifi Dropdown
+
+
+-- BEGIN Force Wifi Stop Checkbox
+force_wifi = d:option(Flag, "forcewifidown", translate("Force disabling wifi even if stations associated"))
+force_wifi.default = false
+force_wifi.rmempty = false;
+
+function force_wifi.validate(self, value, d)
+    if value == "0" then
+        if file_exists("/usr/bin/iwinfo") then
+            return value
+        else
+            return nil, translate("Could not find required programm /usr/bin/iwinfo")
+        end
+    else
+        return "1"
+    end
+end
+-- END Force Wifi Checkbox
+
+
+return m
diff --git a/applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm b/applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm
new file mode 100644 (file)
index 0000000..f67a2be
--- /dev/null
@@ -0,0 +1,22 @@
+<%#
+Copyright (c) 2016, prpl Foundation
+
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without
+fee is hereby granted, provided that the above copyright notice and this permission notice appear
+in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
+FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Author: Nils Koenig <openwrt@newk.it>
+-%>
+
+<%+header%>
+<h2 name="title"><%=title%></h2>
+<div id="content_fileviewer">
+<textarea style="width: 100%" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+1%>" id="content_id"><%=content:pcdata()%></textarea>
+</div>
+<%+footer%>
index fdacb08..226a406 100644 (file)
@@ -1,17 +1,19 @@
 # General
-Translations are saved in the folder po/. You find the reference in po/templates/<package>.pot. The actual translation files can be found at po/<lang>/<package>.po .
+Translations are saved in the folder po/ for each module and application. You find the reference in po/templates/<package>.pot. The actual translation files can be found at po/[lang]/[package].po .
 
 In order to use the commands below you need to have the _gettext'' utilities (''msgcat'', ''msgfmt'', ''msgmerge_) installed on your system.
 
 # Rebuild po files
 If you want to rebuild the translations after you made changes to a package this is an easy way:
-
-       
-       ./build/i18n-scan.pl applications/[package] > po/templates/[application].pot
-       ./build/i18n-update.pl po [application].po
        
-*Note:* Some packages share translation files, in this case you need to scan through all their folders. The first command from above should then be:
+       ./build/i18n-scan.pl applications/[application] > applications/[application]/po/templates/[application_basename].pot
+       ./build/i18n-update.pl applications/[application]/po
 
+       Example:
+       ./build/i18n-scan.pl applications/luci-app-firewall > applications/luci-app-firewall/po/templates/firewall.pot
+       ./build/i18n-update.pl applications/luci-app-firewall/po
+       (note that the directory argument can be omitted for i18n-update.pl to update all apps)
        
-       ./build/i18n-scan.pl applications/[package-1] applications/[package-2] applications/[package-n] > po/templates/[application].pot
+*Note:* Some packages share translation files, in this case you need to scan through all their folders. The first command from above should then be:
        
+       ./build/i18n-scan.pl applications/[package-1] applications/[package-2] applications/[package-n] > [location of shared template]/[application].pot
diff --git a/luci.mk b/luci.mk
index eb034d2..2235cc5 100644 (file)
--- a/luci.mk
+++ b/luci.mk
@@ -150,18 +150,26 @@ LUCI_LIBRARYDIR = $(LUA_LIBRARYDIR)/luci
 
 define SrcDiet
        $(FIND) $(1) -type f -name '*.lua' | while read src; do \
-               if $(STAGING_DIR)/host/bin/lua $(STAGING_DIR)/host/bin/LuaSrcDiet \
-                       --noopt-binequiv -o "$$$$src.o" "$$$$src"; \
+               if LuaSrcDiet --noopt-binequiv -o "$$$$src.o" "$$$$src"; \
                then mv "$$$$src.o" "$$$$src"; fi; \
        done
 endef
 
+define SubstituteVersion
+       $(FIND) $(1) -type f -name '*.htm' | while read src; do \
+               $(SED) 's/<%# *\([^ ]*\)PKG_VERSION *%>/\1$(PKG_VERSION)/g' \
+                   -e 's/"\(<%= *\(media\|resource\) *%>[^"]*\.\(js\|css\)\)"/"\1?v=$(PKG_VERSION)"/g' \
+                       "$$$$src"; \
+       done
+endef
+
 define Package/$(PKG_NAME)/install
        if [ -d $(PKG_BUILD_DIR)/luasrc ]; then \
          $(INSTALL_DIR) $(1)$(LUCI_LIBRARYDIR); \
          cp -pR $(PKG_BUILD_DIR)/luasrc/* $(1)$(LUCI_LIBRARYDIR)/; \
          $(FIND) $(1)$(LUCI_LIBRARYDIR)/ -type f -name '*.luadoc' | $(XARGS) rm; \
          $(if $(CONFIG_LUCI_SRCDIET),$(call SrcDiet,$(1)$(LUCI_LIBRARYDIR)/),true); \
+         $(call SubstituteVersion,$(1)$(LUCI_LIBRARYDIR)/); \
        else true; fi
        if [ -d $(PKG_BUILD_DIR)/htdocs ]; then \
          $(INSTALL_DIR) $(1)$(HTDOCS); \
index f0763cb..972a451 100644 (file)
@@ -37,10 +37,9 @@ define Host/Compile
 endef
 
 define Host/Install
-       $(INSTALL_DIR) $(STAGING_DIR)/host/bin
-       $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin
-       $(INSTALL_BIN) src/po2lmo $(STAGING_DIR_HOST)/bin/po2lmo
-       $(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/LuaSrcDiet.lua $(STAGING_DIR)/host/bin/LuaSrcDiet
+       $(INSTALL_DIR) $(1)/bin
+       $(INSTALL_BIN) src/po2lmo $(1)/bin/po2lmo
+       $(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/LuaSrcDiet.lua $(1)/bin/LuaSrcDiet
 endef
 
 $(eval $(call HostBuild))
index c9a507e..6613690 100644 (file)
@@ -87,7 +87,7 @@ TZ = {
        { 'America/Cambridge Bay', 'MST7MDT,M3.2.0,M11.1.0' },
        { 'America/Campo Grande', 'AMT4AMST,M10.3.0/0,M2.3.0/0' },
        { 'America/Cancun', 'EST5' },
-       { 'America/Caracas', 'VET4:30' },
+       { 'America/Caracas', 'VET4' },
        { 'America/Cayenne', 'GFT3' },
        { 'America/Cayman', 'EST5' },
        { 'America/Chicago', 'CST6CDT,M3.2.0,M11.1.0' },
@@ -201,97 +201,99 @@ TZ = {
        { 'America/Winnipeg', 'CST6CDT,M3.2.0,M11.1.0' },
        { 'America/Yakutat', 'AKST9AKDT,M3.2.0,M11.1.0' },
        { 'America/Yellowknife', 'MST7MDT,M3.2.0,M11.1.0' },
-       { 'Antarctica/Casey', 'AWST-8' },
-       { 'Antarctica/Davis', 'DAVT-7' },
-       { 'Antarctica/DumontDUrville', 'DDUT-10' },
+       { 'Antarctica/Casey', '<+11>-11' },
+       { 'Antarctica/Davis', '<+07>-7' },
+       { 'Antarctica/DumontDUrville', '<+10>-10' },
        { 'Antarctica/Macquarie', 'MIST-11' },
-       { 'Antarctica/Mawson', 'MAWT-5' },
+       { 'Antarctica/Mawson', '<+05>-5' },
        { 'Antarctica/McMurdo', 'NZST-12NZDT,M9.5.0,M4.1.0/3' },
        { 'Antarctica/Palmer', 'CLT4CLST,M8.2.6/24,M5.2.6/24' },
-       { 'Antarctica/Rothera', 'ROTT3' },
-       { 'Antarctica/Syowa', 'SYOT-3' },
-       { 'Antarctica/Troll', 'UTC0CEST-2,M3.5.0/1,M10.5.0/3' },
-       { 'Antarctica/Vostok', 'VOST-6' },
+       { 'Antarctica/Rothera', '<-03>3' },
+       { 'Antarctica/Syowa', '<+03>-3' },
+       { 'Antarctica/Troll', '<+00>0<+02>-2,M3.5.0/1,M10.5.0/3' },
+       { 'Antarctica/Vostok', '<+06>-6' },
        { 'Arctic/Longyearbyen', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Asia/Aden', 'AST-3' },
-       { 'Asia/Almaty', 'ALMT-6' },
+       { 'Asia/Almaty', '<+06>-6' },
        { 'Asia/Amman', 'EET-2EEST,M3.5.4/24,M10.5.5/1' },
-       { 'Asia/Anadyr', 'ANAT-12' },
-       { 'Asia/Aqtau', 'AQTT-5' },
-       { 'Asia/Aqtobe', 'AQTT-5' },
-       { 'Asia/Ashgabat', 'TMT-5' },
+       { 'Asia/Anadyr', '<+12>-12' },
+       { 'Asia/Aqtau', '<+05>-5' },
+       { 'Asia/Aqtobe', '<+05>-5' },
+       { 'Asia/Ashgabat', '<+05>-5' },
        { 'Asia/Baghdad', 'AST-3' },
        { 'Asia/Bahrain', 'AST-3' },
-       { 'Asia/Baku', 'AZT-4' },
+       { 'Asia/Baku', '<+04>-4' },
        { 'Asia/Bangkok', 'ICT-7' },
        { 'Asia/Barnaul', '<+07>-7' },
        { 'Asia/Beirut', 'EET-2EEST,M3.5.0/0,M10.5.0/0' },
-       { 'Asia/Bishkek', 'KGT-6' },
+       { 'Asia/Bishkek', '<+06>-6' },
        { 'Asia/Brunei', 'BNT-8' },
-       { 'Asia/Chita', 'YAKT-9' },
+       { 'Asia/Chita', '<+09>-9' },
        { 'Asia/Choibalsan', 'CHOT-8CHOST,M3.5.6,M9.5.6/0' },
-       { 'Asia/Colombo', 'IST-5:30' },
+       { 'Asia/Colombo', '<+0530>-5:30' },
        { 'Asia/Damascus', 'EET-2EEST,M3.5.5/0,M10.5.5/0' },
        { 'Asia/Dhaka', 'BDT-6' },
        { 'Asia/Dili', 'TLT-9' },
        { 'Asia/Dubai', 'GST-4' },
-       { 'Asia/Dushanbe', 'TJT-5' },
-       { 'Asia/Gaza', 'EET-2EEST,M3.5.6/1,M10.3.6/144' },
-       { 'Asia/Hebron', 'EET-2EEST,M3.5.6/1,M10.3.6/144' },
+       { 'Asia/Dushanbe', '<+05>-5' },
+       { 'Asia/Famagusta', '<+03>-3' },
+       { 'Asia/Gaza', 'EET-2EEST,M3.5.6/1,M10.5.6/1' },
+       { 'Asia/Hebron', 'EET-2EEST,M3.5.6/1,M10.5.6/1' },
        { 'Asia/Ho Chi Minh', 'ICT-7' },
        { 'Asia/Hong Kong', 'HKT-8' },
        { 'Asia/Hovd', 'HOVT-7HOVST,M3.5.6,M9.5.6/0' },
-       { 'Asia/Irkutsk', 'IRKT-8' },
+       { 'Asia/Irkutsk', '<+08>-8' },
        { 'Asia/Jakarta', 'WIB-7' },
        { 'Asia/Jayapura', 'WIT-9' },
        { 'Asia/Jerusalem', 'IST-2IDT,M3.4.4/26,M10.5.0' },
        { 'Asia/Kabul', 'AFT-4:30' },
-       { 'Asia/Kamchatka', 'PETT-12' },
+       { 'Asia/Kamchatka', '<+12>-12' },
        { 'Asia/Karachi', 'PKT-5' },
        { 'Asia/Kathmandu', 'NPT-5:45' },
-       { 'Asia/Khandyga', 'YAKT-9' },
+       { 'Asia/Khandyga', '<+09>-9' },
        { 'Asia/Kolkata', 'IST-5:30' },
-       { 'Asia/Krasnoyarsk', 'KRAT-7' },
+       { 'Asia/Krasnoyarsk', '<+07>-7' },
        { 'Asia/Kuala Lumpur', 'MYT-8' },
        { 'Asia/Kuching', 'MYT-8' },
        { 'Asia/Kuwait', 'AST-3' },
        { 'Asia/Macau', 'CST-8' },
-       { 'Asia/Magadan', 'MAGT-10' },
+       { 'Asia/Magadan', '<+11>-11' },
        { 'Asia/Makassar', 'WITA-8' },
        { 'Asia/Manila', 'PHT-8' },
        { 'Asia/Muscat', 'GST-4' },
        { 'Asia/Nicosia', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
-       { 'Asia/Novokuznetsk', 'KRAT-7' },
-       { 'Asia/Novosibirsk', 'NOVT-6' },
-       { 'Asia/Omsk', 'OMST-6' },
-       { 'Asia/Oral', 'ORAT-5' },
+       { 'Asia/Novokuznetsk', '<+07>-7' },
+       { 'Asia/Novosibirsk', '<+07>-7' },
+       { 'Asia/Omsk', '<+06>-6' },
+       { 'Asia/Oral', '<+05>-5' },
        { 'Asia/Phnom Penh', 'ICT-7' },
        { 'Asia/Pontianak', 'WIB-7' },
        { 'Asia/Pyongyang', 'KST-8:30' },
        { 'Asia/Qatar', 'AST-3' },
-       { 'Asia/Qyzylorda', 'QYZT-6' },
-       { 'Asia/Rangoon', 'MMT-6:30' },
+       { 'Asia/Qyzylorda', '<+06>-6' },
        { 'Asia/Riyadh', 'AST-3' },
-       { 'Asia/Sakhalin', 'SAKT-11' },
-       { 'Asia/Samarkand', 'UZT-5' },
+       { 'Asia/Sakhalin', '<+11>-11' },
+       { 'Asia/Samarkand', '<+05>-5' },
        { 'Asia/Seoul', 'KST-9' },
        { 'Asia/Shanghai', 'CST-8' },
        { 'Asia/Singapore', 'SGT-8' },
-       { 'Asia/Srednekolymsk', 'SRET-11' },
+       { 'Asia/Srednekolymsk', '<+11>-11' },
        { 'Asia/Taipei', 'CST-8' },
-       { 'Asia/Tashkent', 'UZT-5' },
-       { 'Asia/Tbilisi', 'GET-4' },
+       { 'Asia/Tashkent', '<+05>-5' },
+       { 'Asia/Tbilisi', '<+04>-4' },
        { 'Asia/Tehran', 'IRST-3:30IRDT,J80/0,J264/0' },
        { 'Asia/Thimphu', 'BTT-6' },
        { 'Asia/Tokyo', 'JST-9' },
+       { 'Asia/Tomsk', '<+07>-7' },
        { 'Asia/Ulaanbaatar', 'ULAT-8ULAST,M3.5.6,M9.5.6/0' },
        { 'Asia/Urumqi', 'XJT-6' },
-       { 'Asia/Ust-Nera', 'VLAT-10' },
+       { 'Asia/Ust-Nera', '<+10>-10' },
        { 'Asia/Vientiane', 'ICT-7' },
-       { 'Asia/Vladivostok', 'VLAT-10' },
-       { 'Asia/Yakutsk', 'YAKT-9' },
-       { 'Asia/Yekaterinburg', 'YEKT-5' },
-       { 'Asia/Yerevan', 'AMT-4' },
+       { 'Asia/Vladivostok', '<+10>-10' },
+       { 'Asia/Yakutsk', '<+09>-9' },
+       { 'Asia/Yangon', 'MMT-6:30' },
+       { 'Asia/Yekaterinburg', '<+05>-5' },
+       { 'Asia/Yerevan', '<+04>-4' },
        { 'Atlantic/Azores', 'AZOT1AZOST,M3.5.0/0,M10.5.0/1' },
        { 'Atlantic/Bermuda', 'AST4ADT,M3.2.0,M11.1.0' },
        { 'Atlantic/Canary', 'WET0WEST,M3.5.0/1,M10.5.0' },
@@ -332,10 +334,11 @@ TZ = {
        { 'Europe/Guernsey', 'GMT0BST,M3.5.0/1,M10.5.0' },
        { 'Europe/Helsinki', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
        { 'Europe/Isle of Man', 'GMT0BST,M3.5.0/1,M10.5.0' },
-       { 'Europe/Istanbul', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Istanbul', '<+03>-3' },
        { 'Europe/Jersey', 'GMT0BST,M3.5.0/1,M10.5.0' },
        { 'Europe/Kaliningrad', 'EET-2' },
        { 'Europe/Kiev', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+       { 'Europe/Kirov', '<+03>-3' },
        { 'Europe/Lisbon', 'WET0WEST,M3.5.0/1,M10.5.0' },
        { 'Europe/Ljubljana', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/London', 'GMT0BST,M3.5.0/1,M10.5.0' },
@@ -343,7 +346,7 @@ TZ = {
        { 'Europe/Madrid', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Malta', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Mariehamn', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
-       { 'Europe/Minsk', 'MSK-3' },
+       { 'Europe/Minsk', '<+03>-3' },
        { 'Europe/Monaco', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Moscow', 'MSK-3' },
        { 'Europe/Oslo', 'CET-1CEST,M3.5.0,M10.5.0/3' },
@@ -352,7 +355,7 @@ TZ = {
        { 'Europe/Prague', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Riga', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
        { 'Europe/Rome', 'CET-1CEST,M3.5.0,M10.5.0/3' },
-       { 'Europe/Samara', 'SAMT-4' },
+       { 'Europe/Samara', '<+04>-4' },
        { 'Europe/San Marino', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Sarajevo', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Simferopol', 'MSK-3' },
@@ -367,7 +370,7 @@ TZ = {
        { 'Europe/Vatican', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Vienna', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Vilnius', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
-       { 'Europe/Volgograd', 'MSK-3' },
+       { 'Europe/Volgograd', '<+03>-3' },
        { 'Europe/Warsaw', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Zagreb', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Zaporozhye', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
@@ -377,7 +380,7 @@ TZ = {
        { 'Indian/Christmas', 'CXT-7' },
        { 'Indian/Cocos', 'CCT-6:30' },
        { 'Indian/Comoro', 'EAT-3' },
-       { 'Indian/Kerguelen', 'TFT-5' },
+       { 'Indian/Kerguelen', '<+05>-5' },
        { 'Indian/Mahe', 'SCT-4' },
        { 'Indian/Maldives', 'MVT-5' },
        { 'Indian/Mauritius', 'MUT-4' },
@@ -419,7 +422,7 @@ TZ = {
        { 'Pacific/Saipan', 'ChST-10' },
        { 'Pacific/Tahiti', 'TAHT10' },
        { 'Pacific/Tarawa', 'GILT-12' },
-       { 'Pacific/Tongatapu', 'TOT-13' },
+       { 'Pacific/Tongatapu', '<+13>-13<+14>,M11.1.0,M1.3.0/3' },
        { 'Pacific/Wake', 'WAKT-12' },
        { 'Pacific/Wallis', 'WFT-12' },
 }
index a8417e0..e5da7c6 100644 (file)
@@ -27,7 +27,7 @@ OFFSET = {
        cot   = -18000, -- COT
        mst   = -25200, -- MST
        mdt   = -21600, -- MDT
-       vet   = -16200, -- VET
+       vet   = -14400, -- VET
        gft   = -10800, -- GFT
        pst   = -28800, -- PST
        pdt   = -25200, -- PDT
@@ -49,59 +49,31 @@ OFFSET = {
        egst  =      0, -- EGST
        nst   = -12600, -- NST
        ndt   =  -9000, -- NDT
-       awst  =  28800, -- AWST
-       davt  =  25200, -- DAVT
-       ddut  =  36000, -- DDUT
        mist  =  39600, -- MIST
-       mawt  =  18000, -- MAWT
        nzst  =  43200, -- NZST
        nzdt  =  46800, -- NZDT
-       rott  = -10800, -- ROTT
-       syot  =  10800, -- SYOT
-       utc   =      0, -- UTC
-       vost  =  21600, -- VOST
-       almt  =  21600, -- ALMT
-       anat  =  43200, -- ANAT
-       aqtt  =  18000, -- AQTT
-       tmt   =  18000, -- TMT
-       azt   =  14400, -- AZT
        ict   =  25200, -- ICT
-       kgt   =  21600, -- KGT
        bnt   =  28800, -- BNT
-       yakt  =  32400, -- YAKT
        chot  =  28800, -- CHOT
        chost =  32400, -- CHOST
-       ist   =  19800, -- IST
        bdt   =  21600, -- BDT
        tlt   =  32400, -- TLT
        gst   =  14400, -- GST
-       tjt   =  18000, -- TJT
        hkt   =  28800, -- HKT
        hovt  =  25200, -- HOVT
        hovst =  28800, -- HOVST
-       irkt  =  28800, -- IRKT
        wib   =  25200, -- WIB
        wit   =  32400, -- WIT
+       ist   =   7200, -- IST
+       idt   =  10800, -- IDT
        aft   =  16200, -- AFT
-       pett  =  43200, -- PETT
        pkt   =  18000, -- PKT
        npt   =  20700, -- NPT
-       krat  =  25200, -- KRAT
        myt   =  28800, -- MYT
-       magt  =  36000, -- MAGT
        wita  =  28800, -- WITA
        pht   =  28800, -- PHT
-       novt  =  21600, -- NOVT
-       omst  =  21600, -- OMST
-       orat  =  18000, -- ORAT
        kst   =  30600, -- KST
-       qyzt  =  21600, -- QYZT
-       mmt   =  23400, -- MMT
-       sakt  =  39600, -- SAKT
-       uzt   =  18000, -- UZT
        sgt   =  28800, -- SGT
-       sret  =  39600, -- SRET
-       get   =  14400, -- GET
        irst  =  12600, -- IRST
        irdt  =  16200, -- IRDT
        btt   =  21600, -- BTT
@@ -109,8 +81,7 @@ OFFSET = {
        ulat  =  28800, -- ULAT
        ulast =  32400, -- ULAST
        xjt   =  21600, -- XJT
-       vlat  =  36000, -- VLAT
-       yekt  =  18000, -- YEKT
+       mmt   =  23400, -- MMT
        azot  =  -3600, -- AZOT
        azost =      0, -- AZOST
        cvt   =  -3600, -- CVT
@@ -121,12 +92,11 @@ OFFSET = {
        acwst =  31500, -- ACWST
        lhst  =  37800, -- LHST
        lhdt  =  39600, -- LHDT
+       awst  =  28800, -- AWST
        msk   =  10800, -- MSK
-       samt  =  14400, -- SAMT
        iot   =  21600, -- IOT
        cxt   =  25200, -- CXT
        cct   =  23400, -- CCT
-       tft   =  18000, -- TFT
        sct   =  14400, -- SCT
        mvt   =  18000, -- MVT
        mut   =  14400, -- MUT
@@ -163,7 +133,6 @@ OFFSET = {
        ckt   = -36000, -- CKT
        taht  = -36000, -- TAHT
        gilt  =  43200, -- GILT
-       tot   =  46800, -- TOT
        wakt  =  43200, -- WAKT
        wft   =  43200, -- WFT
 }
index 1e44147..3012e8e 100644 (file)
@@ -289,8 +289,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Es crearà una xarxa addicional si deixes això sense marcar."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1539,12 +1539,12 @@ msgstr "Es requereix JavaScript!"
 msgid "Join Network"
 msgstr "Uneix-te a la xarxa"
 
-msgid "Join Network: Settings"
-msgstr "Unir-se a la xarxa: Ajusts"
-
 msgid "Join Network: Wireless Scan"
 msgstr ""
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr ""
 
@@ -2271,7 +2271,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3593,6 +3593,12 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Enrere"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Es crearà una xarxa addicional si deixes això sense marcar."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Unir-se a la xarxa: Ajusts"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index b0ab326..082f0bb 100644 (file)
@@ -289,8 +289,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Pokud není zaškrtnuto, bude vytvořena dodatečná síť."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1552,12 +1552,12 @@ msgstr "Vyžadován JavaScript!"
 msgid "Join Network"
 msgstr "Připojit k síti"
 
-msgid "Join Network: Settings"
-msgstr "Připojit k síti: nastavení"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Připojit k síti: Vyhledání bezdrátových sítí"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Zachovat nastavení"
 
@@ -2296,7 +2296,7 @@ msgstr ""
 "Po takovém množství LCP echo selhání předpokládám, že peer je mrtvý. "
 "Použijte 0 pro ignorování chyb"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3663,6 +3663,12 @@ msgstr "ano"
 msgid "« Back"
 msgstr "« Zpět"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Pokud není zaškrtnuto, bude vytvořena dodatečná síť."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Připojit k síti: nastavení"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index 8d72612..2fe3b80 100644 (file)
@@ -288,9 +288,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
+msgid "An additional network will be created if you leave this checked."
 msgstr ""
-"Erzeugt ein zusätzliches Netzwerk wenn diese Option nicht ausgewählt ist"
 
 msgid "Annex"
 msgstr ""
@@ -1553,12 +1552,12 @@ msgstr "Java-Script benötigt!"
 msgid "Join Network"
 msgstr "Netzwerk beitreten"
 
-msgid "Join Network: Settings"
-msgstr "Netzwerk beitreten: Einstellungen"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Netzwerk beitreten: Suche nach Netzwerken"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Konfiguration behalten"
 
@@ -2302,7 +2301,7 @@ msgstr ""
 "Deklariere den Client als tot nach der angegebenen Anzahl von LCP Echo "
 "Fehlschlägen, nutze den Wert 0 um Fehler zu ignorieren"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3688,6 +3687,13 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Zurück"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr ""
+#~ "Erzeugt ein zusätzliches Netzwerk wenn diese Option nicht ausgewählt ist"
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Netzwerk beitreten: Einstellungen"
+
 #~ msgid "CPU"
 #~ msgstr "Prozessor"
 
index 7b716ad..0d35022 100644 (file)
@@ -296,8 +296,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Ένα επιπλέον δίκτυο θα δημιουργηθεί εάν αυτό αφεθεί κενό"
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1567,10 +1567,10 @@ msgstr "Απαιτείται Javascript!"
 msgid "Join Network"
 msgstr ""
 
-msgid "Join Network: Settings"
+msgid "Join Network: Wireless Scan"
 msgstr ""
 
-msgid "Join Network: Wireless Scan"
+msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
@@ -2301,7 +2301,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 #, fuzzy
@@ -3615,6 +3615,9 @@ msgstr "ναι"
 msgid "« Back"
 msgstr "« Πίσω"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Ένα επιπλέον δίκτυο θα δημιουργηθεί εάν αυτό αφεθεί κενό"
+
 #~ msgid "Port %d"
 #~ msgstr "Θύρα %d"
 
index 82a4e72..b032f49 100644 (file)
@@ -287,8 +287,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "An additional network will be created if you leave this unchecked."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1536,10 +1536,10 @@ msgstr ""
 msgid "Join Network"
 msgstr "Join Network"
 
-msgid "Join Network: Settings"
+msgid "Join Network: Wireless Scan"
 msgstr ""
 
-msgid "Join Network: Wireless Scan"
+msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
@@ -2268,7 +2268,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3571,5 +3571,8 @@ msgstr ""
 msgid "« Back"
 msgstr "« Back"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "An additional network will be created if you leave this unchecked."
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
index de9a645..f69add2 100644 (file)
@@ -293,8 +293,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Se creará una red adicional si deja esto desmarcado."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1566,12 +1566,12 @@ msgstr "¡Se necesita JavaScript!"
 msgid "Join Network"
 msgstr "Unirse a Red"
 
-msgid "Join Network: Settings"
-msgstr "Unirse a Red: Configuración"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Unirse a una red: Exploración inalámbrica"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Conservar la configuración del router"
 
@@ -2310,7 +2310,7 @@ msgstr ""
 "Asumir que el otro estará muerto tras estos fallos de echo LCP, use 0 para "
 "ignorar fallos"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3691,6 +3691,12 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Volver"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Se creará una red adicional si deja esto desmarcado."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Unirse a Red: Configuración"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index fcde931..b7d8119 100644 (file)
@@ -299,8 +299,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Un réseau supplémentaire sera créé si vous laissé ceci décoché."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1577,12 +1577,12 @@ msgstr "Nécessite un Script Java !"
 msgid "Join Network"
 msgstr "Rejoindre un réseau"
 
-msgid "Join Network: Settings"
-msgstr "Rejoindre un réseau : paramètres"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Rejoindre un réseau : recherche des réseaux sans-fil"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Garder le paramètrage"
 
@@ -2323,7 +2323,7 @@ msgstr ""
 "Suppose que le distant a disparu une fois le nombre donné d'erreurs d'échos "
 "LCP ; utiliser 0 pour ignorer ces erreurs"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3709,6 +3709,12 @@ msgstr "oui"
 msgid "« Back"
 msgstr "« Retour"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Un réseau supplémentaire sera créé si vous laissé ceci décoché."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Rejoindre un réseau : paramètres"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index 3c2d784..71fe9ce 100644 (file)
@@ -286,9 +286,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-#, fuzzy
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "רשת נוספת תווצר אם תשאיר את זה לא מסומן"
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1512,10 +1511,10 @@ msgstr ""
 msgid "Join Network"
 msgstr ""
 
-msgid "Join Network: Settings"
+msgid "Join Network: Wireless Scan"
 msgstr ""
 
-msgid "Join Network: Wireless Scan"
+msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
@@ -2236,7 +2235,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3524,5 +3523,9 @@ msgstr "כן"
 msgid "« Back"
 msgstr "<< אחורה"
 
+#, fuzzy
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "רשת נוספת תווצר אם תשאיר את זה לא מסומן"
+
 #~ msgid "CPU"
 #~ msgstr "מעבד"
index d71bd69..4ce0351 100644 (file)
@@ -292,8 +292,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Amennyiben ezt jelöletlenül hagyja, egy további hálózat jön létre"
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1566,12 +1566,12 @@ msgstr "Javascript szükséges!"
 msgid "Join Network"
 msgstr "Csatlakozás a hálózathoz"
 
-msgid "Join Network: Settings"
-msgstr "Csatlakozás a hálózathoz: Beállítások"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Csatlakozás a hálózathoz: vezetéknélküli hálózatok keresése"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Beállítások megtartása"
 
@@ -2313,7 +2313,7 @@ msgstr ""
 "A peer halottnak tekintése a megadott számú LCP echo hibák után. Használjon "
 "0-t a hibák figyelmen kívül hagyásához."
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3698,6 +3698,12 @@ msgstr "igen"
 msgid "« Back"
 msgstr "« Vissza"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Amennyiben ezt jelöletlenül hagyja, egy további hálózat jön létre"
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Csatlakozás a hálózathoz: Beállítások"
+
 #~ msgid "CPU"
 #~ msgstr "Processzor"
 
index 2bc5dda..db7c4b4 100644 (file)
@@ -299,8 +299,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Sarà creata una rete aggiuntiva se lasci questo senza spunta."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1568,12 +1568,12 @@ msgstr "Richiesto Java Script!"
 msgid "Join Network"
 msgstr "Aggiungi Rete"
 
-msgid "Join Network: Settings"
-msgstr "Aggiunta Rete: Impostazioni"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Aggiunta Rete: Rilevamento Wireless"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Mantieni le Impostazioni"
 
@@ -2307,7 +2307,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3651,6 +3651,12 @@ msgstr "Sì"
 msgid "« Back"
 msgstr "« Indietro"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Sarà creata una rete aggiuntiva se lasci questo senza spunta."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Aggiunta Rete: Impostazioni"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index 740c676..d2a953f 100644 (file)
@@ -286,8 +286,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "チェックボックスがオフの場合、追加のネットワークが作成されます。"
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1549,12 +1549,12 @@ msgstr "JavaScriptを有効にしてください!"
 msgid "Join Network"
 msgstr "ネットワークに接続する"
 
-msgid "Join Network: Settings"
-msgstr "ネットワークに接続する: 設定"
-
 msgid "Join Network: Wireless Scan"
 msgstr "ネットワークに接続する: 無線LANスキャン"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "設定を保持する"
 
@@ -2290,7 +2290,7 @@ msgstr ""
 "設定回数のLCP echo 確認失敗後、ピアノードがダウンしているものと見なします。0"
 "を設定した場合、失敗しても無視します"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3661,6 +3661,12 @@ msgstr "はい"
 msgid "« Back"
 msgstr "« 戻る"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "チェックボックスがオフの場合、追加のネットワークが作成されます。"
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "ネットワークに接続する: 設定"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index 5e348d6..3aaf0c0 100644 (file)
@@ -276,7 +276,7 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
+msgid "An additional network will be created if you leave this checked."
 msgstr ""
 
 msgid "Annex"
@@ -1507,10 +1507,10 @@ msgstr ""
 msgid "Join Network"
 msgstr "Gabung Rangkaian"
 
-msgid "Join Network: Settings"
+msgid "Join Network: Wireless Scan"
 msgstr ""
 
-msgid "Join Network: Wireless Scan"
+msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
@@ -2240,7 +2240,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
index 793d381..579ea24 100644 (file)
@@ -285,8 +285,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Et nytt nettverk vil bli opprettet hvis du tar bort haken."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1544,12 +1544,12 @@ msgstr "Java Script kreves!"
 msgid "Join Network"
 msgstr "Koble til nettverket"
 
-msgid "Join Network: Settings"
-msgstr "Koble til nettverk: Innstilling"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Koble til nettverk: Trådløs Skanning"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Behold innstillinger"
 
@@ -2288,7 +2288,7 @@ msgstr ""
 "Annta at peer er uten forbindelse om angitt LCP ekko feiler, bruk verdi 0 "
 "for å overse feil"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3663,6 +3663,12 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Tilbake"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Et nytt nettverk vil bli opprettet hvis du tar bort haken."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Koble til nettverk: Innstilling"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index 4e6152c..4619ad2 100644 (file)
@@ -300,9 +300,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
+msgid "An additional network will be created if you leave this checked."
 msgstr ""
-"Zostanie utworzona dodatkowa sieć jeśli zostawisz tą opcję niezaznaczoną."
 
 msgid "Annex"
 msgstr ""
@@ -1590,12 +1589,12 @@ msgstr "Java Script jest wymagany!"
 msgid "Join Network"
 msgstr "Połącz z siecią"
 
-msgid "Join Network: Settings"
-msgstr "Przyłącz do sieci: Ustawienia"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Przyłącz do sieci: Skanuj sieci WiFi"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Zachowaj ustawienia"
 
@@ -2336,7 +2335,7 @@ msgstr ""
 "Zakładaj że klient jest martwy po danej ilości błedów odpowiedzi echa LCP, "
 "wpisz 0 aby zignorować błędy"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3730,6 +3729,13 @@ msgstr "tak"
 msgid "« Back"
 msgstr "« Wróć"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr ""
+#~ "Zostanie utworzona dodatkowa sieć jeśli zostawisz tą opcję niezaznaczoną."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Przyłącz do sieci: Ustawienia"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index fda1605..e61ad6c 100644 (file)
@@ -300,8 +300,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Uma rede adicional será criada se você deixar isto desmarcado."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1585,12 +1585,12 @@ msgstr "É necessário Java Script!"
 msgid "Join Network"
 msgstr "Conectar à Rede"
 
-msgid "Join Network: Settings"
-msgstr "Conectar à Rede: Configurações"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Conectar à Rede: Busca por Rede Sem Fio"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Manter configurações"
 
@@ -2341,7 +2341,7 @@ msgstr ""
 "Assumir que o parceiro está morto depois de uma data quantidade de falhas de "
 "echo do LCP. Use 0 para ignorar as falhas"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3734,6 +3734,12 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Uma rede adicional será criada se você deixar isto desmarcado."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Conectar à Rede: Configurações"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index 05bdb76..126ce53 100644 (file)
@@ -298,8 +298,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Uma rede adicional será criada se deixar isto desmarcado."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1568,12 +1568,12 @@ msgstr "É necessário Javascript!"
 msgid "Join Network"
 msgstr "Associar Rede"
 
-msgid "Join Network: Settings"
-msgstr "Associar Rede: Definições"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Associar Rede: Procurar Redes Wireless"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Manter definições"
 
@@ -2308,7 +2308,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3659,6 +3659,12 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Uma rede adicional será criada se deixar isto desmarcado."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Associar Rede: Definições"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index 73f9fb1..58a22c0 100644 (file)
@@ -284,9 +284,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
+msgid "An additional network will be created if you leave this checked."
 msgstr ""
-"Daca lasati aceasta optiune neselectata va fi creata o retea aditionala"
 
 msgid "Annex"
 msgstr ""
@@ -1509,10 +1508,10 @@ msgstr "Ai nevoie de Java Script !"
 msgid "Join Network"
 msgstr ""
 
-msgid "Join Network: Settings"
+msgid "Join Network: Wireless Scan"
 msgstr ""
 
-msgid "Join Network: Wireless Scan"
+msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
@@ -2233,7 +2232,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3516,6 +3515,10 @@ msgstr "da"
 msgid "« Back"
 msgstr "« Inapoi"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr ""
+#~ "Daca lasati aceasta optiune neselectata va fi creata o retea aditionala"
+
 #~ msgid "CPU"
 #~ msgstr "Procesor"
 
index 34dde6b..cb7bfc1 100644 (file)
@@ -297,8 +297,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Если вы не выберите эту опцию, то будет создана дополнительная сеть."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1572,12 +1572,12 @@ msgstr "Требуется Java Script!"
 msgid "Join Network"
 msgstr "Подключение к сети"
 
-msgid "Join Network: Settings"
-msgstr "Подключение к сети: настройки"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Подключение к сети: сканирование"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Сохранить настройки"
 
@@ -2318,7 +2318,7 @@ msgstr ""
 "Предполагать, что узел недоступен после указанного количества ошибок "
 "получения эхо-пакета LCP, введите 0 для игнорирования ошибок"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3701,6 +3701,13 @@ msgstr "да"
 msgid "« Back"
 msgstr "« Назад"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr ""
+#~ "Если вы не выберите эту опцию, то будет создана дополнительная сеть."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Подключение к сети: настройки"
+
 #~ msgid "CPU"
 #~ msgstr "ЦП"
 
index 0d87051..a715a59 100644 (file)
@@ -270,7 +270,7 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
+msgid "An additional network will be created if you leave this checked."
 msgstr ""
 
 msgid "Annex"
@@ -1483,10 +1483,10 @@ msgstr ""
 msgid "Join Network"
 msgstr ""
 
-msgid "Join Network: Settings"
+msgid "Join Network: Wireless Scan"
 msgstr ""
 
-msgid "Join Network: Wireless Scan"
+msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
@@ -2207,7 +2207,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
index 73a88b8..4c08e4e 100644 (file)
@@ -276,7 +276,7 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
+msgid "An additional network will be created if you leave this checked."
 msgstr ""
 
 msgid "Annex"
@@ -1489,10 +1489,10 @@ msgstr ""
 msgid "Join Network"
 msgstr ""
 
-msgid "Join Network: Settings"
+msgid "Join Network: Wireless Scan"
 msgstr ""
 
-msgid "Join Network: Wireless Scan"
+msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
@@ -2213,7 +2213,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
index df2892b..a10dbea 100644 (file)
@@ -263,7 +263,7 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
+msgid "An additional network will be created if you leave this checked."
 msgstr ""
 
 msgid "Annex"
@@ -1476,10 +1476,10 @@ msgstr ""
 msgid "Join Network"
 msgstr ""
 
-msgid "Join Network: Settings"
+msgid "Join Network: Wireless Scan"
 msgstr ""
 
-msgid "Join Network: Wireless Scan"
+msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
@@ -2200,7 +2200,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
index a5a5338..d674f51 100644 (file)
@@ -283,7 +283,7 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
+msgid "An additional network will be created if you leave this checked."
 msgstr ""
 
 msgid "Annex"
@@ -1496,10 +1496,10 @@ msgstr ""
 msgid "Join Network"
 msgstr ""
 
-msgid "Join Network: Settings"
+msgid "Join Network: Wireless Scan"
 msgstr ""
 
-msgid "Join Network: Wireless Scan"
+msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
@@ -2220,7 +2220,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
index 95c686e..b1fe0e7 100644 (file)
@@ -307,8 +307,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "Якщо ви залишите це невибраним, буде створена додаткова мережа."
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1579,12 +1579,12 @@ msgstr "Потрібен Java Script!"
 msgid "Join Network"
 msgstr "Підключення до мережі"
 
-msgid "Join Network: Settings"
-msgstr "Підключення до мережі: Настройки"
-
 msgid "Join Network: Wireless Scan"
 msgstr "Підключення до мережі: Сканування бездротових мереж"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "Зберегти настройки"
 
@@ -2329,7 +2329,7 @@ msgstr ""
 "Вважати вузол недоступним після визначеної кількості невдач отримання ехо-"
 "пакета LCP, використовуйте 0, щоб ігнорувати невдачі"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3716,6 +3716,12 @@ msgstr "так"
 msgid "« Back"
 msgstr "« Назад"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "Якщо ви залишите це невибраним, буде створена додаткова мережа."
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "Підключення до мережі: Настройки"
+
 #~ msgid "CPU"
 #~ msgstr "ЦП"
 
index 0e37856..0160c97 100644 (file)
@@ -277,7 +277,7 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
+msgid "An additional network will be created if you leave this checked."
 msgstr ""
 
 msgid "Annex"
@@ -1511,10 +1511,10 @@ msgstr ""
 msgid "Join Network"
 msgstr ""
 
-msgid "Join Network: Settings"
+msgid "Join Network: Wireless Scan"
 msgstr ""
 
-msgid "Join Network: Wireless Scan"
+msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
@@ -2243,7 +2243,7 @@ msgid ""
 "ignore failures"
 msgstr ""
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
index dbc4df8..a2d1e47 100644 (file)
@@ -283,8 +283,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr "总是广播默认路由"
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "取消选中将会另外创建一个新网络,而不会覆盖当前网络设置"
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1508,12 +1508,12 @@ msgstr "需要Java Script!"
 msgid "Join Network"
 msgstr "加入网络"
 
-msgid "Join Network: Settings"
-msgstr "加入网络:设置"
-
 msgid "Join Network: Wireless Scan"
 msgstr "加入网络:搜索无线"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "保留配置"
 
@@ -2233,7 +2233,7 @@ msgid ""
 "ignore failures"
 msgstr "在指定数量的LCP响应故障后假定链路已断开,0为忽略故障"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3556,6 +3556,12 @@ msgstr "是"
 msgid "« Back"
 msgstr "« 后退"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "取消选中将会另外创建一个新网络,而不会覆盖当前网络设置"
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "加入网络:设置"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index d1d17ad..2845c99 100644 (file)
@@ -280,8 +280,8 @@ msgstr ""
 msgid "Always announce default router"
 msgstr ""
 
-msgid "An additional network will be created if you leave this unchecked."
-msgstr "取消選取將會另外建立一個新網路,而不會覆蓋目前的網路設定"
+msgid "An additional network will be created if you leave this checked."
+msgstr ""
 
 msgid "Annex"
 msgstr ""
@@ -1519,12 +1519,12 @@ msgstr "需要Java腳本"
 msgid "Join Network"
 msgstr "加入網路"
 
-msgid "Join Network: Settings"
-msgstr "加入網路的設定"
-
 msgid "Join Network: Wireless Scan"
 msgstr "加入網路:無線網路掃描"
 
+msgid "Joining Network: %q"
+msgstr ""
+
 msgid "Keep settings"
 msgstr "保持設定值"
 
@@ -2248,7 +2248,7 @@ msgid ""
 "ignore failures"
 msgstr "假若在給于多次的 LCP 呼叫失敗後終點將死, 使用0忽略失敗"
 
-msgid "Prevent listening on thise interfaces."
+msgid "Prevent listening on these interfaces."
 msgstr ""
 
 msgid "Prevents client-to-client communication"
@@ -3582,6 +3582,12 @@ msgstr "是的"
 msgid "« Back"
 msgstr "« 倒退"
 
+#~ msgid "An additional network will be created if you leave this unchecked."
+#~ msgstr "取消選取將會另外建立一個新網路,而不會覆蓋目前的網路設定"
+
+#~ msgid "Join Network: Settings"
+#~ msgstr "加入網路的設定"
+
 #~ msgid "CPU"
 #~ msgstr "CPU"
 
index a443742..baa3ac5 100644 (file)
@@ -22,8 +22,3 @@ config internal ccache
        option enable 1
                
 config internal themes
-
-config internal 'diag'
-       option ping 'dev.openwrt.org'
-       option route 'dev.openwrt.org'
-       option dns 'dev.openwrt.org'
index aaf045c..10636a4 100644 (file)
@@ -251,7 +251,7 @@ o:depends("nonwildcard", true)
 
 o = s:taboption("general", DynamicList, "notinterface",
        translate("Exclude interfaces"),
-       translate("Prevent listening on thise interfaces."))
+       translate("Prevent listening on these interfaces."))
 o.optional = true
 o:depends("nonwildcard", true)
 
index 96b8b4d..05b27a9 100644 (file)
@@ -16,7 +16,7 @@ if not iw then
        return
 end
 
-m = SimpleForm("network", translate("Join Network: Settings"))
+m = SimpleForm("network", translate("Joining Network: %q", http.formvalue("join")))
 m.cancel = translate("Back to scan results")
 m.reset = false
 
@@ -44,9 +44,9 @@ m.hidden = {
 
 if iw and iw.mbssid_support then
        replace = m:field(Flag, "replace", translate("Replace wireless configuration"),
-               translate("An additional network will be created if you leave this unchecked."))
+               translate("An additional network will be created if you leave this checked."))
 
-       function replace.cfgvalue() return "1" end
+       function replace.cfgvalue() return "0" end
 else
        replace = m:field(DummyValue, "replace", translate("Replace wireless configuration"))
        replace.default = translate("The hardware is not multi-SSID capable and the existing " ..
diff --git a/modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full b/modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full
new file mode 100755 (executable)
index 0000000..372eb15
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+if [ "$(uci -q get luci.diag)" != "internal" ]; then
+       host=""
+
+       if [ -s /etc/os-release ]; then
+               . /etc/os-release
+               host="${HOME_URL:-${BUG_URL:-$LEDE_DEVICE_MANUFACTURER_URL}}"
+               host="${host#*://}"
+               host="${host%%/*}"
+       fi
+
+       uci -q batch <<-EOF >/dev/null
+               set luci.diag=internal
+               set luci.diag.dns='${host:-openwrt.org}'
+               set luci.diag.ping='${host:-openwrt.org}'
+               set luci.diag.route='${host:-openwrt.org}'
+               commit luci
+       EOF
+fi
+
+exit 0
diff --git a/protocols/luci-proto-wireguard/Makefile b/protocols/luci-proto-wireguard/Makefile
new file mode 100644 (file)
index 0000000..ed94a55
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# Copyright (C) 2016 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for WireGuard VPN
+LUCI_DEPENDS:=+kmod-wireguard +wireguard-tools
+
+PKG_MAINTAINER:=Dan Luedtke <mail@danrl.com>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua b/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
new file mode 100644 (file)
index 0000000..774c6db
--- /dev/null
@@ -0,0 +1,148 @@
+-- Copyright 2016 Dan Luedtke <mail@danrl.com>
+-- Licensed to the public under the Apache License 2.0.
+
+
+local map, section, net = ...
+local ifname = net:get_interface():name()
+local private_key, listen_port
+local metric, mtu, preshared_key
+local peers, public_key, allowed_ips, endpoint, persistent_keepalive
+
+
+-- general ---------------------------------------------------------------------
+
+private_key = section:taboption(
+  "general",
+  Value,
+  "private_key",
+  translate("Private Key"),
+  translate("Required. Base64-encoded private key for this interface.")
+)
+private_key.password = true
+private_key.datatype = "rangelength(44, 44)"
+private_key.optional = false
+
+
+listen_port = section:taboption(
+  "general",
+  Value,
+  "listen_port",
+  translate("Listen Port"),
+  translate("Optional. UDP port used for outgoing and incoming packets.")
+)
+listen_port.datatype = "port"
+listen_port.placeholder = "51820"
+listen_port.optional = true
+
+
+-- advanced --------------------------------------------------------------------
+
+metric = section:taboption(
+  "advanced",
+  Value,
+  "metric",
+  translate("Metric"),
+  translate("Optional.")
+)
+metric.datatype = "uinteger"
+metric.placeholder = "0"
+metric.optional = true
+
+
+mtu = section:taboption(
+  "advanced",
+  Value,
+  "mtu",
+  translate("MTU"),
+  translate("Optional. Maximum Transmission Unit of tunnel interface.")
+)
+mtu.datatype = "range(1280,1423)"
+mtu.placeholder = "1423"
+mtu.optional = true
+
+
+preshared_key = section:taboption(
+  "advanced",
+  Value,
+  "preshared_key",
+  translate("Preshared Key"),
+  translate("Optional. Adds in an additional layer of symmetric-key " ..
+            "cryptography for post-quantum resistance.")
+)
+preshared_key.password = true
+preshared_key.datatype = "rangelength(44, 44)"
+preshared_key.optional = true
+
+
+-- peers -----------------------------------------------------------------------
+
+peers = map:section(
+  TypedSection,
+  "wireguard_" .. ifname,
+  translate("Peers"),
+  translate("Further information about WireGuard interfaces and peers " ..
+            "at <a href=\"http://wireguard.io\">wireguard.io</a>.")
+)
+peers.template = "cbi/tsection"
+peers.anonymous = true
+peers.addremove = true
+
+
+public_key = peers:option(
+  Value,
+  "public_key",
+  translate("Public Key"),
+  translate("Required. Public key of peer.")
+)
+public_key.datatype = "rangelength(44, 44)"
+public_key.optional = false
+
+
+allowed_ips = peers:option(
+  DynamicList,
+  "allowed_ips",
+  translate("Allowed IPs"),
+  translate("Required. IP addresses and prefixes that this peer is allowed " ..
+            "to use inside the tunnel. Usually the peer's tunnel IP " ..
+            "addresses and the networks the peer routes through the tunnel.")
+)
+allowed_ips.datatype = "ipaddr"
+allowed_ips.optional = false
+
+
+route_allowed_ips = peers:option(
+  Flag,
+  "route_allowed_ips",
+  translate("Route Allowed IPs"),
+  translate("Optional. Create routes for Allowed IPs for this peer.")
+)
+
+
+endpoint_host = peers:option(
+  Value,
+  "endpoint_host",
+  translate("Endpoint Host"),
+  translate("Optional. Host of peer. Names are resolved " ..
+            "prior to bringing up the interface."))
+endpoint_host.placeholder = "vpn.example.com"
+endpoint_host.datatype = "host"
+
+
+endpoint_port = peers:option(
+  Value,
+  "endpoint_port",
+  translate("Endpoint Port"),
+  translate("Optional. Port of peer."))
+endpoint_port.placeholder = "51820"
+endpoint_port.datatype = "port"
+
+
+persistent_keepalive = peers:option(
+  Value,
+  "persistent_keepalive",
+  translate("Persistent Keep Alive"),
+  translate("Optional. Seconds between keep alive messages. " ..
+            "Default is 0 (disabled). Recommended value if " ..
+            "this device is behind a NAT is 25."))
+persistent_keepalive.datatype = "range(0, 65535)"
+persistent_keepalive.placeholder = "0"
diff --git a/protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua b/protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua
new file mode 100644 (file)
index 0000000..d693761
--- /dev/null
@@ -0,0 +1,42 @@
+-- Copyright 2016 Dan Luedtke <mail@danrl.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+local interface = luci.model.network.interface
+local proto = netmod:register_protocol("wireguard")
+
+function proto.get_i18n(self)
+  return luci.i18n.translate("WireGuard VPN")
+end
+
+function proto.ifname(self)
+  return self.sid
+end
+
+function proto.get_interface(self)
+  return interface(self:ifname(), self)
+end
+
+function proto.opkg_package(self)
+  return "wireguard-tools"
+end
+
+function proto.is_installed(self)
+  return nixio.fs.access("/lib/netifd/proto/wireguard.sh")
+end
+
+function proto.is_floating(self)
+  return true
+end
+
+function proto.is_virtual(self)
+  return true
+end
+
+function proto.get_interfaces(self)
+  return nil
+end
+
+function proto.contains_interface(self, ifc)
+   return (netmod:ifnameof(ifc) == self:ifname())
+end