* luci-0.8: merge r3791
authorJo-Philipp Wich <jow@openwrt.org>
Sun, 16 Nov 2008 22:46:25 +0000 (22:46 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sun, 16 Nov 2008 22:46:25 +0000 (22:46 +0000)
18 files changed:
i18n/english/luasrc/i18n/default.en.lua
i18n/english/luasrc/i18n/default.en.xml
i18n/french/luasrc/i18n/default.fr.lua
i18n/french/luasrc/i18n/default.fr.xml
i18n/german/luasrc/i18n/default.de.lua
i18n/german/luasrc/i18n/default.de.xml
i18n/portuguese_brazilian/luasrc/i18n/default.pt-br.lua
i18n/portuguese_brazilian/luasrc/i18n/default.pt-br.xml
i18n/russian/luasrc/i18n/default.ru.lua
i18n/russian/luasrc/i18n/default.ru.xml
libs/core/luasrc/util.lua
libs/sys/luasrc/sys.lua
modules/admin-full/luasrc/controller/admin/status.lua
modules/admin-full/luasrc/view/admin_status/dmesg.htm [new file with mode: 0644]
modules/admin-full/luasrc/view/admin_status/syslog.htm
themes/fledermaus/htdocs/luci-static/fledermaus/cascade.css
themes/openwrt-light/htdocs/luci-static/openwrt-light/cascade.css
themes/openwrt.org/htdocs/luci-static/openwrt.org/cascade.css

index 666b7a312438d0a1c9077e49bafae3905269bbd4..d923a88fc4f73964a5a056f15cccc7607d8c0568 100644 (file)
@@ -27,6 +27,7 @@ device = 'Device'
 devices = 'Devices'
 disable = 'disable'
 distance = 'Distance'
+dmesg = 'Kernel Log'
 dnsserver = '<abbr title="Domain Name System">DNS</abbr>-Server'
 edit = 'Edit'
 enable = 'enable'
index 3c0f270c2242c6d367ffe99dd0355ad91dd70944..e499dbb392a486542f90aef80bd62a98d9b3add5 100644 (file)
@@ -32,6 +32,7 @@
 <i18n:msg xml:id="devices">Devices</i18n:msg>
 <i18n:msg xml:id="disable">disable</i18n:msg>
 <i18n:msg xml:id="distance">Distance</i18n:msg>
+<i18n:msg xml:id="dmesg">Kernel Log</i18n:msg>
 <i18n:msg xml:id="dnsserver"><abbr title="Domain Name System">DNS</abbr>-Server</i18n:msg>
 <i18n:msg xml:id="edit">Edit</i18n:msg>
 <i18n:msg xml:id="enable">enable</i18n:msg>
index 60cba34381bc7d9f52e4736e2651b82153ad4744..808abea9405ab90197f2f3687d48914d470f88af 100644 (file)
@@ -27,6 +27,7 @@ device = 'Equipement'
 devices = 'Equipements'
 disable = 'désactiver'
 distance = 'Distance'
+dmesg = 'Journal du noyau'
 dnsserver = 'Serveur DNS'
 edit = 'Editer'
 enable = 'activer'
index d91f5e2879898abfe5ac4211aea02b871d9960bc..f17ef92c9d82b82af94b02e0bff37095e777d37c 100644 (file)
@@ -32,6 +32,7 @@
 <i18n:msg xml:id="devices">Equipements</i18n:msg>
 <i18n:msg xml:id="disable">désactiver</i18n:msg>
 <i18n:msg xml:id="distance">Distance</i18n:msg>
+<i18n:msg xml:id="dmesg">Journal du noyau</i18n:msg>
 <i18n:msg xml:id="dnsserver">Serveur DNS</i18n:msg>
 <i18n:msg xml:id="edit">Editer</i18n:msg>
 <i18n:msg xml:id="enable">activer</i18n:msg>
index 24c37eaa9206c63ca0ea9e29c4e77f5ca671a829..238cba56e8f997adb1542f0a3999eb0a6867d285 100644 (file)
@@ -27,6 +27,7 @@ device = 'Gerät'
 devices = 'Geräte'
 disable = 'deaktivieren'
 distance = 'Distanz'
+dmesg = 'Kernelprotokoll'
 dnsserver = 'DNS-Server'
 edit = 'Bearbeiten'
 enable = 'aktivieren'
index e9c4ca2c0418b83d5b0edcbc3f20809bff96b60e..fb1348d11555c7773551d8ca9395196ee7302b9d 100644 (file)
@@ -36,6 +36,7 @@
 <i18n:msg xml:id="devices">Geräte</i18n:msg>
 <i18n:msg xml:id="disable">deaktivieren</i18n:msg>
 <i18n:msg xml:id="distance">Distanz</i18n:msg>
+<i18n:msg xml:id="dmesg">Kernelprotokoll</i18n:msg>
 <i18n:msg xml:id="dnsserver">DNS-Server</i18n:msg>
 
 <i18n:msg xml:id="edit">Bearbeiten</i18n:msg>
index 3e17c478b73d0168a3530faa9a468168a7434d97..26672bdf9ae92c86aa6d8df3d1e205b2db412b1b 100644 (file)
@@ -28,6 +28,7 @@ device = 'Dispositivo'
 devices = 'Dispositivos'
 disable = 'desativar'
 distance = 'Distância'
+dmesg = 'Log do Kernel'
 dnsserver = 'Servidor-<abbr title="Sistema de Nomes de Domínios">DNS</abbr>'
 edit = 'Editar'
 enable = 'ativar'
index fbce7fbb66240a25ee07454fddc1860180a8c119..ac90be3ba6f0bdf27dcb35fef914db5ae38c2f0a 100644 (file)
 <i18n:msg xml:id="delete">Apagar</i18n:msg>
 <i18n:msg xml:id="descr">Descrição</i18n:msg>
 <i18n:msg xml:id="design">Tema</i18n:msg>
-<i18n:msg xml:id="destination">Destino</i18n:msg> 
+<i18n:msg xml:id="destination">Destino</i18n:msg>
 <i18n:msg xml:id="device">Dispositivo</i18n:msg>
 <i18n:msg xml:id="devices">Dispositivos</i18n:msg>
 <i18n:msg xml:id="disable">desativar</i18n:msg>
 <i18n:msg xml:id="distance">Distância</i18n:msg>
+<i18n:msg xml:id="dmesg">Log do Kernel</i18n:msg>
 <i18n:msg xml:id="dnsserver">Servidor-<abbr title="Sistema de Nomes de Domínios">DNS</abbr></i18n:msg>
 <i18n:msg xml:id="edit">Editar</i18n:msg>
 <i18n:msg xml:id="enable">ativar</i18n:msg>
@@ -87,7 +88,7 @@
 <i18n:msg xml:id="services">Serviços</i18n:msg>
 <i18n:msg xml:id="settings">Configurações</i18n:msg>
 <i18n:msg xml:id="size">Tamanho</i18n:msg>
-<i18n:msg xml:id="source">Origem</i18n:msg> 
+<i18n:msg xml:id="source">Origem</i18n:msg>
 <i18n:msg xml:id="start">Início</i18n:msg>
 <i18n:msg xml:id="static">estático</i18n:msg>
 <i18n:msg xml:id="status">Status</i18n:msg>
index efdac7bc00a150260d82272f8e5daeb59bc7129c..fe59e45a177f57873ce68c7bd7e1aedc62501a54 100644 (file)
@@ -22,6 +22,7 @@ device = 'Устройство'
 devices = 'Устройства'
 disable = 'выключено'
 distance = 'Расстояние'
+dmesg = 'Kernel log'
 dnsserver = '<abbr title="Служба Доменных Имён">DNS</abbr>-Сервер'
 edit = 'Редактировать'
 enable = 'включено'
index f3be7c7fbdcd9cc419572e87a0533e9a1c39328f..69f092ac3b3b420210e1ffcbea6e70583a68a05a 100644 (file)
@@ -26,6 +26,7 @@
 <i18n:msg xml:id="devices">Устройства</i18n:msg>
 <i18n:msg xml:id="disable">выключено</i18n:msg>
 <i18n:msg xml:id="distance">Расстояние</i18n:msg>
+<i18n:msg xml:id="dmesg">Kernel log</i18n:msg>
 <i18n:msg xml:id="dnsserver"><abbr title="Служба Доменных Имён">DNS</abbr>-Сервер</i18n:msg>
 <i18n:msg xml:id="edit">Редактировать</i18n:msg>
 <i18n:msg xml:id="enable">включено</i18n:msg>
index 109ccab286067506dfda99114b2b604109037005..ea1fccbc1cdce15a8f169ee6c60b3e63a12f683c 100644 (file)
@@ -261,6 +261,16 @@ function trim(str)
        return (str:gsub("^%s*(.-)%s*$", "%1"))
 end
 
+--- Count the occurences of given substring in given string.
+-- @param str          String to search in
+-- @param pattern      String containing pattern to find
+-- @return                     Number of found occurences
+function cmatch(str, pat)
+       local count = 0
+       for _ in str:gmatch(pat) do count = count + 1 end
+       return count
+end
+
 --- Parse certain units from the given string and return the canonical integer
 -- value or 0 if the unit is unknown. Upper- or lower case is irrelevant.
 -- Recognized units are:
@@ -320,6 +330,16 @@ function parse_units(ustr)
        return val
 end
 
+-- also register functions above in the central string class for convenience
+string.escape      = escape
+string.pcdata      = pcdata
+string.striptags   = striptags
+string.split       = split
+string.trim        = trim
+string.cmatch      = cmatch
+string.parse_units = parse_units
+
+
 --- Appends numerically indexed tables or single objects to a given table.
 -- @param src  Target table
 -- @param ...  Objects to insert
index 413aa4c11f57f57838c9688ba12827cd85ea0717..52ed0c36d9d2b36d48c917b3616432fa64597f19 100644 (file)
@@ -204,6 +204,12 @@ function syslog()
        return luci.util.exec("logread")
 end
 
+--- Retrieves the output of the "dmesg" command.
+-- @return     String containing the current log buffer
+function dmesg()
+       return luci.util.exec("dmesg")
+end
+
 --- Generates a random id with specified length.
 -- @param bytes        Number of bytes for the unique id
 -- @return             String containing hex encoded id
index addc3ca7439667af7190f2f04cc142ae10fdfddd..09e7766c1f70745fc8676a27f68b0037ee70bd29 100644 (file)
@@ -18,10 +18,16 @@ function index()
        local i18n = luci.i18n.translate
 
        entry({"admin", "status"}, template("admin_status/index"), i18n("status", "Status"), 20).index = true
-       entry({"admin", "status", "syslog"}, call("action_syslog"), i18n("syslog", "Systemprotokoll"))
+       entry({"admin", "status", "syslog"}, call("action_syslog"), i18n("syslog", "Systemprotokoll"), 1)
+    entry({"admin", "status", "dmesg"}, call("action_dmesg"), i18n("dmesg", "Kernelprotokoll"), 2)
 end
 
 function action_syslog()
        local syslog = luci.sys.syslog()
        luci.template.render("admin_status/syslog", {syslog=syslog})
-end
\ No newline at end of file
+end
+
+function action_dmesg()
+       local dmesg = luci.sys.dmesg()
+       luci.template.render("admin_status/dmesg", {dmesg=dmesg})
+end
diff --git a/modules/admin-full/luasrc/view/admin_status/dmesg.htm b/modules/admin-full/luasrc/view/admin_status/dmesg.htm
new file mode 100644 (file)
index 0000000..4fa8673
--- /dev/null
@@ -0,0 +1,20 @@
+<%#
+LuCI - Lua Configuration Interface
+Copyright 2008 Steven Barth <steven@midlink.org>
+Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+$Id: syslog.htm 3622 2008-10-23 16:05:55Z jow $
+
+-%>
+<%+header%>
+<h2><a id="content" name="content"><%:dmesg%></a></h2>
+<div id="content_syslog">
+<textarea readonly="readonly" wrap="off" rows="<%=dmesg:cmatch("\n")+2%>" id="syslog"><%=dmesg:pcdata()%></textarea>
+</div>
+<%+footer%>
index d5bf5d65a1feb8d7daf43c90a2948001b66db3e6..2e172cfbf95d691757cffdcf6135388e3e9ec1b7 100644 (file)
@@ -13,9 +13,8 @@ $Id$
 
 -%>
 <%+header%>
-<h2><a id="content" name="content"><%:status%></a></h2>
-<h3><%:syslog%></h3>
+<h2><a id="content" name="content"><%:syslog%></a></h2>
 <div id="content_syslog">
-<textarea readonly="readonly" wrap="off" id="syslog"><%=luci.util.pcdata(syslog)%></textarea>
+<textarea readonly="readonly" wrap="off" rows="<%=syslog:cmatch("\n")+2%>" id="syslog"><%=syslog:pcdata()%></textarea>
 </div>
 <%+footer%>
index 590e062985f98e00d2af7f332783f8fa315b0fd3..f9adadee8aedd7c8e603877cf0413a293a408849 100644 (file)
@@ -191,6 +191,14 @@ div#maincontent ul {
        margin-bottom: 1em;
 }
 
+textarea#syslog {
+       width: 98%;
+       min-height: 500px;
+       border: 3px solid #cccccc;
+       padding: 5px;
+       font-family: monospace;
+}
+
 .cbi-section {
        margin-bottom: 0.5em;
        padding: 0.5em 1em;
index 6c0e282c5f933069a6bf74145e89e7ee56510c6a..a26e6622213cd785fe880d1d0e0390600d3e01b8 100644 (file)
@@ -356,6 +356,14 @@ html #menubar a:visited.warning {
        margin-bottom: 1em;
 }
 
+textarea#syslog {
+       width: 98%;
+       min-height: 500px;
+       border: 3px solid #cccccc;
+       padding: 5px;
+       font-family: monospace;
+}
+
 .cbi-section {
        margin-bottom: 0.5em;
        padding: 0.5em 1em;
index 82d578f0dcce1eac1441860ed6806829254e741d..9940b09ac8824db383c4f2cb0e6b358f36b9269a 100644 (file)
@@ -335,11 +335,10 @@ html #menubar a:visited.warning {
 
 textarea#syslog {
        width: 98%;
-       height: 450px;
+       min-height: 500px;
        border: 3px solid #cccccc;
        padding: 5px;
        font-family: monospace;
-       overflow: auto;
 }
 
 #maincontent {