summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTING.md37
-rw-r--r--applications/luci-app-asterisk/Makefile1
-rw-r--r--applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua68
-rw-r--r--applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua11
-rw-r--r--applications/luci-app-firewall/po/pl/firewall.po8
-rw-r--r--applications/luci-app-multiwan/po/es/multiwan.po2
-rw-r--r--applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua14
-rw-r--r--applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/openvpn.lua56
-rw-r--r--applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua125
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/i18n.lua30
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool.lua7
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/interface.lua12
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua40
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua6
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/openvpn.lua48
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua24
-rw-r--r--applications/luci-app-statistics/root/etc/config/luci_statistics3
-rwxr-xr-xapplications/luci-app-statistics/root/usr/bin/stat-genconfig16
-rw-r--r--documentation/SubmitPatchesHowTo:.md33
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/bridge.pngbin838 -> 681 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.pngbin517 -> 405 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/encryption.pngbin1224 -> 920 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/encryption_disabled.pngbin1197 -> 888 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/ethernet.pngbin814 -> 701 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.pngbin508 -> 399 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/port_down.pngbin982 -> 769 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/port_up.pngbin1401 -> 1151 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/signal-0-25.pngbin495 -> 462 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/signal-0.pngbin478 -> 439 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.pngbin501 -> 465 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.pngbin500 -> 467 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.pngbin485 -> 457 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/signal-none.pngbin681 -> 639 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/switch.pngbin794 -> 680 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/switch_disabled.pngbin505 -> 398 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/tunnel.pngbin533 -> 343 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.pngbin546 -> 235 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/vlan.pngbin794 -> 680 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.pngbin505 -> 398 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/wifi.pngbin1037 -> 767 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/wifi_big.pngbin2865 -> 2276 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/wifi_big_disabled.pngbin2853 -> 1512 bytes
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.pngbin980 -> 494 bytes
-rw-r--r--modules/luci-base/po/pl/base.po8
-rw-r--r--modules/luci-base/root/etc/config/luci2
-rw-r--r--modules/luci-base/root/www/index.html4
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua9
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua3
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm4
-rw-r--r--modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua12
-rw-r--r--modules/luci-mod-rpc/luasrc/controller/rpc.lua4
-rw-r--r--protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua2
-rw-r--r--themes/luci-theme-freifunk-bno/Makefile14
-rw-r--r--themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/cascade.css872
-rw-r--r--themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/bgoption.pngbin141 -> 0 bytes
-rw-r--r--themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/favicon.icobin5310 -> 0 bytes
-rw-r--r--themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-back.gifbin127 -> 0 bytes
-rw-r--r--themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-left.gifbin293 -> 0 bytes
-rw-r--r--themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-right.gifbin365 -> 0 bytes
-rw-r--r--themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/logo.gifbin2415 -> 0 bytes
-rw-r--r--themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/main-back.pngbin404 -> 0 bytes
-rw-r--r--themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/schriftzug.gifbin3606 -> 0 bytes
-rw-r--r--themes/luci-theme-freifunk-bno/luasrc/view/themes/freifunk-bno/footer.htm24
-rw-r--r--themes/luci-theme-freifunk-bno/luasrc/view/themes/freifunk-bno/header.htm209
-rwxr-xr-xthemes/luci-theme-freifunk-bno/root/etc/uci-defaults/luci-theme-freifunk-bno6
65 files changed, 451 insertions, 1263 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 7c4291318..a392ade0c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,16 +1,16 @@
# Contributing Guidelines
-Patches and pull-requests:
+## Patches and Pull requests:
If you want to contribute a change to LuCI, please either send a patch using git send-email
-or open a pull request against the openwrt/luci repository.
+or open a "pull request" against the openwrt/luci repository.
Regardless of whether you send a patch or open a pull request, please try to follow these rules:
-* Have a useful subject prefixed with the component name
- (E.g.: "modules/admin-full: fix wifi channel selection on multiple STA networks")
+* Have a useful subject prefixed with the component name
+ (E.g.: "luci-mod-admin-full: fix wifi channel selection on multiple STA networks")
* Shortly explain the changes made and - if applicable - the reasoning behind them
-* Include Signed-off-by in the comment
+* Include Signed-off-by in the comment
(See <https://dev.openwrt.org/wiki/SubmittingPatches#a10.Signyourwork>)
In case you like to send patches by mail, please use the [LuCI mailinglist](https://lists.subsignal.org/mailman/listinfo/luci)
@@ -19,22 +19,41 @@ or the [OpenWrt Development List](https://lists.openwrt.org/cgi-bin/mailman/list
If you send via the OpenWrt list, include a "[luci]" tag in your subject line.
For general information on patch submission, follow the [OpenWrt patch submission guideline](https://dev.openwrt.org/wiki/SubmittingPatches).
+## Advice on pull requests:
-If you have commit access:
+Pull requests are the easiest way to contribute changes to git repos at Github. They are the preferred contribution method, as they offer a nice way for commenting and amending the proposed changes.
+
+* You need a local "fork" of the Github repo.
+* Use a "feature branch" for your changes. That separates the changes in the pull request from your other changes and makes it easy to edit/amend commits in the pull request. Workflow using "feature_x" as the example:
+ - Update your local git fork to the tip (of the master, usually)
+ - Create the feature branch with `git checkout -b feature_x`
+ - Edit changes and commit them locally
+ - Push them to your Github fork by `git push -u origin feature_x`. That creates the "feature_x" branch at your Github fork and sets it as the remote of this branch
+ - When you now visit Github, you should see a proposal to create a pull request
+
+* If you later need to add new commits to the pull request, you can simply commit the changes to the local branch and then use `git push` to automatically update the pull request.
+
+* If you need to change something in the existing pull request (e.g. to add a missing signed-off-by line to the commit message), you can use `git push -f` to overwrite the original commits. That is easy and safe when using a feature branch. Example workflow:
+ - Checkout the feature branch by `git checkout feature_x`
+ - Edit changes and commit them locally. If you are just updating the commit message in the last commit, you can use `git commit --amend` to do that
+ - If you added several new commits or made other changes that require cleaning up, you can use `git rebase -i HEAD~X` (X = number of commits to edit) to possibly squash some commits
+ - Push the changed commits to Github with `git push -f` to overwrite the original commits in the "feature_x" branch with the new ones. The pull request gets automatically updated
+
+## If you have commit access:
* Do NOT use git push --force.
* Use Pull Requests if you are unsure and to suggest changes to other developers.
-Gaining commit access:
+## Gaining commit access:
* Commit access will be granted to responsible contributors who have made
useful pull requests and / or feedback or patches to this repository or
OpenWrt in general. Please include your request for commit access in your
next pull request or ticket.
-Release Branches:
+## Release Branches:
-* Branches named "luci-X.Y" (e.g. luci-0.12) are release branches.
+* Branches named "for-XX.YY" or "luci-X.Y" (e.g. "for-15.05") are release branches.
* These branches are built with the respective OpenWrt release and are created
during the release stabilisation phase.
* Please ONLY cherry-pick or commit security and bug-fixes to these branches.
diff --git a/applications/luci-app-asterisk/Makefile b/applications/luci-app-asterisk/Makefile
index f2f3cd1e7..3434e167f 100644
--- a/applications/luci-app-asterisk/Makefile
+++ b/applications/luci-app-asterisk/Makefile
@@ -7,7 +7,6 @@
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Support for Asterisk
-LUCI_DEPENDS:=+ahcpd
include ../../luci.mk
diff --git a/applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua b/applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua
index 6015ffe1f..8559c52b8 100644
--- a/applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua
+++ b/applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua
@@ -1,4 +1,4 @@
--- Copyright 2014 Álvaro Fernández Rojas <noltari@gmail.com>
+-- Copyright 2014-2015 Álvaro Fernández Rojas <noltari@gmail.com>
-- Licensed to the public under the Apache License 2.0.
m = Map("dump1090", "dump1090", translate("dump1090 is a Mode S decoder specifically designed for RTLSDR devices, here you can configure the settings."))
@@ -12,6 +12,7 @@ enable.enabled="0"
enable.disabled="1"
enable.default = "1"
enable.rmempty = false
+
respawn=s:option(Flag, "respawn", translate("Respawn"))
respawn.default = false
@@ -34,6 +35,15 @@ ifile=s:option(Value, "ifile", translate("Data file"))
ifile.rmempty = true
ifile.datatype = "file"
+iformat=s:option(ListValue, "iformat", translate("Sample format for data file"))
+iformat:value("", translate("Default"))
+iformat:value("UC8")
+iformat:value("SC16")
+iformat:value("SC16Q11")
+
+throttle=s:option(Flag, "throttle", translate("When reading from a file play back in realtime, not at max speed"))
+throttle.default = false
+
raw=s:option(Flag, "raw", translate("Show only messages hex values"))
raw.default = false
@@ -76,13 +86,17 @@ net_bo_port=s:option(Value, "net_bo_port", translate("TCP Beast output listen po
net_bo_port.rmempty = true
net_bo_port.datatype = "port"
+net_fatsv_port=s:option(Value, "net_fatsv_port", translate("FlightAware TSV output port"))
+net_fatsv_port.rmempty = true
+net_fatsv_port.datatype = "port"
+
net_ro_size=s:option(Value, "net_ro_size", translate("TCP raw output minimum size"))
net_ro_size.rmempty = true
net_ro_size.datatype = "uinteger"
-net_ro_rate=s:option(Value, "net_ro_rate", translate("TCP raw output memory flush rate"))
-net_ro_rate.rmempty = true
-net_ro_rate.datatype = "uinteger"
+net_ro_interval=s:option(Value, "net_ro_interval", translate("TCP raw output memory flush rate in seconds"))
+net_ro_interval.rmempty = true
+net_ro_interval.datatype = "uinteger"
net_heartbeat=s:option(Value, "net_heartbeat", translate("TCP heartbeat rate in seconds"))
net_heartbeat.rmempty = true
@@ -92,6 +106,12 @@ net_buffer=s:option(Value, "net_buffer", translate("TCP buffer size 64Kb * (2^n)
net_buffer.rmempty = true
net_buffer.datatype = "uinteger"
+net_verbatim=s:option(Flag, "net_verbatim", translate("Do not apply CRC corrections to messages we forward"))
+net_verbatim.default = false
+
+forward_mlat=s:option(Flag, "forward_mlat", translate("Allow forwarding of received mlat results to output ports"))
+forward_mlat.default = false
+
lat=s:option(Value, "lat", translate("Reference/receiver latitude for surface posn"))
lat.rmempty = true
lat.datatype = "integer"
@@ -100,6 +120,10 @@ lon=s:option(Value, "lon", translate("Reference/receiver longitude for surface p
lon.rmempty = true
lon.datatype = "integer"
+max_range=s:option(Value, "max_range", translate("Absolute maximum range for position decoding"))
+max_range.rmempty = true
+max_range.datatype = "uinteger"
+
fix=s:option(Flag, "fix", translate("Enable single-bits error correction using CRC"))
fix.default = false
@@ -121,6 +145,9 @@ mlat.default = false
stats=s:option(Flag, "stats", translate("Print stats at exit"))
stats.default = false
+stats_range=s:option(Flag, "stats_range", translate("Collect/show range histogram"))
+stats_range.default = false
+
stats_every=s:option(Value, "stats_every", translate("Show and reset stats every seconds"))
stats_every.rmempty = true
stats_every.datatype = "uinteger"
@@ -131,15 +158,42 @@ onlyaddr.default = false
metric=s:option(Flag, "metric", translate("Use metric units"))
metric.default = false
-snip=s:option(Flag, "snip", translate("Strip IQ file removing samples"))
+snip=s:option(Value, "snip", translate("Strip IQ file removing samples"))
snip.rmempty = true
snip.datatype = "uinteger"
-debug_mode=s:option(Flag, "debug", translate("Debug mode flags"))
+debug_mode=s:option(Value, "debug", translate("Debug mode flags"))
debug_mode.rmempty = true
-ppm=s:option(Flag, "ppm", translate("Set receiver error in parts per million"))
+ppm=s:option(Value, "ppm", translate("Set receiver error in parts per million"))
ppm.rmempty = true
ppm.datatype = "uinteger"
+html_dir=s:option(Value, "html_dir", translate("Base directory for the internal HTTP server"))
+html_dir.rmempty = true
+html_dir.datatype = "directory"
+
+write_json=s:option(Value, "write_json", translate("Periodically write json output to a directory"))
+write_json.rmempty = true
+write_json.datatype = "directory"
+
+write_json_every=s:option(Flag, "write_json_every", translate("Write json output every t seconds"))
+write_json_every.rmempty = true
+write_json_every.datatype = "uinteger"
+
+json_location_accuracy=s:option(ListValue, "json_location_accuracy", translate("Accuracy of receiver location in json metadata"))
+json_location_accuracy:value("", translate("Default"))
+json_location_accuracy:value("0", "No location")
+json_location_accuracy:value("1", "Approximate")
+json_location_accuracy:value("2", "Exact")
+
+oversample=s:option(Flag, "oversample", translate("Use the 2.4MHz demodulator"))
+oversample.default = false
+
+dcfilter=s:option(Flag, "dcfilter", translate("Apply a 1Hz DC filter to input data"))
+dcfilter.default = false
+
+measure_noise=s:option(Flag, "measure_noise", translate("Measure noise power"))
+measure_noise.default = false
+
return m
diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
index 46b374440..6c90476f8 100644
--- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
+++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
@@ -60,7 +60,7 @@ s:tab("advanced", translate("Advanced Settings"))
name = s:taboption("general", Value, "name", translate("Name"))
name.optional = false
name.forcewrite = true
-name.datatype = "uciname"
+name.datatype = "and(uciname,maxlength(14))"
function name.write(self, section, value)
if zone:name() ~= value then
@@ -76,15 +76,6 @@ function name.write(self, section, value)
}
end
-function name.validate(self, value)
- -- fw3 defines 14 as the maximum length of zone name
- if #value > 14 then
- return nil, translate("Zone name is too long")
- else
- return value
- end
-end
-
p = {
s:taboption("general", ListValue, "input", translate("Input")),
s:taboption("general", ListValue, "output", translate("Output")),
diff --git a/applications/luci-app-firewall/po/pl/firewall.po b/applications/luci-app-firewall/po/pl/firewall.po
index 18be74d23..2ccd25ccc 100644
--- a/applications/luci-app-firewall/po/pl/firewall.po
+++ b/applications/luci-app-firewall/po/pl/firewall.po
@@ -301,7 +301,7 @@ msgid "Restrict Masquerading to given destination subnets"
msgstr "Ogranicz maskaradę do wskazanych sieci docelowych"
msgid "Restrict Masquerading to given source subnets"
-msgstr "Ogranicz maskaradę do wskazanych sieci żródłowych"
+msgstr "Ogranicz maskaradę do wskazanych sieci źródłowych"
# Wstawiłem rodzinę gdyż gdzieś wcześniej było tak opisane ale klasa pasuje mi tu bardziej.
# Obsy - niestety ale "rodzina". W gui dotyczy to wyboru IPv4/IPv6, więc "rodzina" a nie klasa.
@@ -317,7 +317,7 @@ msgid ""
"Rewrite matched traffic to the given source port. May be left empty to only "
"rewrite the IP address."
msgstr ""
-"Przepisz dopasowany ruch do danego portu żródłowego. Można zostawić puste "
+"Przepisz dopasowany ruch do danego portu źródłowego. Można zostawić puste "
"aby przepisać tylko adres IP"
msgid "Rewrite to source %s"
@@ -339,7 +339,7 @@ msgid "Source MAC address"
msgstr "Źródłowy adres MAC"
msgid "Source NAT"
-msgstr "NAT żródłowy"
+msgstr "NAT źródłowy"
# http://www.digipedia.pl/def/doc/id/677604507/name/SNAT/
msgid ""
@@ -348,7 +348,7 @@ msgid ""
"multiple WAN addresses to internal subnets."
msgstr ""
"SNAT używany jest wtedy, gdy zmieniane są adresy pakietów połączenia "
-"wychodzącego, czyli pakiety żródłowe. Wykonywany jest zawsze po routowaniu "
+"wychodzącego, czyli pakiety źródłowe. Wykonywany jest zawsze po routowaniu "
"(POSTROUTING), a więc w chwili, gdy pakiety są gotowe opuścić host. "
"IPmasquerading jest formą SNAT."
diff --git a/applications/luci-app-multiwan/po/es/multiwan.po b/applications/luci-app-multiwan/po/es/multiwan.po
index 1a54f7557..4d2447eec 100644
--- a/applications/luci-app-multiwan/po/es/multiwan.po
+++ b/applications/luci-app-multiwan/po/es/multiwan.po
@@ -118,7 +118,7 @@ msgid "WAN Interfaces"
msgstr "Interfaces WAN"
msgid "WAN Uplink"
-msgstr "Enalce saliente WAN"
+msgstr "Enlace saliente WAN"
msgid "all"
msgstr "todos"
diff --git a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
index 49eab5acd..3f26aeed6 100644
--- a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
+++ b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
@@ -20,7 +20,7 @@ function index()
local labels = {
s_output = _("Output plugins"),
- s_system = _("System plugins"),
+ s_general = _("General plugins"),
s_network = _("Network plugins"),
conntrack = _("Conntrack"),
@@ -42,9 +42,11 @@ function index()
network = _("Network"),
nut = _("UPS"),
olsrd = _("OLSRd"),
+ openvpn = _("OpenVPN"),
ping = _("Ping"),
processes = _("Processes"),
rrdtool = _("RRDTool"),
+ sensors = _("Sensors"),
splash_leases = _("Splash Leases"),
tcpconns = _("TCP Connections"),
unixsock = _("UnixSock"),
@@ -54,15 +56,15 @@ function index()
-- our collectd menu
local collectd_menu = {
output = { "csv", "network", "rrdtool", "unixsock" },
- system = { "cpu", "df", "disk", "email", "entropy", "exec", "irq", "load", "memory", "nut", "processes", "uptime" },
- network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "ping", "splash_leases", "tcpconns", "iwinfo" }
+ 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" }
}
-- create toplevel menu nodes
local st = entry({"admin", "statistics"}, template("admin_statistics/index"), _("Statistics"), 80)
st.index = true
- entry({"admin", "statistics", "collectd"}, cbi("luci_statistics/collectd"), _("Collectd"), 10).subindex = true
+ entry({"admin", "statistics", "collectd"}, cbi("luci_statistics/collectd"), _("Setup"), 20).subindex = true
-- populate collectd plugin menu
@@ -87,7 +89,7 @@ function index()
end
-- output views
- local page = entry( { "admin", "statistics", "graph" }, template("admin_statistics/index"), _("Graphs"), 80)
+ local page = entry( { "admin", "statistics", "graph" }, template("admin_statistics/index"), _("Graphs"), 10)
page.setuser = "nobody"
page.setgroup = "nogroup"
@@ -170,7 +172,7 @@ function statistics_render()
if #instances == 0 then
--instances = { graph.tree:plugin_instances( plugin )[1] }
instances = graph.tree:plugin_instances( plugin )
- is_index = true
+ is_index = (#instances > 1)
-- index instance requested
elseif instances[1] == "-" then
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/openvpn.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/openvpn.lua
new file mode 100644
index 000000000..193f0448a
--- /dev/null
+++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/openvpn.lua
@@ -0,0 +1,56 @@
+-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+require "luci.sys"
+
+local m, s, o
+
+
+m = Map("luci_statistics",
+ translate("OpenVPN Plugin Configuration"),
+ translate("The OpenVPN plugin gathers information about the current vpn connection status."))
+
+s = m:section( NamedSection, "collectd_openvpn", "luci_statistics" )
+
+
+o = s:option( Flag, "enable", translate("Enable this plugin") )
+o.default = "0"
+
+
+o = s:option(Flag, "CollectIndividualUsers", translate("Generate a separate graph for each logged user"))
+o.default = "0"
+o.rmempty = true
+o:depends("enable", 1)
+
+
+o = s:option(Flag, "CollectUserCount", translate("Aggregate number of connected users"))
+o.default = "0"
+o.rmempty = true
+o:depends("enable", 1)
+
+
+o = s:option(Flag, "CollectCompression", translate("Gather compression statistics"))
+o.default = "0"
+o.rmempty = true
+o:depends("enable", 1)
+
+
+o = s:option(Flag, "ImprovedNamingSchema", translate("Use improved naming schema"))
+o.default = "0"
+o.rmempty = true
+o:depends("enable", 1)
+
+
+o = s:option(DynamicList, "StatusFile", translate("OpenVPN status files"))
+o.rmempty = true
+o:depends("enable", 1)
+
+local status_files = nixio.fs.glob("/var/run/openvpn.*.status")
+if status_files then
+ local status_file
+ for status_file in status_files do
+ o:value(status_file)
+ end
+end
+
+return m
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua
new file mode 100644
index 000000000..77e36bfaf
--- /dev/null
+++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua
@@ -0,0 +1,125 @@
+-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+require "luci.sys"
+
+local m, s, o
+local sensor_types = {
+ ["12v"] = "voltage",
+ ["2.0v"] = "voltage",
+ ["2.5v"] = "voltage",
+ ["3.3v"] = "voltage",
+ ["5.0v"] = "voltage",
+ ["5v"] = "voltage",
+ ["ain1"] = "voltage",
+ ["ain2"] = "voltage",
+ ["cpu_temp"] = "temperature",
+ ["fan1"] = "fanspeed",
+ ["fan2"] = "fanspeed",
+ ["fan3"] = "fanspeed",
+ ["fan4"] = "fanspeed",
+ ["fan5"] = "fanspeed",
+ ["fan6"] = "fanspeed",
+ ["fan7"] = "fanspeed",
+ ["in0"] = "voltage",
+ ["in10"] = "voltage",
+ ["in2"] = "voltage",
+ ["in3"] = "voltage",
+ ["in4"] = "voltage",
+ ["in5"] = "voltage",
+ ["in6"] = "voltage",
+ ["in7"] = "voltage",
+ ["in8"] = "voltage",
+ ["in9"] = "voltage",
+ ["power1"] = "power",
+ ["remote_temp"] = "temperature",
+ ["temp1"] = "temperature",
+ ["temp2"] = "temperature",
+ ["temp3"] = "temperature",
+ ["temp4"] = "temperature",
+ ["temp5"] = "temperature",
+ ["temp6"] = "temperature",
+ ["temp7"] = "temperature",
+ ["temp"] = "temperature",
+ ["vccp1"] = "voltage",
+ ["vccp2"] = "voltage",
+ ["vdd"] = "voltage",
+ ["vid1"] = "voltage",
+ ["vid2"] = "voltage",
+ ["vid3"] = "voltage",
+ ["vid4"] = "voltage",
+ ["vid5"] = "voltage",
+ ["vid"] = "voltage",
+ ["vin1"] = "voltage",
+ ["vin2"] = "voltage",
+ ["vin3"] = "voltage",
+ ["vin4"] = "voltage",
+ ["volt12"] = "voltage",
+ ["volt5"] = "voltage",
+ ["voltbatt"] = "voltage",
+ ["vrm"] = "voltage"
+
+}
+
+
+m = Map("luci_statistics",
+ translate("Sensors Plugin Configuration"),
+ translate("The sensors plugin uses the Linux Sensors framework to gather environmental statistics."))
+
+s = m:section( NamedSection, "collectd_sensors", "luci_statistics" )
+
+
+o = s:option( Flag, "enable", translate("Enable this plugin") )
+o.default = 0
+
+
+o = s:option(Flag, "__all", translate("Monitor all sensors"))
+o:depends("enable", 1)
+o.default = 1
+o.write = function() end
+o.cfgvalue = function(self, sid)
+ local v = self.map:get(sid, "Sensor")
+ if v == nil or (type(v) == "table" and #v == 0) or (type(v) == "string" and #v == 0) then
+ return "1"
+ end
+end
+
+
+o = s:option(MultiValue, "Sensor", translate("Sensor list"), translate("Hold Ctrl to select multiple items or to deselect entries."))
+o:depends({enable = 1, __all = "" })
+o.widget = "select"
+o.rmempty = true
+o.size = 0
+
+local sensorcli = io.popen("/usr/sbin/sensors -u -A")
+if sensorcli then
+ local bus, sensor
+
+ while true do
+ local ln = sensorcli:read("*ln")
+ if not ln then
+ break
+ elseif ln:match("^[%w-]+$") then
+ bus = ln
+ elseif ln:match("^[%w-]+:$") then
+ sensor = ln:sub(0, -2):lower()
+ if bus and sensor_types[sensor] then
+ o:value("%s/%s-%s" %{ bus, sensor_types[sensor], sensor })
+ o.size = o.size + 1
+ end
+ elseif ln == "" then
+ bus = nil
+ sensor = nil
+ end
+ end
+
+ sensorcli:close()
+end
+
+
+o = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") )
+o.default = 0
+o.rmempty = true
+o:depends({ enable = 1, __all = "" })
+
+return m
diff --git a/applications/luci-app-statistics/luasrc/statistics/i18n.lua b/applications/luci-app-statistics/luasrc/statistics/i18n.lua
index 5a2800d5f..7877e61ab 100644
--- a/applications/luci-app-statistics/luasrc/statistics/i18n.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/i18n.lua
@@ -26,15 +26,6 @@ function Instance._subst( self, str, val )
return str
end
-function Instance._translate( self, key, alt )
- local val = self.i18n.string(key)
- if val ~= key then
- return val
- else
- return alt
- end
-end
-
function Instance.title( self, plugin, pinst, dtype, dinst, user_title )
local title = user_title or
@@ -73,24 +64,17 @@ end
function Instance.ds( self, source )
- local label = source.title or self:_translate(
- string.format( "stat_ds_%s_%s_%s", source.type, source.instance, source.ds ),
- self:_translate(
- string.format( "stat_ds_%s_%s", source.type, source.instance ),
- self:_translate(
- string.format( "stat_ds_label_%s__%s", source.type, source.ds ),
- self:_translate(
- string.format( "stat_ds_%s", source.type ),
- source.type .. "_" .. source.instance:gsub("[^%w]","_") .. "_" .. source.ds
- )
- )
- )
- )
+ local label = source.title or
+ "dt=%s/di=%s/ds=%s" % {
+ (source.type and #source.type > 0) and source.type or "(nil)",
+ (source.instance and #source.instance > 0) and source.instance or "(nil)",
+ (source.ds and #source.ds > 0) and source.ds or "(nil)"
+ }
return self:_subst( label, {
dtype = source.type,
dinst = source.instance,
dsrc = source.ds
- } )
+ } ):gsub(":", "\\:")
end
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua
index d8317a817..5d4ad9859 100644
--- a/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua
@@ -397,6 +397,7 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
transform_rpn = dopts.transform_rpn or "0,+",
noarea = dopts.noarea or false,
title = dopts.title or nil,
+ weight = dopts.weight or nil,
ds = dsource,
type = dtype,
instance = dinst,
@@ -469,6 +470,12 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
for i, o in ipairs(opts.rrdopts) do _ti( _args, o ) end
end
+ -- sort sources
+ table.sort(_sources, function(a, b)
+ local x = a.weight or a.index or 0
+ local y = b.weight or b.index or 0
+ return x < y
+ end)
-- create DEF statements for each instance
for i, source in ipairs(_sources) do
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/interface.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/interface.lua
index efa631d55..6f687d218 100644
--- a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/interface.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/interface.lua
@@ -66,36 +66,40 @@ function rrdargs( graph, plugin, plugin_instance )
options = {
-- processed packets (tx DS)
if_packets__tx = {
+ weight = 1,
overlay = true, -- don't summarize
total = true, -- report total amount of bytes
color = "00ff00", -- processed tx is green
- title = "Processed (tx)"
+ title = "Processed (TX)"
},
-- processed packets (rx DS)
if_packets__rx = {
+ weight = 2,
overlay = true, -- don't summarize
flip = true, -- flip rx line
total = true, -- report total amount of bytes
color = "0000ff", -- processed rx is blue
- title = "Processed (rx)"
+ title = "Processed (RX)"
},
-- packet errors (tx DS)
if_errors__tx = {
+ weight = 0,
overlay = true, -- don't summarize
total = true, -- report total amount of packets
color = "ff5500", -- tx errors are orange
- title = "Errors (tx)"
+ title = "Errors (TX)"
},
-- packet errors (rx DS)
if_errors__rx = {
+ weight = 3,
overlay = true, -- don't summarize
flip = true, -- flip rx line
total = true, -- report total amount of packets
color = "ff0000", -- rx errors are red
- title = "Errors (rx)"
+ title = "Errors (RX)"
}
}
}
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua
index b4f2ac185..7b6acf366 100644
--- a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua
@@ -22,11 +22,13 @@ function rrdargs( graph, plugin, plugin_instance )
-- special options for single data lines
options = {
if_octets__tx = {
+ title = "Bytes (TX)",
total = true, -- report total amount of bytes
color = "00ff00" -- tx is green
},
if_octets__rx = {
+ title = "Bytes (RX)",
flip = true, -- flip rx line
total = true, -- report total amount of bytes
color = "0000ff" -- rx is blue
@@ -59,6 +61,8 @@ function rrdargs( graph, plugin, plugin_instance )
options = {
-- processed packets (tx DS)
if_packets__tx = {
+ weight = 2,
+ title = "Total (TX)",
overlay = true, -- don't summarize
total = true, -- report total amount of bytes
color = "00ff00" -- processed tx is green
@@ -66,6 +70,8 @@ function rrdargs( graph, plugin, plugin_instance )
-- processed packets (rx DS)
if_packets__rx = {
+ weight = 3,
+ title = "Total (RX)",
overlay = true, -- don't summarize
flip = true, -- flip rx line
total = true, -- report total amount of bytes
@@ -74,6 +80,8 @@ function rrdargs( graph, plugin, plugin_instance )
-- dropped packets (tx DS)
if_dropped__tx = {
+ weight = 1,
+ title = "Dropped (TX)",
overlay = true, -- don't summarize
total = true, -- report total amount of bytes
color = "660055" -- dropped tx is ... dunno ;)
@@ -81,14 +89,18 @@ function rrdargs( graph, plugin, plugin_instance )
-- dropped packets (rx DS)
if_dropped__rx = {
+ weight = 4,
+ title = "Dropped (RX)",
overlay = true, -- don't summarize
flip = true, -- flip rx line
total = true, -- report total amount of bytes
- color = "440066" -- dropped rx is violett
+ color = "ff00ff" -- dropped rx is violett
},
-- packet errors (tx DS)
if_errors__tx = {
+ weight = 0,
+ title = "Errors (TX)",
overlay = true, -- don't summarize
total = true, -- report total amount of packets
color = "ff5500" -- tx errors are orange
@@ -96,6 +108,8 @@ function rrdargs( graph, plugin, plugin_instance )
-- packet errors (rx DS)
if_errors__rx = {
+ weight = 5,
+ title = "Errors (RX)",
overlay = true, -- don't summarize
flip = true, -- flip rx line
total = true, -- report total amount of packets
@@ -122,6 +136,7 @@ function rrdargs( graph, plugin, plugin_instance )
options = {
-- multicast packets
if_multicast = {
+ title = "Packets",
total = true, -- report total amount of packets
color = "0000ff" -- multicast is blue
}
@@ -146,6 +161,7 @@ function rrdargs( graph, plugin, plugin_instance )
options = {
-- collision rate
if_collisions = {
+ title = "Collisions",
total = true, -- report total amount of packets
color = "ff0000" -- collsions are red
}
@@ -173,15 +189,19 @@ function rrdargs( graph, plugin, plugin_instance )
},
-- special options for single data lines
- options = { -- XXX: fixme (define colors...)
- if_tx_errors = {
- total = true
- },
-
- if_rx_errors = {
- flip = true,
- total = true
- }
+ options = {
+ if_tx_errors_aborted_value = { total = true, color = "ffff00", title = "Aborted (TX)" },
+ if_tx_errors_carrier_value = { total = true, color = "ffcc00", title = "Carrier (TX)" },
+ if_tx_errors_fifo_value = { total = true, color = "ff9900", title = "Fifo (TX)" },
+ if_tx_errors_heartbeat_value = { total = true, color = "ff6600", title = "Heartbeat (TX)" },
+ if_tx_errors_window_value = { total = true, color = "ff3300", title = "Window (TX)" },
+
+ if_rx_errors_length_value = { flip = true, total = true, color = "ff0000", title = "Length (RX)" },
+ if_rx_errors_missed_value = { flip = true, total = true, color = "ff0033", title = "Missed (RX)" },
+ if_rx_errors_over_value = { flip = true, total = true, color = "ff0066", title = "Over (RX)" },
+ if_rx_errors_crc_value = { flip = true, total = true, color = "ff0099", title = "CRC (RX)" },
+ if_rx_errors_fifo_value = { flip = true, total = true, color = "ff00cc", title = "Fifo (RX)" },
+ if_rx_errors_frame_value = { flip = true, total = true, color = "ff00ff", title = "Frame (RX)" }
}
}
}
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua
index 6dc81bc1d..8b04ab8b3 100644
--- a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua
@@ -44,9 +44,6 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
y_max = "100",
number_format = "%5.1lf%%",
data = {
- sources = {
- percent = { "percent" }
- },
instances = {
percent = "charge"
},
@@ -77,9 +74,6 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
vlabel = "Minutes",
number_format = "%.1lfm",
data = {
- sources = {
- timeleft = { "timeleft" }
- },
instances = {
timeleft = { "battery" }
},
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/openvpn.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/openvpn.lua
new file mode 100644
index 000000000..876e871d1
--- /dev/null
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/openvpn.lua
@@ -0,0 +1,48 @@
+-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.openvpn", package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance )
+ local inst = plugin_instance:gsub("^openvpn%.(.+)%.status$", "%1")
+
+ return {
+ {
+ title = "%%H: OpenVPN \"%s\" - Traffic" % inst,
+ vlabel = "Bytes/s",
+ data = {
+ instances = {
+ if_octets = { "traffic", "overhead" }
+ },
+ sources = {
+ if_octets = { "tx", "rx" }
+ },
+ options = {
+ if_octets_traffic_tx = { weight = 0, title = "Bytes (TX)", total = true, color = "00ff00" },
+ if_octets_overhead_tx = { weight = 1, title = "Overhead (TX)", total = true, color = "ff9900" },
+ if_octets_overhead_rx = { weight = 2, title = "Overhead (RX)", total = true, flip = true, color = "ff00ff" },
+ if_octets_traffic_rx = { weight = 3, title = "Bytes (RX)", total = true, flip = true, color = "0000ff" }
+ }
+ }
+ },
+
+ {
+ title = "%%H: OpenVPN \"%s\" - Compression" % inst,
+ vlabel = "Bytes/s",
+ data = {
+ instances = {
+ compression = { "data_out", "data_in" }
+ },
+ sources = {
+ compression = { "uncompressed", "compressed" }
+ },
+ options = {
+ compression_data_out_uncompressed = { weight = 0, title = "Uncompressed (TX)", total = true, color = "00ff00" },
+ compression_data_out_compressed = { weight = 1, title = "Compressed (TX)", total = true, color = "008800" },
+ compression_data_in_compressed = { weight = 2, title = "Compressed (RX)", total = true, flip = true, color = "000088" },
+ compression_data_in_uncompressed = { weight = 3, title = "Uncompressed (RX)", total = true, flip = true, color = "0000ff" }
+ }
+ }
+ }
+ }
+end
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua
new file mode 100644
index 000000000..f8bddb96e
--- /dev/null
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua
@@ -0,0 +1,24 @@
+-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.sensors", package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance )
+ return {
+ {
+ per_instance = true,
+ title = "%H: %pi - %di",
+ vlabel = "\176C",
+ number_format = "%4.1lf\176C",
+ data = {
+ types = { "temperature" },
+ options = {
+ temperature__value = {
+ color = "ff0000",
+ title = "Temperature"
+ }
+ }
+ }
+ }
+ }
+end
diff --git a/applications/luci-app-statistics/root/etc/config/luci_statistics b/applications/luci-app-statistics/root/etc/config/luci_statistics
index abcee3e93..de16f29de 100644
--- a/applications/luci-app-statistics/root/etc/config/luci_statistics
+++ b/applications/luci-app-statistics/root/etc/config/luci_statistics
@@ -140,6 +140,9 @@ config statistics 'collectd_processes'
option enable '0'
option Processes 'uhttpd dnsmasq dropbear'
+config statistics 'collectd_sensors'
+ option enable '0'
+
config statistics 'collectd_splash_leases'
option enable '0'
diff --git a/applications/luci-app-statistics/root/usr/bin/stat-genconfig b/applications/luci-app-statistics/root/usr/bin/stat-genconfig
index 8acae46c6..49d8a0993 100755
--- a/applications/luci-app-statistics/root/usr/bin/stat-genconfig
+++ b/applications/luci-app-statistics/root/usr/bin/stat-genconfig
@@ -187,9 +187,9 @@ function _list_expand( c, l, nopad )
end
if n:find("(%w+)ses") then
- k = n:gsub("(%w+)ses", "%1s")
+ k = n:gsub("(%w+)ses$", "%1s")
else
- k = n:gsub("(%w+)s", "%1")
+ k = n:gsub("(%w+)s$", "%1")
end
str = str .. _expand( c[n], k, nopad )
@@ -375,6 +375,12 @@ plugins = {
{ }
},
+ openvpn = {
+ { },
+ { "CollectIndividualUsers", "CollectUserCount", "CollectCompression", "ImprovedNamingSchema" },
+ { "StatusFile" }
+ },
+
ping = {
{ "TTL", "Interval" },
{ },
@@ -393,6 +399,12 @@ plugins = {
{ "RRATimespans" }
},
+ sensors = {
+ { },
+ { "IgnoreSelected" },
+ { "Sensor" }
+ },
+
splash_leases = {
{ },
{ },
diff --git a/documentation/SubmitPatchesHowTo:.md b/documentation/SubmitPatchesHowTo:.md
deleted file mode 100644
index cdd15524a..000000000
--- a/documentation/SubmitPatchesHowTo:.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Checkout svn
-
- svn co http://svn.luci.subsignal.org/luci/trunk
-
-and change to that directory:
-
- cd trunk
-
-# Make your changes
-
-Edit the files you want to change. If you add some new files you need to add them to the svn tree:
-
- svn add <dir/files>
-
-Where <dir/files> are the directories/files you have added. Its possible to specify multiple files/directories here.
-
-# Use svn diff to generate a patch with your changes
-
-To check if your changes look ok first do:
-
- svn diff <dir/files>
-
-and check the output. Again you can specify multiple dirs/directories here.
-
-If everything looks like expected save the patch:
-
- svn diff <dir/files> > ./mypatch.patch
-
-
-# Submit patches
-
-Use the [Ticket system](http://luci.subsignal.org/trac/newticket) to submit your patch.
-
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/bridge.png b/modules/luci-base/htdocs/luci-static/resources/icons/bridge.png
index 4c163bf69..7faadecf9 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/bridge.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/bridge.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png b/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png
index 0f367c536..b3e620b3a 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/encryption.png b/modules/luci-base/htdocs/luci-static/resources/icons/encryption.png
index 41d2ba9ac..776283360 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/encryption.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/encryption.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/encryption_disabled.png b/modules/luci-base/htdocs/luci-static/resources/icons/encryption_disabled.png
index f2e05a425..9a8721b02 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/encryption_disabled.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/encryption_disabled.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/ethernet.png b/modules/luci-base/htdocs/luci-static/resources/icons/ethernet.png
index a02538124..e3d24f279 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/ethernet.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/ethernet.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png b/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png
index 2bb02e455..d8792df54 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/port_down.png b/modules/luci-base/htdocs/luci-static/resources/icons/port_down.png
index 25ea17232..5a2b235d0 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/port_down.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/port_down.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png b/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png
index e06303791..8105e77d0 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png b/modules/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png
index 2e5dff466..b3a8118af 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png b/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png
index 114583a67..333b1557b 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png b/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png
index ee8cc4f1c..b465de3f5 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png b/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png
index 26bcbf715..cd7bcaf9a 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png b/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png
index 5cffaa1b8..f7a3658df 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/signal-none.png b/modules/luci-base/htdocs/luci-static/resources/icons/signal-none.png
index b77585c0f..4a11356af 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/signal-none.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/signal-none.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/switch.png b/modules/luci-base/htdocs/luci-static/resources/icons/switch.png
index 5c99ba568..be99b19ba 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/switch.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/switch.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png b/modules/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png
index b8c84c8dc..54588d24d 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png b/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png
index c5a09dd68..63eabfef5 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png b/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png
index ad9856cfe..ca79d8170 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png b/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png
index 5c99ba568..be99b19ba 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png b/modules/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png
index b8c84c8dc..54588d24d 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png b/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png
index 528ce2b4e..80a23e8e9 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big.png b/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big.png
index d73a5e740..9e466aebf 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big_disabled.png b/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big_disabled.png
index af93b37b7..6f9fff381 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big_disabled.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big_disabled.png
Binary files differ
diff --git a/modules/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png b/modules/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png
index 338a34f78..e989a2bd3 100644
--- a/modules/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png
+++ b/modules/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png
Binary files differ
diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po
index baa7ab853..e1ec57ffe 100644
--- a/modules/luci-base/po/pl/base.po
+++ b/modules/luci-base/po/pl/base.po
@@ -42,13 +42,13 @@ msgid "-- match by label --"
msgstr ""
msgid "1 Minute Load:"
-msgstr "Obciążenie w ciągu 1 minuty:"
+msgstr "Obciążenie 1 min.:"
msgid "15 Minute Load:"
-msgstr "Obciążenie w ciągu 15 minut:"
+msgstr "Obciążenie 15 min.:"
msgid "5 Minute Load:"
-msgstr "Obciążenie w ciągu 5 minut:"
+msgstr "Obciążenie 5 min.:"
msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
@@ -1838,7 +1838,7 @@ msgid "Out"
msgstr "Wychodzące"
msgid "Outbound:"
-msgstr "Wychodzące:"
+msgstr "Wychodzący:"
msgid "Outdoor Channels"
msgstr "Kanały zewnętrzne"
diff --git a/modules/luci-base/root/etc/config/luci b/modules/luci-base/root/etc/config/luci
index c503a8f1e..baa3ac5d1 100644
--- a/modules/luci-base/root/etc/config/luci
+++ b/modules/luci-base/root/etc/config/luci
@@ -1,6 +1,6 @@
config core main
option lang auto
- option mediaurlbase /luci-static/openwrt.org
+ option mediaurlbase /luci-static/bootstrap
option resourcebase /luci-static/resources
config extern flash_keep
diff --git a/modules/luci-base/root/www/index.html b/modules/luci-base/root/www/index.html
index 0b5fa1d87..59b0d8484 100644
--- a/modules/luci-base/root/www/index.html
+++ b/modules/luci-base/root/www/index.html
@@ -5,7 +5,7 @@
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci" />
</head>
-<body style="background-color: black">
-<a style="color: white; text-decoration: none" href="/cgi-bin/luci">LuCI - Lua Configuration Interface</a>
+<body style="background-color: white">
+<a style="color: black; font-family: arial, helvetica, sans-serif;" href="/cgi-bin/luci">LuCI - Lua Configuration Interface</a>
</body>
</html>
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
index 49103a811..4dc52ada0 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
@@ -51,13 +51,10 @@ rf.optional = true
s:taboption("files", Flag, "nohosts",
- translate("Ignore Hosts files")).optional = true
+ translate("Ignore <code>/etc/hosts</code>")).optional = true
-hf = s:taboption("files", DynamicList, "addnhosts",
- translate("Additional Hosts files"))
-
-hf:depends("nohosts", "")
-hf.optional = true
+s:taboption("files", DynamicList, "addnhosts",
+ translate("Additional Hosts files")).optional = true
s:taboption("advanced", Flag, "boguspriv",
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua
index b01b5dbb3..7c6d7e1c6 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua
@@ -11,6 +11,7 @@ f = SimpleForm("ipkgconf", translate("OPKG-Configuration"), translate("General o
f:append(Template("admin_system/ipkg"))
t = f:field(TextValue, "lines")
+t.wrap = "off"
t.rows = 10
function t.cfgvalue()
return nixio.fs.readfile(ipkgfile) or ""
@@ -28,6 +29,7 @@ g = SimpleForm("distfeedconf", translate("Distribution feeds"),
translate("Build/distribution specific feed definitions. This file will NOT be preserved in any sysupgrade."))
d = g:field(TextValue, "lines2")
+d.wrap = "off"
d.rows = 10
function d.cfgvalue()
return nixio.fs.readfile(distfeeds) or ""
@@ -45,6 +47,7 @@ h = SimpleForm("customfeedconf", translate("Custom feeds"),
translate("Custom feed definitions, e.g. private feeds. This file can be preserved in a sysupgrade."))
c = h:field(TextValue, "lines3")
+c.wrap = "off"
c.rows = 10
function c.cfgvalue()
return nixio.fs.readfile(customfeeds) or ""
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
index 07a96b2bf..a98d79080 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
@@ -88,7 +88,9 @@
if has_dsl then
local dsl_stat = luci.sys.exec("/etc/init.d/dsl_control lucistat")
local dsl_func = loadstring(dsl_stat)
- rv.dsl = dsl_func()
+ if dsl_func then
+ rv.dsl = dsl_func()
+ end
end
luci.http.prepare_content("application/json")
diff --git a/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua b/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua
index 6f7864301..60caadb4b 100644
--- a/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua
+++ b/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua
@@ -84,11 +84,13 @@ function action_flashops()
fp = io.open(image_tmp, "w")
end
end
- if chunk then
- fp:write(chunk)
- end
- if eof then
- fp:close()
+ if fp then
+ if chunk then
+ fp:write(chunk)
+ end
+ if eof then
+ fp:close()
+ end
end
end
)
diff --git a/modules/luci-mod-rpc/luasrc/controller/rpc.lua b/modules/luci-mod-rpc/luasrc/controller/rpc.lua
index 129ca43b5..759bb749c 100644
--- a/modules/luci-mod-rpc/luasrc/controller/rpc.lua
+++ b/modules/luci-mod-rpc/luasrc/controller/rpc.lua
@@ -49,10 +49,10 @@ function rpc_auth()
server.challenge = function(user, pass)
local sid, token, secret
- require "luci.config"
+ local config = require "luci.config"
if sys.user.checkpasswd(user, pass) then
- local sdat = util.ubus("session", "create", { timeout = luci.config.sauth.sessiontime })
+ local sdat = util.ubus("session", "create", { timeout = config.sauth.sessiontime })
if sdat then
sid = sdat.ubus_rpc_session
token = sys.uniqueid(16)
diff --git a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua
index 2f8108ef1..37d4ec901 100644
--- a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua
+++ b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua
@@ -50,7 +50,7 @@ ip6prefixlen.datatype = "range(0,64)"
s:taboption("general", Value, "ealen",
- translate("EA-bits length")).datatype = "range(0,16)"
+ translate("EA-bits length")).datatype = "range(0,48)"
s:taboption("general", Value, "psidlen",
translate("PSID-bits length")).datatype = "range(0,16)"
diff --git a/themes/luci-theme-freifunk-bno/Makefile b/themes/luci-theme-freifunk-bno/Makefile
deleted file mode 100644
index 1491a9774..000000000
--- a/themes/luci-theme-freifunk-bno/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
-#
-
-include $(TOPDIR)/rules.mk
-
-LUCI_TITLE:=Freifunk Berlin Nordost Theme
-LUCI_DEPENDS:=
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/cascade.css b/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/cascade.css
deleted file mode 100644
index 4f89b2d3a..000000000
--- a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/cascade.css
+++ /dev/null
@@ -1,872 +0,0 @@
-* {
- margin: 0;
- padding: 0;
-}
-
-body {
- background-color: #ffffff;
- color: #ffffff;
- font-family: Verdana, Arial, sans-serif;
- font-size: 100%;
- line-height: 100%;
- background-image: url(images/main-back.png);
- background-repeat: repeat-x;
- background-position: left bottom;
- }
-#all {
- margin: 0px;
- padding: 0px;
- min-height: 800px;
-}
-
-code {
- font-family: monospace;
- white-space: pre;
-}
-
-a:link, a:visited {
- color:#000000;
- font-weight:bold;
- text-decoration:none;
- }
-a:hover {
- color:#333333;
- font-weight:bold;
- }
-
-/* Custom*/
- #wrapper
-{
- width: 95%;
- color: #333333;
- margin-left: auto;
- margin-right: auto;
-/* background-image: url(images/corner-left.gif); */
-/* background-repeat: no-repeat; */
-/* background-position: left bottom; */
- background-color: #FffdF4;
- min-width: 710px;
- min-height: 710px;
-}
-#main {
- clear: both;
- width: 100%;
- margin: 0;
- padding: 0;
- color: #333333;
-/* background-image: url(images/corner-right.gif); */
-/* background-repeat: no-repeat; */
-/* background-position: right bottom; */
- min-height: 710px;
-}
-
-div#maincontent ul {
- margin-left: 2em;
-}
-
-.warning {
- color: red !important;
- font-weight: bold;
-}
-
-.clear {
- clear: both;
- height: 1px;
-}
-
-.hidden {
- display: none;
-}
-
-.error {
- color: #ff0000;
-}
-
-#header
-{
- padding: 0px;
- height: 100px;
-}
-#headerleft
-{
- height: 100px;
- background-color: #FFFfff;
- background-image: url(images/header-left.gif);
- background-repeat: no-repeat;
- background-position: left top;
-}
-#headerright
-{
- height: 100px;
- background-color: #FFfffF;
-
- margin-left: 5px;
- background-image: url(images/header-right.gif);
- background-repeat: no-repeat;
- background-position: right top;
-}
-
-#headerback
-{
- margin-right: 5px;
- height: 100px;
- background-color: #FFfffF;
- background-image: url(images/header-back.gif);
- background-repeat: repeat-x;
- background-position: left top;
-}
-#schriftzug {
- font-size : 1.5em;
- text-align:left;
- margin-bottom: 7px;
- margin-top: 7px;
- float:left;
- width: 450px;
-}
-
-#schriftzug a:hover{
- background-color:transparent;
-}
-#logo{
- margin-top: 5px;
- float:right;
- width: 115px;
-}
-
-.pathbar {
- display: none;
-}
-
-.menubar {
- width: 100%;
- min-height: 1.8em;
- background: #ffffff;
- color: #000000;
- border-top:0.4em solid #DC0067;
-}
-
-.mainmenu {
- float: left;
- width: auto;
- min-height: 1.8em;
- background: #ffffff;
- color: #000000;
-}
-.modemenu li {
- border-top:0.3em solid #DC0067;
- margin-left: 0.3em;
- margin-top: -0.3em;
-}
-.mainmenu div {
- float: left;
- border-top:0.3em solid #DC0067;
- margin-right: 0.3em;
- margin-top: -0.3em;
-}
-.mainmenu div.preactive {
- border-top: 0.3em solid #FFCB05;
- margin-top: -0.2em;
-}
-
-.mainmenu li {
- white-space: nowrap;
-}
-
-.mainmenu div ul {
- display: none;
- position: absolute;
- background: #ffffff;
- color: #000000;
- border-width: 0 1px 1px 1px;
- border-style: solid;
- border-color: #444444;
- list-style-type: none;
-}
-
-.mainmenu ul li:hover > ul,
-.mainmenu div:hover > ul {
- display: block;
-}
-
-.mainmenu ul li > ul {
- left: 100%;
- margin-top: -1.8em;
- border-width: 1px;
-}
-
-.modemenu a,
-.mainmenu a {
- display: block;
- padding: 0.2em;
- color: #000000;
- text-decoration: none;
- font-size: 70%;
- font-weight: bold;
-}
-
-
-.modemenu .active a {
- color: #000000;
- font-weight: bold;
- border-top:0.3em solid #FFCB05;
- margin-top: -0.2em;
-}
-.mainmenu .active a{
- color: #000000;
- font-weight: bold;
- border-top:0.2em solid #FFCB05;
-}
-.mainmenu li > span:active {
- background-color: #FFE990;
-}
-
-.mainmenu li:hover > span > a,
-.mainmenu div:hover > a {
-color: #ffffff;
-background-color: #FFCB05;
-}
-
-
-.modemenu a:focus,
-.mainmenu a:focus {
- color: #000000;
-}
-
-.mainmenu a:hover,
-.modemenu a:hover {
-color: #ffffff;
-background-color: #FFCB05;
-}
-
-.mainmenu div.preactive > a {
- color: #DC0067;
- font-weight: bold;
-}
-.mainmenu div.preactive > a:hover,
-.mainmenu div.preactive > a:focus {
- color: #ffffff;
- font-weight: bold;
-}
-
-.modemenu ul {
- width: auto;
- background: #000000;
- color: #ffffff;
- list-style-type: none;
-}
-
-.modemenu li {
- float: right;
-
-}
-
-#maincontent {
- clear: both;
- width: 98%;
- margin: 0 auto;
- padding: 0.5em;
- background: #FFF4BE;
- color: #000000;
- font-size: 80%;
- border-top:1px solid #D2A800;
-}
-
-#maincontent h2 {
- margin: 0.25em 0 0.5em 0;
- font-size: 150%;
- font-weight: normal;
-}
-
-#maincontent h3 {
- margin: 0.5em 0;
- font-size: 120%;
- font-weight: normal;
- text-decoration: underline;
-}
-
-#maincontent p {
- margin-bottom: 1em;
-}
-
-.cbi-section {
- margin-bottom: 0.5em;
- padding: 0.5em 1em;
- border: 1px dotted #D2A800;
- background-color: #FFE990;
-}
-
-.cbi-section legend {
- font-size: 110%;
- font-weight: bold;
- height: 1em;
- padding: 0 0.25em;
- color: #555555;
-}
-
-.cbi-section h2 {
- margin: 0em 0 0.5em -0.5em !important;
-}
-
-.cbi-section h3 {
- height: 1.5em;
- font-size: 90%;
- color: #555555;
-}
-
-.cbi-section-descr {
- margin-bottom: 0.5em;
- font-size: 95%;
-}
-
-.cbi-title-ref {
- color: inherit;
- text-decoration: none;
- padding-right: 18px;
- background: url('../resources/cbi/link.gif') no-repeat scroll right center;
- background-color: inherit;
-}
-
-input[type=submit],
-input[type=reset],
-input[type=image],
-label {
- cursor: pointer;
-}
-
-select,
-input,
-textarea {
- background: #FffdF4;
- color: #000000;
- border-width: 1px;
- border-color: #000000;
-}
-
-input[type=image] {
- border: none;
-}
-
-
-input:focus,
-input:hover,
-select:focus,
-select:hover,
-textarea:focus,
-textarea:hover {
- background-color: #FFF4BE;
-}
-
-select,
-input[type=text],
-input[type=password] {
- width: 20em;
-}
-
-td select,
-td input[type=text],
-td input[type=password] {
- width: 99%;
-}
-
-img.cbi-image-button {
- cursor: pointer;
- margin: 0 2px;
- vertical-align: middle;
-}
-
-input.cbi-input-user {
- background: url('../resources/cbi/user.gif') no-repeat scroll 1px center;
- background-color: inherit;
- padding-left: 17px;
-}
-
-input.cbi-input-password {
- background: url('../resources/cbi/key.gif') no-repeat scroll 1px center;
- background-color: inherit;
- padding-left: 17px;
-}
-
-input.cbi-input-find {
- background: url('../resources/cbi/find.gif') no-repeat scroll 1px center;
- background-color: inherit;
- padding-left: 17px;
-}
-
-input.cbi-input-reload {
- background: url('../resources/cbi/reload.gif') no-repeat scroll 1px center;
- background-color: inherit;
- padding-left: 17px;
-}
-
-input.cbi-input-add,
-input.cbi-button-add {
- background: url('../resources/cbi/add.gif') no-repeat scroll 1px center;
- background-color: inherit;
- padding-left: 17px;
- padding-right: 1px;
-}
-
-input.cbi-input-fieldadd,
-input.cbi-button-fieldadd {
- background: url(../resources/cbi/fieldadd.gif) no-repeat scroll 1px center;
- background-color: inherit;
- padding-left: 17px;
- padding-right: 1px;
-}
-
-input.cbi-input-reset,
-input.cbi-button-reset {
- background: url('../resources/cbi/reset.gif') no-repeat scroll 1px center;
- background-color: inherit;
- padding-left: 17px;
- padding-right: 1px;
-}
-
-input.cbi-input-save,
-input.cbi-button-save {
- background: url('../resources/cbi/save.gif') no-repeat scroll 1px center;
- background-color: inherit;
- padding-left: 17px;
- padding-right: 1px;
-}
-
-input.cbi-input-apply,
-input.cbi-button-apply {
- background: url('../resources/cbi/apply.gif') no-repeat scroll 1px center;
- background-color: inherit;
- padding-left: 17px;
- padding-right: 1px;
-}
-
-input.cbi-input-remove,
-div.cbi-section-remove input {
- background: url('../resources/cbi/remove.gif') no-repeat scroll 1px center;
- background-color: inherit;
- padding-left: 17px;
- padding-right: 1px;
-}
-
-input.cbi-button-up {
- background-image: url('../resources/cbi/up.gif');
- padding-left: 11px;
- padding-right: 1px;
-}
-
-input.cbi-button-down {
- background-image: url('../resources/cbi/down.gif');
- padding-left: 11px;
- padding-right: 1px;
-}
-
-input.cbi-button-edit {
- background-image: url('../resources/cbi/edit.gif');
- color: #000000;
- padding-left: 17px;
- padding-right: 1px;
-}
-
-input.cbi-button-reload {
- background-image: url('../resources/cbi/reload.gif');
- color: #000000;
- padding-left: 17px;
- padding-right: 1px;
-}
-
-input.cbi-button-reset {
- background-image: url('../resources/cbi/reset.gif');
- color: #000000;
- padding-left: 17px;
- padding-right: 1px;
-}
-
-input.cbi-button-remove {
- background-image: url('../resources/cbi/remove.gif');
- color: #000000;
- padding-left: 17px;
- padding-right: 1px;
-}
-
-.cbi-input-invalid {
- background-image: url('../resources/cbi/reset.gif');
- background-repeat: no-repeat;
- background-position: right;
- color: #FF0000 !important;
- border-color: #FF0000;
-}
-
-div.cbi-section-remove input {
- border-bottom: none;
-}
-
-textarea {
- margin-left: -1px;
- margin-bottom: 0.5em;
-}
-
-form > div > input[type=submit],
-form > div > input[type=reset] {
- float: right;
- margin-left: 0.5em;
-}
-
-table.smalltext {
-background-color: #FFCB05;
- border-top: 1px solid #666666;
- border-right: 1px solid #666666;
- border-bottom: 1px solid #666666;
- font-size: 90%;
- width: 80%;
- margin-left: auto;
- margin-right: auto;
- border-collapse: collapse;
-}
-
-table.smalltext tr:hover td {
-background-color: #FFE990;
-}
-
-table.smalltext tr th {
- padding: 0 0.25em;
- border-left: 1px solid #666666;
- text-align: left;
-}
-
-table.smalltext tr td {
- padding: 0 0.25em;
- border-top: 1px solid #666666;
- border-left: 1px solid #666666;
-}
-
-.cbi-rowstyle-1 {
- background-color: #FFF4BE;
-}
-
-.cbi-rowstyle-2 {
-}
-
-table.cbi-section-table .cbi-section-table-cell {
- padding: 3px;
- white-space: nowrap;
-}
-
-div.cbi-value {
- clear: left;
- vertical-align: middle;
- padding-left: 0.25em;
- border-bottom: 1px dotted #FFCB05;
-}
-
-div.cbi-value:hover {
- background: #FFF4BE;
-}
-
-div.cbi-value:last-child {
- border: none;
-}
-
-.cbi-value-title {
- float: left;
- width: 40%;
-}
-
-div.cbi-value-field {
- width: 58%;
- margin: 0.25em 0 0.25em 40%;
-}
-
-div.cbi-value-description {
- font-size: 90%;
-}
-
-div.cbi-value-field > div.cbi-value-description {
- display: none;
-}
-
-div.cbi-value:hover div.cbi-value-field > div.cbi-value-description {
- display: block;
- color: #ffffff;
- background-color: #FFCB05;
-}
-
-option:active,
-option:before,
-option:after,
-option:focus,
-option:hover {
- color: #ffffff;
- background-color: #EEBA00;
- background: url(images/bgoption.png);
-}
-
-div.cbi-section-create {
- clear: left;
- white-space: nowrap;
-}
-
-div.cbi-map-descr {
- margin-bottom: 1em;
-}
-
-div.cbi-optionals {
- margin: 0.5em 0;
- padding: 0 0.25em;
-}
-
-div.cbi-section-remove {
- float: right;
-}
-
-.cbi-section-node {
- clear: both;
- border: 1px dotted #FFCB05;
- padding-bottom: 0;
-}
-
-.cbi-section-node div.cbi-section-table-row {
- margin: 0.25em;
-}
-
-table.cbi-section-table {
- width: 100%;
- font-size: 95%;
-}
-
-table.cbi-section-table th,
-table.cbi-section-table td {
- text-align: center;
-}
-
-tr.cbi-section-table-descr th {
- font-weight: normal;
- font-size: 90%;
-}
-
-td.cbi-section-table-optionals {
- text-align: left !important;
- padding-top: 1em;
-}
-
-.cbi-value-helpicon img {
- vertical-align: bottom;
-}
-
-div.cbi-error {
- font-size: 95%;
- font-weight: bold;
- color: #FF0000;
-}
-
-td.cbi-value-error {
- border-color: red !important;
-}
-
-.cbi-value-error input,
-.cbi-value-error select {
- color: red !important;
- background-color: #FFCCCC;
-}
-
-.cbi-section-error {
- color: red;
- font-size: 95%;
- border: 1px dotted red;
- margin: 3px;
- padding: 3px;
-}
-
-ul.cbi-apply {
- font-size: 90%;
-}
-
-ul.cbi-tabmenu {
- padding: 3px 0;
- margin-left: 0 !important;
- margin-bottom: -1px;
- list-style-type: none;
-}
-
-ul.cbi-tabmenu li.cbi-tab,
-ul.cbi-tabmenu li.cbi-tab-disabled {
- display: inline;
- margin: 0;
-}
-
-ul.cbi-tabmenu li.cbi-tab a,
-ul.cbi-tabmenu li.cbi-tab-disabled a {
- text-decoration: none;
- padding: 3px 7px;
- margin-right: 3px;
- border: 1px outset #000;
- border-bottom: none;
- background-color: #eee;
- color: #bbb;
-}
-
-ul.cbi-tabmenu li.cbi-tab-highlighted a {
- color: #000;
- background-color: #FFEEAA;
-}
-
-ul.cbi-tabmenu li a:hover {
- color: #000;
-}
-
-ul.cbi-tabmenu li.cbi-tab a {
- position: relative;
- top: 1px;
- padding-top: 4px;
- color: #000;
- background-color: #fff;
-}
-
-div.cbi-tab-descr {
- background-image: url(/luci-static/resources/cbi/help.gif);
- background-position: 0.25em 50%;
- background-repeat: no-repeat;
- border-bottom: 1px solid #ccc;
- margin: 0.25em 0.25em 2em;
- padding: 0.5em 0.5em 0.5em 2em;
-}
-
-
-.left {
- text-align: left !important;
-}
-
-.right {
- text-align: right !important;
-}
-
-.luci {
- position: fixed;
- bottom: 0;
- left: 0;
- text-align: right;
-}
-
-.luci a {
- color: #666666;
- text-decoration: none;
- font-size: 70%;
-}
-
-.inline {
- display: inline;
-}
-
-.error500 {
- white-space: normal;
- border: 1px dotted #FF0000;
- background-color: #FFFFFF;
- padding: 0.5em;
-}
-
-/* obligatory IE6 Voodoo Code */
-* html body {
- padding-left: 50% !important;
-}
-
-* html div#header {
- margin-left: -100% !important;
-}
-
-* html div.menubar {
- margin-left: -100% !important;
- width: 200% !important;
-}
-
-* html div#maincontent {
- margin-left: -80% !important;
- width: 160% !important;
-}
-
-* html div.mainmenu div.hover ul,
-* html div.mainmenu div li.hover ul,
-* html div.mainmenu div li li.hover ul,
-* html div.mainmenu div li li li.hover ul,
-* html div.mainmenu div li li li li.hover ul {
- display: block !important;
- margin-left: 3em;
-}
-
-* html div.mainmenu div.hover ul {
- margin-left: 0;
-}
-
-* html div.mainmenu .hover ul ul,
-* html div.mainmenu .hover ul ul ul,
-* html div.mainmenu .hover ul ul ul ul,
-* html div.mainmenu .hover ul ul ul ul ul {
- display: none !important;
-}
-
-* html div.mainmenu li {
- height: 1em !important;
- width: 10em !important;
-}
-
-* html .mainmenu {
- height: 1.8em;
-}
-
-* html div.cbi-value-description {
- margin-left: 40%;
-}
-
-
-.ifacebox {
- background-color: #FFFFFF;
- border: 1px solid #CCCCCC;
- margin: 0 10px;
- text-align: center;
- white-space: nowrap;
-}
-
-.ifacebox .ifacebox-head {
- border-bottom: 1px solid #CCCCCC;
- padding: 2px;
-}
-
-.ifacebox .ifacebox-body {
- padding: 2px;
-}
-
-
-.ifacebadge {
- background-color: #FFFFFF;
- border: 1px solid #CCCCCC;
- padding: 2px;
- margin-left: 2px;
- display: inline-block;
-}
-
-.ifacebadge-active {
- border-color: #000000;
- font-weight: bold;
-}
-
-
-.zonebadge {
- padding: 2px;
- display: inline-block;
- white-space: nowrap;
- cursor: pointer;
-}
-
-.zonebadge em,
-.zonebadge strong {
- margin: 3px;
- display: inline-block;
-}
-
-.zonebadge input {
- width: 6em;
- height: 1.5em;
-}
-
-.zonebadge-empty {
- border: 1px dashed #AAAAAA;
- color: #AAAAAA;
- font-style: italic;
- font-size: smaller;
-}
diff --git a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/bgoption.png b/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/bgoption.png
deleted file mode 100644
index 6fd1e2f34..000000000
--- a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/bgoption.png
+++ /dev/null
Binary files differ
diff --git a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/favicon.ico b/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/favicon.ico
deleted file mode 100644
index 7247cfac5..000000000
--- a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-back.gif b/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-back.gif
deleted file mode 100644
index 21fe02b1e..000000000
--- a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-back.gif
+++ /dev/null
Binary files differ
diff --git a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-left.gif b/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-left.gif
deleted file mode 100644
index a3258ccb6..000000000
--- a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-left.gif
+++ /dev/null
Binary files differ
diff --git a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-right.gif b/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-right.gif
deleted file mode 100644
index 93d0291a2..000000000
--- a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-right.gif
+++ /dev/null
Binary files differ
diff --git a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/logo.gif b/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/logo.gif
deleted file mode 100644
index ff00d6ddb..000000000
--- a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/logo.gif
+++ /dev/null
Binary files differ
diff --git a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/main-back.png b/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/main-back.png
deleted file mode 100644
index 34aca44e0..000000000
--- a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/main-back.png
+++ /dev/null
Binary files differ
diff --git a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/schriftzug.gif b/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/schriftzug.gif
deleted file mode 100644
index 82607d533..000000000
--- a/themes/luci-theme-freifunk-bno/htdocs/luci-static/freifunk-bno/images/schriftzug.gif
+++ /dev/null
Binary files differ
diff --git a/themes/luci-theme-freifunk-bno/luasrc/view/themes/freifunk-bno/footer.htm b/themes/luci-theme-freifunk-bno/luasrc/view/themes/freifunk-bno/footer.htm
deleted file mode 100644
index 2dbade371..000000000
--- a/themes/luci-theme-freifunk-bno/luasrc/view/themes/freifunk-bno/footer.htm
+++ /dev/null
@@ -1,24 +0,0 @@
-<%#
- Copyright 2008 Steven Barth <steven@midlink.org>
- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
- Licensed to the public under the Apache License 2.0.
--%>
-
- <br class="clear" />
- </div>
-</div></div>
-</div>
-
-<div class="luci separator black whitetext bold">
- <% local ver = require "luci.version" -%>
- <a href="<%=controller%>/about">Powered by <%= ver.luciname %> (<%= ver.luciversion %>)</a>
-</div>
-</div><!-- end main --><div align="center" style="padding-top:5px "></div>
-<br>
-</div><!-- end wrapper -->
-
-</center>
-</div>
-
-</body>
-</html>
diff --git a/themes/luci-theme-freifunk-bno/luasrc/view/themes/freifunk-bno/header.htm b/themes/luci-theme-freifunk-bno/luasrc/view/themes/freifunk-bno/header.htm
deleted file mode 100644
index d108a0893..000000000
--- a/themes/luci-theme-freifunk-bno/luasrc/view/themes/freifunk-bno/header.htm
+++ /dev/null
@@ -1,209 +0,0 @@
-<%#
- Copyright 2008 Steven Barth <steven@midlink.org>
- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
- Licensed to the public under the Apache License 2.0.
--%>
-
-<%
-require("luci.sys")
-require("luci.util")
-
-local boardinfo = luci.util.ubus("system", "board")
-
-local request = require("luci.dispatcher").context.path
-local category = request[1]
-local tree = luci.dispatcher.node()
-local cattree = category and luci.dispatcher.node(category)
-local node = luci.dispatcher.context.dispatched
-
-local c = tree
-for i,r in ipairs(request) do
- if c.nodes and c.nodes[r] then
- c = c.nodes[r]
- c._menu_selected = true
- end
-end
-
-require("luci.http").prepare_content("text/html")
-
--%>
-
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <link rel="stylesheet" type="text/css" href="<%=media%>/cascade.css" />
- <% if node and node.css then %><link rel="stylesheet" type="text/css" href="<%=resource%>/<%=node.css%>" /><% end %>
- <% if css then %><style title="text/css">
- <%-= css %>
- </style>
- <% end -%>
- <link rel="shortcut icon" href="<%=media%>/images/favicon.ico" />
- <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
- <meta http-equiv="content-script-type" content="text/javascript" />
- <script type="text/javascript" src="<%=resource%>/xhr.js"></script>
- <title><%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title>
-
- <!--[if lt IE 7]>
- <script type="text/javascript">
- function setup_hover() {
- function ie_hover(e) {
- e.onmouseover = function() { this.className = "hover" }
- e.onmouseout = function() { this.className = null }
- }
-
- var lis = document.getElementById("mainmenu").getElementsByTagName("LI");
- var divs = document.getElementById("mainmenu").getElementsByTagName("DIV");
-
- for( var i = 0; i < lis.length; i++ ) ie_hover( lis[i] );
- for( var i = 0; i < divs.length; i++ ) ie_hover( divs[i] );
- }
- </script>
- <![endif]-->
-</head>
-<body onload="window.setup_hover && setup_hover()">
-<div id="all">
-<center>
-
-<div id="wrapper">
-<%- if luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%>
- <div class="warning">
- <strong><%:No password set!%></strong><br />
- <%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%>
- </div>
-<%- end -%>
-<div id="main">
-
-
-<div id="header">
- <div id="headerleft">
- <div id="headerright">
- <div id="headerback">
- <div id="schriftzug"><img src="<%=media%>/images/schriftzug.gif" alt="Freifunk Nordost ueberschrift" name="Freifunk_nordost_ueberschrift" border="0"> </div>
- <div id="logo"><img src="<%=media%>/images/logo.gif" alt="Freifunk Nordost logo" name="Freifunk_nordost" border="0"></a></div>
- <div class="clear"></div>
-
- </div>
- </div>
- </div>
-</div>
-
-<div class="pathbar separator black whitetext bold">
-<%:Path%>: <%
-local c = tree
-local url = controller
-for k,v in pairs(request) do
- if c.nodes and c.nodes[v] then
- c = c.nodes[v]
- url = url .. "/" .. v
- %><a href="<%=url%>"><%=pcdata(striptags(translate(c.title) or v))%></a> <% if k ~= #request then %>&#187; <% end
- end
-end
-%>
-</div>
-
-<div class="menubar">
- <div id="mainmenu" class="mainmenu">
-<%-
-local function submenu(prefix, node)
- if not node.nodes or node.hidden then
- return false
- end
- local index = {}
- local count = 0
- for k, n in pairs(node.nodes) do
- if n.title and n.target then
- table.insert(index, {name=k, order=n.order or 100})
- count = count + 1
- end
- end
-
- table.sort(index, function(a, b) return a.order < b.order end)
-
- if count > 0 then
-%>
- <ul>
- <%- for j, v in pairs(index) do
- if not v.hidden and #v.name > 0 then
- local nnode = node.nodes[v.name]
- local href = controller .. prefix .. v.name
- href = (nnode.query) and href .. luci.http.build_querystring(nnode.query) or href
- %>
- <li>
- <span<% if nnode._menu_selected then %> class="active"<%end%>><a href="<%=pcdata(href)%>"><%=pcdata(striptags(translate(nnode.title)))%></a></span>
- <%- submenu(prefix .. v.name .. "/", nnode) %>
- </li>
- <%- end %>
- <%- end %>
- </ul>
-<%-
- end
-end
-
-if cattree and cattree.nodes then
- local index = {}
- for k, node in pairs(cattree.nodes) do
- table.insert(index, {name=k, order=node.order or 100})
- end
-
- table.sort(index, function(a, b) return a.order < b.order end)
-
- for i, k in ipairs(index) do
- node = cattree.nodes[k.name]
- if not node.hidden and node.title and node.target then
- local href = controller.."/"..category.."/"..k.name
- href = (k.query) and href .. luci.http.build_querystring(k.query) or href %>
- <div<% if node._menu_selected then %> class="preactive"<%end%>><a href="<%=pcdata(href)%>"><%=pcdata(striptags(translate(node.title)))%></a>
- <%submenu("/" .. category .. "/" .. k.name .. "/", node)%>
- </div>
-<% end
- end
-end
-%>
- </div>
- <div class="modemenu">
- <ul><%
- for k,node in pairs(tree.nodes) do
- if node.title and not node.hidden then %>
- <li<% if request[1] == k then %> class="active"<%end%>><a href="<%=controller%>/<%=k%>"><%=pcdata(striptags(translate(node.title)))%></a></li>
-<% end
- end%>
- </ul>
- </div>
-
- <%
- if tree.nodes[category] and tree.nodes[category].ucidata then
- local ucic = 0
-
- for i, j in pairs(require("luci.model.uci").cursor():changes()) do
- for k, l in pairs(j) do
- for m, n in pairs(l) do
- ucic = ucic + 1;
- end
- end
- end
- %>
- <div class="mainmenu" style="float:right; margin-right:2em">
- <div>
- <% if ucic > 0 then %>
- <a class="warning" href="<%=controller%>/<%=category%>/uci/changes"><%:Unsaved Changes%>: <%=ucic%></a>
- <% submenu("/" .. category .. "/uci/", tree.nodes[category].nodes["uci"]) -%>
- <% else %>
- <a href="#"><%:Changes%>: 0</a>
- <% end %>
- </div>
- </div>
- <% end %>
-
- <br class="clear" />
-</div>
-
-<div id="maincontent">
-<% if category ~= "freifunk" and category ~= "splash" then %>
-<noscript>
- <div class="errorbox">
- <strong><%:Java Script required!%></strong><br />
- <%:You must enable Java Script in your browser or LuCI will not work properly.%>
- </div>
-</noscript>
-<% end %>
diff --git a/themes/luci-theme-freifunk-bno/root/etc/uci-defaults/luci-theme-freifunk-bno b/themes/luci-theme-freifunk-bno/root/etc/uci-defaults/luci-theme-freifunk-bno
deleted file mode 100755
index a19f2bb41..000000000
--- a/themes/luci-theme-freifunk-bno/root/etc/uci-defaults/luci-theme-freifunk-bno
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-uci batch <<-EOF
- set luci.themes.Freifunk_BNO=/luci-static/freifunk-bno
- set luci.main.mediaurlbase=/luci-static/freifunk-bno
- commit luci
-EOF