1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00

Update luci-base and luci-mod-admin-full to latest upstream version

This commit is contained in:
Ycarus 2018-07-03 16:03:20 +02:00
parent e00cf0f4f0
commit 6b6c7e6d7a
75 changed files with 3309 additions and 2564 deletions

View file

@ -14,12 +14,13 @@ LUCI_BASENAME:=base
LUCI_TITLE:=LuCI core libraries
LUCI_DEPENDS:=+lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +luci-lib-jsonc +liblucihttp-lua
PKG_SOURCE:=LuaSrcDiet-0.12.1.tar.bz2
PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/luasrcdiet
PKG_HASH:=ed7680f2896269ae8633756e7edcf09050812f78c8f49e280e63c30d14f35aea
PKG_LICENSE:=Apache-2.0
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/LuaSrcDiet-0.12.1
PKG_SOURCE:=v1.0.0.tar.gz
PKG_SOURCE_URL:=https://github.com/jirutka/luasrcdiet/archive/
PKG_HASH:=48162e63e77d009f5848f18a5cabffbdfc867d0e5e73c6d407f6af5d6880151b
PKG_LICENSE:=MIT
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/luasrcdiet-1.0.0
include $(INCLUDE_DIR)/host-build.mk
@ -36,13 +37,13 @@ endef
define Host/Compile
$(MAKE) -C src/ clean po2lmo
$(MAKE) -C $(HOST_BUILD_DIR) bin/LuaSrcDiet.lua
$(MAKE) -C $(HOST_BUILD_DIR) bin/luasrcdiet
endef
define Host/Install
$(INSTALL_DIR) $(1)/bin
$(INSTALL_BIN) src/po2lmo $(1)/bin/po2lmo
$(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/LuaSrcDiet.lua $(1)/bin/LuaSrcDiet
$(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/luasrcdiet $(1)/bin/luasrcdiet
endef
$(eval $(call HostBuild))

View file

@ -620,7 +620,11 @@ function cbi_init() {
}
document.querySelectorAll('.cbi-dropdown').forEach(function(s) {
cbi_dropdown_init(s);
cbi_dropdown_init(s);
});
document.querySelectorAll('.cbi-tooltip:not(:empty)').forEach(function(s) {
s.parentNode.classList.add('cbi-tooltip-container');
});
cbi_d_update();
@ -1232,14 +1236,13 @@ function cbi_validate_field(cbid, optional, type)
function cbi_row_swap(elem, up, store)
{
var tr = elem.parentNode;
while (tr && !tr.classList.contains('cbi-section-table-row'))
tr = tr.parentNode;
var tr = findParent(elem.parentNode, '.cbi-section-table-row');
if (!tr)
return false;
tr.classList.remove('flash');
if (up) {
var prev = tr.previousElementSibling;
@ -1277,6 +1280,9 @@ function cbi_row_swap(elem, up, store)
if (input)
input.value = ids.join(' ');
window.scrollTo(0, tr.offsetTop);
window.setTimeout(function() { tr.classList.add('flash'); }, 1);
return false;
}
@ -1522,6 +1528,19 @@ function toElem(s)
return elem || null;
}
function findParent(node, selector)
{
while (node)
if (node.msMatchesSelector && node.msMatchesSelector(selector))
return node;
else if (node.matches && node.matches(selector))
return node;
else
node = node.parentNode;
return null;
}
function E()
{
var html = arguments[0],
@ -1541,7 +1560,7 @@ function E()
if (attr)
for (var key in attr)
if (attr.hasOwnProperty(key))
if (attr.hasOwnProperty(key) && attr[key] !== null && attr[key] !== undefined)
elem.setAttribute(key, attr[key]);
if (typeof(data) === 'function')
@ -1818,18 +1837,6 @@ CBIDropdown = {
document.querySelectorAll('.cbi-dropdown[open]').forEach(function(s) {
s.dispatchEvent(new CustomEvent('cbi-dropdown-close', {}));
});
},
findParent: function(node, selector) {
while (node)
if (node.msMatchesSelector && node.msMatchesSelector(selector))
return node;
else if (node.matches && node.matches(selector))
return node;
else
node = node.parentNode;
return null;
}
};
@ -1908,7 +1915,7 @@ function cbi_dropdown_init(sb) {
sbox.openDropdown(this);
}
else {
var li = sbox.findParent(ev.target, 'li');
var li = findParent(ev.target, 'li');
if (li && li.parentNode.classList.contains('dropdown'))
sbox.toggleItem(this, li);
}
@ -1933,7 +1940,7 @@ function cbi_dropdown_init(sb) {
}
else
{
var active = sbox.findParent(document.activeElement, 'li');
var active = findParent(document.activeElement, 'li');
switch (ev.keyCode) {
case 27:
@ -1986,7 +1993,7 @@ function cbi_dropdown_init(sb) {
if (!this.hasAttribute('open'))
return;
var li = sbox.findParent(ev.target, 'li');
var li = findParent(ev.target, 'li');
if (li) {
if (li.parentNode.classList.contains('dropdown'))
sbox.setFocus(this, li);
@ -2023,18 +2030,18 @@ function cbi_dropdown_init(sb) {
});
create.addEventListener('focus', function(ev) {
var cbox = sbox.findParent(this, 'li').querySelector('input[type="checkbox"]');
var cbox = findParent(this, 'li').querySelector('input[type="checkbox"]');
if (cbox) cbox.checked = true;
sb.setAttribute('locked-in', '');
});
create.addEventListener('blur', function(ev) {
var cbox = sbox.findParent(this, 'li').querySelector('input[type="checkbox"]');
var cbox = findParent(this, 'li').querySelector('input[type="checkbox"]');
if (cbox) cbox.checked = false;
sb.removeAttribute('locked-in');
});
var li = sbox.findParent(create, 'li');
var li = findParent(create, 'li');
li.setAttribute('unselectable', '');
li.addEventListener('click', function(ev) {
@ -2044,3 +2051,77 @@ function cbi_dropdown_init(sb) {
}
cbi_dropdown_init.prototype = CBIDropdown;
function cbi_update_table(table, data, placeholder) {
target = isElem(table) ? table : document.querySelector(table);
if (!isElem(target))
return;
target.querySelectorAll('.tr.table-titles, .cbi-section-table-titles').forEach(function(thead) {
var titles = [];
thead.querySelectorAll('.th').forEach(function(th) {
titles.push(th);
});
if (Array.isArray(data)) {
var n = 0, rows = target.querySelectorAll('.tr');
data.forEach(function(row) {
var trow = E('div', { 'class': 'tr' });
for (var i = 0; i < titles.length; i++) {
var text = titles[i].innerText;
var td = trow.appendChild(E('div', {
'class': titles[i].className,
'data-title': text ? text.trim() : null
}, row[i] || ''));
td.classList.remove('th');
td.classList.add('td');
}
trow.classList.add('cbi-rowstyle-%d'.format((n++ % 2) ? 2 : 1));
if (rows[n])
target.replaceChild(trow, rows[n]);
else
target.appendChild(trow);
});
while (rows[++n])
target.removeChild(rows[n]);
if (placeholder && target.firstElementChild === target.lastElementChild) {
var trow = target.appendChild(E('div', { 'class': 'tr placeholder' }));
var td = trow.appendChild(E('div', { 'class': titles[0].className }, placeholder));
td.classList.remove('th');
td.classList.add('td');
}
}
else {
thead.parentNode.style.display = 'none';
thead.parentNode.querySelectorAll('.tr, .cbi-section-table-row').forEach(function(trow) {
if (trow !== thead) {
var n = 0;
trow.querySelectorAll('.th, .td').forEach(function(td) {
if (n < titles.length) {
var text = (titles[n++].innerText || '').trim();
if (text !== '')
td.setAttribute('data-title', text);
}
});
}
});
thead.parentNode.style.display = '';
}
});
}
document.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('.table').forEach(cbi_update_table);
});

View file

@ -204,7 +204,6 @@ XHR.poll = function(interval, url, data, callback, post)
};
XHR._q.push(e);
XHR.run();
return e;
}
@ -260,3 +259,5 @@ XHR.running = function()
{
return !!(XHR._r && XHR._i);
}
document.addEventListener('DOMContentLoaded', XHR.run);

View file

@ -703,15 +703,22 @@ function _create_node(path)
local last = table.remove(path)
local parent = _create_node(path)
c = {nodes={}, auto=true}
-- the node is "in request" if the request path matches
-- at least up to the length of the node path
if parent.inreq and context.path[#path+1] == last then
c.inreq = true
c = {nodes={}, auto=true, inreq=true}
local _, n
for _, n in ipairs(path) do
if context.path[_] ~= n then
c.inreq = false
break
end
end
c.inreq = c.inreq and (context.path[#path + 1] == last)
parent.nodes[last] = c
context.treecache[name] = c
end
return c
end

View file

@ -6,9 +6,25 @@ module("luci.tools.status", package.seeall)
local uci = require "luci.model.uci".cursor()
local ipc = require "luci.ip"
local function duid_to_mac(duid)
local b1, b2, b3, b4, b5, b6
-- DUID-LLT / Ethernet
if type(duid) == "string" and #duid == 28 then
b1, b2, b3, b4, b5, b6 = duid:match("^00010001(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)%x%x%x%x%x%x%x%x$")
-- DUID-LL / Ethernet
elseif type(duid) == "string" and #duid == 20 then
b1, b2, b3, b4, b5, b6 = duid:match("^00030001(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$")
end
return b1 and ipc.checkmac(table.concat({ b1, b2, b3, b4, b5, b6 }, ":"))
end
local function dhcp_leases_common(family)
local rv = { }
local nfs = require "nixio.fs"
local sys = require "luci.sys"
local leasefile = "/tmp/dhcp.leases"
uci:foreach("dhcp", "dnsmasq",
@ -87,6 +103,22 @@ local function dhcp_leases_common(family)
fd:close()
end
if family == 6 then
local _, lease
local hosts = sys.net.host_hints()
for _, lease in ipairs(rv) do
local mac = duid_to_mac(lease.duid)
local host = mac and hosts[mac]
if host then
if not lease.name then
lease.host_hint = host.name or host.ipv4 or host.ipv6
elseif host.name and lease.hostname ~= host.name then
lease.host_hint = host.name
end
end
end
end
return rv
end
@ -113,6 +145,11 @@ function wifi_networks()
local net
for _, net in ipairs(dev:get_wifinets()) do
local a, an = nil, 0
for _, a in pairs(net:assoclist() or {}) do
an = an + 1
end
rd.networks[#rd.networks+1] = {
name = net:shortname(),
link = net:adminlink(),
@ -128,10 +165,10 @@ function wifi_networks()
noise = net:noise(),
bitrate = net:bitrate(),
ifname = net:ifname(),
assoclist = net:assoclist(),
country = net:country(),
txpower = net:txpower(),
txpoweroff = net:txpower_offset(),
num_assoc = an,
disabled = (dev:get("disabled") == "1" or
net:get("disabled") == "1")
}
@ -165,7 +202,6 @@ function wifi_network(id)
noise = net:noise(),
bitrate = net:bitrate(),
ifname = net:ifname(),
assoclist = net:assoclist(),
country = net:country(),
txpower = net:txpower(),
txpoweroff = net:txpower_offset(),
@ -182,6 +218,52 @@ function wifi_network(id)
return { }
end
function wifi_assoclist()
local sys = require "luci.sys"
local ntm = require "luci.model.network".init()
local hosts = sys.net.host_hints()
local assoc = {}
local _, dev, net, bss
for _, dev in ipairs(ntm:get_wifidevs()) do
local radioname = dev:get_i18n()
for _, net in ipairs(dev:get_wifinets()) do
local netname = net:shortname()
local netlink = net:adminlink()
local ifname = net:ifname()
for _, bss in pairs(net:assoclist() or {}) do
local host = hosts[_]
bss.bssid = _
bss.ifname = ifname
bss.radio = radioname
bss.name = netname
bss.link = netlink
bss.host_name = (host) and (host.name or host.ipv4 or host.ipv6)
bss.host_hint = (host and host.name and (host.ipv4 or host.ipv6)) and (host.ipv4 or host.ipv6)
assoc[#assoc+1] = bss
end
end
end
table.sort(assoc, function(a, b)
if a.radio ~= b.radio then
return a.radio < b.radio
elseif a.ifname ~= b.ifname then
return a.ifname < b.ifname
else
return a.bssid < b.bssid
end
end)
return assoc
end
function switch_status(devs)
local dev
local switches = { }

View file

@ -47,7 +47,7 @@
}
</style>
<script type="text/javascript" src="<%=resource%>/cbi.js?v=git-18.138.59467-72fe5dd"></script>
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<script type="text/javascript">//<![CDATA[
var xhr = new XHR(),
uci_apply_auth = { sid: '<%=luci.dispatcher.context.authsession%>', token: '<%=token%>' },

View file

@ -1,6 +1,6 @@
<%+cbi/valueheader%>
<% if self:cfgvalue(section) ~= false then %>
<input class="cbi-button cbi-input-<%=self.inputstyle or "button" %>" type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> />
<input class="cbi-button cbi-button-<%=self.inputstyle or "button" %>" type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> />
<% else %>
-
<% end %>

View file

@ -1,2 +1,10 @@
<div class="td cbi-value-field<% if self.error and self.error[section] then %> cbi-value-error<% end %>">
<%-
local title = luci.util.trim(striptags(self.title))
local ftype = self.template and self.template:gsub("^.+/", "")
-%>
<div class="td cbi-value-field<% if self.error and self.error[section] then %> cbi-value-error<% end %>"<%=
attr("data-name", self.option) ..
ifattr(ftype and #ftype > 0, "data-type", ftype) ..
ifattr(title and #title > 0, "data-title", title)
%>>
<div id="cbi-<%=self.config.."-"..section.."-"..self.option%>" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>">

View file

@ -36,6 +36,18 @@
<%=pcdata(self.vallist[i])%>
</li>
<% end %>
<% if self.custom then %>
<li>
<input type="password" style="display:none" />
<input class="create-item-input" type="text"<%=
attr("placeholder", self.custom ~= true and
self.custom or
(self.multiple and
translate("Enter custom values") or
translate("Enter custom value")))
%> />
</li>
<% end %>
</ul>
</div>

View file

@ -14,46 +14,59 @@
local def = fwm:get_defaults()
local zone = fwm:get_zone(value)
local empty = true
local function render_zone(zone)
-%>
<label class="zonebadge" style="background-color:<%=zone:get_color()%>">
<strong><%=zone:name()%></strong>
<div class="cbi-tooltip">
<%-
local zempty = true
for _, net in ipairs(zone:get_networks()) do
net = nwm:get_network(net)
if net then
zempty = false
-%>
<span class="ifacebadge<% if net:name() == self.network then %> ifacebadge-active<% end %>"><%=net:name()%>:&#160;
<%
local nempty = true
for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do
nempty = false
%>
<img<%=attr("title", iface:get_i18n())%> src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
<% end %>
<% if nempty then %><em><%:(empty)%></em><% end %>
</span>
<%- end end -%>
<% if zempty then %><span class="ifacebadge"><em><%:(empty)%></em></span><% end %>
</div>
</label>
<%-
end
-%>
<% if zone then %>
<div style="white-space:nowrap">
<label class="zonebadge" style="background-color:<%=zone:get_color()%>">
<strong><%=zone:name()%>:</strong>
<%-
local zempty = true
for _, net in ipairs(zone:get_networks()) do
net = nwm:get_network(net)
if net then
zempty = false
-%>
<span class="ifacebadge<% if net:name() == self.network then %> ifacebadge-active<% end %>"><%=net:name()%>:
<%
local nempty = true
for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do
nempty = false
%>
<img<%=attr("title", iface:get_i18n())%> style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
<% end %>
<% if nempty then %><em><%:(empty)%></em><% end %>
</span>
<%- end end -%>
<%- if zempty then %><em><%:(empty)%></em><% end -%>
</label>
&#160;&#8658;&#160;
<% for _, fwd in ipairs(zone:get_forwardings_by("src")) do
fz = fwd:dest_zone()
if fz then
empty = false %>
<label class="zonebadge" style="background-color:<%=fz:get_color()%>">
<strong><%=fz:name()%></strong>
</label>&#160;
<% end end %>
<% if empty then %>
<div class="zone-forwards">
<div class="zone-src">
<%=render_zone(zone)%>
</div>
<span>&#8658;</span>
<div class="zone-dest">
<%
for _, fwd in ipairs(zone:get_forwardings_by("src")) do
fz = fwd:dest_zone()
if fz then
empty = false
render_zone(fz)
end
end
if empty then
%>
<label class="zonebadge zonebadge-empty">
<strong><%=zone:forward():upper()%></strong>
</label>
<% end %>
</div>
</div>
<% end %>

View file

@ -1,9 +1,7 @@
<%- if pageaction then -%>
<div class="cbi-page-actions">
<% if redirect and not flow.hidebackbtn then %>
<div style="float:left">
<input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" onclick="location.href='<%=pcdata(redirect)%>'" />
</div>
<% end %>
<% if flow.skip then %>

View file

@ -3,7 +3,6 @@
<br />
<%- end %>
<div class="cbi-value-description">
<span class="cbi-value-helpicon"><img src="<%=resource%>/cbi/help.gif" alt="<%:help%>" /></span>
<%=self.description%>
</div>
<%- end %>

View file

@ -31,7 +31,6 @@
</li>
<% end %>
</ul>
<br />
<% for i, section in ipairs(self.children) do %>
<div class="cbi-tabcontainer" id="container.m-<%=self.config%>.<%=section.section or section.sectiontype%>"<% if section.sectiontype ~= self.selected_tab then %> style="display:none"<% end %>>
<% section:render() %>
@ -53,6 +52,4 @@
<% else %>
<%- self:render_children() %>
<% end %>
<br />
</div>

View file

@ -1,5 +1,5 @@
<% if self:cfgvalue(self.section) then section = self.section %>
<fieldset class="cbi-section">
<div class="cbi-section">
<% if self.title and #self.title > 0 then -%>
<legend><%=self.title%></legend>
<%- end %>
@ -15,17 +15,16 @@
<div class="cbi-section-node<% if self.tabs then %> cbi-section-node-tabbed<% end %>" id="cbi-<%=self.config%>-<%=section%>">
<%+cbi/ucisection%>
</div>
<br />
</fieldset>
</div>
<% elseif self.addremove then %>
<% if self.template_addremove then include(self.template_addremove) else -%>
<fieldset class="cbi-section" id="cbi-<%=self.config%>-<%=self.section%>">
<div class="cbi-section" id="cbi-<%=self.config%>-<%=self.section%>">
<% if self.title and #self.title > 0 then -%>
<legend><%=self.title%></legend>
<%- end %>
<div class="cbi-section-descr"><%=self.description%></div>
<input type="submit" class="cbi-button cbi-button-add" name="cbi.cns.<%=self.config%>.<%=self.section%>" value="<%:Add%>" />
</fieldset>
</div>
<%- end %>
<% end %>
<!-- /nsection -->

View file

@ -1,4 +1,4 @@
<fieldset class="cbi-section">
<div class="cbi-section">
<% if self.title and #self.title > 0 then -%>
<legend><%=self.title%></legend>
<%- end %>
@ -25,8 +25,7 @@
</div>
<%- end %>
</div>
<br />
</fieldset>
</div>
<%-
if type(self.hidden) == "table" then
for k, v in pairs(self.hidden) do

View file

@ -10,7 +10,6 @@
<% if self.title and #self.title > 0 then %><h2 name="content"><%=self.title%></h2><% end %>
<% if self.description and #self.description > 0 then %><div class="cbi-map-descr"><%=self.description%></div><% end %>
<% self:render_children() %>
<br />
</div>
<%- if self.message then %>
<div><%=self.message%></div>
@ -30,9 +29,12 @@
end
%>
<% if redirect then %>
<div style="float:left">
<input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" onclick="location.href='<%=pcdata(redirect)%>'" />
</div>
<input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" onclick="location.href='<%=pcdata(redirect)%>'" />
<% end %>
<%- if self.cancel ~= false and self.on_cancel then %>
<input class="cbi-button cbi-button-link" type="submit" name="cbi.cancel" value="
<%- if not self.cancel then -%><%-:Cancel-%><%-else-%><%=self.cancel%><%end-%>
" />
<% end %>
<%- if self.flow and self.flow.skip then %>
<input class="cbi-button cbi-button-skip" type="submit" name="cbi.skip" value="<%:Skip%>" />
@ -46,11 +48,6 @@
<input class="cbi-button cbi-button-reset" type="reset" value="
<%- if not self.reset then -%><%-:Reset-%><%-else-%><%=self.reset%><%end-%>
" />
<% end %>
<%- if self.cancel ~= false and self.on_cancel then %>
<input class="cbi-button cbi-button-reset" type="submit" name="cbi.cancel" value="
<%- if not self.cancel then -%><%-:Cancel-%><%-else-%><%=self.cancel%><%end-%>
" />
<% end %>
</div>
</form>

View file

@ -14,10 +14,14 @@ function width(o)
end
return ''
end
local anonclass = (not self.anonymous or self.sectiontitle) and "named" or "anonymous"
local titlename = ifattr(not self.anonymous or self.sectiontitle, "data-title", translate("Name"))
-%>
<!-- tblsection -->
<fieldset class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
<div class="cbi-section cbi-tblsection" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
<% if self.title and #self.title > 0 then -%>
<legend><%=self.title%></legend>
<%- end %>
@ -25,121 +29,107 @@ end
<input type="hidden" id="cbi.sts.<%=self.config%>.<%=self.sectiontype%>" name="cbi.sts.<%=self.config%>.<%=self.sectiontype%>" value="" />
<%- end -%>
<div class="cbi-section-descr"><%=self.description%></div>
<div class="cbi-section-node">
<%- local count = 0 -%>
<div class="table cbi-section-table">
<div class="tr cbi-section-table-titles">
<%- if not self.anonymous then -%>
<%- if self.sectionhead then -%>
<div class="th cbi-section-table-cell"><%=self.sectionhead%></div>
<%- else -%>
<div class="th">&#160;</div>
<%- end -%>
<%- count = count +1; end -%>
<%- for i, k in pairs(self.children) do if not k.optional then -%>
<div class="th cbi-section-table-cell"<%=width(k)%>>
<%- if k.titleref then -%><a title="<%=self.titledesc or translate('Go to relevant configuration page')%>" class="cbi-title-ref" href="<%=k.titleref%>"><%- end -%>
<%-=k.title-%>
<%- if k.titleref then -%></a><%- end -%>
</div>
<%- count = count + 1; end; end; if self.sortable then -%>
<div class="th cbi-section-table-cell"><%:Sort%></div>
<%- count = count + 1; end; if self.extedit or self.addremove then -%>
<div class="th cbi-section-table-cell">&#160;</div>
<%- count = count + 1; end -%>
<%- local count = 0 -%>
<div class="table cbi-section-table">
<div class="tr cbi-section-table-titles <%=anonclass%>"<%=titlename%>>
<%- for i, k in pairs(self.children) do if not k.optional then -%>
<div class="th cbi-section-table-cell"<%=
width(k) ..
attr("data-type", k.template and k.template:gsub("^.+/", "") or "")
%>>
<%- if k.titleref then -%><a title="<%=self.titledesc or translate('Go to relevant configuration page')%>" class="cbi-title-ref" href="<%=k.titleref%>"><%- end -%>
<%-=k.title-%>
<%- if k.titleref then -%></a><%- end -%>
</div>
<div class="tr cbi-section-table-descr">
<%- if not self.anonymous then -%>
<%- if self.sectiondesc then -%>
<div class="th cbi-section-table-cell"><%=self.sectiondesc%></div>
<%- else -%>
<div class="th"></div>
<%- end -%>
<%- end -%>
<%- for i, k in pairs(self.children) do if not k.optional then -%>
<div class="th cbi-section-table-cell"<%=width(k)%>><%=k.description%></div>
<%- end; end; if self.sortable then -%>
<div class="th cbi-section-table-cell"></div>
<%- end; if self.extedit or self.addremove then -%>
<div class="th cbi-section-table-cell"></div>
<%- end -%>
</div>
<%- local isempty = true
for i, k in ipairs(self:cfgsections()) do
section = k
isempty = false
scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
-%>
<div class="tr cbi-section-table-row<% if self.extedit or self.rowcolors then %> cbi-rowstyle-<%=rowstyle()%><% end %>" id="cbi-<%=self.config%>-<%=section%>">
<% if not self.anonymous then -%>
<div class="th"><h3><%=(type(self.sectiontitle) == "function") and self:sectiontitle(section) or k%></h3></div>
<%- end %>
<%- count = count + 1; end; end; if self.sortable or self.extedit or self.addremove then -%>
<div class="th cbi-section-table-cell cbi-section-actions"></div>
<%- count = count + 1; end -%>
</div>
<div class="tr cbi-section-table-descr <%=anonclass%>">
<%- for i, k in pairs(self.children) do if not k.optional then -%>
<div class="th cbi-section-table-cell"<%=
width(k) ..
attr("data-type", k.template and k.template:gsub("^.+/", "") or "")
%>><%=k.description%></div>
<%- end; end; if self.sortable or self.extedit or self.addremove then -%>
<div class="th cbi-section-table-cell cbi-section-actions"></div>
<%- end -%>
</div>
<%- local isempty, i, k = true, nil, nil
for i, k in ipairs(self:cfgsections()) do
isempty = false
<%-
for k, node in ipairs(self.children) do
if not node.optional then
node:render(section, scope or {})
end
local section = k
local sectionname = striptags((type(self.sectiontitle) == "function") and self:sectiontitle(section) or k)
local sectiontitle = ifattr(sectionname and (not self.anonymous or self.sectiontitle), "data-title", sectionname)
local colorclass = (self.extedit or self.rowcolors) and " cbi-rowstyle-%d" % rowstyle() or ""
local scope = {
valueheader = "cbi/cell_valueheader",
valuefooter = "cbi/cell_valuefooter"
}
-%>
<div class="tr cbi-section-table-row<%=colorclass%>" id="cbi-<%=self.config%>-<%=section%>"<%=sectiontitle%>>
<%-
local node
for k, node in ipairs(self.children) do
if not node.optional then
node:render(section, scope or {})
end
-%>
end
-%>
<%- if self.sortable then -%>
<div class="td cbi-section-table-cell">
<input class="cbi-button cbi-button-up" type="button" value="" onclick="return cbi_row_swap(this, true, 'cbi.sts.<%=self.config%>.<%=self.sectiontype%>')" alt="<%:Move up%>" title="<%:Move up%>" />
<input class="cbi-button cbi-button-down" type="button" value="" onclick="return cbi_row_swap(this, false, 'cbi.sts.<%=self.config%>.<%=self.sectiontype%>')" alt="<%:Move down%>" title="<%:Move down%>" />
</div>
<%- end -%>
<%- if self.extedit or self.addremove then -%>
<div class="td cbi-section-table-cell">
<%- if self.extedit then -%>
<input class="cbi-button cbi-button-edit" type="button" value="<%:Edit%>"
<%- if type(self.extedit) == "string" then
%> onclick="location.href='<%=self.extedit:format(section)%>'"
<%- elseif type(self.extedit) == "function" then
%> onclick="location.href='<%=self:extedit(section)%>'"
<%- end
%> alt="<%:Edit%>" title="<%:Edit%>" />
<%- end; if self.addremove then %>
<input class="cbi-button cbi-button-remove" type="submit" value="<%:Delete%>" onclick="this.form.cbi_state='del-section'; return true" name="cbi.rts.<%=self.config%>.<%=k%>" alt="<%:Delete%>" title="<%:Delete%>" />
<%- end -%>
</div>
<%- end -%>
</div>
<%- end -%>
<%- if isempty then -%>
<div class="tr cbi-section-table-row">
<div class="td" colspan="<%=count%>"><em><br /><%:This section contains no values yet%></em></div>
</div>
<%- if self.sortable or self.extedit or self.addremove then -%>
<div class="td cbi-section-table-cell nowrap cbi-section-actions">
<%- if self.sortable then -%>
<input class="cbi-button cbi-button-up" type="button" value="<%:Up%>" onclick="return cbi_row_swap(this, true, 'cbi.sts.<%=self.config%>.<%=self.sectiontype%>')" title="<%:Move up%>" />
<input class="cbi-button cbi-button-down" type="button" value="<%:Down%>" onclick="return cbi_row_swap(this, false, 'cbi.sts.<%=self.config%>.<%=self.sectiontype%>')" title="<%:Move down%>" />
<% end; if self.extedit then -%>
<input class="cbi-button cbi-button-edit" type="button" value="<%:Edit%>"
<%- if type(self.extedit) == "string" then
%> onclick="location.href='<%=self.extedit:format(section)%>'"
<%- elseif type(self.extedit) == "function" then
%> onclick="location.href='<%=self:extedit(section)%>'"
<%- end
%> alt="<%:Edit%>" title="<%:Edit%>" />
<% end; if self.addremove then %>
<input class="cbi-button cbi-button-remove" type="submit" value="<%:Delete%>" onclick="this.form.cbi_state='del-section'; return true" name="cbi.rts.<%=self.config%>.<%=k%>" alt="<%:Delete%>" title="<%:Delete%>" />
<%- end -%>
</div>
<%- end -%>
</div>
<%- end -%>
<% if self.error then %>
<div class="cbi-section-error">
<ul><% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%>
<li><%=pcdata(e):gsub("\n","<br />")%></li>
<%- end end %></ul>
</div>
<% end %>
<%- if self.addremove then -%>
<% if self.template_addremove then include(self.template_addremove) else -%>
<div class="cbi-section-create cbi-tblsection-create">
<% if self.anonymous then %>
<input class="cbi-button cbi-button-add" type="submit" value="<%:Add%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" title="<%:Add%>" />
<% else %>
<% if self.invalid_cts then -%><div class="cbi-section-error"><% end %>
<input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" data-type="uciname" data-optional="true" />
<input class="cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" />
<% if self.invalid_cts then -%>
<br /><%:Invalid%></div>
<%- end %>
<% end %>
</div>
<%- end %>
<%- if isempty then -%>
<div class="tr cbi-section-table-row placeholder">
<div class="td"><em><%:This section contains no values yet%></em></div>
</div>
<%- end -%>
</div>
</fieldset>
<% if self.error then %>
<div class="cbi-section-error">
<ul><% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%>
<li><%=pcdata(e):gsub("\n","<br />")%></li>
<%- end end %></ul>
</div>
<% end %>
<%- if self.addremove then -%>
<% if self.template_addremove then include(self.template_addremove) else -%>
<div class="cbi-section-create cbi-tblsection-create">
<% if self.anonymous then %>
<input class="cbi-button cbi-button-add" type="submit" value="<%:Add%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" title="<%:Add%>" />
<% else %>
<% if self.invalid_cts then -%>
<div class="cbi-section-error"><%:Invalid%></div>
<%- end %>
<div>
<input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." data-type="uciname" data-optional="true" />
</div>
<input class="cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" />
<% end %>
</div>
<%- end %>
<%- end -%>
</div>
<!-- /tblsection -->

View file

@ -1,4 +1,4 @@
<fieldset class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
<div class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
<% if self.title and #self.title > 0 then -%>
<legend><%=self.title%></legend>
<%- end %>
@ -20,10 +20,9 @@
<%+cbi/tabmenu%>
<fieldset class="cbi-section-node<% if self.tabs then %> cbi-section-node-tabbed<% end %>" id="cbi-<%=self.config%>-<%=section%>">
<div class="cbi-section-node<% if self.tabs then %> cbi-section-node-tabbed<% end %>" id="cbi-<%=self.config%>-<%=section%>">
<%+cbi/ucisection%>
</fieldset>
<br />
</div>
<%- end %>
<% if isempty then -%>
@ -36,14 +35,15 @@
<% if self.anonymous then -%>
<input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
<%- else -%>
<% if self.invalid_cts then -%><div class="cbi-section-error"><% end %>
<input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" data-type="uciname" data-optional="true" />
<input type="submit" class="cbi-button cbi-button-add" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" />
<% if self.invalid_cts then -%>
<br /><%:Invalid%></div>
<div class="cbi-section-error"><%:Invalid%></div>
<%- end %>
<div>
<input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." data-type="uciname" data-optional="true" />
</div>
<input class="cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" />
<%- end %>
</div>
<%- end %>
<%- end %>
</fieldset>
</div>

View file

@ -8,7 +8,7 @@
<%:Uploaded File%> (<%=t.byte_format(s.size)%>)
<% if self.unsafeupload then %>
<input type="hidden"<%= attr("value", v) .. attr("name", cbid) .. attr("id", cbid) %> />
<input class="cbi-button cbi-input-image" type="image" value="<%:Replace entry%>" name="cbi.rlf.<%=section .. "." .. self.option%>" alt="<%:Replace entry%>" title="<%:Replace entry%>" src="<%=resource%>/cbi/reload.gif" />
<input class="cbi-button cbi-button-image" type="image" value="<%:Replace entry%>" name="cbi.rlf.<%=section .. "." .. self.option%>" alt="<%:Replace entry%>" title="<%:Replace entry%>" src="<%=resource%>/cbi/reload.gif" />
<% end %>
<% end %>

View file

@ -18,23 +18,23 @@
<div class="cbi-map-descr">
<%:Please enter your username and password.%>
</div>
<fieldset class="cbi-section"><fieldset class="cbi-section-node">
<div class="cbi-section"><div class="cbi-section-node">
<div class="cbi-value">
<label class="cbi-value-title"><%:Username%></label>
<div class="cbi-value-field">
<input class="cbi-input-user" type="text" name="luci_username" value="<%=duser%>" />
<input class="cbi-input-text" type="text" name="luci_username" value="<%=duser%>" />
</div>
</div>
<div class="cbi-value cbi-value-last">
<label class="cbi-value-title"><%:Password%></label>
<div class="cbi-value-field">
<input class="cbi-input-password" type="password" name="luci_password" />
<input class="cbi-input-text" type="password" name="luci_password" />
</div>
</div>
</fieldset></fieldset>
</div></div>
</div>
<div>
<div class="cbi-page-actions">
<input type="submit" value="<%:Login%>" class="cbi-button cbi-button-apply" />
<input type="reset" value="<%:Reset%>" class="cbi-button cbi-button-reset" />
</div>

View file

@ -49,6 +49,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Càrrega d'1 minut:"
@ -761,9 +764,6 @@ msgstr ""
"Personalitza el comportament dels <abbr title=\"Light Emitting Diode\">LED</"
"abbr>s del dispositiu, si és possible."
msgid "DHCP Leases"
msgstr "Arrendaments DHCP"
msgid "DHCP Server"
msgstr "Servidor DHCP"
@ -776,9 +776,6 @@ msgstr "Client DHCP"
msgid "DHCP-Options"
msgstr "Opcions DHCP"
msgid "DHCPv6 Leases"
msgstr "Arrendaments DHCPv6"
msgid "DHCPv6 client"
msgstr ""
@ -966,6 +963,9 @@ msgstr ""
"No reenviïs les peticions <abbr title=\"Domain Name System\">DNS</abbr> "
"sense el nom <abbr title=\"Domain Name System\">DNS</abbr>"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Descarrega i instal·la el paquet"
@ -1079,6 +1079,9 @@ msgstr ""
msgid "Enable this mount"
msgstr ""
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr ""
@ -1111,6 +1114,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Esborrant..."
@ -1293,7 +1302,7 @@ msgstr "Espai lliure"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2590,12 +2599,12 @@ msgstr ""
"\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2603,12 +2612,12 @@ msgid "Really reset all changes?"
msgstr ""
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2946,9 +2955,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr "Ordena"
msgid "Source"
msgstr "Origen"
@ -3454,6 +3460,9 @@ msgstr "Canvis sense desar"
msgid "Unsupported protocol type."
msgstr "Tipus de protocol no suportat."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Actualitza les llistes"
@ -3714,6 +3723,9 @@ msgstr ""
msgid "bridged"
msgstr "pontejat"
msgid "create"
msgstr ""
msgid "create:"
msgstr "crea:"
@ -3751,9 +3763,6 @@ msgstr ""
msgid "half-duplex"
msgstr ""
msgid "help"
msgstr "ajuda"
msgid "hidden"
msgstr "amagat"
@ -3802,6 +3811,9 @@ msgstr "engegat"
msgid "open"
msgstr "obert"
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3853,6 +3865,18 @@ msgstr "sí"
msgid "« Back"
msgstr "« Enrere"
#~ msgid "DHCP Leases"
#~ msgstr "Arrendaments DHCP"
#~ msgid "DHCPv6 Leases"
#~ msgstr "Arrendaments DHCPv6"
#~ msgid "Sort"
#~ msgstr "Ordena"
#~ msgid "help"
#~ msgstr "ajuda"
#~ msgid "IPv4 WAN Status"
#~ msgstr "Estat WAN IPv4"

View file

@ -47,6 +47,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Zatížení za 1 minutu:"
@ -755,9 +758,6 @@ msgstr ""
"Upraví chování <abbr title=\"Light Emitting Diode\">LED</abbr> diod zařízení "
"pokud je to možné."
msgid "DHCP Leases"
msgstr "DHCP výpůjčky"
msgid "DHCP Server"
msgstr "DHCP server"
@ -770,9 +770,6 @@ msgstr "DHCP klient"
msgid "DHCP-Options"
msgstr "Volby DHCP"
msgid "DHCPv6 Leases"
msgstr "DHCPv6 přidělené IP"
msgid "DHCPv6 client"
msgstr ""
@ -964,6 +961,9 @@ msgstr ""
"Nepřeposílat <abbr title=\"Domain Name System\">DNS</abbr> dotazy bez <abbr "
"title=\"Domain Name System\">DNS</abbr> jména"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Stáhnout a nainstalovat balíček"
@ -1079,6 +1079,9 @@ msgstr ""
msgid "Enable this mount"
msgstr "Povolit tento přípojný bod"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Povolit tento swapovací oddíl"
@ -1111,6 +1114,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Odstraňování..."
@ -1295,7 +1304,7 @@ msgstr "Volné místo"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2601,15 +2610,12 @@ msgstr ""
"Host Configuration Protocol\">DHCP</abbr> Serveru"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"Opravdu odstranit toto rozhraní? Odstranění nelze vrátit zpět!\n"
"Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím "
"tohoto rozhraní."
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"Opravdu odstranit bezdrátovou síť? Odstranění nelze vrátit zpět!\n"
@ -2619,17 +2625,13 @@ msgstr ""
msgid "Really reset all changes?"
msgstr "Opravdu resetovat všechny změny?"
#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"Opravdu vypnout síť ?\n"
"Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím "
"tohoto rozhraní."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"Opravdu vypnout rozhraní \"%s\" ?\n"
@ -2975,9 +2977,6 @@ msgstr ""
"systému. Nový obraz firmwaru musí být zapsán ručně. Prosím, obraťte se na "
"wiki pro zařízení specifické instalační instrukce."
msgid "Sort"
msgstr "Seřadit"
msgid "Source"
msgstr "Zdroj"
@ -3494,6 +3493,9 @@ msgstr "Neuložené změny"
msgid "Unsupported protocol type."
msgstr "Nepodporovaný typ protokolu."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Aktualizovat seznamy"
@ -3755,6 +3757,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "přemostěný"
msgid "create"
msgstr ""
msgid "create:"
msgstr ""
@ -3792,9 +3797,6 @@ msgstr "plný-duplex"
msgid "half-duplex"
msgstr "poloviční-duplex"
msgid "help"
msgstr "pomoc"
msgid "hidden"
msgstr "skrytý"
@ -3843,6 +3845,9 @@ msgstr "on"
msgid "open"
msgstr ""
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3894,6 +3899,35 @@ msgstr "ano"
msgid "« Back"
msgstr "« Zpět"
#~ msgid "DHCP Leases"
#~ msgstr "DHCP výpůjčky"
#~ msgid "DHCPv6 Leases"
#~ msgstr "DHCPv6 přidělené IP"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "Opravdu odstranit toto rozhraní? Odstranění nelze vrátit zpět!\n"
#~ "Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím "
#~ "tohoto rozhraní."
#, fuzzy
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "Opravdu vypnout síť ?\n"
#~ "Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím "
#~ "tohoto rozhraní."
#~ msgid "Sort"
#~ msgstr "Seřadit"
#~ msgid "help"
#~ msgstr "pomoc"
#~ msgid "IPv4 WAN Status"
#~ msgstr "Stav IPv4 WAN"

View file

@ -49,6 +49,9 @@ msgstr "-- anhand Label selektieren --"
msgid "-- match by uuid --"
msgstr "-- UUID vergleichen --"
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Systemlast (1 Minute):"
@ -777,9 +780,6 @@ msgid ""
"\">LED</abbr>s if possible."
msgstr "Passt das Verhalten der Geräte-LEDs an - wenn dies möglich ist."
msgid "DHCP Leases"
msgstr "DHCP-Leases"
msgid "DHCP Server"
msgstr "DHCP-Server"
@ -792,9 +792,6 @@ msgstr "DHCP Client"
msgid "DHCP-Options"
msgstr "DHCP-Optionen"
msgid "DHCPv6 Leases"
msgstr "DHCPv6-Leases"
msgid "DHCPv6 client"
msgstr "DHCPv6 Client"
@ -987,6 +984,9 @@ msgid ""
"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
msgstr "Anfragen ohne Domainnamen nicht weiterleiten"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Paket herunterladen und installieren"
@ -1104,6 +1104,9 @@ msgstr "Das DF-Bit (Nicht fragmentieren) auf gekapselten Paketen setzen."
msgid "Enable this mount"
msgstr "Diesen Mountpunkt aktivieren"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Diesen Auslagerungsspeicher aktivieren"
@ -1138,6 +1141,12 @@ msgstr "Entfernter Server"
msgid "Endpoint Port"
msgstr "Entfernter Port"
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Lösche..."
@ -1328,10 +1337,10 @@ msgstr "Freier Platz"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
"Weitere Informationen zu WireGuard-Schnittstellen und Peers unter <a href="
"\"http://wireguard.io\">wireguard.io</a>."
"\"http://wireguard.com\">wireguard.com</a>."
msgid "GHz"
msgstr "GHz"
@ -2681,16 +2690,12 @@ msgid ""
msgstr "Lese Informationen aus /etc/ethers um den DHCP-Server zu konfigurieren"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"Diese Schnittstelle wirklich löschen? Der Schritt kann nicht rückgängig "
"gemacht werden!\n"
"Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese "
"Schnittstelle verbunden sind."
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"Dieses Drahtlosnetzwerk wirklich löschen? Der Schritt kann nicht rückgängig "
@ -2701,17 +2706,13 @@ msgstr ""
msgid "Really reset all changes?"
msgstr "Sollen wirklich alle Änderungen verworfen werden?"
#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"Das Netzwerk wirklich herunterfahren?\n"
"Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese "
"Schnittstelle verbunden sind."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"Die Schnitstelle \"%s\" wirklich herunterfahren?\n"
@ -3070,9 +3071,6 @@ msgstr ""
"geflasht werden. Weitere Informationen sowie gerätespezifische "
"Installationsanleitungen entnehmen Sie bitte dem Wiki."
msgid "Sort"
msgstr "Sortieren"
msgid "Source"
msgstr "Quelle"
@ -3623,6 +3621,9 @@ msgstr "Ungespeicherte Änderungen"
msgid "Unsupported protocol type."
msgstr "Nicht unterstützter Protokolltyp."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Listen aktualisieren"
@ -3893,6 +3894,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "bridged"
msgid "create"
msgstr ""
msgid "create:"
msgstr "erstelle:"
@ -3928,9 +3932,6 @@ msgstr "Voll-Duplex"
msgid "half-duplex"
msgstr "Halb-Duplex"
msgid "help"
msgstr "Hilfe"
msgid "hidden"
msgstr "versteckt"
@ -3979,6 +3980,9 @@ msgstr "ein"
msgid "open"
msgstr "offen"
msgid "output"
msgstr ""
msgid "overlay"
msgstr "Overlay"
@ -4030,6 +4034,36 @@ msgstr "ja"
msgid "« Back"
msgstr "« Zurück"
#~ msgid "DHCP Leases"
#~ msgstr "DHCP-Leases"
#~ msgid "DHCPv6 Leases"
#~ msgstr "DHCPv6-Leases"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "Diese Schnittstelle wirklich löschen? Der Schritt kann nicht rückgängig "
#~ "gemacht werden!\n"
#~ "Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese "
#~ "Schnittstelle verbunden sind."
#, fuzzy
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "Das Netzwerk wirklich herunterfahren?\n"
#~ "Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese "
#~ "Schnittstelle verbunden sind."
#~ msgid "Sort"
#~ msgstr "Sortieren"
#~ msgid "help"
#~ msgstr "Hilfe"
#~ msgid "IPv4 WAN Status"
#~ msgstr "IPv4 WAN Status"

View file

@ -49,6 +49,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Φορτίο 1 λεπτού:"
@ -764,9 +767,6 @@ msgstr ""
"Ρυθμίζει, αν είναι δυνατόν, την συμπεριφορά των <abbr title=\"Light Emitting "
"Diode\">LED</abbr> της συσκευής."
msgid "DHCP Leases"
msgstr "DHCP Leases"
msgid "DHCP Server"
msgstr "Εξυπηρετητής DHCP"
@ -779,9 +779,6 @@ msgstr "Πελάτης DHCP"
msgid "DHCP-Options"
msgstr "Επιλογές DHCP"
msgid "DHCPv6 Leases"
msgstr ""
msgid "DHCPv6 client"
msgstr ""
@ -975,6 +972,9 @@ msgstr ""
"Να μην προωθούνται ερωτήματα <abbr title=\"Domain Name System\">DNS</abbr> "
"χωρίς όνομα τομέα <abbr title=\"Domain Name System\">DNS</abbr>"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Κατέβασμα και εγκατάσταση πακέτου"
@ -1091,6 +1091,9 @@ msgstr ""
msgid "Enable this mount"
msgstr "Ενεργοποίηση αυτής της προσάρτησης"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Ενεργοποίηση αυτής της swap"
@ -1123,6 +1126,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Διαγράφεται..."
@ -1309,7 +1318,7 @@ msgstr "Ελεύθερος χώρος"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2607,12 +2616,12 @@ msgstr ""
"εξυπηρετητή <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2620,12 +2629,12 @@ msgid "Really reset all changes?"
msgstr "Αρχικοποίηση όλων των αλλαγών;"
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2964,9 +2973,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr "Ταξινόμηση"
msgid "Source"
msgstr "Πηγή"
@ -3453,6 +3459,9 @@ msgstr "Μη-αποθηκευμένες Αλλαγές"
msgid "Unsupported protocol type."
msgstr ""
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr ""
@ -3706,6 +3715,9 @@ msgstr ""
msgid "bridged"
msgstr ""
msgid "create"
msgstr ""
msgid "create:"
msgstr ""
@ -3744,9 +3756,6 @@ msgstr ""
msgid "half-duplex"
msgstr ""
msgid "help"
msgstr "βοήθεια"
msgid "hidden"
msgstr ""
@ -3795,6 +3804,9 @@ msgstr "ανοιχτό"
msgid "open"
msgstr ""
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3846,6 +3858,15 @@ msgstr "ναι"
msgid "« Back"
msgstr "« Πίσω"
#~ msgid "DHCP Leases"
#~ msgstr "DHCP Leases"
#~ msgid "Sort"
#~ msgstr "Ταξινόμηση"
#~ msgid "help"
#~ msgstr "βοήθεια"
#~ msgid "IPv6 WAN Status"
#~ msgstr "Κατάσταση IPv6 WAN"

View file

@ -49,6 +49,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "1 Minute Load:"
@ -751,9 +754,6 @@ msgstr ""
"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
"\">LED</abbr>s if possible."
msgid "DHCP Leases"
msgstr "DHCP Leases"
msgid "DHCP Server"
msgstr "DHCP Server"
@ -766,9 +766,6 @@ msgstr "DHCP client"
msgid "DHCP-Options"
msgstr "DHCP-Options"
msgid "DHCPv6 Leases"
msgstr ""
msgid "DHCPv6 client"
msgstr ""
@ -957,6 +954,9 @@ msgstr ""
"Don&#39;t forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests "
"without <abbr title=\"Domain Name System\">DNS</abbr>-Name"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Download and install package"
@ -1070,6 +1070,9 @@ msgstr ""
msgid "Enable this mount"
msgstr ""
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr ""
@ -1102,6 +1105,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr ""
@ -1284,7 +1293,7 @@ msgstr ""
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2573,12 +2582,12 @@ msgstr ""
"Configuration Protocol\">DHCP</abbr>-Server"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2586,12 +2595,12 @@ msgid "Really reset all changes?"
msgstr ""
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2928,9 +2937,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr ""
msgid "Source"
msgstr "Source"
@ -3410,6 +3416,9 @@ msgstr "Unsaved Changes"
msgid "Unsupported protocol type."
msgstr ""
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr ""
@ -3664,6 +3673,9 @@ msgstr ""
msgid "bridged"
msgstr ""
msgid "create"
msgstr ""
msgid "create:"
msgstr ""
@ -3701,9 +3713,6 @@ msgstr ""
msgid "half-duplex"
msgstr ""
msgid "help"
msgstr "help"
msgid "hidden"
msgstr ""
@ -3752,6 +3761,9 @@ msgstr ""
msgid "open"
msgstr ""
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3803,6 +3815,12 @@ msgstr ""
msgid "« Back"
msgstr "« Back"
#~ msgid "DHCP Leases"
#~ msgstr "DHCP Leases"
#~ msgid "help"
#~ msgstr "help"
#~ msgid "Apply"
#~ msgstr "Apply"

View file

@ -49,6 +49,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Carga a 1 minuto:"
@ -760,9 +763,6 @@ msgstr ""
"Personaliza el comportamiento de los <abbr title=\"Light Emitting Diode"
"\">LED</abbr>s del dispositivo, si es posible."
msgid "DHCP Leases"
msgstr "Cesiones DHCP"
msgid "DHCP Server"
msgstr "Servidor DHCP"
@ -775,9 +775,6 @@ msgstr "Cliente DHCP"
msgid "DHCP-Options"
msgstr "Opciones de DHCP"
msgid "DHCPv6 Leases"
msgstr "Cesiones DHCPv6"
msgid "DHCPv6 client"
msgstr ""
@ -970,6 +967,9 @@ msgstr ""
"No reenviar peticiones de <abbr title=\"Domain Name System\">DNS</abbr> sin "
"un nombre de <abbr title=\"Domain Name System\">DNS</abbr>"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Descargar e instalar paquete"
@ -1085,6 +1085,9 @@ msgstr ""
msgid "Enable this mount"
msgstr "Active este punto de montaje"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Activar este swap"
@ -1117,6 +1120,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Borrando..."
@ -1303,7 +1312,7 @@ msgstr "Espacio libre"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2615,16 +2624,12 @@ msgstr ""
"\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"¿Está seguro de borrar esta interfaz?. ¡No será posible deshacer el "
"borrado!\n"
"Puede perder el acceso a este dispositivo si está conectado por esta "
"interfaz."
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"¿Está seguro de borrar esta red inalámbrica?. ¡No será posible deshacer el "
@ -2634,16 +2639,13 @@ msgstr ""
msgid "Really reset all changes?"
msgstr "¿Está seguro de querer reiniciar todos los cambios?"
#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"¿Está seguro de querer apagar esta red?.\n"
"Puede perder el acceso a este dispositivo si está conectado por esta red."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"¿Está seguro de apagar la interfaz \"%s\"?.\n"
@ -2988,9 +2990,6 @@ msgstr ""
"grabarse manualmente. Por favor, mire el wiki para instrucciones de "
"instalación específicas."
msgid "Sort"
msgstr "Ordenar"
msgid "Source"
msgstr "Origen"
@ -3519,6 +3518,9 @@ msgstr "Cambios no guardados"
msgid "Unsupported protocol type."
msgstr "Tipo de protocolo no soportado."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Actualizar listas"
@ -3782,6 +3784,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "puenteado"
msgid "create"
msgstr ""
msgid "create:"
msgstr "crear:"
@ -3819,9 +3824,6 @@ msgstr "full dúplex"
msgid "half-duplex"
msgstr "half dúplex"
msgid "help"
msgstr "ayuda"
msgid "hidden"
msgstr "oculto"
@ -3870,6 +3872,9 @@ msgstr "activo"
msgid "open"
msgstr "abierto"
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3921,6 +3926,35 @@ msgstr "sí"
msgid "« Back"
msgstr "« Volver"
#~ msgid "DHCP Leases"
#~ msgstr "Cesiones DHCP"
#~ msgid "DHCPv6 Leases"
#~ msgstr "Cesiones DHCPv6"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "¿Está seguro de borrar esta interfaz?. ¡No será posible deshacer el "
#~ "borrado!\n"
#~ "Puede perder el acceso a este dispositivo si está conectado por esta "
#~ "interfaz."
#, fuzzy
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "¿Está seguro de querer apagar esta red?.\n"
#~ "Puede perder el acceso a este dispositivo si está conectado por esta red."
#~ msgid "Sort"
#~ msgstr "Ordenar"
#~ msgid "help"
#~ msgstr "ayuda"
#~ msgid "IPv4 WAN Status"
#~ msgstr "Estado de la WAN IPv4"

View file

@ -49,6 +49,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Charge sur 1 minute :"
@ -767,9 +770,6 @@ msgstr ""
"Personnaliser le comportement des <abbr title=\"Diode Électro-Luminescente"
"\">DEL</abbr>s si possible."
msgid "DHCP Leases"
msgstr "Baux DHCP"
msgid "DHCP Server"
msgstr "Serveur DHCP"
@ -782,9 +782,6 @@ msgstr "client DHCP"
msgid "DHCP-Options"
msgstr "Options DHCP"
msgid "DHCPv6 Leases"
msgstr "Bails DHCPv6"
msgid "DHCPv6 client"
msgstr ""
@ -980,6 +977,9 @@ msgstr ""
"Ne pas transmettre de requêtes <abbr title=\"Domain Name System\">DNS</abbr> "
"sans nom <abbr title=\"Domain Name System\">DNS</abbr>"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Télécharge et installe le paquet"
@ -1095,6 +1095,9 @@ msgstr ""
msgid "Enable this mount"
msgstr "Activer ce montage"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Activer cette mémoire d'échange (swap)"
@ -1129,6 +1132,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Effacement…"
@ -1314,7 +1323,7 @@ msgstr "Espace libre"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2626,16 +2635,12 @@ msgid ""
msgstr "Lire /etc/ethers pour configurer le serveur DHCP"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"Voulez-vous vraiment supprimer cette interface? L'effacement ne peut être "
"annulé!\n"
"Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par "
"cette interface."
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"Voulez-vous vraiment supprimer ce réseau sans-fil? L'effacement ne peut être "
@ -2647,15 +2652,12 @@ msgid "Really reset all changes?"
msgstr "Voulez-vous vraiment ré-initialiser toutes les modifications ?"
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"Voulez-vous vraiment arrêter l'interface %s ?\n"
"Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par "
"cette interface."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"Voulez-vous vraiment arrêter l'interface %s ?\n"
@ -3003,9 +3005,6 @@ msgstr ""
"au wiki pour connaître les instructions d'installation spécifiques à votre "
"matériel."
msgid "Sort"
msgstr "Trier"
msgid "Source"
msgstr "Source"
@ -3537,6 +3536,9 @@ msgstr "Changements non appliqués"
msgid "Unsupported protocol type."
msgstr "Type de protocole non pris en charge."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Mettre les listes à jour"
@ -3802,6 +3804,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "ponté"
msgid "create"
msgstr ""
msgid "create:"
msgstr "créer:"
@ -3837,9 +3842,6 @@ msgstr "full-duplex"
msgid "half-duplex"
msgstr "half-duplex"
msgid "help"
msgstr "aide"
msgid "hidden"
msgstr "cacher"
@ -3888,6 +3890,9 @@ msgstr "Actif"
msgid "open"
msgstr "ouvrir"
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3939,6 +3944,35 @@ msgstr "oui"
msgid "« Back"
msgstr "« Retour"
#~ msgid "DHCP Leases"
#~ msgstr "Baux DHCP"
#~ msgid "DHCPv6 Leases"
#~ msgstr "Bails DHCPv6"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "Voulez-vous vraiment supprimer cette interface? L'effacement ne peut être "
#~ "annulé!\n"
#~ "Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par "
#~ "cette interface."
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "Voulez-vous vraiment arrêter l'interface %s ?\n"
#~ "Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par "
#~ "cette interface."
#~ msgid "Sort"
#~ msgstr "Trier"
#~ msgid "help"
#~ msgstr "aide"
#~ msgid "IPv4 WAN Status"
#~ msgstr "État IPv4 du WAN"

View file

@ -47,6 +47,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "עומס במשך דקה:"
@ -744,9 +747,6 @@ msgstr ""
"מתאים את הגדרות ה-<abbr title=\"Light Emitting Diode\">LED</abbr>-ים במכשיר "
"(אם אפשרי)."
msgid "DHCP Leases"
msgstr "הרשאות DHCP"
msgid "DHCP Server"
msgstr "שרת DHCP"
@ -759,9 +759,6 @@ msgstr "לקוח DHCP"
msgid "DHCP-Options"
msgstr "אפשרויות-DHCP"
msgid "DHCPv6 Leases"
msgstr "הרשאות DHCPv6"
msgid "DHCPv6 client"
msgstr ""
@ -943,6 +940,9 @@ msgid ""
"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
msgstr ""
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "הורד והתקן חבילות"
@ -1055,6 +1055,9 @@ msgstr ""
msgid "Enable this mount"
msgstr ""
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr ""
@ -1087,6 +1090,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "מוחק..."
@ -1269,7 +1278,7 @@ msgstr ""
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2538,28 +2547,25 @@ msgid ""
msgstr ""
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
msgid "Really reset all changes?"
msgstr ""
#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"האם למחוק את הרשת האלחוטית הזו? המחיקה אינה ניתנת לביטול!\n"
"ייתכן ותאבד גישה לנתב הזה אם אתה מחובר דרך השרת הזו."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2897,9 +2903,6 @@ msgstr ""
"סליחה, אין תמיכה בעדכון מערכת, ולכן קושחה חדשה חייבת להיצרב ידנית. אנא פנה "
"אל ה-wiki של OpenWrt/LEDE עבור הוראות ספציפיות למכשיר שלך."
msgid "Sort"
msgstr "מיין"
msgid "Source"
msgstr "מקור"
@ -3368,6 +3371,9 @@ msgstr ""
msgid "Unsupported protocol type."
msgstr ""
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr ""
@ -3617,6 +3623,9 @@ msgstr ""
msgid "bridged"
msgstr ""
msgid "create"
msgstr ""
msgid "create:"
msgstr ""
@ -3652,9 +3661,6 @@ msgstr ""
msgid "half-duplex"
msgstr ""
msgid "help"
msgstr "עזרה"
msgid "hidden"
msgstr ""
@ -3703,6 +3709,9 @@ msgstr "פועל"
msgid "open"
msgstr ""
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3754,6 +3763,26 @@ msgstr "כן"
msgid "« Back"
msgstr "<< אחורה"
#~ msgid "DHCP Leases"
#~ msgstr "הרשאות DHCP"
#~ msgid "DHCPv6 Leases"
#~ msgstr "הרשאות DHCPv6"
#, fuzzy
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "האם למחוק את הרשת האלחוטית הזו? המחיקה אינה ניתנת לביטול!\n"
#~ "ייתכן ותאבד גישה לנתב הזה אם אתה מחובר דרך השרת הזו."
#~ msgid "Sort"
#~ msgstr "מיין"
#~ msgid "help"
#~ msgstr "עזרה"
#~ msgid "Apply"
#~ msgstr "החל"

View file

@ -47,6 +47,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Terhelés (utolsó 1 perc):"
@ -762,9 +765,6 @@ msgstr ""
"Az eszköz <abbr title=\"Light Emitting Diode\">LED</abbr>-jei működésének "
"testreszabása."
msgid "DHCP Leases"
msgstr "DHCP bérletek"
msgid "DHCP Server"
msgstr "DHCP kiszolgáló"
@ -777,9 +777,6 @@ msgstr "DHCP ügyfél"
msgid "DHCP-Options"
msgstr "DHCP beállítások"
msgid "DHCPv6 Leases"
msgstr "DHCPv6 bérletek"
msgid "DHCPv6 client"
msgstr ""
@ -971,6 +968,9 @@ msgstr ""
"Ne továbbítsa a <abbr title=\"Domain Name System\">DNS</abbr>-név nélküli "
"<abbr title=\"Domain Name System\">DNS</abbr>-kéréseket "
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Csomag letöltése és telepítése"
@ -1088,6 +1088,9 @@ msgstr ""
msgid "Enable this mount"
msgstr "A csatolás engedélyezése"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "A lapozó terület engedélyezése"
@ -1120,6 +1123,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Törlés..."
@ -1305,7 +1314,7 @@ msgstr "Szabad hely"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2618,15 +2627,12 @@ msgstr ""
"Configuration Protocol\">DHCP</abbr> kiszolgáló beállításához"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"Biztosan törli az interfészt? A törlés nem visszavonható!\n"
" Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen az "
"interfészen keresztül kapcsolódik."
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"Biztosan törli ezt a vezetéknélküli hálózatot? A törlés nem visszavonható!\n"
@ -2636,17 +2642,13 @@ msgstr ""
msgid "Really reset all changes?"
msgstr "Biztos, hogy visszavonja az összes módosítást?"
#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"Biztos, hogy leállítja a hálózatot?!\n"
" Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen a "
"hálózaton keresztül kapcsolódik."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"Biztos, hogy leállítja a \"%s\" interfészt?\n"
@ -2993,9 +2995,6 @@ msgstr ""
"telepítését manuálisan kell elvégezni. Az eszközhöz tartozó telepítési "
"utasításokért keresse fel az wiki-t."
msgid "Sort"
msgstr "Sorbarendezés"
msgid "Source"
msgstr "Forrás"
@ -3525,6 +3524,9 @@ msgstr "El nem mentett módosítások"
msgid "Unsupported protocol type."
msgstr "Nem támogatott protokoll típus."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Listák frissítése"
@ -3789,6 +3791,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "áthidalt"
msgid "create"
msgstr ""
msgid "create:"
msgstr "új:"
@ -3826,9 +3831,6 @@ msgstr "full-duplex"
msgid "half-duplex"
msgstr "half-duplex"
msgid "help"
msgstr "súgó"
msgid "hidden"
msgstr "rejtett"
@ -3877,6 +3879,9 @@ msgstr "be"
msgid "open"
msgstr "nyitás"
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3928,6 +3933,35 @@ msgstr "igen"
msgid "« Back"
msgstr "« Vissza"
#~ msgid "DHCP Leases"
#~ msgstr "DHCP bérletek"
#~ msgid "DHCPv6 Leases"
#~ msgstr "DHCPv6 bérletek"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "Biztosan törli az interfészt? A törlés nem visszavonható!\n"
#~ " Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen az "
#~ "interfészen keresztül kapcsolódik."
#, fuzzy
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "Biztos, hogy leállítja a hálózatot?!\n"
#~ " Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen a "
#~ "hálózaton keresztül kapcsolódik."
#~ msgid "Sort"
#~ msgstr "Sorbarendezés"
#~ msgid "help"
#~ msgstr "súgó"
#~ msgid "IPv4 WAN Status"
#~ msgstr "IPv4 WAN állapot"

View file

@ -49,6 +49,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Carico in 1 minuto:"
@ -767,9 +770,6 @@ msgstr ""
"Personalizza la configurazione dei <abbr title=\"Light Emitting Diode\">LED</"
"abbr> del sistema se possibile."
msgid "DHCP Leases"
msgstr "Contratti DHCP"
msgid "DHCP Server"
msgstr "Server DHCP"
@ -782,9 +782,6 @@ msgstr "Cliente DHCP"
msgid "DHCP-Options"
msgstr "Opzioni DHCP"
msgid "DHCPv6 Leases"
msgstr "Contratti DHCPv6"
msgid "DHCPv6 client"
msgstr "Cliente DHCPv6"
@ -976,6 +973,9 @@ msgstr ""
"Non inoltrare le richieste <abbr title=\"Domain Name System\">DNS</abbr> "
"senza nome <abbr title=\"Domain Name System\">DNS</abbr>"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Scarica e installa pacchetto"
@ -1091,6 +1091,9 @@ msgstr "Abilita l'opzione DF (non Frammentare) dei pacchetti incapsulati"
msgid "Enable this mount"
msgstr "Abilita questo mount"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Abilita questo swap"
@ -1123,6 +1126,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Cancellazione..."
@ -1307,7 +1316,7 @@ msgstr "Spazio libero"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2616,32 +2625,32 @@ msgstr ""
"\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"Vuoi davvero rimuovere questa interfaccia wireless? La rimozione non può "
"essere ripristinata! Potresti perdere l'accesso a questo dispositivo se sei "
"connesso con questa rete."
msgid "Really reset all changes?"
msgstr "Azzerare veramente tutte le modifiche?"
#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"Vuoi davvero spegnere questa interfaccia?\\nPotresti perdere l'accesso a "
"questo router se sei connesso usando questa interfaccia."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"Vuoi davvero spegnere questa interfaccia \"%s\" ?\\nPotresti perdere "
"l'accesso a questo router se stai usando questa interfaccia."
"Vuoi davvero spegnere questa interfaccia \"%s\"? Potresti perdere l'accesso "
"a questo router se stai usando questa interfaccia."
msgid "Really switch protocol?"
msgstr "Cambiare veramente il protocollo?"
@ -2980,9 +2989,6 @@ msgstr ""
"riferimento al wiki per le istruzioni di installazione di dispositivi "
"specifici."
msgid "Sort"
msgstr "Ordina"
msgid "Source"
msgstr "Origine"
@ -3484,6 +3490,9 @@ msgstr "Modifiche non salvate"
msgid "Unsupported protocol type."
msgstr "Tipo protocollo non supportato."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Aggiorna liste"
@ -3751,6 +3760,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "ponte"
msgid "create"
msgstr ""
msgid "create:"
msgstr "crea:"
@ -3788,9 +3800,6 @@ msgstr "full-duplex"
msgid "half-duplex"
msgstr "half-duplex"
msgid "help"
msgstr "aiuto"
msgid "hidden"
msgstr "nascosto"
@ -3839,6 +3848,9 @@ msgstr "acceso"
msgid "open"
msgstr "apri"
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3890,6 +3902,33 @@ msgstr "Sì"
msgid "« Back"
msgstr "« Indietro"
#~ msgid "DHCP Leases"
#~ msgstr "Contratti DHCP"
#~ msgid "DHCPv6 Leases"
#~ msgstr "Contratti DHCPv6"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "Vuoi davvero rimuovere questa interfaccia? La rimozione non può essere "
#~ "ripristinata! Potresti perdere l'accesso a questo dispositivo se sei "
#~ "connesso con questa rete."
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "Vuoi davvero spegnere questa interfaccia? Potresti perdere l'accesso a "
#~ "questo router se sei connesso usando questa interfaccia."
#~ msgid "Sort"
#~ msgstr "Ordina"
#~ msgid "help"
#~ msgstr "aiuto"
#~ msgid "IPv4 WAN Status"
#~ msgstr "Stato WAN IPv4"

View file

@ -49,6 +49,9 @@ msgstr "-- ラベルを指定 --"
msgid "-- match by uuid --"
msgstr "-- UUID を指定 --"
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "過去1分の負荷:"
@ -777,9 +780,6 @@ msgstr ""
"<abbr title=\"Light Emitting Diode\">LED</abbr> デバイスの挙動をカスタマイズ"
"します。"
msgid "DHCP Leases"
msgstr "DHCPリース"
msgid "DHCP Server"
msgstr "DHCPサーバー"
@ -792,9 +792,6 @@ msgstr "DHCP クライアント"
msgid "DHCP-Options"
msgstr "DHCPオプション"
msgid "DHCPv6 Leases"
msgstr "DHCPv6 リース"
msgid "DHCPv6 client"
msgstr "DHCPv6 クライアント"
@ -985,6 +982,9 @@ msgstr ""
"<abbr title=\"Domain Name System\">DNS</abbr>名の無い <abbr title=\"Domain "
"Name System\">DNS</abbr>リクエストを転送しません"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "パッケージのダウンロードとインストール"
@ -1102,6 +1102,9 @@ msgstr "カプセル化されたパケットの DF (Don't Fragment) フラグを
msgid "Enable this mount"
msgstr "マウント設定を有効にする"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "スワップ設定を有効にする"
@ -1134,6 +1137,12 @@ msgstr "エンドポイント ホスト"
msgid "Endpoint Port"
msgstr "エンドポイント ポート"
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "消去中..."
@ -1321,10 +1330,10 @@ msgstr "ディスクの空き容量"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
"WireGuard インターフェースとピアについての詳細情報: <a href=\"http://"
"wireguard.io\">wireguard.io</a>"
"wireguard.com\">wireguard.com</a>"
msgid "GHz"
msgstr "GHz"
@ -2641,16 +2650,12 @@ msgstr ""
"として<code>/etc/ethers</code> をロードします"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"本当にこのインターフェースを削除しますか?一度削除すると、元に戻すことはできま"
"せん!\n"
"このインターフェースを経由して接続している場合、デバイスにアクセスできなくな"
"る場合があります。"
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"本当にこの無線ネットワークを削除しますか?一度削除すると、元に戻すことはできま"
@ -2662,15 +2667,12 @@ msgid "Really reset all changes?"
msgstr "本当に全ての変更をリセットしますか?"
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"本当にネットワークを停止しますか?\n"
"このネットワークを経由して接続している場合、デバイスにアクセスできなくなる場"
"合があります。"
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"本当にインターフェース \"%s\" を停止しますか?\n"
@ -3017,9 +3019,6 @@ msgstr ""
"ファームウェア更新は手動で行っていただく必要があります。wikiを参照して、この"
"デバイスのインストール手順を参照してください。"
msgid "Sort"
msgstr "ソート"
msgid "Source"
msgstr "送信元"
@ -3546,6 +3545,9 @@ msgstr "保存されていない変更"
msgid "Unsupported protocol type."
msgstr "サポートされていないプロトコルタイプ"
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "リストの更新"
@ -3813,6 +3815,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "ブリッジ"
msgid "create"
msgstr ""
msgid "create:"
msgstr "作成:"
@ -3850,9 +3855,6 @@ msgstr "全二重"
msgid "half-duplex"
msgstr "半二重"
msgid "help"
msgstr "ヘルプ"
msgid "hidden"
msgstr "(不明)"
@ -3901,6 +3903,9 @@ msgstr "オン"
msgid "open"
msgstr "オープン"
msgid "output"
msgstr ""
msgid "overlay"
msgstr "オーバーレイ"
@ -3951,3 +3956,32 @@ msgstr "はい"
msgid "« Back"
msgstr "« 戻る"
#~ msgid "DHCP Leases"
#~ msgstr "DHCPリース"
#~ msgid "DHCPv6 Leases"
#~ msgstr "DHCPv6 リース"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "本当にこのインターフェースを削除しますか?一度削除すると、元に戻すことはで"
#~ "きません!\n"
#~ "このインターフェースを経由して接続している場合、デバイスにアクセスできなく"
#~ "なる場合があります。"
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "本当にネットワークを停止しますか?\n"
#~ "このネットワークを経由して接続している場合、デバイスにアクセスできなくなる"
#~ "場合があります。"
#~ msgid "Sort"
#~ msgstr "ソート"
#~ msgid "help"
#~ msgstr "ヘルプ"

View file

@ -49,6 +49,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "1 분 부하:"
@ -749,9 +752,6 @@ msgstr ""
"원한다면 장치에 부착된 <abbr title=\"Light Emitting Diode\">LED</abbr> 들의 "
"행동을 마음대로 변경할 수 있습니다."
msgid "DHCP Leases"
msgstr "DHCP 임대 정보"
msgid "DHCP Server"
msgstr "DHCP 서버"
@ -764,9 +764,6 @@ msgstr "DHCP client"
msgid "DHCP-Options"
msgstr "DHCP-옵션들"
msgid "DHCPv6 Leases"
msgstr "DHCPv6 임대 정보"
msgid "DHCPv6 client"
msgstr ""
@ -954,6 +951,9 @@ msgid ""
"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
msgstr ""
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "패키지 다운로드 후 설치"
@ -1068,6 +1068,9 @@ msgstr ""
msgid "Enable this mount"
msgstr ""
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr ""
@ -1100,6 +1103,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr ""
@ -1282,7 +1291,7 @@ msgstr "여유 공간"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2566,12 +2575,12 @@ msgstr ""
"Configuration Protocol\">DHCP</abbr>-서버를 설정합니다"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2579,14 +2588,12 @@ msgid "Really reset all changes?"
msgstr ""
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"정말로 네트워크를 shutdown 하시겠습니까?\\n이 인터페이스를 통해 연결하였다면 "
"접속이 끊어질 수 있습니다."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2923,9 +2930,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr "순서"
msgid "Source"
msgstr ""
@ -3412,6 +3416,9 @@ msgstr "적용 안된 변경 사항"
msgid "Unsupported protocol type."
msgstr ""
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr ""
@ -3673,6 +3680,9 @@ msgstr ""
msgid "bridged"
msgstr ""
msgid "create"
msgstr ""
msgid "create:"
msgstr ""
@ -3710,9 +3720,6 @@ msgstr ""
msgid "half-duplex"
msgstr ""
msgid "help"
msgstr ""
msgid "hidden"
msgstr ""
@ -3761,6 +3768,9 @@ msgstr ""
msgid "open"
msgstr ""
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3812,6 +3822,22 @@ msgstr ""
msgid "« Back"
msgstr ""
#~ msgid "DHCP Leases"
#~ msgstr "DHCP 임대 정보"
#~ msgid "DHCPv6 Leases"
#~ msgstr "DHCPv6 임대 정보"
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "정말로 네트워크를 shutdown 하시겠습니까?\\n이 인터페이스를 통해 연결하였다"
#~ "면 접속이 끊어질 수 있습니다."
#~ msgid "Sort"
#~ msgstr "순서"
#~ msgid "IPv4 WAN Status"
#~ msgstr "IPv4 WAN 상태"

View file

@ -49,6 +49,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr ""
@ -727,9 +730,6 @@ msgid ""
"\">LED</abbr>s if possible."
msgstr "Mengkustomisasi perilaku peranti LED jika mungkin."
msgid "DHCP Leases"
msgstr ""
msgid "DHCP Server"
msgstr ""
@ -742,9 +742,6 @@ msgstr ""
msgid "DHCP-Options"
msgstr "DHCP-Pilihan"
msgid "DHCPv6 Leases"
msgstr ""
msgid "DHCPv6 client"
msgstr ""
@ -929,6 +926,9 @@ msgid ""
"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
msgstr "Jangan hantar permintaan DNS tanpa nama DNS"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Turun dan memasang pakej"
@ -1040,6 +1040,9 @@ msgstr ""
msgid "Enable this mount"
msgstr ""
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr ""
@ -1072,6 +1075,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr ""
@ -1254,7 +1263,7 @@ msgstr ""
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2542,12 +2551,12 @@ msgid ""
msgstr "Baca /etc/ethers untuk mengkonfigurasikan DHCP-Server"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2555,12 +2564,12 @@ msgid "Really reset all changes?"
msgstr ""
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2897,9 +2906,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr ""
msgid "Source"
msgstr "Sumber"
@ -3383,6 +3389,9 @@ msgstr "Perubahan yang belum disimpan"
msgid "Unsupported protocol type."
msgstr ""
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr ""
@ -3634,6 +3643,9 @@ msgstr ""
msgid "bridged"
msgstr ""
msgid "create"
msgstr ""
msgid "create:"
msgstr ""
@ -3669,9 +3681,6 @@ msgstr ""
msgid "half-duplex"
msgstr ""
msgid "help"
msgstr "Membantu"
msgid "hidden"
msgstr ""
@ -3720,6 +3729,9 @@ msgstr ""
msgid "open"
msgstr ""
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3771,6 +3783,9 @@ msgstr ""
msgid "« Back"
msgstr "« Kembali"
#~ msgid "help"
#~ msgstr "Membantu"
#~ msgid "Apply"
#~ msgstr "Melaksanakan"

View file

@ -44,6 +44,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "1 minutts belastning:"
@ -751,9 +754,6 @@ msgstr ""
"Tilpasser oppførselen til enhetens <abbr title=\"Light Emitting Diode\">LED</"
"abbr>s om mulig."
msgid "DHCP Leases"
msgstr "DHCP Leier"
msgid "DHCP Server"
msgstr "DHCP Server"
@ -766,9 +766,6 @@ msgstr "DHCP klient"
msgid "DHCP-Options"
msgstr "DHCP-Alternativer"
msgid "DHCPv6 Leases"
msgstr "DHCPv6 Leier"
msgid "DHCPv6 client"
msgstr ""
@ -960,6 +957,9 @@ msgstr ""
"Ikke videresend <abbr title=\"Domain Name System\">DNS</abbr>-Forespørsler "
"uten <abbr title=\"Domain Name System\">DNS</abbr>-Navn"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Last ned og installer pakken"
@ -1075,6 +1075,9 @@ msgstr ""
msgid "Enable this mount"
msgstr "Aktiver dette monteringspunktet"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Aktiver denne swapenhet"
@ -1107,6 +1110,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Sletter..."
@ -1291,7 +1300,7 @@ msgstr "Ledig plass"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2593,15 +2602,12 @@ msgstr ""
"Configuration Protocol\">DHCP</abbr>-Server"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"Fjerne dette grensesnittet? Slettingen kan ikke omgjøres!\n"
"Du kan miste kontakten med ruteren om du er tilkoblet via dette "
"grensesnittet."
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"Fjerne dette trådløse nettverket? Slettingen kan ikke omgjøres!\n"
@ -2610,17 +2616,13 @@ msgstr ""
msgid "Really reset all changes?"
msgstr "Vil du nullstille alle endringer?"
#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"Slå av dette nettverket ?\n"
"Du kan miste kontakten med ruteren om du er tilkoblet via dette "
"grensesnittet."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"Slå av dette grensesnittet \"%s\" ?\n"
@ -2966,9 +2968,6 @@ msgstr ""
"flashes manuelt. Viser til wiki for installering av firmare på forskjellige "
"enheter."
msgid "Sort"
msgstr "Sortering"
msgid "Source"
msgstr "Kilde"
@ -3490,6 +3489,9 @@ msgstr "Ulagrede Endringer"
msgid "Unsupported protocol type."
msgstr "Protokoll type er ikke støttet."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Oppdater lister"
@ -3754,6 +3756,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "brokoblet"
msgid "create"
msgstr ""
msgid "create:"
msgstr "opprett:"
@ -3791,9 +3796,6 @@ msgstr "full-dupleks"
msgid "half-duplex"
msgstr "halv-dupleks"
msgid "help"
msgstr "Hjelp"
msgid "hidden"
msgstr "skjult"
@ -3842,6 +3844,9 @@ msgstr "på"
msgid "open"
msgstr "åpen"
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3893,6 +3898,35 @@ msgstr "ja"
msgid "« Back"
msgstr "« Tilbake"
#~ msgid "DHCP Leases"
#~ msgstr "DHCP Leier"
#~ msgid "DHCPv6 Leases"
#~ msgstr "DHCPv6 Leier"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "Fjerne dette grensesnittet? Slettingen kan ikke omgjøres!\n"
#~ "Du kan miste kontakten med ruteren om du er tilkoblet via dette "
#~ "grensesnittet."
#, fuzzy
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "Slå av dette nettverket ?\n"
#~ "Du kan miste kontakten med ruteren om du er tilkoblet via dette "
#~ "grensesnittet."
#~ msgid "Sort"
#~ msgstr "Sortering"
#~ msgid "help"
#~ msgstr "Hjelp"
#~ msgid "IPv4 WAN Status"
#~ msgstr "IPv4 WAN Status"

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: LuCI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-20 09:40+0200\n"
"PO-Revision-Date: 2018-05-14 20:05+0200\n"
"PO-Revision-Date: 2018-06-10 10:05+0200\n"
"Last-Translator: Rixerx <krystian.kozak20@gmail.com>\n"
"Language-Team: Polish\n"
"Language: pl\n"
@ -50,6 +50,9 @@ msgstr "-- dopasuj po etykiecie --"
msgid "-- match by uuid --"
msgstr "-- dopasuj po uuid --"
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Obciążenie 1 min.:"
@ -373,12 +376,14 @@ msgstr ""
msgid "Announce as default router even if no public prefix is available."
msgstr ""
"Rozgłaszaj jako domyślny router nawet jeśli publiczny prefiks nie jest "
"dostępny."
msgid "Announced DNS domains"
msgstr ""
msgstr "Rozgłaszaj domeny DNS"
msgid "Announced DNS servers"
msgstr ""
msgstr "Rozgłaszaj serwery DNS"
msgid "Anonymous Identity"
msgstr ""
@ -408,11 +413,13 @@ msgid "Apply unchecked"
msgstr ""
msgid "Architecture"
msgstr ""
msgstr "Architektura"
msgid ""
"Assign a part of given length of every public IPv6-prefix to this interface"
msgstr ""
"Przypisz część danej długości każdego publicznego prefiksu IPv6 do tego "
"interfejsu"
msgid "Assign interfaces..."
msgstr "Przypisz interfejsy..."
@ -420,12 +427,14 @@ msgstr "Przypisz interfejsy..."
msgid ""
"Assign prefix parts using this hexadecimal subprefix ID for this interface."
msgstr ""
"Przypisz cześć prefiksu za pomocą szesnastkowego ID subprefiksu dla tego "
"interfejsu"
msgid "Associated Stations"
msgstr "Połączone stacje"
msgid "Associations"
msgstr ""
msgstr "Połączeni"
msgid "Auth Group"
msgstr ""
@ -532,6 +541,7 @@ msgstr ""
msgid "Bind only to specific interfaces rather than wildcard address."
msgstr ""
"Powiąż tylko ze specyficznymi interfejsami, a nie z adresami wieloznacznymi."
msgid "Bind the tunnel to this interface (optional)."
msgstr ""
@ -693,10 +703,10 @@ msgid "Configuration files will be kept."
msgstr "Pliki konfiguracyjne zostaną zachowane."
msgid "Configuration has been applied."
msgstr ""
msgstr "Konfiguracja została zastosowana."
msgid "Configuration has been rolled back!"
msgstr ""
msgstr "Konfiguracja została wycofana!"
msgid "Confirmation"
msgstr "Potwierdzenie"
@ -765,6 +775,8 @@ msgid ""
"Custom files (certificates, scripts) may remain on the system. To prevent "
"this, perform a factory-reset first."
msgstr ""
"Własne pliki (certyfikaty, skrypty) mogą pozostać w systemie. Aby zapobiec "
"temu, wykonaj najpierw reset do ustawień fabrycznych"
msgid ""
"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
@ -773,9 +785,6 @@ msgstr ""
"Dostosuj zachowanie diod <abbr title=\"Light Emitting Diode\">LED</abbr> "
"urządzenia jeśli jest to możliwe."
msgid "DHCP Leases"
msgstr "Dzierżawy DHCP"
msgid "DHCP Server"
msgstr "Serwer DHCP"
@ -788,17 +797,14 @@ msgstr "Klient DHCP"
msgid "DHCP-Options"
msgstr "Opcje DHCP"
msgid "DHCPv6 Leases"
msgstr "Dzierżawy DHCPv6"
msgid "DHCPv6 client"
msgstr "Klient DHCPv6"
msgid "DHCPv6-Mode"
msgstr ""
msgstr "Tryb DHCPv6"
msgid "DHCPv6-Service"
msgstr ""
msgstr "Serwis DHCPv6"
msgid "DNS"
msgstr "DNS"
@ -813,7 +819,7 @@ msgid "DNSSEC"
msgstr ""
msgid "DNSSEC check unsigned"
msgstr ""
msgstr "Sprawdzanie DNSSEC bez podpisu"
msgid "DPD Idle Timeout"
msgstr ""
@ -846,7 +852,7 @@ msgid "Default gateway"
msgstr "Brama domyślna"
msgid "Default is stateless + stateful"
msgstr ""
msgstr "Domyślnie jest to stateless + stateful"
msgid "Default state"
msgstr "Stan domyślny"
@ -985,6 +991,9 @@ msgstr ""
"Nie przekazuj zapytań <abbr title=\"Domain Name System\">DNS</abbr> bez "
"nazwy <abbr title=\"Domain Name System\">DNS</abbr>'a"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Pobierz i zainstaluj pakiet"
@ -1104,6 +1113,9 @@ msgstr ""
msgid "Enable this mount"
msgstr "Włącz ten punkt montowania"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Włącz ten swap"
@ -1140,6 +1152,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Usuwanie..."
@ -1180,13 +1198,13 @@ msgid "External R1 Key Holder List"
msgstr ""
msgid "External system log server"
msgstr "Zewnętrzny serwer dla logów systemowych"
msgstr "Serwer zewnętrzny dla logów systemowych"
msgid "External system log server port"
msgstr "Port zewnętrznego serwera dla logów systemowych"
msgstr "Port zewnętrznego serwera logów systemowych"
msgid "External system log server protocol"
msgstr "Protokół zewnętrznego serwera dla logów systemowych"
msgstr "Protokół zewnętrznego serwera logów systemowych"
msgid "Extra SSH command options"
msgstr ""
@ -1325,7 +1343,7 @@ msgstr "Wolna przestrzeń"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -1370,7 +1388,7 @@ msgid "Global Settings"
msgstr ""
msgid "Global network options"
msgstr ""
msgstr "Globalne opcje sieciowe"
msgid "Go to password configuration..."
msgstr "Przejdź do konfiguracji hasła..."
@ -1462,7 +1480,7 @@ msgid "IPv4 Firewall"
msgstr "Firewall IPv4"
msgid "IPv4 Upstream"
msgstr ""
msgstr "Protokół IPv4"
msgid "IPv4 address"
msgstr "Adres IPv4"
@ -1507,22 +1525,22 @@ msgid "IPv6 Neighbours"
msgstr ""
msgid "IPv6 Settings"
msgstr ""
msgstr "Ustawienia IPv6"
msgid "IPv6 ULA-Prefix"
msgstr ""
msgstr "IPv6 Prefiks-ULA"
msgid "IPv6 Upstream"
msgstr ""
msgstr "Protokół IPv6"
msgid "IPv6 address"
msgstr "Adres IPv6"
msgid "IPv6 assignment hint"
msgstr ""
msgstr "Wskazówka przypisania IPv6"
msgid "IPv6 assignment length"
msgstr ""
msgstr "Długość przydziału IPv6"
msgid "IPv6 gateway"
msgstr "Brama IPv6"
@ -1540,7 +1558,7 @@ msgid "IPv6 routed prefix"
msgstr ""
msgid "IPv6 suffix"
msgstr ""
msgstr "Sufiks IPv6"
msgid "IPv6-Address"
msgstr "Adres IPv6"
@ -1800,6 +1818,7 @@ msgstr "Limit"
msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
msgstr ""
"Ogranicz usługi DNS do podsieci interfejsów, na których obsługujemy DNS."
msgid "Limit listening to these interfaces, and loopback."
msgstr "Ogranicz nasłuchiwanie do tych interfesjów, oraz loopbacku."
@ -1883,7 +1902,7 @@ msgid "Local IPv6 address"
msgstr "Lokalny adres IPv6"
msgid "Local Service Only"
msgstr ""
msgstr "Tylko serwis lokalny"
msgid "Local Startup"
msgstr "Lokalny autostart"
@ -1904,7 +1923,7 @@ msgstr ""
msgid "Local domain suffix appended to DHCP names and hosts file entries"
msgstr ""
"Przyrostek (suffiks) domeny przyłączany do nazw DHCP i wpisów w pliku hosts"
"Przyrostek (sufiks) domeny przyłączany do nazw DHCP i wpisów w pliku hosts"
msgid "Local server"
msgstr "Serwer lokalny"
@ -2104,7 +2123,7 @@ msgid "NCM"
msgstr "NCM"
msgid "NDP-Proxy"
msgstr ""
msgstr "Proxy NDP"
msgid "NT Domain"
msgstr ""
@ -2191,7 +2210,7 @@ msgid "Non Pre-emtive CRC errors (CRC_P)"
msgstr ""
msgid "Non-wildcard"
msgstr ""
msgstr "Bez symboli wieloznacznych"
msgid "None"
msgstr "Brak"
@ -2222,6 +2241,8 @@ msgstr "Nslookup"
msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
msgstr ""
"Liczba buforowanych wpisów DNS (max wynosi 10000, 0 oznacza brak pamięci "
"podręcznej)"
msgid "OK"
msgstr "OK"
@ -2299,6 +2320,10 @@ msgid ""
"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
"for the interface."
msgstr ""
"Opcjonalne. Dopuszczalne wartości: 'eui64', 'random', stałe wartości takie "
"jak '::1' lub '::1:2'. Kiedy prefiks IPv6 (taki jak 'a:b:c:d::') jest "
"odbierany z serwera delegującego, użyj sufiksa (takiego jak '::1') aby "
"utworzyć adres IPv6 ('a:b:c:d::1') dla tego interfejsu."
msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
@ -2591,7 +2616,7 @@ msgid "Public prefix routed to this device for distribution to clients."
msgstr ""
msgid "QMI Cellular"
msgstr ""
msgstr "Komórkowy QMI"
msgid "Quality"
msgstr "Jakość"
@ -2643,15 +2668,12 @@ msgstr ""
"\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"Naprawdę usunąć ten interfejs? Usunięcie nie może zostać cofnięte!\n"
"Możesz stracić dostęp do tego urządzenia, jeśli jesteś połączony przez ten "
"interfejs!"
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"Naprawdę usunąć tę sieć bezprzewodową? Usunięcie nie może zostać cofnięte!\n"
@ -2661,17 +2683,13 @@ msgstr ""
msgid "Really reset all changes?"
msgstr "Naprawdę usunąć wszelkie zmiany?"
#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"Naprawdę wyłączyć tę sieć?\n"
"Możesz stracić dostęp do tego urządzenia jeśli jesteś połączony przez ten "
"interfejs!"
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"Naprawdę wyłączyć interfejs \"%s\"?\n"
@ -2792,6 +2810,8 @@ msgid ""
"Requires upstream supports DNSSEC; verify unsigned domain responses really "
"come from unsigned domains"
msgstr ""
"Wymagane jest wsparcie dla DNSSEC; sprawdzanie, czy niepodpisane odpowiedzi "
"w domenie rzeczywiście pochodzą z domen bez znaku"
msgid "Reset"
msgstr "Resetuj"
@ -2845,10 +2865,10 @@ msgid "Route Allowed IPs"
msgstr ""
msgid "Route type"
msgstr ""
msgstr "Typ trasy"
msgid "Router Advertisement-Service"
msgstr ""
msgstr "Serwis rozgłoszeniowy routera"
msgid "Router Password"
msgstr "Hasło routera"
@ -2983,7 +3003,7 @@ msgid "Size (.ipk)"
msgstr ""
msgid "Size of DNS query cache"
msgstr ""
msgstr "Rozmiar pamięci podręcznej zapytań DNS"
msgid "Skip"
msgstr "Pomiń"
@ -3001,7 +3021,7 @@ msgid "Software"
msgstr "Oprogramowanie"
msgid "Software VLAN"
msgstr "VLAN programowy"
msgstr "Programowy VLAN"
msgid "Some fields are invalid, cannot save values!"
msgstr "Wartości pewnych pól są niewłaściwe, nie mogę ich zachować!"
@ -3021,9 +3041,6 @@ msgstr ""
"być wgrany ręcznie. Sprawdź stronę wiki, aby uzyskać instrukcję dla danego "
"urządzenia."
msgid "Sort"
msgstr "Posortuj"
msgid "Source"
msgstr "Źródło"
@ -3112,10 +3129,10 @@ msgid "Submit"
msgstr "Wyślij"
msgid "Suppress logging"
msgstr ""
msgstr "Pomiń rejestrowanie"
msgid "Suppress logging of the routine operation of these protocols"
msgstr ""
msgstr "Pomiń rejestrowanie rutynowych operacji dla tych protokołów"
msgid "Swap"
msgstr ""
@ -3354,7 +3371,7 @@ msgid "There are no active leases."
msgstr "Brak aktywnych dzierżaw."
msgid "There are no changes to apply."
msgstr ""
msgstr "Nie ma żadnych zmian do zastosowania."
msgid "There are no pending changes to revert!"
msgstr "Brak oczekujących zmian do przywrócenia!"
@ -3384,6 +3401,9 @@ msgid ""
"'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain "
"Name System\">DNS</abbr> servers."
msgstr ""
"Ten plik może zawierać linie takie jak 'server=/domain/1.2.3.4' lub "
"'server=1.2.3.4' dla specyficznych dla domeny lub pełnych serwerów <abbr "
"title=\"Domain Name System\">DNS</abbr>"
msgid ""
"This is a list of shell glob patterns for matching files and directories to "
@ -3464,7 +3484,7 @@ msgid ""
"To restore configuration files, you can upload a previously generated backup "
"archive here."
msgstr ""
"Aby przywrócić pliki konfiguracyjne, możesz tutaj przesłać wcześniej "
"Aby przywrócić pliki konfiguracyjne, możesz przesłać tutaj wcześniej "
"utworzoną kopię zapasową."
msgid "Tone"
@ -3557,6 +3577,9 @@ msgstr "Niezapisane zmiany"
msgid "Unsupported protocol type."
msgstr "Nieobsługiwany typ protokołu."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Aktualizuj listy"
@ -3728,7 +3751,7 @@ msgid "Waiting for command to complete..."
msgstr "Trwa wykonanie polecenia..."
msgid "Waiting for configuration to get applied… %ds"
msgstr ""
msgstr "Oczekiwanie na zastosowanie konfiguracji… %ds"
msgid "Waiting for device..."
msgstr "Oczekiwanie na urządzenie..."
@ -3828,6 +3851,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "zmostkowany"
msgid "create"
msgstr ""
msgid "create:"
msgstr "utwórz:"
@ -3865,9 +3891,6 @@ msgstr "pełny-duplex"
msgid "half-duplex"
msgstr "pół-duplex"
msgid "help"
msgstr "pomoc"
msgid "hidden"
msgstr "ukryty"
@ -3917,6 +3940,9 @@ msgstr "włączone"
msgid "open"
msgstr "otwarte"
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3968,6 +3994,35 @@ msgstr "tak"
msgid "« Back"
msgstr "« Wróć"
#~ msgid "DHCP Leases"
#~ msgstr "Dzierżawy DHCP"
#~ msgid "DHCPv6 Leases"
#~ msgstr "Dzierżawy DHCPv6"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "Naprawdę usunąć ten interfejs? Usunięcie nie może zostać cofnięte!\n"
#~ "Możesz stracić dostęp do tego urządzenia, jeśli jesteś połączony przez "
#~ "ten interfejs!"
#, fuzzy
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "Naprawdę wyłączyć tę sieć?\n"
#~ "Możesz stracić dostęp do tego urządzenia jeśli jesteś połączony przez ten "
#~ "interfejs!"
#~ msgid "Sort"
#~ msgstr "Posortuj"
#~ msgid "help"
#~ msgstr "pomoc"
#~ msgid "IPv4 WAN Status"
#~ msgstr "Status IPv4 WAN"

View file

@ -51,6 +51,9 @@ msgstr ""
"-- casar por <abbr title=\"Universal Unique IDentifier/Identificador Único "
"Universal\">UUID</abbr> --"
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Carga 1 Minuto:"
@ -800,9 +803,6 @@ msgstr ""
"Se possível, personaliza o comportamento dos <abbr title=\"Diodo Emissor de "
"Luz\">LED</abbr>s."
msgid "DHCP Leases"
msgstr "Alocações do DHCP"
msgid "DHCP Server"
msgstr "Servidor DHCP"
@ -815,9 +815,6 @@ msgstr "Cliente DHCP"
msgid "DHCP-Options"
msgstr "Opções de DHCP"
msgid "DHCPv6 Leases"
msgstr "Alocações DHCPv6"
msgid "DHCPv6 client"
msgstr "Cliente DHCPv6"
@ -1014,6 +1011,9 @@ msgstr ""
"abbr> sem o nome completo do <abbr title=\"Sistema de Nomes de Domínios"
"\">DNS</abbr>"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Baixe e instale o pacote"
@ -1133,6 +1133,9 @@ msgstr "Habilita o campo DF (Não Fragmentar) dos pacotes encapsulados."
msgid "Enable this mount"
msgstr "Ativar esta montagem"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Ativar este espaço de troca (swap)"
@ -1167,6 +1170,12 @@ msgstr "Equipamento do ponto final"
msgid "Endpoint Port"
msgstr "Porta do ponto final"
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Apagando..."
@ -1356,10 +1365,10 @@ msgstr "Espaço livre"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
"Mais informações sobre interfaces e parceiros WireGuard em <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgid "GHz"
msgstr "GHz"
@ -2729,15 +2738,12 @@ msgstr ""
"\"Protocolo de Configuração Dinâmica de Hosts\">DHCP</abbr>"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"Realmente excluir esta interface? A exclusão não pode ser desfeita!\n"
" Você poderá perder o acesso a este dispositivo se você estiver conectado "
"através desta interface."
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"Realmente excluir esta interface Wireless? A exclusão não pode ser "
@ -2749,15 +2755,12 @@ msgid "Really reset all changes?"
msgstr "Realmente limpar todas as mudanças?"
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"Realmente desligar esta rede\"%s\" ?\n"
"Você poderá perder o acesso a este dispositivo se você estiver conectado "
"através desta interface."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"Realmente desligar esta interface\"%s\" ?\n"
@ -3111,9 +3114,6 @@ msgstr ""
"firmware deve ser gravada manualmente. Por favor, consulte a wiki para "
"instruções específicas da instalação deste dispositivo."
msgid "Sort"
msgstr "Ordenar"
msgid "Source"
msgstr "Origem"
@ -3660,6 +3660,9 @@ msgstr "Alterações Não Salvas"
msgid "Unsupported protocol type."
msgstr "Tipo de protocolo não suportado."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Atualizar listas"
@ -3933,6 +3936,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "em ponte"
msgid "create"
msgstr ""
msgid "create:"
msgstr "criar"
@ -3970,9 +3976,6 @@ msgstr "full-duplex"
msgid "half-duplex"
msgstr "half-duplex"
msgid "help"
msgstr "ajuda"
msgid "hidden"
msgstr "ocultar"
@ -4023,6 +4026,9 @@ msgstr "ligado"
msgid "open"
msgstr "aberto"
msgid "output"
msgstr ""
msgid "overlay"
msgstr "sobreposição"
@ -4074,6 +4080,34 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
#~ msgid "DHCP Leases"
#~ msgstr "Alocações do DHCP"
#~ msgid "DHCPv6 Leases"
#~ msgstr "Alocações DHCPv6"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "Realmente excluir esta interface? A exclusão não pode ser desfeita!\n"
#~ " Você poderá perder o acesso a este dispositivo se você estiver conectado "
#~ "através desta interface."
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "Realmente desligar esta rede\"%s\" ?\n"
#~ "Você poderá perder o acesso a este dispositivo se você estiver conectado "
#~ "através desta interface."
#~ msgid "Sort"
#~ msgstr "Ordenar"
#~ msgid "help"
#~ msgstr "ajuda"
#~ msgid "IPv4 WAN Status"
#~ msgstr "Estado IPv4 da WAN"

View file

@ -49,6 +49,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Carga de 1 Minuto:"
@ -764,9 +767,6 @@ msgstr ""
"Customiza o comportamento dos <abbr title=\"Diodo Emissor de Luz\">LED</"
"abbr>s, se possível."
msgid "DHCP Leases"
msgstr "Concessões DHCP"
msgid "DHCP Server"
msgstr "Servidor DHCP"
@ -779,9 +779,6 @@ msgstr "Cliente DHCP"
msgid "DHCP-Options"
msgstr "Opções DHCP"
msgid "DHCPv6 Leases"
msgstr "Concessões DHCPv6"
msgid "DHCPv6 client"
msgstr ""
@ -975,6 +972,9 @@ msgstr ""
"Não encaminhar consultas <abbr title=\"Sistema de Nomes de Domínios\">DNS</"
"abbr> sem o nome do <abbr title=\"Sistema de Nomes de Domínios\">DNS</abbr>"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Descarregar e instalar pacote"
@ -1091,6 +1091,9 @@ msgstr ""
msgid "Enable this mount"
msgstr "Ativar este mount"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Ativar esta swap"
@ -1123,6 +1126,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "A apagar..."
@ -1308,7 +1317,7 @@ msgstr "Espaço livre"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2613,15 +2622,12 @@ msgstr ""
"\"Protocolo de Configuração Dinâmica de Hosts\">DHCP</abbr>"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"Deseja mesmo apagar esta interface? A eliminação não poder desfeita!\n"
"Pode perde a ligação ao dispositivo, caso esta ligado através desta "
"interface."
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"Deseja mesmo apagar esta rede? A eliminação não poder desfeita!\n"
@ -2630,16 +2636,13 @@ msgstr ""
msgid "Really reset all changes?"
msgstr "Deseja mesmo limpar todas as alterações?"
#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"Deseja mesmo desligar esta rede?\n"
"Pode perder o acesso ao dispositivo se estiver ligado através desta rede."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"Deseja mesmo desligar a interface \"%s\" ?\n"
@ -2981,9 +2984,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr "Ordenar"
msgid "Source"
msgstr "Origem"
@ -3491,6 +3491,9 @@ msgstr "Alterações não Guardadas"
msgid "Unsupported protocol type."
msgstr "Tipo de protocolo não suportado."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Actualizar listas"
@ -3749,6 +3752,9 @@ msgstr "baseT"
msgid "bridged"
msgstr ""
msgid "create"
msgstr ""
msgid "create:"
msgstr "criar:"
@ -3786,9 +3792,6 @@ msgstr "full-duplex"
msgid "half-duplex"
msgstr "half-duplex"
msgid "help"
msgstr "ajuda"
msgid "hidden"
msgstr "escondido"
@ -3838,6 +3841,9 @@ msgstr "ligado"
msgid "open"
msgstr "abrir"
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3889,6 +3895,34 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
#~ msgid "DHCP Leases"
#~ msgstr "Concessões DHCP"
#~ msgid "DHCPv6 Leases"
#~ msgstr "Concessões DHCPv6"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "Deseja mesmo apagar esta interface? A eliminação não poder desfeita!\n"
#~ "Pode perde a ligação ao dispositivo, caso esta ligado através desta "
#~ "interface."
#, fuzzy
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "Deseja mesmo desligar esta rede?\n"
#~ "Pode perder o acesso ao dispositivo se estiver ligado através desta rede."
#~ msgid "Sort"
#~ msgstr "Ordenar"
#~ msgid "help"
#~ msgstr "ajuda"
#~ msgid "IPv4 WAN Status"
#~ msgstr "Estado WAN IPv4"

View file

@ -48,6 +48,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Incarcarea in ultimul minut"
@ -737,9 +740,6 @@ msgid ""
"\">LED</abbr>s if possible."
msgstr ""
msgid "DHCP Leases"
msgstr "Conexiuni DHCP"
msgid "DHCP Server"
msgstr "Server DHCP"
@ -752,9 +752,6 @@ msgstr ""
msgid "DHCP-Options"
msgstr "Optiuni DHCP"
msgid "DHCPv6 Leases"
msgstr ""
msgid "DHCPv6 client"
msgstr ""
@ -936,6 +933,9 @@ msgid ""
"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
msgstr ""
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Descarca si instaleaza pachetul"
@ -1046,6 +1046,9 @@ msgstr ""
msgid "Enable this mount"
msgstr ""
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr ""
@ -1078,6 +1081,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Stergere..."
@ -1261,7 +1270,7 @@ msgstr "Spatiu liber"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2537,12 +2546,12 @@ msgstr ""
"<abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>-"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2550,12 +2559,12 @@ msgid "Really reset all changes?"
msgstr ""
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2891,9 +2900,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr ""
msgid "Source"
msgstr "Sursa"
@ -3359,6 +3365,9 @@ msgstr "Modificari nesalvate"
msgid "Unsupported protocol type."
msgstr "Tipul de protocol neacceptat."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr ""
@ -3610,6 +3619,9 @@ msgstr ""
msgid "bridged"
msgstr ""
msgid "create"
msgstr ""
msgid "create:"
msgstr ""
@ -3645,9 +3657,6 @@ msgstr ""
msgid "half-duplex"
msgstr ""
msgid "help"
msgstr "ajutor"
msgid "hidden"
msgstr "ascuns"
@ -3696,6 +3705,9 @@ msgstr ""
msgid "open"
msgstr ""
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3747,6 +3759,12 @@ msgstr "da"
msgid "« Back"
msgstr "« Inapoi"
#~ msgid "DHCP Leases"
#~ msgstr "Conexiuni DHCP"
#~ msgid "help"
#~ msgstr "ajutor"
#~ msgid "IPv4 WAN Status"
#~ msgstr "Statusul IPv4 pe WAN"

View file

@ -51,6 +51,9 @@ msgstr "-- проверка по метке --"
msgid "-- match by uuid --"
msgstr "-- проверка по uuid --"
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Загрузка за 1 минуту:"
@ -793,9 +796,6 @@ msgstr ""
"Настройка поведения светодиодной индикации <abbr title=\"Светодиод\">LED</"
"abbr>s устройства, если это возможно."
msgid "DHCP Leases"
msgstr "Аренды DHCP"
msgid "DHCP Server"
msgstr "DHCP-сервер"
@ -808,9 +808,6 @@ msgstr "DHCP-клиент"
msgid "DHCP-Options"
msgstr "DHCP-Настройки"
msgid "DHCPv6 Leases"
msgstr "Аренды DHCPv6"
msgid "DHCPv6 client"
msgstr "DHCPv6 клиент"
@ -1003,6 +1000,9 @@ msgstr ""
"Не перенаправлять <abbr title=\"Служба доменных имён\">DNS</abbr>-запросы "
"без <abbr title=\"Служба доменных имён\">DNS</abbr>-имени."
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Загрузить и установить пакет"
@ -1120,6 +1120,9 @@ msgstr "Включите флаг DF (не Фрагментировать) ин
msgid "Enable this mount"
msgstr "Включить эту<br />точку монтирования"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Включить этот раздел подкачки"
@ -1154,6 +1157,12 @@ msgstr "Конечная точка Хоста"
msgid "Endpoint Port"
msgstr "Конечная точка Порта"
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Стирание..."
@ -1341,10 +1350,10 @@ msgstr "Свободное место"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
"Дополнительная информация о интерфейсах и партнерах WireGuard приведена в <a "
"href=\"http://wireguard.io\">wireguard.io</a>."
"href=\"http://wireguard.com\">wireguard.com</a>."
msgid "GHz"
msgstr "ГГц"
@ -2688,15 +2697,12 @@ msgstr ""
"динамической настройки узла\">DHCP</abbr>-сервера."
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"Действительно удалить этот интерфейс? Удаление не может быть отменено!\\nВы "
"можете потерять доступ к этому устройству, если вы подключены через этот "
"интерфейс."
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"Действительно удалить эту беспроводную сеть? Удаление не может быть отменено!"
@ -2707,18 +2713,16 @@ msgid "Really reset all changes?"
msgstr "Действительно сбросить все изменения?"
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"Действительно отключить сеть? Вы можете потерять доступ к этому устройству, "
"если вы подключены через этот интерфейс."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"Действительно отключить интерфейс \"%s\" ?\\nВы можете потерять доступ к "
"этому устройству, если вы подключены через этот интерфейс."
"Действительно отключить интерфейс \"%s\"? Вы можете потерять доступ к этому "
"устройству, если вы подключены через этот интерфейс."
msgid "Really switch protocol?"
msgstr "Вы действительно хотите изменить протокол?"
@ -3068,9 +3072,6 @@ msgstr ""
"должна быть установлена вручную. Обратитесь к wiki для получения конкретных "
"инструкций для вашего устройства."
msgid "Sort"
msgstr "Сортировка"
msgid "Source"
msgstr "Источник"
@ -3607,6 +3608,9 @@ msgstr "Непринятые изменения"
msgid "Unsupported protocol type."
msgstr "Неподдерживаемый тип протокола."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Обновить списки"
@ -3882,6 +3886,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "соед. мостом"
msgid "create"
msgstr ""
msgid "create:"
msgstr "создать:"
@ -3919,9 +3926,6 @@ msgstr "полный дуплекс"
msgid "half-duplex"
msgstr "полудуплекс"
msgid "help"
msgstr "помощь"
msgid "hidden"
msgstr "скрытый"
@ -3970,6 +3974,9 @@ msgstr "включено"
msgid "open"
msgstr "открыть"
msgid "output"
msgstr ""
msgid "overlay"
msgstr "overlay"
@ -4021,6 +4028,33 @@ msgstr "да"
msgid "« Back"
msgstr "« Назад"
#~ msgid "DHCP Leases"
#~ msgstr "Аренды DHCP"
#~ msgid "DHCPv6 Leases"
#~ msgstr "Аренды DHCPv6"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "Действительно удалить этот интерфейс? Удаление не может быть отменено!"
#~ "\\nВы можете потерять доступ к этому устройству, если вы подключены через "
#~ "этот интерфейс."
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "Действительно отключить сеть? Вы можете потерять доступ к этому "
#~ "устройству, если вы подключены через этот интерфейс."
#~ msgid "Sort"
#~ msgstr "Сортировка"
#~ msgid "help"
#~ msgstr "помощь"
#~ msgid "IPv4 WAN Status"
#~ msgstr "Состояние IPv4 WAN"

View file

@ -44,6 +44,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr ""
@ -720,9 +723,6 @@ msgid ""
"\">LED</abbr>s if possible."
msgstr ""
msgid "DHCP Leases"
msgstr ""
msgid "DHCP Server"
msgstr ""
@ -735,9 +735,6 @@ msgstr ""
msgid "DHCP-Options"
msgstr ""
msgid "DHCPv6 Leases"
msgstr ""
msgid "DHCPv6 client"
msgstr ""
@ -917,6 +914,9 @@ msgid ""
"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
msgstr ""
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr ""
@ -1027,6 +1027,9 @@ msgstr ""
msgid "Enable this mount"
msgstr ""
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr ""
@ -1059,6 +1062,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr ""
@ -1241,7 +1250,7 @@ msgstr ""
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2510,12 +2519,12 @@ msgid ""
msgstr ""
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2523,12 +2532,12 @@ msgid "Really reset all changes?"
msgstr ""
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2863,9 +2872,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr ""
msgid "Source"
msgstr ""
@ -3329,6 +3335,9 @@ msgstr ""
msgid "Unsupported protocol type."
msgstr ""
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr ""
@ -3578,6 +3587,9 @@ msgstr ""
msgid "bridged"
msgstr ""
msgid "create"
msgstr ""
msgid "create:"
msgstr ""
@ -3613,9 +3625,6 @@ msgstr ""
msgid "half-duplex"
msgstr ""
msgid "help"
msgstr ""
msgid "hidden"
msgstr ""
@ -3664,6 +3673,9 @@ msgstr ""
msgid "open"
msgstr ""
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""

View file

@ -47,6 +47,9 @@ msgstr "-- matcha enligt märke --"
msgid "-- match by uuid --"
msgstr "-- matcha enligt uuid --"
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "Belastning senaste minuten:"
@ -734,9 +737,6 @@ msgid ""
"\">LED</abbr>s if possible."
msgstr ""
msgid "DHCP Leases"
msgstr "DHCP-kontrakt"
msgid "DHCP Server"
msgstr "DHCP-server"
@ -749,9 +749,6 @@ msgstr "DHCP-klient"
msgid "DHCP-Options"
msgstr "DHCP-alternativ"
msgid "DHCPv6 Leases"
msgstr "DHCPv6-kontrakt"
msgid "DHCPv6 client"
msgstr "DHCPv6-klient"
@ -937,6 +934,9 @@ msgstr ""
"Vidarebefordra inte <abbr title=\"Domain Name System\">DNS</abbr>-"
"förfrågningar utan <abbr title=\"Domain Name System\">DNS</abbr>-namn"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Ladda ner och installera paket"
@ -1047,6 +1047,9 @@ msgstr ""
msgid "Enable this mount"
msgstr "Aktivera den här monteringen"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "Aktivera den här swap"
@ -1079,6 +1082,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "Raderar..."
@ -1261,7 +1270,7 @@ msgstr "Fritt utrymme"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2533,12 +2542,12 @@ msgstr ""
"Configuration Protocol\">DHCP</abbr>-servern"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2546,12 +2555,12 @@ msgid "Really reset all changes?"
msgstr "Verkligen återställa alla ändringar?"
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2886,9 +2895,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr "Sortera"
msgid "Source"
msgstr "Källa"
@ -3356,6 +3362,9 @@ msgstr "Osparade ändringar"
msgid "Unsupported protocol type."
msgstr "Protokolltypen stöds inte."
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "Uppdatera listor"
@ -3611,6 +3620,9 @@ msgstr ""
msgid "bridged"
msgstr "bryggad"
msgid "create"
msgstr ""
msgid "create:"
msgstr "skapa:"
@ -3646,9 +3658,6 @@ msgstr "full-duplex"
msgid "half-duplex"
msgstr "halv-duplex"
msgid "help"
msgstr "hjälp"
msgid "hidden"
msgstr "gömd"
@ -3697,6 +3706,9 @@ msgstr "på"
msgid "open"
msgstr "öppen"
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3747,3 +3759,15 @@ msgstr "ja"
msgid "« Back"
msgstr "« Bakåt"
#~ msgid "DHCP Leases"
#~ msgstr "DHCP-kontrakt"
#~ msgid "DHCPv6 Leases"
#~ msgstr "DHCPv6-kontrakt"
#~ msgid "Sort"
#~ msgstr "Sortera"
#~ msgid "help"
#~ msgstr "hjälp"

View file

@ -37,6 +37,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr ""
@ -713,9 +716,6 @@ msgid ""
"\">LED</abbr>s if possible."
msgstr ""
msgid "DHCP Leases"
msgstr ""
msgid "DHCP Server"
msgstr ""
@ -728,9 +728,6 @@ msgstr ""
msgid "DHCP-Options"
msgstr ""
msgid "DHCPv6 Leases"
msgstr ""
msgid "DHCPv6 client"
msgstr ""
@ -910,6 +907,9 @@ msgid ""
"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
msgstr ""
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr ""
@ -1020,6 +1020,9 @@ msgstr ""
msgid "Enable this mount"
msgstr ""
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr ""
@ -1052,6 +1055,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr ""
@ -1234,7 +1243,7 @@ msgstr ""
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2503,12 +2512,12 @@ msgid ""
msgstr ""
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2516,12 +2525,12 @@ msgid "Really reset all changes?"
msgstr ""
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2856,9 +2865,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr ""
msgid "Source"
msgstr ""
@ -3322,6 +3328,9 @@ msgstr ""
msgid "Unsupported protocol type."
msgstr ""
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr ""
@ -3571,6 +3580,9 @@ msgstr ""
msgid "bridged"
msgstr ""
msgid "create"
msgstr ""
msgid "create:"
msgstr ""
@ -3606,9 +3618,6 @@ msgstr ""
msgid "half-duplex"
msgstr ""
msgid "help"
msgstr ""
msgid "hidden"
msgstr ""
@ -3657,6 +3666,9 @@ msgstr ""
msgid "open"
msgstr ""
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""

View file

@ -47,6 +47,9 @@ msgstr "-- etikete göre eşleştir --"
msgid "-- match by uuid --"
msgstr "-- uuid'e göre eşleştir --"
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "1 Dakikalık Yük:"
@ -733,9 +736,6 @@ msgid ""
"\">LED</abbr>s if possible."
msgstr ""
msgid "DHCP Leases"
msgstr ""
msgid "DHCP Server"
msgstr ""
@ -748,9 +748,6 @@ msgstr ""
msgid "DHCP-Options"
msgstr ""
msgid "DHCPv6 Leases"
msgstr ""
msgid "DHCPv6 client"
msgstr ""
@ -930,6 +927,9 @@ msgid ""
"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
msgstr ""
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr ""
@ -1040,6 +1040,9 @@ msgstr ""
msgid "Enable this mount"
msgstr ""
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr ""
@ -1072,6 +1075,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr ""
@ -1254,7 +1263,7 @@ msgstr ""
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2523,12 +2532,12 @@ msgid ""
msgstr ""
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2536,12 +2545,12 @@ msgid "Really reset all changes?"
msgstr ""
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2876,9 +2885,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr "Sıralama"
msgid "Source"
msgstr "Kaynak"
@ -3342,6 +3348,9 @@ msgstr ""
msgid "Unsupported protocol type."
msgstr ""
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr ""
@ -3593,6 +3602,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "köprülü"
msgid "create"
msgstr ""
msgid "create:"
msgstr "oluşturma:"
@ -3628,9 +3640,6 @@ msgstr "tam çift yönlü"
msgid "half-duplex"
msgstr "yarı çift yönlü"
msgid "help"
msgstr "yardım"
msgid "hidden"
msgstr "gizli"
@ -3679,6 +3688,9 @@ msgstr "açık"
msgid "open"
msgstr "açık"
msgid "output"
msgstr ""
msgid "overlay"
msgstr "bindirilmiş"
@ -3730,6 +3742,12 @@ msgstr "evet"
msgid "« Back"
msgstr "« Geri"
#~ msgid "Sort"
#~ msgstr "Sıralama"
#~ msgid "help"
#~ msgstr "yardım"
#~ msgid "Apply"
#~ msgstr "Uygula"

File diff suppressed because it is too large Load diff

View file

@ -49,6 +49,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr ""
@ -729,9 +732,6 @@ msgstr ""
"Tùy chỉnh chế độ của thiết bị <abbr title=\"Light Emitting Diode\">LED</"
"abbr>s nếu có thể."
msgid "DHCP Leases"
msgstr ""
msgid "DHCP Server"
msgstr ""
@ -744,9 +744,6 @@ msgstr ""
msgid "DHCP-Options"
msgstr "Tùy chọn DHCP"
msgid "DHCPv6 Leases"
msgstr ""
msgid "DHCPv6 client"
msgstr ""
@ -932,6 +929,9 @@ msgstr ""
"Don&amp;#39;t chuyển tiếp <abbr title=\"Hệ thống tên miền\">DNS</abbr>-Yêu "
"cầu không cần <abbr title=\"Hệ thống tên miền\">DNS</abbr>-Tên"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "Tải và cài đặt gói"
@ -1045,6 +1045,9 @@ msgstr ""
msgid "Enable this mount"
msgstr ""
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr ""
@ -1077,6 +1080,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr ""
@ -1259,7 +1268,7 @@ msgstr ""
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2548,12 +2557,12 @@ msgstr ""
"Configuration Protocol\">DHCP</abbr>-Server"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
@ -2561,12 +2570,12 @@ msgid "Really reset all changes?"
msgstr ""
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
@ -2903,9 +2912,6 @@ msgid ""
"instructions."
msgstr ""
msgid "Sort"
msgstr ""
msgid "Source"
msgstr "Nguồn"
@ -3384,6 +3390,9 @@ msgstr "Thay đổi không lưu"
msgid "Unsupported protocol type."
msgstr ""
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr ""
@ -3637,6 +3646,9 @@ msgstr ""
msgid "bridged"
msgstr ""
msgid "create"
msgstr ""
msgid "create:"
msgstr ""
@ -3674,9 +3686,6 @@ msgstr ""
msgid "half-duplex"
msgstr ""
msgid "help"
msgstr ""
msgid "hidden"
msgstr ""
@ -3725,6 +3734,9 @@ msgstr ""
msgid "open"
msgstr ""
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""

View file

@ -39,6 +39,9 @@ msgstr "-- 根据标签匹配 --"
msgid "-- match by uuid --"
msgstr "-- 根据 UUID 匹配 --"
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "1 分钟负载:"
@ -378,13 +381,13 @@ msgid "Any zone"
msgstr "任意区域"
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
msgstr "应用请求失败,状态 <code>%h</code>"
msgid "Apply unchecked"
msgstr ""
msgstr "应用未选中"
msgid "Architecture"
msgstr ""
msgstr "架构"
msgid ""
"Assign a part of given length of every public IPv6-prefix to this interface"
@ -401,7 +404,7 @@ msgid "Associated Stations"
msgstr "已连接站点"
msgid "Associations"
msgstr ""
msgstr "关联数"
msgid "Auth Group"
msgstr "认证组"
@ -561,10 +564,10 @@ msgid "Changes"
msgstr "修改数"
msgid "Changes applied."
msgstr "更改已应用"
msgstr "更改已应用"
msgid "Changes have been reverted."
msgstr ""
msgstr "更改已取消。"
msgid "Changes the administrator password for accessing the device"
msgstr "修改访问设备的管理员密码"
@ -575,7 +578,7 @@ msgstr "信道"
msgid ""
"Channel %d is not available in the %s regulatory domain and has been auto-"
"adjusted to %d."
msgstr ""
msgstr "信道 %d 在 %s 监管区域内不可用并已自动调整到 %d。"
msgid "Check"
msgstr "检查"
@ -657,10 +660,10 @@ msgid "Configuration files will be kept."
msgstr "配置文件将被保留。"
msgid "Configuration has been applied."
msgstr ""
msgstr "配置已应用。"
msgid "Configuration has been rolled back!"
msgstr ""
msgstr "配置已回滚!"
msgid "Confirmation"
msgstr "确认密码"
@ -682,6 +685,8 @@ msgid ""
"changes. You might need to reconnect if you modified network related "
"settings such as the IP address or wireless security credentials."
msgstr ""
"应用配置更改后,无法重新获得对设备的访问权限。如果您修改了网络相关设置如 IP "
"地址或无线安全证书,则可能需要重新连接。"
msgid "Country"
msgstr "国家"
@ -735,9 +740,6 @@ msgid ""
"\">LED</abbr>s if possible."
msgstr "自定义此设备的 <abbr title=\"Light Emitting Diode\">LED</abbr> 行为。"
msgid "DHCP Leases"
msgstr "DHCP 分配"
msgid "DHCP Server"
msgstr "DHCP 服务器"
@ -750,9 +752,6 @@ msgstr "DHCP 客户端"
msgid "DHCP-Options"
msgstr "DHCP 选项"
msgid "DHCPv6 Leases"
msgstr "DHCPv6 分配"
msgid "DHCPv6 client"
msgstr "DHCPv6 客户端"
@ -852,7 +851,7 @@ msgid "Device unreachable"
msgstr "无法连接到设备"
msgid "Device unreachable!"
msgstr ""
msgstr "无法连接到设备!"
msgid "Diagnostics"
msgstr "网络诊断"
@ -889,7 +888,7 @@ msgid "Discard upstream RFC1918 responses"
msgstr "丢弃 RFC1918 上行响应数据"
msgid "Dismiss"
msgstr ""
msgstr "解除"
msgid "Displaying only packages containing"
msgstr "只显示有内容的软件包"
@ -940,6 +939,9 @@ msgid ""
msgstr ""
"不转发没有 <abbr title=\"Domain Name System\">DNS</abbr> 名称的解析请求"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "下载并安装软件包"
@ -1004,6 +1006,7 @@ msgid ""
"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
"snooping"
msgstr ""
"启用 <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> 窥探"
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "开启 <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@ -1053,6 +1056,9 @@ msgstr "启用后报文的 DF禁止分片标志。"
msgid "Enable this mount"
msgstr "启用此挂载点"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "启用此 swap 分区"
@ -1063,7 +1069,7 @@ msgid "Enabled"
msgstr "启用"
msgid "Enables IGMP snooping on this bridge"
msgstr ""
msgstr "在此桥接上启用 IGMP 窥探"
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
@ -1085,6 +1091,12 @@ msgstr "端点主机"
msgid "Endpoint Port"
msgstr "端点端口"
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "擦除中..."
@ -1144,7 +1156,7 @@ msgid "FT protocol"
msgstr "FT 协议"
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
msgstr "在 %d 秒内确认应用失败,等待回滚..."
msgid "File"
msgstr "文件"
@ -1267,10 +1279,10 @@ msgstr "空闲空间"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
"有关 WireGuard 接口和 Peer 的更多信息:<a href=\"http://wireguard.io"
"\">wireguard.io</a>。"
"有关 WireGuard 接口和 Peer 的更多信息:<a href=\"http://wireguard.com"
"\">wireguard.com</a>。"
msgid "GHz"
msgstr "GHz"
@ -1397,7 +1409,7 @@ msgid "IPv4 Firewall"
msgstr "IPv4 防火墙"
msgid "IPv4 Upstream"
msgstr ""
msgstr "IPv4 上游"
msgid "IPv4 address"
msgstr "IPv4 地址"
@ -1448,7 +1460,7 @@ msgid "IPv6 ULA-Prefix"
msgstr "IPv6 ULA 前缀"
msgid "IPv6 Upstream"
msgstr ""
msgstr "IPv6 上游"
msgid "IPv6 address"
msgstr "IPv6 地址"
@ -2158,7 +2170,7 @@ msgid "Obfuscated Password"
msgstr "混淆密码"
msgid "Obtain IPv6-Address"
msgstr ""
msgstr "获取 IPv6 地址"
msgid "Off-State Delay"
msgstr "关闭时间"
@ -2566,13 +2578,12 @@ msgstr ""
"Configuration Protocol\">DHCP</abbr> 服务器"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"确定要删除此接口?删除操作无法撤销!\\n删除此接口可能导致无法再访问路由器"
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"确定要删除此无线网络?删除操作无法撤销!\\n删除此无线网络可能导致无法再访问"
@ -2582,14 +2593,12 @@ msgid "Really reset all changes?"
msgstr "确定要放弃所有更改?"
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"确定要关闭此网络?\\n如果您正在使用此接口连接路由器关闭此网络可能导致连接断"
"开!"
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"确定要关闭接口 \"%s\"\\n如果您正在使用此接口连接路由器关闭此网络可能导致"
@ -2742,16 +2751,16 @@ msgid "Reveal/hide password"
msgstr "显示/隐藏 密码"
msgid "Revert"
msgstr "放弃"
msgstr "恢复"
msgid "Revert changes"
msgstr ""
msgstr "恢复更改"
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
msgstr "恢复请求失败,状态 <code>%h</code>"
msgid "Reverting configuration…"
msgstr ""
msgstr "正在恢复配置..."
msgid "Root"
msgstr "Root"
@ -2816,7 +2825,7 @@ msgid "Save"
msgstr "保存"
msgid "Save & Apply"
msgstr "保存&应用"
msgstr "保存应用"
msgid "Scan"
msgstr "扫描"
@ -2934,9 +2943,6 @@ msgstr ""
"抱歉,您的设备暂不支持 sysupgrade 升级,需手动更新固件。请参考 Wiki 中关于此"
"设备的固件更新说明。"
msgid "Sort"
msgstr "排序"
msgid "Source"
msgstr "源地址"
@ -2979,7 +2985,7 @@ msgid "Start priority"
msgstr "启动优先级"
msgid "Starting configuration apply…"
msgstr ""
msgstr "开始应用配置..."
msgid "Startup"
msgstr "启动项"
@ -3146,6 +3152,9 @@ msgid ""
"or revert all pending changes to keep the currently working configuration "
"state."
msgstr ""
"在应用挂起的更改后 %d 秒内无法到达该设备,出于安全原因导致配置回滚。如果您认"
"为配置更改仍然正确,请执行未选中的配置应用。或者您可以在尝试再次应用之前解除"
"此警告并编辑更改,或者还原所有未完成的更改以保持当前正在工作的配置状态。"
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
@ -3235,7 +3244,7 @@ msgid "There are no active leases."
msgstr "没有已分配的租约。"
msgid "There are no changes to apply."
msgstr ""
msgstr "没有待生效的更改。"
msgid "There are no pending changes to revert!"
msgstr "没有可放弃的更改!"
@ -3423,6 +3432,9 @@ msgstr "未保存的配置"
msgid "Unsupported protocol type."
msgstr "不支持的协议类型"
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "刷新列表"
@ -3592,7 +3604,7 @@ msgid "Waiting for command to complete..."
msgstr "等待命令执行完成..."
msgid "Waiting for configuration to get applied… %ds"
msgstr ""
msgstr "等待应用配置... %d 秒"
msgid "Waiting for device..."
msgstr "等待设备..."
@ -3685,6 +3697,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "桥接的"
msgid "create"
msgstr ""
msgid "create:"
msgstr "创建:"
@ -3722,9 +3737,6 @@ msgstr "全双工"
msgid "half-duplex"
msgstr "半双工"
msgid "help"
msgstr "帮助"
msgid "hidden"
msgstr "隐藏"
@ -3773,11 +3785,14 @@ msgstr "开"
msgid "open"
msgstr "开放式"
msgid "output"
msgstr ""
msgid "overlay"
msgstr "覆盖"
msgid "random"
msgstr ""
msgstr "随机"
msgid "relay mode"
msgstr "中继模式"
@ -3824,6 +3839,32 @@ msgstr "是"
msgid "« Back"
msgstr "« 后退"
#~ msgid "DHCP Leases"
#~ msgstr "DHCP 分配"
#~ msgid "DHCPv6 Leases"
#~ msgstr "DHCPv6 分配"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "确定要删除此接口?删除操作无法撤销!\\n删除此接口可能导致无法再访问路由"
#~ "器!"
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "确定要关闭此网络?\\n如果您正在使用此接口连接路由器关闭此网络可能导致连"
#~ "接断开!"
#~ msgid "Sort"
#~ msgstr "排序"
#~ msgid "help"
#~ msgstr "帮助"
#~ msgid "IPv4 WAN Status"
#~ msgstr "IPv4 WAN 状态"

View file

@ -47,6 +47,9 @@ msgstr ""
msgid "-- match by uuid --"
msgstr ""
msgid "-- please select --"
msgstr ""
msgid "1 Minute Load:"
msgstr "1分鐘負載"
@ -740,9 +743,6 @@ msgstr ""
"如果可以的話,自定這個設備的動作 <abbr title=\"Light Emitting Diode\">LED</"
"abbr>s ."
msgid "DHCP Leases"
msgstr "DHCP的釋放週期"
msgid "DHCP Server"
msgstr "DHCP伺服器"
@ -755,9 +755,6 @@ msgstr "DHCP用戶端"
msgid "DHCP-Options"
msgstr "DHCP選項"
msgid "DHCPv6 Leases"
msgstr "DHCPv6版釋放時間週期"
msgid "DHCPv6 client"
msgstr ""
@ -945,6 +942,9 @@ msgstr ""
"若沒 <abbr title=\"Domain Name System\">DNS</abbr>-名稱的話,不要轉發 <abbr "
"title=\"Domain Name System\">DNS</abbr>-請求"
msgid "Down"
msgstr ""
msgid "Download and install package"
msgstr "下載並安裝軟體包"
@ -1057,6 +1057,9 @@ msgstr ""
msgid "Enable this mount"
msgstr "啟用掛載點"
msgid "Enable this network"
msgstr ""
msgid "Enable this swap"
msgstr "啟用swap功能"
@ -1089,6 +1092,12 @@ msgstr ""
msgid "Endpoint Port"
msgstr ""
msgid "Enter custom value"
msgstr ""
msgid "Enter custom values"
msgstr ""
msgid "Erasing..."
msgstr "刪除中..."
@ -1272,7 +1281,7 @@ msgstr "剩餘空間"
msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
"wireguard.com\">wireguard.com</a>."
msgstr ""
msgid "GHz"
@ -2553,14 +2562,12 @@ msgstr ""
"Configuration Protocol\">DHCP</abbr>-伺服器"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
"lose access to this device if you are connected via this interface."
"Really delete this interface? The deletion cannot be undone! You might lose "
"access to this device if you are connected via this interface"
msgstr ""
"真的要刪除這介面?無法復元刪除!\n"
"假如您要透過這個介面連線您可能會無法存取這個設備."
msgid ""
"Really delete this wireless network? The deletion cannot be undone!\\nYou "
"Really delete this wireless network? The deletion cannot be undone! You "
"might lose access to this device if you are connected via this network."
msgstr ""
"真的要刪除這個無線網路?無法復元的刪除!\n"
@ -2569,16 +2576,13 @@ msgstr ""
msgid "Really reset all changes?"
msgstr "確定要重置回復原廠?"
#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
"Really shut down network? You might lose access to this device if you are "
"connected via this interface"
msgstr ""
"真的要刪除這個網路 ?\n"
"假如您是透過這個介面連線您可能會無法存取這個設備."
msgid ""
"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
"Really shutdown interface \"%s\"? You might lose access to this device if "
"you are connected via this interface."
msgstr ""
"真的要關閉這個介面 \"%s\" ?!\n"
@ -2918,9 +2922,6 @@ msgstr ""
"抱歉, 沒有sysupgrade支援出現, 新版韌體映像檔必須手動更新. 請回歸wiki找尋特定"
"設備安裝指引."
msgid "Sort"
msgstr "分類"
msgid "Source"
msgstr "來源"
@ -3416,6 +3417,9 @@ msgstr "尚未存檔的修改"
msgid "Unsupported protocol type."
msgstr "不支援的協定型態"
msgid "Up"
msgstr ""
msgid "Update lists"
msgstr "上傳清單"
@ -3674,6 +3678,9 @@ msgstr "baseT"
msgid "bridged"
msgstr "已橋接"
msgid "create"
msgstr ""
msgid "create:"
msgstr "建立:"
@ -3711,9 +3718,6 @@ msgstr "全雙工"
msgid "half-duplex"
msgstr "半雙工"
msgid "help"
msgstr "幫助"
msgid "hidden"
msgstr "隱藏"
@ -3762,6 +3766,9 @@ msgstr "開啟"
msgid "open"
msgstr "打開"
msgid "output"
msgstr ""
msgid "overlay"
msgstr ""
@ -3813,6 +3820,33 @@ msgstr "是的"
msgid "« Back"
msgstr "« 倒退"
#~ msgid "DHCP Leases"
#~ msgstr "DHCP的釋放週期"
#~ msgid "DHCPv6 Leases"
#~ msgstr "DHCPv6版釋放時間週期"
#~ msgid ""
#~ "Really delete this interface? The deletion cannot be undone! You might "
#~ "lose access to this device if you are connected via this interface."
#~ msgstr ""
#~ "真的要刪除這介面?無法復元刪除!\n"
#~ "假如您要透過這個介面連線您可能會無法存取這個設備."
#, fuzzy
#~ msgid ""
#~ "Really shut down network? You might lose access to this device if you are "
#~ "connected via this interface."
#~ msgstr ""
#~ "真的要刪除這個網路 ?\n"
#~ "假如您是透過這個介面連線您可能會無法存取這個設備."
#~ msgid "Sort"
#~ msgstr "分類"
#~ msgid "help"
#~ msgstr "幫助"
#~ msgid "IPv4 WAN Status"
#~ msgstr "IPv4寬頻連線狀態"

View file

@ -43,6 +43,9 @@ function index()
end)
if has_wifi then
page = entry({"admin", "network", "wireless_assoclist"}, call("wifi_assoclist"), nil)
page.leaf = true
page = entry({"admin", "network", "wireless_join"}, post("wifi_join"), nil)
page.leaf = true
@ -384,6 +387,13 @@ function wifi_shutdown(wnet)
wifi_reconnect_shutdown(true, wnet)
end
function wifi_assoclist()
local s = require "luci.tools.status"
luci.http.prepare_content("application/json")
luci.http.write_json(s.wifi_assoclist())
end
function lease_status()
local s = require "luci.tools.status"

View file

@ -74,7 +74,7 @@ function action_packages()
local out, err
-- Display
local display = luci.http.formvalue("display") or "installed"
local display = luci.http.formvalue("display") or "available"
-- Letter
local letter = string.byte(luci.http.formvalue("letter") or "A", 1)

View file

@ -260,7 +260,7 @@ m.uci:foreach("network", "switch",
end
local vid = s:option(Value, has_vlan4k or "vlan", "VLAN ID", "<div id='portstatus-%s'></div>" % switch_name)
local vid = s:option(Value, has_vlan4k or "vlan", "VLAN ID")
local mx_vid = has_vlan4k and 4094 or (num_vlans - 1)
vid.rmempty = false
@ -333,7 +333,7 @@ m.uci:foreach("network", "switch",
local _, pt
for _, pt in ipairs(topo.ports) do
local po = s:option(ListValue, tostring(pt.num), pt.label, '<div id="portstatus-%s-%d"></div>' %{ switch_name, pt.num })
local po = s:option(ListValue, tostring(pt.num), pt.label)
po:value("", translate("off"))

View file

@ -104,16 +104,17 @@ end
keys = s2:option(TextValue, "_data", "")
keys.wrap = "off"
keys.rows = 3
keys.rmempty = false
function keys.cfgvalue()
return fs.readfile("/etc/dropbear/authorized_keys") or ""
end
function keys.write(self, section, value)
if value then
fs.writefile("/etc/dropbear/authorized_keys", value:gsub("\r\n", "\n"))
end
return fs.writefile("/etc/dropbear/authorized_keys", value:gsub("\r\n", "\n"))
end
function keys.remove(self, section, value)
return fs.writefile("/etc/dropbear/authorized_keys", "")
end
end

View file

@ -67,83 +67,81 @@ local getip_host = luci.config.diag and luci.config.diag.getip or "ifconfig.co"
<div class="cbi-map">
<h2 name="content"><%:Diagnostics%></h2>
<fieldset class="cbi-section">
<div class="cbi-section">
<legend><%:Network Utilities%></legend>
<br />
<div class="table">
<div class="tr">
<div class="td left">
<input style="margin: 5px 0" type="text" value="<%=ping_host%>" name="ping" /><br />
<% if has_ping6 then %>
<select name="ping_proto" style="width:auto">
<option value="" selected="selected"><%:IPv4%></option>
<option value="6"><%:IPv6%></option>
</select>
<input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping, this.form.ping_proto.selectedIndex)" />
<% else %>
<input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping)" />
<% end %>
</div>
<div style="width:23%; float:left">
<input style="margin: 5px 0" type="text" value="<%=ping_host%>" name="ping" /><br />
<% if has_ping6 then %>
<select name="ping_proto" style="width:auto">
<option value="" selected="selected"><%:IPv4%></option>
<option value="6"><%:IPv6%></option>
</select>
<input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping, this.form.ping_proto.selectedIndex)" />
<% else %>
<input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping)" />
<% end %>
<div class="td left">
<input style="margin: 5px 0" type="text" value="<%=route_host%>" name="traceroute" /><br />
<% if has_traceroute6 then %>
<select name="traceroute_proto" style="width:auto">
<option value="" selected="selected"><%:IPv4%></option>
<option value="6"><%:IPv6%></option>
</select>
<input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute, this.form.traceroute_proto.selectedIndex)" />
<% else %>
<input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute)" />
<% end %>
<% if not has_traceroute6 then %>
<p>&#160;</p>
<p><%:Install iputils-traceroute6 for IPv6 traceroute%></p>
<% end %>
</div>
<div class="td left">
<input style="margin: 5px 0" type="text" value="<%=dns_host%>" name="nslookup" /><br />
<input type="button" value="<%:Nslookup%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.nslookup)" />
</div>
<% if has_speedtest and false then %>
<div class="td left">
<input style="margin: 5px 0" type="text" value="" name="speedtest" placeholder="alternate server" /><br />
<input type="button" value="<%:Speedtest%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.speedtest)" />
</div>
<% end %>
<% if has_iperf3 then %>
<div class="td left">
<input style="margin: 5px 0" type="text" value="<%=iperf3_host%>" name="iperf3" /><br />
<input type="button" value="<%:Iperf3%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.iperf3)" />
</div>
<% end %>
<% if has_curl then %>
<div class="td left">
<input style="margin: 5px 0" type="hidden" value="<%=getip_host%>" name="getip" /><br />
<input type="button" value="<%:Get public IP%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.getip)" />
</div>
<% end %>
<% if has_netstat then %>
<div class="td left">
<input style="margin: 5px 0" type="hidden" value="" name="netstat" /><br />
<input type="button" value="<%:Netstat%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.netstat)" />
</div>
<% end %>
</div>
</div>
<div style="width:23%; float:left">
<input style="margin: 5px 0" type="text" value="<%=route_host%>" name="traceroute" /><br />
<% if has_traceroute6 then %>
<select name="traceroute_proto" style="width:auto">
<option value="" selected="selected"><%:IPv4%></option>
<option value="6"><%:IPv6%></option>
</select>
<input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute, this.form.traceroute_proto.selectedIndex)" />
<% else %>
<input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute)" />
<% end %>
<% if not has_traceroute6 then %>
<p>&#160;</p>
<p><%:Install iputils-traceroute6 for IPv6 traceroute%></p>
<% end %>
</div>
<div style="width:23%; float:left;">
<input style="margin: 5px 0" type="text" value="<%=dns_host%>" name="nslookup" /><br />
<input type="button" value="<%:Nslookup%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.nslookup)" />
</div>
<% if has_speedtest and false then %>
<div style="width:23%; float:left;">
<input style="margin: 5px 0" type="text" value="" name="speedtest" placeholder="alternate server" /><br />
<input type="button" value="<%:Speedtest%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.speedtest)" />
</div>
<% end %>
<% if has_iperf3 then %>
<div style="width:23%; float:left;">
<input style="margin: 5px 0" type="text" value="<%=iperf3_host%>" name="iperf3" /><br />
<input type="button" value="<%:Iperf3%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.iperf3)" />
</div>
<% end %>
<% if has_curl then %>
<div style="width:23%; float:left;">
<input style="margin: 5px 0" type="hidden" value="<%=getip_host%>" name="getip" /><br />
<input type="button" value="<%:Get public IP%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.getip)" />
</div>
<% end %>
<% if has_netstat then %>
<div style="width:23%; float:left;">
<input style="margin: 5px 0" type="hidden" value="" name="netstat" /><br />
<input type="button" value="<%:Netstat%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.netstat)" />
</div>
<% end %>
<br style="clear:both" /><br />
</fieldset>
</div>
</div>
<fieldset class="cbi-section" style="display:none">
<legend id="diag-rc-legend"><%:Collecting data...%></legend>
<div class="cbi-section" style="display:none">
<strong id="diag-rc-legend"></strong>
<span id="diag-rc-output"></span>
</fieldset>
</div>
</form>
<%+footer%>

View file

@ -0,0 +1,61 @@
--- luasrc/view/admin_network/diagnostics.htm 2018-07-03 15:17:57.633203371 +0200
+++ luasrc/view/admin_network/diagnostics.htm 2018-06-08 10:45:56.107723557 +0200
@@ -72,7 +78,7 @@
<br />
- <div style="width:30%; float:left">
+ <div style="width:23%; float:left">
<input style="margin: 5px 0" type="text" value="<%=ping_host%>" name="ping" /><br />
<% if has_ping6 then %>
<select name="ping_proto" style="width:auto">
@@ -85,7 +91,7 @@
<% end %>
</div>
- <div style="width:33%; float:left">
+ <div style="width:23%; float:left">
<input style="margin: 5px 0" type="text" value="<%=route_host%>" name="traceroute" /><br />
<% if has_traceroute6 then %>
<select name="traceroute_proto" style="width:auto">
@@ -102,11 +108,39 @@
<% end %>
</div>
- <div style="width:33%; float:left;">
+ <div style="width:23%; float:left;">
<input style="margin: 5px 0" type="text" value="<%=dns_host%>" name="nslookup" /><br />
<input type="button" value="<%:Nslookup%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.nslookup)" />
</div>
+ <% if has_speedtest and false then %>
+ <div style="width:23%; float:left;">
+ <input style="margin: 5px 0" type="text" value="" name="speedtest" placeholder="alternate server" /><br />
+ <input type="button" value="<%:Speedtest%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.speedtest)" />
+ </div>
+ <% end %>
+
+ <% if has_iperf3 then %>
+ <div style="width:23%; float:left;">
+ <input style="margin: 5px 0" type="text" value="<%=iperf3_host%>" name="iperf3" /><br />
+ <input type="button" value="<%:Iperf3%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.iperf3)" />
+ </div>
+ <% end %>
+
+ <% if has_curl then %>
+ <div style="width:23%; float:left;">
+ <input style="margin: 5px 0" type="hidden" value="<%=getip_host%>" name="getip" /><br />
+ <input type="button" value="<%:Get public IP%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.getip)" />
+ </div>
+ <% end %>
+
+ <% if has_netstat then %>
+ <div style="width:23%; float:left;">
+ <input style="margin: 5px 0" type="hidden" value="" name="netstat" /><br />
+ <input type="button" value="<%:Netstat%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.netstat)" />
+ </div>
+ <% end %>
+
<br style="clear:both" /><br />
</fieldset>

View file

@ -33,7 +33,7 @@
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<script type="text/javascript">//<![CDATA[
function iface_shutdown(id, reconnect) {
if (!reconnect && !confirm(String.format('<%:Really shutdown interface "%s" ?\nYou might lose access to this device if you are connected via this interface.%>', id)))
if (!reconnect && !confirm(<%=luci.http.write_json(translate('Really shutdown interface "%s"? You might lose access to this device if you are connected via this interface.'))%>.format(id)))
return;
var d = document.getElementById(id + '-ifc-description');
@ -67,7 +67,7 @@
}
function iface_delete(id) {
if (!confirm('<%:Really delete this interface? The deletion cannot be undone!\nYou might lose access to this device if you are connected via this interface.%>'))
if (!confirm(<%=luci.http.write_json(translate('Really delete this interface? The deletion cannot be undone! You might lose access to this device if you are connected via this interface'))%>))
return;
(new XHR()).post('<%=url('admin/network/iface_delete')%>/' + id, { token: '<%=token%>' },
@ -141,8 +141,8 @@
}
html += String.format(
'<strong><%:RX%></strong>: %.2mB (%d <%:Pkts.%>)<br />' +
'<strong><%:TX%></strong>: %.2mB (%d <%:Pkts.%>)<br />',
'<strong><%:RX%>:</strong> %.2mB (%d <%:Pkts.%>)<br />' +
'<strong><%:TX%>:</strong> %.2mB (%d <%:Pkts.%>)<br />',
ifc.rx_bytes, ifc.rx_packets,
ifc.tx_bytes, ifc.tx_packets
);
@ -209,46 +209,43 @@
</fieldset>
<div class="cbi-map">
<fieldset class="cbi-section">
<div class="cbi-section">
<legend><%:Interface Overview%></legend>
<div class="table cbi-section-table" style="margin:10px; empty-cells:hide">
<div class="tr cbi-section-table-titles">
<div class="th"><%:Network%></div>
<div class="th left"><%:Status%></div>
<div class="th"><%:Actions%></div>
</div>
<%
for i, net in ipairs(netlist) do
local z = net[3]
local c = z and z:get_color() or "#EEEEEE"
local t = z and translate("Part of zone %q" % z:name()) or translate("No zone assigned")
%>
<div class="tr cbi-section-table-row cbi-rowstyle-<%=i % 2 + 1%>">
<div class="td">
<div class="ifacebox">
<div class="ifacebox-head" style="background-color:<%=c%>" title="<%=pcdata(t)%>">
<strong><%=net[1]:upper()%></strong>
</div>
<div class="ifacebox-body" id="<%=net[1]%>-ifc-devices">
<img src="<%=resource%>/icons/ethernet_disabled.png" style="width:16px; height:16px" /><br />
<small>?</small>
<div class="cbi-section-node">
<div class="table">
<%
for i, net in ipairs(netlist) do
local z = net[3]
local c = z and z:get_color() or "#EEEEEE"
local t = z and translate("Part of zone %q" % z:name()) or translate("No zone assigned")
%>
<div class="tr cbi-rowstyle-<%=i % 2 + 1%>">
<div class="td col-3 center middle">
<div class="ifacebox">
<div class="ifacebox-head" style="background-color:<%=c%>" title="<%=pcdata(t)%>">
<strong><%=net[1]:upper()%></strong>
</div>
<div class="ifacebox-body" id="<%=net[1]%>-ifc-devices">
<img src="<%=resource%>/icons/ethernet_disabled.png" style="width:16px; height:16px" /><br />
<small>?</small>
</div>
</div>
</div>
<div class="td col-5 left" id="<%=net[1]%>-ifc-description">
<em><%:Collecting data...%></em>
</div>
<div class="td cbi-section-actions">
<input type="button" class="cbi-button cbi-button-neutral" onclick="iface_shutdown('<%=net[1]%>', true)" title="<%:Reconnect this interface%>" value="<%:Connect%>" />
<input type="button" class="cbi-button cbi-button-neutral" onclick="iface_shutdown('<%=net[1]%>', false)" title="<%:Shutdown this interface%>" value="<%:Stop%>" />
<input type="button" class="cbi-button cbi-button-action important" onclick="location.href='<%=url("admin/network/network", net[1])%>'" title="<%:Edit this interface%>" value="<%:Edit%>" id="<%=net[1]%>-ifc-edit" />
<input type="button" class="cbi-button cbi-button-negative" onclick="iface_delete('<%=net[1]%>')" value="<%:Delete%>" />
</div>
</div>
<div class="td left" id="<%=net[1]%>-ifc-description">
<em><%:Collecting data...%></em>
</div>
<div class="td">
<input type="button" class="cbi-button cbi-button-reload" style="width:100px" onclick="iface_shutdown('<%=net[1]%>', true)" title="<%:Reconnect this interface%>" value="<%:Connect%>" />
<input type="button" class="cbi-button cbi-button-reset" style="width:100px" onclick="iface_shutdown('<%=net[1]%>', false)" title="<%:Shutdown this interface%>" value="<%:Stop%>" />
<input type="button" class="cbi-button cbi-button-edit" style="width:100px" onclick="location.href='<%=url("admin/network/network", net[1])%>'" title="<%:Edit this interface%>" value="<%:Edit%>" id="<%=net[1]%>-ifc-edit" />
<input type="button" class="cbi-button cbi-button-remove" style="width:100px" onclick="iface_delete('<%=net[1]%>')" value="<%:Delete%>" />
</div>
</div>
<% end %>
<% end %>
</div>
</div>
<input type="button" class="cbi-button cbi-button-add" value="<%:Add new interface...%>" onclick="location.href='<%=url("admin/network/iface_add")%>'" />
</fieldset>
</div>
</div>

View file

@ -6,29 +6,18 @@
{
if (ifc && (ifc = ifc[0]))
{
var html = '';
var s = document.getElementById('<%=self.option%>-ifc-status'),
img = s.querySelector('img'),
info = s.querySelector('span'),
html = '<strong><%:Device%>:</strong> %h<br />'.format(ifc.ifname);
var s = document.getElementById('<%=self.option%>-ifc-signal');
if (s)
s.innerHTML = String.format(
'<img src="<%=resource%>/icons/%s%s.png" style="width:16px; height:16px" />' +
'<br /><small>%s</small>',
ifc.type, ifc.is_up ? '' : '_disabled',
ifc.name
);
var d = document.getElementById('<%=self.option%>-ifc-description');
if (d && ifc.ifname)
if (ifc.ifname)
{
if (ifc.is_up)
{
html += String.format('<strong><%:Uptime%>:</strong> %t<br />', ifc.uptime);
}
if (ifc.macaddr)
{
html += String.format('<strong><%:MAC-Address%>:</strong> %s<br />', ifc.macaddr);
}
html += String.format(
'<strong><%:RX%></strong>: %.2mB (%d <%:Pkts.%>)<br />' +
@ -38,50 +27,40 @@
);
if (ifc.ipaddrs && ifc.ipaddrs.length)
{
for (var i = 0; i < ifc.ipaddrs.length; i++)
html += String.format(
'<strong><%:IPv4%>:</strong> %s<br />',
ifc.ipaddrs[i]
);
}
if (ifc.ip6addrs && ifc.ip6addrs.length)
{
for (var i = 0; i < ifc.ip6addrs.length; i++)
html += String.format(
'<strong><%:IPv6%>:</strong> %s<br />',
ifc.ip6addrs[i]
);
}
if (ifc.ip6prefix)
{
html += String.format('<strong><%:IPv6-PD%>:</strong> %s<br />', ifc.ip6prefix);
}
d.innerHTML = html;
if (ifc.ip6prefix)
html += String.format('<strong><%:IPv6-PD%>:</strong> %s<br />', ifc.ip6prefix);
info.innerHTML = html;
}
else if (d)
else
{
d.innerHTML = '<em><%:Interface not present or not connected yet.%></em>';
info.innerHTML = '<em><%:Interface not present or not connected yet.%></em>';
}
img.src = '<%=resource%>/icons/%s%s.png'.format(ifc.type, ifc.is_up ? '' : '_disabled');
}
}
);
//]]></script>
<div class="table">
<div class="tr cbi-section-table">
<div class="td"></div>
<div class="td cbi-value-field" style="min-width:16px; padding:3px; text-align:center" id="<%=self.option%>-ifc-signal">
<img src="<%=resource%>/icons/ethernet_disabled.png" style="width:16px; height:16px" /><br />
<small>?</small>
</div>
<div class="td cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px" id="<%=self.option%>-ifc-description">
<em><%:Collecting data...%></em>
</div>
</div>
</div>
<span class="ifacebadge large" id="<%=self.option%>-ifc-status">
<img src="<%=resource%>/icons/ethernet_disabled.png" />
<span>
<em><%:Collecting data...%></em>
</span>
</span>
<%+cbi/valuefooter%>

View file

@ -1,27 +1,11 @@
<script type="text/javascript">//<![CDATA[
function duid2mac(duid) {
// DUID-LLT / Ethernet
if (duid.length === 28 && duid.substr(0, 8) === '00010001')
return duid.substr(16).replace(/(..)(?=..)/g, '$1:').toUpperCase();
// DUID-LL / Ethernet
if (duid.length === 20 && duid.substr(0, 8) === '00030001')
return duid.substr(8).replace(/(..)(?=..)/g, '$1:').toUpperCase();
return null;
}
var hosts = <%=luci.http.write_json(luci.sys.net.host_hints())%>;
XHR.poll(5, '<%=url('admin/network/dhcplease_status')%>', null,
function(x, st)
{
var tb = document.getElementById('lease_status_table');
if (st && st[0] && tb)
{
/* clear all rows */
while (tb.firstElementChild !== tb.lastElementChild)
tb.removeChild(tb.lastElementChild);
var rows = [];
for (var i = 0; i < st[0].length; i++)
{
@ -34,16 +18,15 @@
else
timestr = String.format('%t', st[0][i].expires);
tb.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [
E('<div class="td">', st[0][i].hostname || '?'),
E('<div class="td">', st[0][i].ipaddr),
E('<div class="td">', st[0][i].macaddr),
E('<div class="td">', timestr)
]));
rows.push([
st[0][i].hostname || '?',
st[0][i].ipaddr,
st[0][i].macaddr,
timestr
]);
}
if (tb.firstElementChild === tb.lastElementChild)
tb.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>'));
cbi_update_table(tb, rows, '<em><%:There are no active leases.%></em>');
}
var tb6 = document.getElementById('lease6_status_table');
@ -51,9 +34,7 @@
{
tb6.parentNode.style.display = 'block';
/* clear all rows */
while (tb6.firstElementChild !== tb6.lastElementChild)
tb6.removeChild(tb6.lastElementChild);
var rows = [];
for (var i = 0; i < st[1].length; i++)
{
@ -66,60 +47,49 @@
else
timestr = String.format('%t', st[1][i].expires);
var host = hosts[duid2mac(st[1][i].duid)],
name = st[1][i].hostname,
hint = null;
var name = st[1][i].hostname,
hint = st[1][i].host_hint;
if (!name) {
if (host)
hint = host.name || host.ipv4 || host.ipv6;
}
else {
if (host && host.name && st[1][i].hostname != host.name)
hint = host.name;
}
tb6.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d" style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">'.format((i % 2) + 1), [
E('<div class="td">', hint ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">%h (%h)</div>'.format(name || '?', hint) : (name || '?')),
E('<div class="td">', st[1][i].ip6addr),
E('<div class="td">', st[1][i].duid),
E('<div class="td">', timestr)
]));
rows.push([
hint ? '%h (%h)'.format(name || '?', hint) : (name || '?'),
st[1][i].ip6addr,
st[1][i].duid,
timestr
]);
}
if (tb6.firstElementChild === tb6.lastElementChild)
tb6.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>'));
cbi_update_table(tb6, rows, '<em><%:There are no active leases.%></em>');
}
}
);
//]]></script>
<fieldset class="cbi-section">
<legend><%:Active DHCP Leases%></legend>
<div class="table cbi-section-table" id="lease_status_table">
<div class="tr cbi-section-table-titles">
<div class="th cbi-section-table-cell"><%:Hostname%></div>
<div class="th cbi-section-table-cell"><%:IPv4-Address%></div>
<div class="th cbi-section-table-cell"><%:MAC-Address%></div>
<div class="th cbi-section-table-cell"><%:Leasetime remaining%></div>
<div class="cbi-section">
<h3><%:Active DHCP Leases%></h3>
<div class="table" id="lease_status_table">
<div class="tr table-titles">
<div class="th"><%:Hostname%></div>
<div class="th"><%:IPv4-Address%></div>
<div class="th"><%:MAC-Address%></div>
<div class="th"><%:Leasetime remaining%></div>
</div>
<div class="tr cbi-section-table-row">
<div class="td" colspan="4"><em><br /><%:Collecting data...%></em></div>
<div class="tr placeholder">
<div class="td"><em><%:Collecting data...%></em></div>
</div>
</div>
</fieldset>
</div>
<fieldset class="cbi-section" style="display:none">
<legend><%:Active DHCPv6 Leases%></legend>
<div class="table cbi-section-table" id="lease6_status_table">
<div class="tr cbi-section-table-titles">
<div class="th cbi-section-table-cell"><%:Host%></div>
<div class="th cbi-section-table-cell"><%:IPv6-Address%></div>
<div class="th cbi-section-table-cell"><%:DUID%></div>
<div class="th cbi-section-table-cell"><%:Leasetime remaining%></div>
<div class="cbi-section" style="display:none">
<h3><%:Active DHCPv6 Leases%></h3>
<div class="table" id="lease6_status_table">
<div class="tr table-titles">
<div class="th"><%:Host%></div>
<div class="th"><%:IPv6-Address%></div>
<div class="th"><%:DUID%></div>
<div class="th"><%:Leasetime remaining%></div>
</div>
<div class="tr cbi-section-table-row">
<div class="td" colspan="4"><em><br /><%:Collecting data...%></em></div>
<div class="tr placeholder">
<div class="td"><em><%:Collecting data...%></em></div>
</div>
</div>
</fieldset>
</div>

View file

@ -1,21 +1,39 @@
<script type="text/javascript">//<![CDATA[
var switches = [ '<%=table.concat(self.switches, "', '")%>' ];
var switches = [ '<%=table.concat(self.switches, "', '")%>' ],
tables = document.querySelectorAll('.cbi-section-table');
function add_status_row(table) {
var first_row = table.querySelector('.cbi-section-table-row');
if (first_row.classList.contains('port-status'))
return first_row;
var status_row = first_row.parentNode.insertBefore(
E('div', { 'class': first_row.className }), first_row);
first_row.querySelectorAll('.td').forEach(function(td) {
status_row.appendChild(td.cloneNode(false));
status_row.lastElementChild.removeAttribute('data-title');
});
status_row.firstElementChild.innerHTML = '<%:Port status:%>';
status_row.classList.add('port-status') ;
return status_row;
}
XHR.poll(5, '<%=url('admin/network/switch_status')%>/' + switches.join(','), null,
function(x, st)
{
for (var i = 0; i < switches.length; i++)
{
var ports = st[switches[i]];
var th0 = document.getElementById('portstatus-' + switches[i]);
var tr = add_status_row(tables[i]);
if (th0 && ports && ports.length)
if (tr && ports && ports.length)
{
if (!th0.innerHTML)
th0.innerHTML = '<%:Port status:%>';
for (var j = 0; j < ports.length; j++)
{
var th = document.getElementById('portstatus-' + switches[i] + '-' + j);
var th = tr.querySelector('[data-name="%d"]'.format(j));
if (!th)
continue;

View file

@ -0,0 +1,82 @@
<script type="text/javascript">//<![CDATA[
function wifirate(bss, rx) {
var p = rx ? 'rx_' : 'tx_',
s = '%.1f <%:Mbit/s%>, %d<%:MHz%>'
.format(bss[p+'rate'] / 1000, bss[p+'mhz']),
ht = bss[p+'ht'], vht = bss[p+'vht'],
mhz = bss[p+'mhz'], nss = bss[p+'nss'],
mcs = bss[p+'mcs'], sgi = bss[p+'short_gi'];
if (ht || vht) {
if (vht) s += ', VHT-MCS %d'.format(mcs);
if (nss) s += ', VHT-NSS %d'.format(nss);
if (ht) s += ', MCS %s'.format(mcs);
if (sgi) s += ', <%:Short GI%>';
}
return s;
}
XHR.poll(5, '<%=url('admin/network/wireless_assoclist')%>', null,
function(x, st)
{
var tb = document.getElementById('wifi_assoclist_table');
if (st && tb)
{
var rows = [];
st.forEach(function(bss) {
var icon;
var q = (-1 * (bss.noise - bss.signal)) / 5;
if (q < 1)
icon = "<%=resource%>/icons/signal-0.png";
else if (q < 2)
icon = "<%=resource%>/icons/signal-0-25.png";
else if (q < 3)
icon = "<%=resource%>/icons/signal-25-50.png";
else if (q < 4)
icon = "<%=resource%>/icons/signal-50-75.png";
else
icon = "<%=resource%>/icons/signal-75-100.png";
rows.push([
'<span class="ifacebadge" title="%q"><img src="<%=resource%>/icons/wifi.png" /> <a href="%s">%h</a><small>&#160;(%h)</small></span>'.format(
bss.radio,
bss.link,
bss.name,
bss.ifname),
bss.bssid,
bss.host_hint ? '%h (%h)'.format(bss.host_name || '?', bss.host_hint) : (bss.host_name || '?'),
'<span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span>'.format(
bss.signal,
bss.noise,
bss.signal - bss.noise,
icon,
bss.signal,
bss.noise),
E('span', {}, [
E('span', wifirate(bss, true)),
E('br'),
E('span', wifirate(bss, false))
])
]);
});
cbi_update_table(tb, rows, '<em><%:No information available%></em>');
}
}
);
//]]></script>
<div class="table" id="wifi_assoclist_table">
<div class="tr table-titles">
<div class="th nowrap"><%:Network%></div>
<div class="th hide-xs"><%:MAC-Address%></div>
<div class="th nowrap"><%:Host%></div>
<div class="th nowrap"><%:Signal%> / <%:Noise%></div>
<div class="th nowrap"><%:RX Rate%> / <%:TX Rate%></div>
</div>
<div class="tr placeholder">
<div class="td"><em><%:Collecting data...%></em></div>
</div>
</div>

View file

@ -90,25 +90,43 @@
<h2 name="content"><%:Join Network: Wireless Scan%></h2>
<div class="cbi-map">
<fieldset class="cbi-section">
<div class="table cbi-section-table" style="empty-cells:hide">
<div class="cbi-section">
<div class="table">
<div class="tr table-titles">
<div class="th col-1 center"><%:Signal%></div>
<div class="th col-5 left"><%:SSID%></div>
<div class="th col-2 center"><%:Channel%></div>
<div class="th col-2 left"><%:Mode%></div>
<div class="th col-3 left"><%:BSSID%></div>
<div class="th col-2 left"><%:Encryption%></div>
<div class="th cbi-section-actions">&#160;</div>
</div>
<!-- scan list -->
<% for i, net in ipairs(scanlist(3)) do net.encryption = net.encryption or { } %>
<div class="tr cbi-section-table-row cbi-rowstyle-<%=1 + ((i-1) % 2)%>">
<div class="td cbi-value-field" style="width:16px; padding:3px">
<div class="tr cbi-rowstyle-<%=1 + ((i-1) % 2)%>">
<div class="td col-1 center">
<abbr title="<%:Signal%>: <%=net.signal%> <%:dB%> / <%:Quality%>: <%=net.quality%>/<%=net.quality_max%>">
<img src="<%=guess_wifi_signal(net)%>" /><br />
<small><%=percent_wifi_signal(net)%>%</small>
</abbr>
</div>
<div class="td cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px">
<big><strong><%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%></strong></big><br />
<strong>Channel:</strong> <%=net.channel%> |
<strong>Mode:</strong> <%=net.mode%> |
<strong>BSSID:</strong> <%=net.bssid%> |
<strong>Encryption:</strong> <%=format_wifi_encryption(net.encryption)%>
<div class="td col-5 left" data-title="<%:SSID%>">
<strong><%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%></strong>
</div>
<div class="td cbi-value-field" style="width:40px">
<div class="td col-2 center" data-title="<%:Channel%>">
<%=net.channel%>
</div>
<div class="td col-2 left" data-title="<%:Mode%>">
<%=net.mode%>
</div>
<div class="td col-3 left" data-title="<%:BSSID%>">
<%=net.bssid%>
</div>
<div class="td col-2 left" data-title="<%:Encryption%>">
<%=format_wifi_encryption(net.encryption)%>
</div>
<div class="td cbi-section-actions">
<form action="<%=url('admin/network/wireless_join')%>" method="post">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="device" value="<%=utl.pcdata(dev)%>" />
@ -126,23 +144,23 @@
<input type="hidden" name="clbridge" value="<%=iw.type == "wl" and 1 or 0%>" />
<input class="cbi-button cbi-button-apply" type="submit" value="<%:Join Network%>" />
<input class="cbi-button cbi-button-action important" type="submit" value="<%:Join Network%>" />
</form>
</div>
</div>
<% end %>
<!-- /scan list -->
</div>
</fieldset>
</div>
</div>
<div class="cbi-page-actions right">
<form class="inline" action="<%=url("admin/network/wireless")%>" method="get">
<input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>" />
<input class="cbi-button cbi-button-neutral" type="submit" value="<%:Back to overview%>" />
</form>
<form class="inline" action="<%=url('admin/network/wireless_join')%>" method="post">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="device" value="<%=utl.pcdata(dev)%>" />
<input class="cbi-button cbi-input-find" type="submit" value="<%:Repeat scan%>" />
<input class="cbi-button cbi-button-action" type="submit" value="<%:Repeat scan%>" />
</form>
</div>

View file

@ -113,32 +113,10 @@
var is_reconnecting = false;
function nowrap(s) {
return s.replace(/ /g, '&#160;');
}
function wifirate(bss, rx) {
var p = rx ? 'rx_' : 'tx_',
s = '%.1f <%:Mbit/s%>, %d<%:MHz%>'
.format(bss[p+'rate'] / 1000, bss[p+'mhz']),
ht = bss[p+'ht'], vht = bss[p+'vht'],
mhz = bss[p+'mhz'], nss = bss[p+'nss'],
mcs = bss[p+'mcs'], sgi = bss[p+'short_gi'];
if (ht || vht) {
if (vht) s += ', VHT-MCS %d'.format(mcs);
if (nss) s += ', VHT-NSS %d'.format(nss);
if (ht) s += ', MCS %s'.format(mcs);
if (sgi) s += ', <%:Short GI%>';
}
return s;
}
function wifi_shutdown(id, toggle) {
var reconnect = (toggle.getAttribute('active') == 'false');
if (!reconnect && !confirm(String.format('<%:Really shut down network?\nYou might lose access to this device if you are connected via this interface.%>')))
if (!reconnect && !confirm(<%=luci.http.write_json(translate('Really shut down network? You might lose access to this device if you are connected via this interface'))%>))
return;
is_reconnecting = true;
@ -176,7 +154,7 @@
}
function wifi_delete(id) {
if (!confirm('<%:Really delete this wireless network? The deletion cannot be undone!\nYou might lose access to this device if you are connected via this network.%>'))
if (!confirm(<%=luci.http.write_json(translate('Really delete this wireless network? The deletion cannot be undone! You might lose access to this device if you are connected via this network.'))%>))
return;
(new XHR()).post('<%=url('admin/network/wireless_delete')%>/' + id, { token: '<%=token%>' },
@ -193,20 +171,25 @@
{
if (st)
{
var assoctable = document.getElementById('iw-assoclist');
if (assoctable)
while (assoctable.firstElementChild !== assoctable.lastElementChild)
assoctable.removeChild(assoctable.lastElementChild);
var devup = { };
var rowstyle = 1;
var radiostate = { };
st.forEach(function(s) {
var r = radiostate[wifidevs[s.id]] || (radiostate[wifidevs[s.id]] = {});
s.is_assoc = (s.bssid && s.bssid != '00:00:00:00:00:00' && s.channel && s.mode != 'Unknown' && !s.disabled);
r.up = r.up || s.is_assoc;
r.channel = r.channel || s.channel;
r.bitrate = r.bitrate || s.bitrate;
r.frequency = r.frequency || s.frequency;
});
for( var i = 0; i < st.length; i++ )
{
var iw = st[i];
var is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel && iw.mode != 'Unknown' && !iw.disabled);
var p = iw.quality;
var q = is_assoc ? p : -1;
var q = iw.is_assoc ? p : -1;
var icon;
if (q < 0)
@ -222,9 +205,6 @@
else
icon = "<%=resource%>/icons/signal-75-100.png";
if (!devup[wifidevs[iw.id]])
devup[wifidevs[iw.id]] = is_assoc;
var sig = document.getElementById(iw.id + '-iw-signal');
if (sig)
sig.innerHTML = String.format(
@ -237,13 +217,13 @@
{
if (!iw.disabled)
{
toggle.className = 'cbi-button cbi-button-reset';
toggle.className = 'cbi-button cbi-button-neutral';
toggle.value = '<%:Disable%>';
toggle.title = '<%:Shutdown this network%>';
}
else
{
toggle.className = 'cbi-button cbi-button-reload';
toggle.className = 'cbi-button cbi-button-neutral';
toggle.value = '<%:Enable%>';
toggle.title = '<%:Activate this network%>';
}
@ -254,7 +234,7 @@
var info = document.getElementById(iw.id + '-iw-status');
if (info)
{
if (is_assoc)
if (iw.is_assoc)
info.innerHTML = String.format(
'<strong><%:SSID%>:</strong> %h | ' +
'<strong><%:Mode%>:</strong> %s<br />' +
@ -274,83 +254,23 @@
: '<em><%:Wireless is disabled or not associated%></em>'
);
}
var dev = document.getElementById(wifidevs[iw.id] + '-iw-devinfo');
if (dev)
{
if (is_assoc)
dev.innerHTML = String.format(
'<strong><%:Channel%>:</strong> %s (%s <%:GHz%>) | ' +
'<strong><%:Bitrate%>:</strong> %s <%:Mbit/s%>',
iw.channel ? iw.channel : '?',
iw.frequency ? iw.frequency : '?',
iw.bitrate ? iw.bitrate : '?'
);
else
dev.innerHTML = '';
}
if (assoctable)
{
var assoclist = [ ];
for (var bssid in iw.assoclist)
{
assoclist.push(iw.assoclist[bssid]);
assoclist[assoclist.length-1].bssid = bssid;
}
assoclist.sort(function(a, b) { a.bssid < b.bssid });
for (var j = 0; j < assoclist.length; j++)
{
var icon;
var q = (-1 * (assoclist[j].noise - assoclist[j].signal)) / 5;
if (q < 1)
icon = "<%=resource%>/icons/signal-0.png";
else if (q < 2)
icon = "<%=resource%>/icons/signal-0-25.png";
else if (q < 3)
icon = "<%=resource%>/icons/signal-25-50.png";
else if (q < 4)
icon = "<%=resource%>/icons/signal-50-75.png";
else
icon = "<%=resource%>/icons/signal-75-100.png";
var host = hosts[assoclist[j].bssid],
name = host ? (host.name || host.ipv4 || host.ipv6) : null,
hint = (host && host.name && (host.ipv4 || host.ipv6)) ? (host.ipv4 || host.ipv6) : null;
assoctable.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format(rowstyle), [
E('<div class="td"><span class="ifacebadge" title="%q"><img src="<%=resource%>/icons/wifi.png" /> %h</span></div>'
.format(iw.device.name, iw.ifname)),
E('<div class="td" style="white-space:nowrap">%h</div>'
.format(iw.ssid || '?')),
E('<div class="td">%h</div>'
.format(assoclist[j].bssid)),
E('<div class="td">', hint ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis">%h (%h)</div>'
.format(name || '?', hint) : (name || '?')),
E('<div class="td"><span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span></div>'
.format(assoclist[j].signal, assoclist[j].noise, assoclist[j].signal - assoclist[j].noise, icon, assoclist[j].signal, assoclist[j].noise)),
E('<div class="td">', [
E('<span style="white-space:nowrap">', wifirate(assoclist[j], true)),
E('<br />'),
E('<span style="white-space:nowrap">', wifirate(assoclist[j], false))
])
]));
rowstyle = (rowstyle == 1) ? 2 : 1;
}
}
}
if (assoctable && assoctable.firstElementChild === assoctable.lastElementChild)
assoctable.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:No information available%></em></div></div>'));
for (var dev in devup)
for (var dev in radiostate)
{
var img = document.getElementById(dev + '-iw-upstate');
if (img)
img.src = '<%=resource%>/icons/wifi_big' + (devup[dev] ? '' : '_disabled') + '.png';
img.src = '<%=resource%>/icons/wifi' + (radiostate[dev].up ? '' : '_disabled') + '.png';
var stat = document.getElementById(dev + '-iw-devinfo');
if (stat)
stat.innerHTML = String.format(
'<strong><%:Channel%>:</strong> %s (%s <%:GHz%>) | ' +
'<strong><%:Bitrate%>:</strong> %s <%:Mbit/s%>',
radiostate[dev].channel ? radiostate[dev].channel : '?',
radiostate[dev].frequency ? radiostate[dev].frequency : '?',
radiostate[dev].bitrate ? radiostate[dev].bitrate : '?'
);
}
}
}
@ -359,37 +279,37 @@
<h2 name="content"><%:Wireless Overview%></h2>
<fieldset class="cbi-section" style="display:none">
<div class="cbi-section" style="display:none">
<legend><%:Reconnecting interface%></legend>
<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
<span id="iw-rc-status"><%:Waiting for changes to be applied...%></span>
</fieldset>
</div>
<div class="cbi-map">
<div id="cbi-wireless-overview" class="cbi-map">
<% for _, dev in ipairs(devices) do local nets = dev:get_wifinets() %>
<!-- device <%=dev:name()%> -->
<fieldset class="cbi-section">
<div class="table cbi-section-table" style="margin:10px; empty-cells:hide">
<div class="cbi-section-node">
<div class="table">
<!-- physical device -->
<div class="tr">
<div class="td">
<img src="<%=resource%>/icons/wifi_big_disabled.png" id="<%=dev:name()%>-iw-upstate" />
<div class="td col-2 center">
<span class="ifacebadge"><img src="<%=resource%>/icons/wifi_disabled.png" id="<%=dev:name()%>-iw-upstate" /> <%=dev:name()%></span>
</div>
<div class="td left">
<big><strong><%=guess_wifi_hw(dev)%> (<%=dev:name()%>)</strong></big><br />
<div class="td col-7 left">
<big><strong><%=guess_wifi_hw(dev)%></strong></big><br />
<span id="<%=dev:name()%>-iw-devinfo"></span>
</div>
<div class="td right">
<div class="td cbi-section-actions">
<form action="<%=url('admin/network/wireless_join')%>" method="post" class="inline">
<input type="hidden" name="device" value="<%=dev:name()%>" />
<input type="hidden" name="token" value="<%=token%>" />
<input type="submit" class="cbi-button cbi-button-find" style="width:100px" title="<%:Find and join network%>" value="<%:Scan%>" />
<input type="submit" class="cbi-button cbi-button-action" title="<%:Find and join network%>" value="<%:Scan%>" />
</form>
<form action="<%=url('admin/network/wireless_add')%>" method="post" class="inline">
<input type="hidden" name="device" value="<%=dev:name()%>" />
<input type="hidden" name="token" value="<%=token%>" />
<input type="submit" class="cbi-button cbi-button-add" style="width:100px" title="<%:Provide new network%>" value="<%:Add%>" />
<input type="submit" class="cbi-button cbi-button-add" title="<%:Provide new network%>" value="<%:Add%>" />
</form>
</div>
</div>
@ -398,22 +318,22 @@
<!-- network list -->
<% if #nets > 0 then %>
<% for i, net in ipairs(nets) do %>
<div class="tr cbi-section-table-row cbi-rowstyle-<%=1 + ((i-1) % 2)%>">
<div class="td" id="<%=net:id()%>-iw-signal">
<div class="tr cbi-rowstyle-<%=1 + ((i-1) % 2)%>">
<div class="td col-2 center" id="<%=net:id()%>-iw-signal">
<span class="ifacebadge" title="<%:Not associated%>"><img src="<%=resource%>/icons/signal-none.png" /> 0%</span>
</div>
<div class="td left" id="<%=net:id()%>-iw-status">
<div class="td col-7 left" id="<%=net:id()%>-iw-status">
<em><%:Collecting data...%></em>
</div>
<div class="td right">
<input id="<%=net:id()%>-iw-toggle" type="button" class="cbi-button cbi-button-reload" style="width:100px" onclick="wifi_shutdown('<%=net:id()%>', this)" title="<%:Delete this network%>" value="<%:Enable%>" />
<input type="button" class="cbi-button cbi-button-edit" style="width:100px" onclick="location.href='<%=net:adminlink()%>'" title="<%:Edit this network%>" value="<%:Edit%>" />
<input type="button" class="cbi-button cbi-button-remove" style="width:100px" onclick="wifi_delete('<%=net:id()%>')" title="<%:Delete this network%>" value="<%:Remove%>" />
<div class="td cbi-section-actions">
<input id="<%=net:id()%>-iw-toggle" type="button" class="cbi-button cbi-button-neutral" onclick="wifi_shutdown('<%=net:id()%>', this)" title="<%:Enable this network%>" value="<%:Enable%>" />
<input type="button" class="cbi-button cbi-button-action important" onclick="location.href='<%=net:adminlink()%>'" title="<%:Edit this network%>" value="<%:Edit%>" />
<input type="button" class="cbi-button cbi-button-negative" onclick="wifi_delete('<%=net:id()%>')" title="<%:Delete this network%>" value="<%:Remove%>" />
</div>
</div>
<% end %>
<% else %>
<div class="tr cbi-section-table-row cbi-rowstyle-2">
<div class="tr cbi-rowstyle-2">
<div class="td left">
<em><%:No network configured on this device%></em>
</div>
@ -421,30 +341,14 @@
<% end %>
<!-- /network list -->
</div>
</fieldset>
</div>
<!-- /device <%=dev:name()%> -->
<% end %>
<h2><%:Associated Stations%></h2>
<fieldset class="cbi-section">
<div class="table cbi-section-table valign-middle" style="margin:10px" id="iw-assoclist">
<div class="tr cbi-section-table-titles">
<div class="th cbi-section-table-cell"></div>
<div class="th cbi-section-table-cell"><%:SSID%></div>
<div class="th cbi-section-table-cell"><%:MAC-Address%></div>
<div class="th cbi-section-table-cell"><%:Host%></div>
<div class="th cbi-section-table-cell"><%:Signal%> / <%:Noise%></div>
<div class="th cbi-section-table-cell"><%:RX Rate%> / <%:TX Rate%></div>
</div>
<div class="tr cbi-section-table-row cbi-rowstyle-2">
<div class="td">
<em><%:Collecting data...%></em>
</div>
</div>
</div>
</fieldset>
<%+admin_network/wifi_assoclist%>
</div>
<%+footer%>

View file

@ -24,21 +24,22 @@
else
icon = "<%=resource%>/icons/signal-75-100.png";
var s = document.getElementById('<%=self.option%>-iw-signal');
if (s)
s.innerHTML = String.format(
'<img src="%s" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%>" /><br />' +
'<small>%d%%</small>', icon, iw.signal, iw.noise, p
);
var s = document.getElementById('<%=self.option%>-iw-status'),
small = s.querySelector('small'),
info = s.querySelector('span');
var d = document.getElementById('<%=self.option%>-iw-description');
if (d && is_assoc)
d.innerHTML = String.format(
small.innerHTML = info.innerHTML = String.format(
'<img src="%s" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%>" />&#160;<br />%d%%&#160;',
icon, iw.signal, iw.noise, p
);
if (is_assoc)
info.innerHTML = String.format(
'<strong><%:Mode%>:</strong> %s | ' +
'<strong><%:SSID%>:</strong> %h<br />' +
'<strong><%:BSSID%>:</strong> %s | ' +
'<strong><%:BSSID%>:</strong> %s<br />' +
'<strong><%:Encryption%>:</strong> %s<br />' +
'<strong><%:Channel%>:</strong> %d (%.3f <%:GHz%>) | ' +
'<strong><%:Channel%>:</strong> %d (%.3f <%:GHz%>)<br />' +
'<strong><%:Tx-Power%>:</strong> %d <%:dBm%><br />' +
'<strong><%:Signal%>:</strong> %d <%:dBm%> | ' +
'<strong><%:Noise%>:</strong> %d <%:dBm%><br />' +
@ -50,8 +51,8 @@
iw.txpower, iw.signal, iw.noise,
iw.bitrate ? iw.bitrate : 0, iw.country
);
else if (d)
d.innerHTML = String.format(
else
info.innerHTML = String.format(
'<strong><%:SSID%>:</strong> %h | ' +
'<strong><%:Mode%>:</strong> %s<br />' +
'<em><%:Wireless is disabled or not associated%></em>',
@ -62,17 +63,13 @@
);
//]]></script>
<div class="table">
<div class="tr cbi-section-table">
<div class="td"></div>
<div class="td cbi-value-field" style="width:16px; padding:3px" id="<%=self.option%>-iw-signal">
<img src="<%=resource%>/icons/signal-none.png" title="<%:Not associated%>" /><br />
<small>0%</small>
</div>
<div class="td cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px" id="<%=self.option%>-iw-description">
<em><%:Collecting data...%></em>
</div>
</div>
</div>
<span class="ifacebadge large" id="<%=self.option%>-iw-status">
<small>
<img src="<%=resource%>/icons/signal-none.png" title="<%:Not associated%>" />&#160;
</small>
<span>
<em><%:Collecting data...%></em>
</span>
</span>
<%+cbi/valuefooter%>

View file

@ -202,22 +202,23 @@
data_rx_peak = Math.max(data_rx_peak, data_rx[i]);
data_tx_peak = Math.max(data_tx_peak, data_tx[i]);
if (i > 0)
{
data_rx_avg = (data_rx_avg + data_rx[i]) / 2;
data_tx_avg = (data_tx_avg + data_tx[i]) / 2;
}
else
{
data_rx_avg = data_rx[i];
data_tx_avg = data_tx[i];
}
data_rx_avg += data_rx[i];
data_tx_avg += data_tx[i];
}
data_rx_avg = (data_rx_avg / Math.max(data_rx.length, 1));
data_tx_avg = (data_tx_avg / Math.max(data_tx.length, 1));
var size = Math.floor(Math.log2(data_max)),
div = Math.pow(2, size - (size % 10)),
mult = data_max / div,
mult = (mult < 5) ? 2 : ((mult < 50) ? 10 : ((mult < 500) ? 100 : 1000));
data_max = data_max + (mult * div) - (data_max % (mult * div));
/* remember current timestamp, calculate horizontal scale */
data_stamp = data[data.length-1][TIME];
data_scale = height / (data_max * 1.1);
data_scale = height / data_max;
/* plot data */
var pt_rx = '0,' + height;
@ -244,9 +245,9 @@
line_rx.setAttribute('points', pt_rx);
line_tx.setAttribute('points', pt_tx);
label_25.firstChild.data = bandwidth_label(1.1 * 0.25 * data_max);
label_50.firstChild.data = bandwidth_label(1.1 * 0.50 * data_max);
label_75.firstChild.data = bandwidth_label(1.1 * 0.75 * data_max);
label_25.firstChild.data = bandwidth_label(0.25 * data_max);
label_50.firstChild.data = bandwidth_label(0.50 * data_max);
label_75.firstChild.data = bandwidth_label(0.75 * data_max);
label_rx_cur.innerHTML = bandwidth_label(data_rx[data_rx.length-1], true);
label_tx_cur.innerHTML = bandwidth_label(data_tx[data_tx.length-1], true);
@ -258,6 +259,8 @@
label_tx_peak.innerHTML = bandwidth_label(data_tx_peak, true);
}
);
XHR.run();
}
}, 1000
);

View file

@ -304,6 +304,8 @@
label_otr_peak.innerHTML = Math.floor(data_otr_peak);
}
);
XHR.run();
}
}, 1000
);

View file

@ -54,8 +54,6 @@
swap = swapinfo,
connmax = conn_max,
conncount = conn_count,
leases = stat.dhcp_leases(),
leases6 = stat.dhcp6_leases(),
wifinets = stat.wifi_networks()
}
@ -111,11 +109,6 @@
luci.http.prepare_content("application/json")
luci.http.write_json(rv)
return
elseif luci.http.formvalue("hosts") == "1" then
luci.http.prepare_content("application/json")
luci.http.write_json(luci.sys.net.host_hints())
return
end
-%>
@ -131,7 +124,7 @@
var pc = Math.floor((100 / mn) * vn);
return String.format(
'<div style="width:200px; position:relative; border:1px solid #999999">' +
'<div style="width:100%%; max-width:200px; position:relative; border:1px solid #999999">' +
'<div style="background-color:#CCCCCC; width:%d%%; height:15px">' +
'<div style="position:absolute; left:0; top:0; text-align:center; width:100%%; color:#000000">' +
'<small>%s / %s (%d%%)</small>' +
@ -141,45 +134,6 @@
);
}
function wifirate(bss, rx) {
var p = rx ? 'rx_' : 'tx_',
s = '%.1f <%:Mbit/s%>, %d<%:MHz%>'
.format(bss[p+'rate'] / 1000, bss[p+'mhz']),
ht = bss[p+'ht'], vht = bss[p+'vht'],
mhz = bss[p+'mhz'], nss = bss[p+'nss'],
mcs = bss[p+'mcs'], sgi = bss[p+'short_gi'];
if (ht || vht) {
if (vht) s += ', VHT-MCS %d'.format(mcs);
if (nss) s += ', VHT-NSS %d'.format(nss);
if (ht) s += ', MCS %s'.format(mcs);
if (sgi) s += ', <%:Short GI%>';
}
return s;
}
function duid2mac(duid) {
// DUID-LLT / Ethernet
if (duid.length === 28 && duid.substr(0, 8) === '00010001')
return duid.substr(16).replace(/(..)(?=..)/g, '$1:').toUpperCase();
// DUID-LL / Ethernet
if (duid.length === 20 && duid.substr(0, 8) === '00030001')
return duid.substr(8).replace(/(..)(?=..)/g, '$1:').toUpperCase();
return null;
}
var npoll = 1;
var hosts = <%=luci.http.write_json(luci.sys.net.host_hints())%>;
function updateHosts() {
XHR.get('<%=REQUEST_URI%>', { hosts: 1 }, function(x, data) {
hosts = data;
});
}
function labelList(items, offset) {
var rv = [ ];
@ -206,7 +160,7 @@
return E('div', { class: 'ifacebox' }, [
E('div', { class: 'ifacebox-head center ' + (active ? 'active' : '') },
E('strong', title)),
E('div', { class: 'ifacebox-body' }, childs)
E('div', { class: 'ifacebox-body left' }, childs)
]);
}
@ -220,9 +174,6 @@
XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 },
function(x, info)
{
if (!(npoll++ % 5))
updateHosts();
<% if has_mptcp == 0 then %>
var us = document.getElementById('upstream_status_table');
@ -333,86 +284,7 @@
);
<% end %>
<% if has_dhcp then %>
var ls = document.getElementById('lease_status_table');
if (ls)
{
/* clear all rows */
while (ls.firstElementChild !== ls.lastElementChild)
ls.removeChild(ls.lastElementChild);
for (var i = 0; i < info.leases.length; i++)
{
var timestr;
if (info.leases[i].expires === false)
timestr = '<em><%:unlimited%></em>';
else if (info.leases[i].expires <= 0)
timestr = '<em><%:expired%></em>';
else
timestr = String.format('%t', info.leases[i].expires);
ls.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [
E('<div class="td">', info.leases[i].hostname ? info.leases[i].hostname : '?'),
E('<div class="td">', info.leases[i].ipaddr),
E('<div class="td">', info.leases[i].macaddr),
E('<div class="td">', timestr)
]));
}
if (ls.firstElementChild === ls.lastElementChild)
ls.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>'));
}
var ls6 = document.getElementById('lease6_status_table');
if (ls6 && info.leases6)
{
ls6.parentNode.style.display = 'block';
/* clear all rows */
while (ls6.firstElementChild !== ls6.lastElementChild)
ls6.removeChild(ls6.lastElementChild);
for (var i = 0; i < info.leases6.length; i++)
{
var timestr;
if (info.leases6[i].expires === false)
timestr = '<em><%:unlimited%></em>';
else if (info.leases6[i].expires <= 0)
timestr = '<em><%:expired%></em>';
else
timestr = String.format('%t', info.leases6[i].expires);
var host = hosts[duid2mac(info.leases6[i].duid)],
name = info.leases6[i].hostname,
hint = null;
if (!name) {
if (host)
hint = host.name || host.ipv4 || host.ipv6;
}
else {
if (host && host.name && info.leases6[i].hostname != host.name)
hint = host.name;
}
ls6.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [
E('<div class="td nowrap">', hint ? '<div>%h (%h)</div>'.format(name || '?', hint) : (name || '?')),
E('<div class="td nowrap">', info.leases6[i].ip6addr),
E('<div class="td nowrap">', info.leases6[i].duid),
E('<div class="td nowrap">', timestr)
]));
}
if (ls6.firstElementChild === ls6.lastElementChild)
ls6.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>'));
}
<% end %>
<% if has_wifi then %>
var assoclist = [ ];
var ws = document.getElementById('wifi_status_table');
if (ws)
{
@ -429,21 +301,6 @@
{
var net = dev.networks[nidx];
var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel && !net.disabled);
var num_assoc = 0;
for (var bssid in net.assoclist)
{
var bss = net.assoclist[bssid];
bss.bssid = bssid;
bss.link = net.link;
bss.name = net.name;
bss.ifname = net.ifname;
bss.radio = dev.name;
assoclist.push(bss);
num_assoc++;
}
var icon;
if (!is_assoc)
@ -466,7 +323,7 @@
'<%:Mode%>', net.mode,
'<%:BSSID%>', is_assoc ? (net.bssid || '-') : null,
'<%:Encryption%>', is_assoc ? net.encryption : null,
'<%:Associations%>', is_assoc ? (num_assoc || '-') : null,
'<%:Associations%>', is_assoc ? (net.num_assoc || '-') : null,
null, is_assoc ? null : E('em', '<%:Wireless is disabled or not associated%>')));
}
@ -481,62 +338,6 @@
if (!ws.lastElementChild)
ws.appendChild(E('<em><%:No information available%></em>'));
}
var ac = document.getElementById('wifi_assoc_table');
if (ac)
{
/* clear all rows */
while (ac.firstElementChild !== ac.lastElementChild)
ac.removeChild(ac.lastElementChild);
assoclist.sort(function(a, b) {
return (a.name == b.name)
? (a.bssid < b.bssid)
: (a.name > b.name )
;
});
for (var i = 0; i < assoclist.length; i++)
{
var icon;
var q = (-1 * (assoclist[i].noise - assoclist[i].signal)) / 5;
if (q < 1)
icon = "<%=resource%>/icons/signal-0.png";
else if (q < 2)
icon = "<%=resource%>/icons/signal-0-25.png";
else if (q < 3)
icon = "<%=resource%>/icons/signal-25-50.png";
else if (q < 4)
icon = "<%=resource%>/icons/signal-50-75.png";
else
icon = "<%=resource%>/icons/signal-75-100.png";
var host = hosts[assoclist[i].bssid],
name = host ? (host.name || host.ipv4 || host.ipv6) : null,
hint = (host && host.name && (host.ipv4 || host.ipv6)) ? (host.ipv4 || host.ipv6) : null;
ac.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format(1 + (i % 2)), [
E('<div class="td"><span class="ifacebadge" title="%q"><img src="<%=resource%>/icons/wifi.png" /> %h</span></div>'
.format(assoclist[i].radio, assoclist[i].ifname)),
E('<div class="td"><a href="%s" style="white-space:nowrap">%h</a></div>'
.format(assoclist[i].link, assoclist[i].name)),
E('<div class="td">',
assoclist[i].bssid),
E('<div class="td nowrap">',
hint ? '<div>%h (%h)</div>'.format(name || '?', hint) : (name || '?')),
E('<div class="td"><span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span></div>'
.format(assoclist[i].signal, assoclist[i].noise, assoclist[i].signal - assoclist[i].noise, icon, assoclist[i].signal, assoclist[i].noise)),
E('<div class="td nowrap">', [
E('<span style="white-space:nowrap">', wifirate(assoclist[i], true)),
E('<br />'),
E('<span style="white-space:nowrap">', wifirate(assoclist[i], false))
])
]));
}
if (ac.firstElementChild === ac.lastElementChild)
ac.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:No information available%></em></div></div>'));
}
<% end %>
var e;
@ -594,8 +395,8 @@
<h2 name="content"><%:Status%></h2>
<fieldset class="cbi-section">
<legend><%:System%></legend>
<div class="cbi-section">
<h3><%:System%></h3>
<div class="table" width="100%">
<div class="tr"><div class="td left" width="33%"><%:Hostname%></div><div class="td left"><%=luci.sys.hostname() or "?"%></div></div>
@ -610,79 +411,51 @@
<div class="tr"><div class="td left" width="33%"><%:Uptime%></div><div class="td left" id="uptime">-</div></div>
<div class="tr"><div class="td left" width="33%"><%:Load Average%></div><div class="td left" id="loadavg">-</div></div>
</div>
</fieldset>
</div>
<fieldset class="cbi-section">
<legend><%:Memory%></legend>
<div class="cbi-section">
<h3><%:Memory%></h3>
<div class="table" width="100%">
<div class="tr"><div class="td left" width="33%"><%:Total Available%></div><div class="td left" id="memtotal">-</div></div>
<div class="tr"><div class="td left" width="33%"><%:Free%></div><div class="td left" id="memfree">-</div></div>
<div class="tr"><div class="td left" width="33%"><%:Buffered%></div><div class="td left" id="membuff">-</div></div>
</div>
</fieldset>
</div>
<% if swapinfo.total > 0 then %>
<fieldset class="cbi-section">
<legend><%:Swap%></legend>
<div class="cbi-section">
<h3><%:Swap%></h3>
<div class="table" width="100%">
<div class="tr"><div class="td left" width="33%"><%:Total Available%></div><div class="td left" id="swaptotal">-</div></div>
<div class="tr"><div class="td left" width="33%"><%:Free%></div><div class="td left" id="swapfree">-</div></div>
</div>
</fieldset>
</div>
<% end %>
<fieldset class="cbi-section">
<legend><%:Network%></legend>
<% if has_mptcp == "0" then %>
<div class="cbi-section">
<h3><%:Network%></h3>
<div id="upstream_status_table" class="network-status-table">
<em><%:Collecting data...%></em>
</div>
<% end %>
<div class="table" width="100%">
<div class="tr"><div class="td left" width="33%"><%:Active Connections%></div><div class="td left" id="conns">-</div></div>
</div>
</fieldset>
</div>
<% if has_dhcp then %>
<fieldset class="cbi-section">
<legend><%:DHCP Leases%></legend>
<div class="table cbi-section-table" id="lease_status_table">
<div class="tr cbi-section-table-titles">
<div class="th"><%:Hostname%></div>
<div class="th"><%:IPv4-Address%></div>
<div class="th"><%:MAC-Address%></div>
<div class="th"><%:Leasetime remaining%></div>
</div>
<div class="tr cbi-section-table-row">
<div class="td" colspan="4"><em><br /><%:Collecting data...%></em></div>
</div>
</div>
</fieldset>
<fieldset class="cbi-section" style="display:none">
<legend><%:DHCPv6 Leases%></legend>
<div class="table cbi-section-table" id="lease6_status_table">
<div class="tr cbi-section-table-titles">
<div class="th"><%:Host%></div>
<div class="th"><%:IPv6-Address%></div>
<div class="th"><%:DUID%></div>
<div class="th"><%:Leasetime remaining%></div>
</div>
<div class="tr cbi-section-table-row">
<div class="td" colspan="4"><em><br /><%:Collecting data...%></em></div>
</div>
</div>
</fieldset>
<% end %>
<%
if has_dhcp then
include("admin_network/lease_status")
end
%>
<% if has_dsl then %>
<fieldset class="cbi-section">
<legend><%:DSL%></legend>
<div class="cbi-section">
<h3><%:DSL%></h3>
<div class="table" width="100%">
<div class="tr">
<div class="td left" width="33%" style="vertical-align:top"><%:DSL Status%></div>
@ -696,35 +469,23 @@
</div>
</div>
</div>
</fieldset>
</div>
<% end %>
<% if has_wifi then %>
<fieldset class="cbi-section">
<legend><%:Wireless%></legend>
<div class="cbi-section">
<h3><%:Wireless%></h3>
<div id="wifi_status_table" class="network-status-table">
<em><%:Collecting data...%></em>
</div>
</fieldset>
</div>
<fieldset class="cbi-section">
<legend><%:Associated Stations%></legend>
<div class="cbi-section">
<h3><%:Associated Stations%></h3>
<div class="table cbi-section-table valign-middle" id="wifi_assoc_table">
<div class="tr cbi-section-table-titles">
<div class="th">&#160;</div>
<div class="th"><%:Network%></div>
<div class="th"><%:MAC-Address%></div>
<div class="th"><%:Host%></div>
<div class="th"><%:Signal%> / <%:Noise%></div>
<div class="th"><%:RX Rate%> / <%:TX Rate%></div>
</div>
<div class="tr cbi-section-table-row">
<div class="td" colspan="6"><em><br /><%:Collecting data...%></em></div>
</div>
</div>
</fieldset>
<%+admin_network/wifi_assoclist%>
</div>
<% end %>
<%-

View file

@ -62,6 +62,7 @@
<%+header%>
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<style type="text/css">
span:target {
color: blue;
@ -70,7 +71,6 @@
</style>
<h2 name="content"><%:Firewall Status%></h2>
<br />
<% if has_ip6tables then %>
<ul class="cbi-tabmenu">
@ -88,69 +88,69 @@
<input type="submit" class="cbi-button" name="restart" value="<%:Restart Firewall%>" />
</form>
<fieldset class="cbi-section">
<div class="cbi-section">
<% for _, tbl in ipairs(tables) do chaincnt = 0 %>
<h3><%:Table%>: <%=tbl%></h3>
<div class="table cbi-section-table" style="font-size:90%">
<% for _, chain in ipairs(ipt:chains(tbl)) do
rowcnt = 0
chaincnt = chaincnt + 1
chaininfo = ipt:chain(tbl, chain)
%>
<div class="tr cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>">
<div class="th cbi-section-table-cell" style="text-align:left" colspan="11">
<br /><span id="rule_<%=tbl:lower()%>_<%=chain%>">
<%:Chain%> <em><%=chain%></em>
(<%- if chaininfo.policy then -%>
<%:Policy%>: <em><%=chaininfo.policy%></em>, <%:Packets%>: <%=chaininfo.packets%>, <%:Traffic%>: <%=wba.byte_format(chaininfo.bytes)-%>
<%- else -%>
<%:References%>: <%=chaininfo.references-%>
<%- end -%>)</span>
</div>
</div>
<div class="tr cbi-section-table-descr">
<div class="th cbi-section-table-cell"><%:Pkts.%></div>
<div class="th cbi-section-table-cell"><%:Traffic%></div>
<div class="th cbi-section-table-cell"><%:Target%></div>
<div class="th cbi-section-table-cell"><%:Prot.%></div>
<div class="th cbi-section-table-cell"><%:In%></div>
<div class="th cbi-section-table-cell"><%:Out%></div>
<div class="th cbi-section-table-cell"><%:Source%></div>
<div class="th cbi-section-table-cell"><%:Destination%></div>
<div class="th cbi-section-table-cell" style="width:30%"><%:Options%></div>
</div>
<% for _, rule in ipairs(ipt:find({table=tbl, chain=chain})) do %>
<div class="tr cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>">
<div class="td"><%=rule.packets%></div>
<div class="td" style="white-space: nowrap"><%=wba.byte_format(rule.bytes)%></div>
<div class="td"><%=rule.target and link_target(tbl, rule.target) or "-"%></div>
<div class="td"><%=rule.protocol%></div>
<div class="td"><%=link_iface(rule.inputif)%></div>
<div class="td"><%=link_iface(rule.outputif)%></div>
<div class="td"><%=rule.source%></div>
<div class="td"><%=rule.destination%></div>
<div class="td" style="width:30%"><small><%=#rule.options > 0 and luci.util.pcdata(table.concat(rule.options, " ")) or "-"%></small></div>
</div>
<% end %>
<% for _, chain in ipairs(ipt:chains(tbl)) do
rowcnt = 0
chaincnt = chaincnt + 1
chaininfo = ipt:chain(tbl, chain)
%>
<h4 id="rule_<%=tbl:lower()%>_<%=chain%>">
<%:Chain%> <em><%=chain%></em>
(<%- if chaininfo.policy then -%>
<%:Policy%>: <em><%=chaininfo.policy%></em>, <%:Packets%>: <%=chaininfo.packets%>, <%:Traffic%>: <%=wba.byte_format(chaininfo.bytes)-%>
<%- else -%>
<%:References%>: <%=chaininfo.references-%>
<%- end -%>)
</h4>
<% if rowcnt == 1 then %>
<div class="tr cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>">
<div class="td" colspan="9"><em><%:No rules in this chain%></em></div>
<div class="cbi-section-node">
<div class="table" style="font-size:90%">
<div class="tr table-titles cbi-rowstyle-<%=rowstyle()%>">
<div class="th hide-xs"><%:Pkts.%></div>
<div class="th nowrap"><%:Traffic%></div>
<div class="th col-5"><%:Target%></div>
<div class="th"><%:Prot.%></div>
<div class="th"><%:In%></div>
<div class="th"><%:Out%></div>
<div class="th"><%:Source%></div>
<div class="th"><%:Destination%></div>
<div class="th col-9 hide-xs"><%:Options%></div>
</div>
<% end %>
<% end %>
<% if chaincnt == 0 then %>
<div class="tr cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>">
<div class="td" colspan="9"><em><%:No chains in this table%></em></div>
<% for _, rule in ipairs(ipt:find({table=tbl, chain=chain})) do %>
<div class="tr cbi-rowstyle-<%=rowstyle()%>">
<div class="td"><%=rule.packets%></div>
<div class="td nowrap"><%=wba.byte_format(rule.bytes)%></div>
<div class="td col-5"><%=rule.target and link_target(tbl, rule.target) or "-"%></div>
<div class="td"><%=rule.protocol%></div>
<div class="td"><%=link_iface(rule.inputif)%></div>
<div class="td"><%=link_iface(rule.outputif)%></div>
<div class="td"><%=rule.source%></div>
<div class="td"><%=rule.destination%></div>
<div class="td col-9 hide-xs"><%=#rule.options > 0 and luci.util.pcdata(table.concat(rule.options, " ")) or "-"%></div>
</div>
<% end %>
<% if rowcnt == 1 then %>
<div class="tr cbi-rowstyle-<%=rowstyle()%>">
<div class="td" colspan="9"><em><%:No rules in this chain%></em></div>
</div>
<% end %>
</div>
<% end %>
</div>
</div>
<% end %>
<% if chaincnt == 0 then %>
<em><%:No chains in this table%></em>
<% end %>
<br /><br />
<% end %>
</fieldset>
</div>
</div>
<%+footer%>

View file

@ -237,6 +237,8 @@
label_15_peak.innerHTML = (data_15_peak / 100).toFixed(2);
}
);
XHR.run();
}
}, 1000
);

View file

@ -32,28 +32,30 @@
<%+header%>
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<div class="cbi-map" id="cbi-network">
<h2 name="content"><%:Routes%></h2>
<div class="cbi-map-descr"><%:The following rules are currently active on this system.%></div>
<fieldset class="cbi-section">
<div class="cbi-section">
<legend>ARP</legend>
<div class="cbi-section-node">
<div class="table cbi-section-table">
<div class="tr cbi-section-table-titles">
<div class="th cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Address%></div>
<div class="th cbi-section-table-cell"><%_<abbr title="Media Access Control">MAC</abbr>-Address%></div>
<div class="th cbi-section-table-cell"><%:Interface%></div>
<div class="table">
<div class="tr table-titles">
<div class="th"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Address%></div>
<div class="th"><%_<abbr title="Media Access Control">MAC</abbr>-Address%></div>
<div class="th"><%:Interface%></div>
</div>
<%
for _, v in ipairs(ip.neighbors({ family = 4 })) do
if v.mac then
%>
<div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
<div class="td cbi-value-field"><%=v.dest%></div>
<div class="td cbi-value-field"><%=v.mac%></div>
<div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
<div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
<div class="td"><%=v.dest%></div>
<div class="td"><%=v.mac%></div>
<div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
</div>
<%
style = not style
@ -62,61 +64,57 @@
%>
</div>
</div>
</fieldset>
<br />
</div>
<fieldset class="cbi-section">
<div class="cbi-section">
<legend><%_Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes%></legend>
<div class="cbi-section-node">
<div class="table cbi-section-table">
<div class="tr cbi-section-table-titles">
<div class="th cbi-section-table-cell"><%:Network%></div>
<div class="th cbi-section-table-cell"><%:Target%></div>
<div class="th cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway%></div>
<div class="th cbi-section-table-cell"><%:Metric%></div>
<div class="th cbi-section-table-cell"><%:Table%></div>
<div class="table">
<div class="tr table-titles">
<div class="th"><%:Network%></div>
<div class="th"><%:Target%></div>
<div class="th"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway%></div>
<div class="th"><%:Metric%></div>
<div class="th"><%:Table%></div>
</div>
<% for _, v in ipairs(ip.routes({ family = 4, type = 1 })) do %>
<div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
<div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%></div>
<div class="td cbi-value-field"><%=v.dest%></div>
<div class="td cbi-value-field"><%=v.gw%></div>
<div class="td cbi-value-field"><%=v.metric or 0%></div>
<div class="td cbi-value-field"><%=rtn[v.table] or v.table%></div>
<div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
<div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%></div>
<div class="td"><%=v.dest%></div>
<div class="td"><%=v.gw or "-"%></div>
<div class="td"><%=v.metric or 0%></div>
<div class="td"><%=rtn[v.table] or v.table%></div>
</div>
<% style = not style end %>
</div>
</div>
</fieldset>
<br />
</div>
<%
if nixio.fs.access("/proc/net/ipv6_route") then
style = true
%>
<fieldset class="cbi-section">
<div class="cbi-section">
<legend><%_Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes%></legend>
<div class="cbi-section-node">
<div class="table cbi-section-table">
<div class="tr cbi-section-table-titles">
<div class="th cbi-section-table-cell"><%:Network%></div>
<div class="th cbi-section-table-cell"><%:Target%></div>
<div class="th cbi-section-table-cell"><%:Source%></div>
<div class="th cbi-section-table-cell"><%:Metric%></div>
<div class="th cbi-section-table-cell"><%:Table%></div>
<div class="table">
<div class="tr table-titles">
<div class="th"><%:Network%></div>
<div class="th"><%:Target%></div>
<div class="th"><%:Source%></div>
<div class="th"><%:Metric%></div>
<div class="th"><%:Table%></div>
</div>
<%
for _, v in ipairs(ip.routes({ family = 6, type = 1 })) do
if v.dest and not v.dest:is6linklocal() then
%>
<div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
<div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
<div class="td cbi-value-field"><%=v.dest%></div>
<div class="td cbi-value-field"><%=v.from%></div>
<div class="td cbi-value-field"><%=v.metric or 0%></div>
<div class="td cbi-value-field"><%=rtn[v.table] or v.table%></div>
<div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
<div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
<div class="td"><%=v.dest%></div>
<div class="td"><%=v.from%></div>
<div class="td"><%=v.metric or 0%></div>
<div class="td"><%=rtn[v.table] or v.table%></div>
</div>
<%
style = not style
@ -125,27 +123,25 @@
%>
</div>
</div>
</fieldset>
<br />
</div>
<fieldset class="cbi-section">
<div class="cbi-section">
<legend><%:IPv6 Neighbours%></legend>
<div class="cbi-section-node">
<div class="table cbi-section-table">
<div class="tr cbi-section-table-titles">
<div class="th cbi-section-table-cell"><%:IPv6-Address%></div>
<div class="th cbi-section-table-cell"><%:MAC-Address%></div>
<div class="th cbi-section-table-cell"><%:Interface%></div>
<div class="table">
<div class="tr table-titles">
<div class="th"><%:IPv6-Address%></div>
<div class="th"><%:MAC-Address%></div>
<div class="th"><%:Interface%></div>
</div>
<%
for _, v in ipairs(ip.neighbors({ family = 6 })) do
if v.dest and not v.dest:is6linklocal() and v.mac then
%>
<div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
<div class="td cbi-value-field"><%=v.dest%></div>
<div class="td cbi-value-field"><%=v.mac%></div>
<div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
<div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
<div class="td"><%=v.dest%></div>
<div class="td"><%=v.mac%></div>
<div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
</div>
<%
style = not style
@ -154,8 +150,7 @@
%>
</div>
</div>
</fieldset>
<br />
</div>
<% end %>
</div>

View file

@ -276,7 +276,7 @@
function wireless_label(dbm, noise)
{
if (noise)
return String.format("%d <%:dBm%> (SNR %d <%:dBm%>)", noise_floor + dbm - 255, dbm - noise);
return String.format("%d <%:dBm%> (SNR %d <%:dB%>)", noise_floor + dbm - 255, dbm - noise);
else
return String.format("%d <%:dBm%>", noise_floor + dbm - 255);
}
@ -308,6 +308,8 @@
label_rate_peak.innerHTML = rate_label(data_rate_peak);
}
);
XHR.run();
}
}, 1000
);

View file

@ -13,84 +13,77 @@
<li class="cbi-tab-disabled"><a href="<%=REQUEST_URI%>/backupfiles"><%:Configuration%></a></li>
</ul>
<fieldset class="cbi-section">
<fieldset class="cbi-section">
<legend><%:Backup / Restore%></legend>
<div class="cbi-section-descr"><%:Click "Generate archive" to download a tar archive of the current configuration files. To reset the firmware to its initial state, click "Perform reset" (only possible with squashfs images).%></div>
<div class="cbi-section-node">
<form class="inline" method="post" action="<%=url('admin/system/flashops/backup')%>">
<input type="hidden" name="token" value="<%=token%>" />
<div class="cbi-value<% if not reset_avail then %> cbi-value-last<% end %>">
<label class="cbi-value-title" for="image"><%:Download backup%>:</label>
<div class="cbi-value-field">
<input class="cbi-button cbi-button-apply" type="submit" name="backup" value="<%:Generate archive%>" />
</div>
<div class="cbi-section">
<h3><%:Backup / Restore%></h3>
<div class="cbi-section-descr"><%:Click "Generate archive" to download a tar archive of the current configuration files. To reset the firmware to its initial state, click "Perform reset" (only possible with squashfs images).%></div>
<div class="cbi-section-node">
<form class="inline" method="post" action="<%=url('admin/system/flashops/backup')%>">
<input type="hidden" name="token" value="<%=token%>" />
<div class="cbi-value<% if not reset_avail then %> cbi-value-last<% end %>">
<label class="cbi-value-title" for="image"><%:Download backup%>:</label>
<div class="cbi-value-field">
<input class="cbi-button cbi-button-action important" type="submit" name="backup" value="<%:Generate archive%>" />
</div>
</form>
<% if reset_avail then %>
<form class="inline" method="post" action="<%=url('admin/system/flashops/reset')%>">
<input type="hidden" name="token" value="<%=token%>" />
<div class="cbi-value cbi-value-last">
<label class="cbi-value-title"><%:Reset to defaults%>:</label>
<div class="cbi-value-field">
<input onclick="return confirm('<%:Really reset all changes?%>')" class="cbi-button cbi-button-reset" type="submit" name="reset" value="<%:Perform reset%>" />
</div>
</div>
</form>
<% end %>
</div>
<br />
<div class="cbi-section-descr"><%:To restore configuration files, you can upload a previously generated backup archive here.%></div>
<div class="cbi-section-node">
<form class="inline" method="post" action="<%=url('admin/system/flashops/restore')%>" enctype="multipart/form-data">
<div class="cbi-value cbi-value-last">
<label class="cbi-value-title" for="archive"><%:Restore backup%>:</label>
<div class="cbi-value-field">
<input type="hidden" name="token" value="<%=token%>" />
<input type="file" name="archive" id="archive" />
<input type="submit" class="cbi-button cbi-input-apply" name="restore" value="<%:Upload archive...%>" />
</div>
</div>
</form>
</div>
</div>
</form>
<% if reset_avail then %>
<div class="alert-message warning"><%:Custom files (certificates, scripts) may remain on the system. To prevent this, perform a factory-reset first.%></div>
<form class="inline" method="post" action="<%=url('admin/system/flashops/reset')%>">
<input type="hidden" name="token" value="<%=token%>" />
<div class="cbi-value cbi-value-last">
<label class="cbi-value-title"><%:Reset to defaults%>:</label>
<div class="cbi-value-field">
<input onclick="return confirm('<%:Really reset all changes?%>')" class="cbi-button cbi-button-reset" type="submit" name="reset" value="<%:Perform reset%>" />
</div>
</div>
</form>
<% end %>
</fieldset>
</div>
<div class="cbi-section-descr"><%:To restore configuration files, you can upload a previously generated backup archive here.%></div>
<div class="cbi-section-node">
<form class="inline" method="post" action="<%=url('admin/system/flashops/restore')%>" enctype="multipart/form-data">
<div class="cbi-value cbi-value-last">
<label class="cbi-value-title" for="archive"><%:Restore backup%>:</label>
<div class="cbi-value-field">
<input type="hidden" name="token" value="<%=token%>" />
<input type="file" name="archive" id="archive" />
<input type="submit" class="cbi-button cbi-button-action important" name="restore" value="<%:Upload archive...%>" />
</div>
</div>
</form>
</div>
<% if reset_avail then %>
<div class="alert-message warning"><%:Custom files (certificates, scripts) may remain on the system. To prevent this, perform a factory-reset first.%></div>
<% end %>
</div>
<br />
<fieldset class="cbi-section">
<legend><%:Flash new firmware image%></legend>
<% if upgrade_avail then %>
<form method="post" action="<%=url('admin/system/flashops/sysupgrade')%>" enctype="multipart/form-data">
<input type="hidden" name="token" value="<%=token%>" />
<div class="cbi-section-descr"><%:Upload a sysupgrade-compatible image here to replace the running firmware. Check "Keep settings" to retain the current configuration (requires a compatible firmware image).%></div>
<div class="cbi-section-node">
<div class="cbi-value">
<label class="cbi-value-title" for="keep"><%:Keep settings%>:</label>
<div class="cbi-value-field">
<input type="checkbox" name="keep" id="keep" checked="checked" />
</div>
</div>
<div class="cbi-value cbi-value-last<% if image_invalid then %> cbi-value-error<% end %>">
<label class="cbi-value-title" for="image"><%:Image%>:</label>
<div class="cbi-value-field">
<input type="file" name="image" id="image" />
<input type="submit" class="cbi-button cbi-input-apply" value="<%:Flash image...%>" />
</div>
<div class="cbi-section">
<h3><%:Flash new firmware image%></h3>
<% if upgrade_avail then %>
<form method="post" action="<%=url('admin/system/flashops/sysupgrade')%>" enctype="multipart/form-data">
<input type="hidden" name="token" value="<%=token%>" />
<div class="cbi-section-descr"><%:Upload a sysupgrade-compatible image here to replace the running firmware. Check "Keep settings" to retain the current configuration (requires a compatible firmware image).%></div>
<div class="cbi-section-node">
<div class="cbi-value">
<label class="cbi-value-title" for="keep"><%:Keep settings%>:</label>
<div class="cbi-value-field">
<input type="checkbox" name="keep" id="keep" checked="checked" />
</div>
</div>
<% if image_invalid then %>
<div class="cbi-section-error"><%:The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform. %></div>
<% end %>
</form>
<% else %>
<div class="cbi-section-descr"><%:Sorry, there is no sysupgrade support present; a new firmware image must be flashed manually. Please refer to the wiki for device specific install instructions.%></div>
<% end %>
</fieldset>
</fieldset>
<div class="cbi-value cbi-value-last<% if image_invalid then %> cbi-value-error<% end %>">
<label class="cbi-value-title" for="image"><%:Image%>:</label>
<div class="cbi-value-field">
<input type="file" name="image" id="image" />
<input type="submit" class="cbi-button cbi-button-action important" value="<%:Flash image...%>" />
</div>
</div>
</div>
<% if image_invalid then %>
<div class="cbi-section-error"><%:The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform. %></div>
<% end %>
</form>
<% else %>
<div class="cbi-section-descr"><%:Sorry, there is no sysupgrade support present; a new firmware image must be flashed manually. Please refer to the wiki for device specific install instructions.%></div>
<% end %>
</div>
<%+footer%>

View file

@ -44,6 +44,8 @@ end
<%+header%>
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
<h2 name="content"><%:Software%></h2>
<div class="cbi-map">
@ -57,8 +59,8 @@ end
<input type="hidden" name="exec" value="1" />
<input type="hidden" name="token" value="<%=token%>" />
<fieldset class="cbi-section">
<fieldset class="cbi-section-node">
<div class="cbi-section">
<div class="cbi-section-node">
<% if (install and next(install)) or (remove and next(remove)) or update or upgrade then %>
<div class="cbi-value">
<% if #stdout > 0 then %><pre><%=pcdata(stdout)%></pre><% end %>
@ -91,18 +93,18 @@ end
<div style="background-color:#F08080; border-right:1px solid #000000; height:100%; width:<%=used_perc%>%">&#160;</div>
</div>
</div>
</fieldset>
</div>
<br />
<fieldset class="cbi-section-node">
<div class="cbi-section-node">
<input type="hidden" name="display" value="<%=pcdata(display)%>" />
<div class="cbi-value">
<label class="cbi-value-title"><%:Download and install package%>:</label>
<div class="cbi-value-field">
<input type="text" name="url" size="30" value="" />
<input class="cbi-button cbi-input-save" type="submit" name="go" value="<%:OK%>" />
<input class="cbi-button cbi-button-save" type="submit" name="go" value="<%:OK%>" />
</div>
</div>
@ -110,11 +112,11 @@ end
<label class="cbi-value-title"><%:Filter%>:</label>
<div class="cbi-value-field">
<input type="text" name="query" size="20" value="<%=pcdata(query)%>" />
<input type="submit" class="cbi-button cbi-input-find" name="search" value="<%:Find package%>" />
<input type="submit" class="cbi-button cbi-button-action" name="search" value="<%:Find package%>" />
</div>
</div>
</fieldset>
</fieldset>
</div>
</div>
</form>
@ -122,90 +124,90 @@ end
<ul class="cbi-tabmenu">
<li class="cbi-tab<% if display ~= "installed" then %>-disabled<% end %>"><a href="?display=installed&amp;query=<%=pcdata(query)%>"><%:Installed packages%><% if query then %> (<%=pcdata(query)%>)<% end %></a></li>
<li class="cbi-tab<% if display ~= "available" then %>-disabled<% end %>"><a href="?display=available&amp;query=<%=pcdata(query)%>"><%:Available packages%><% if query then %> (<%=pcdata(query)%>)<% end %></a></li>
<li class="cbi-tab<% if display ~= "installed" then %>-disabled<% end %>"><a href="?display=installed&amp;query=<%=pcdata(query)%>"><%:Installed packages%><% if query then %> (<%=pcdata(query)%>)<% end %></a></li>
</ul>
<% if display ~= "available" then %>
<fieldset class="cbi-section">
<div class="table cbi-section-table" style="width:100%">
<div class="tr cbi-section-table-titles">
<div class="th cbi-section-table-cell" style="text-align:left">&#160;</div>
<div class="th cbi-section-table-cell" style="text-align:left"><%:Package name%></div>
<div class="th cbi-section-table-cell" style="text-align:left"><%:Version%></div>
</div>
<% local empty = true; luci.model.ipkg.list_installed(querypat, function(n, v, s, d) empty = false; filter[n] = true %>
<div class="tr cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>">
<div class="td" style="text-align:left; width:10%">
<form method="post" class="inline" action="<%=REQUEST_URI%>">
<input type="hidden" name="exec" value="1" />
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="remove" value="<%=pcdata(n)%>" />
<a onclick="window.confirm('<%:Remove%> &quot;<%=luci.util.pcdata(n)%>&quot; ?') &#38;&#38; this.parentNode.submit(); return false" href="#"><%:Remove%></a>
</form>
<div class="cbi-section">
<div class="cbi-section-node">
<div class="table">
<div class="tr cbi-section-table-titles">
<div class="th left"><%:Package name%></div>
<div class="th left"><%:Version%></div>
<div class="th cbi-section-actions">&#160;</div>
</div>
<div class="td" style="text-align:left"><%=luci.util.pcdata(n)%></div>
<div class="td" style="text-align:left"><%=luci.util.pcdata(v)%></div>
<% local empty = true; luci.model.ipkg.list_installed(querypat, function(n, v, s, d) empty = false; filter[n] = true %>
<div class="tr cbi-rowstyle-<%=rowstyle()%>">
<div class="td left"><%=luci.util.pcdata(n)%></div>
<div class="td left"><%=luci.util.pcdata(v)%></div>
<div class="td cbi-section-actions">
<form method="post" class="inline" action="<%=REQUEST_URI%>">
<input type="hidden" name="exec" value="1" />
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="remove" value="<%=pcdata(n)%>" />
<input class="cbi-button cbi-button-remove" type="submit" onclick="window.confirm('<%:Remove%> &quot;<%=luci.util.pcdata(n)%>&quot; ?') &#38;&#38; this.parentNode.submit(); return false" value="<%:Remove%>" />
</form>
</div>
</div>
<% end) %>
<% if empty then %>
<div class="tr cbi-section-table-row">
<div class="td left">&#160;</div>
<div class="td left"><em><%:none%></em></div>
<div class="td left"><em><%:none%></em></div>
</div>
<% end %>
</div>
<% end) %>
<% if empty then %>
<div class="tr cbi-section-table-row">
<div class="td" style="text-align:left">&#160;</div>
<div class="td" style="text-align:left"><em><%:none%></em></div>
<div class="td" style="text-align:left"><em><%:none%></em></div>
</div>
<% end %>
</div>
</fieldset>
</div>
<% else %>
<fieldset class="cbi-section">
<div class="cbi-section">
<% if not querypat then %>
<ul class="cbi-tabmenu">
<ul class="cbi-tabmenu" style="flex-wrap:wrap">
<% local i; for i = 65, 90 do %>
<li class="cbi-tab<% if letter ~= i then %>-disabled<% end %>"><a href="?display=available&amp;letter=<%=string.char(i)%>"><%=string.char(i)%></a></li>
<% end %>
<li class="cbi-tab<% if letter ~= 35 then %>-disabled<% end %>"><a href="?display=available&amp;letter=%23">#</a></li>
</ul>
<div class="cbi-section-node">
<% end %>
<div class="table cbi-section-table" style="width:100%">
<div class="tr cbi-section-table-titles">
<div class="th cbi-section-table-cell" style="text-align:left">&#160;</div>
<div class="th cbi-section-table-cell" style="text-align:left"><%:Package name%></div>
<div class="th cbi-section-table-cell" style="text-align:left"><%:Version%></div>
<div class="th cbi-section-table-cell" style="text-align:right"><%:Size (.ipk)%></div>
<div class="th cbi-section-table-cell" style="text-align:left"><%:Description%></div>
</div>
<% local empty = true; opkg_list(querypat or letterpat, function(n, v, s, d) if filter[n] then return end; empty = false %>
<div class="tr cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>">
<div class="td" style="text-align:left; width:10%">
<form method="post" class="inline" action="<%=REQUEST_URI%>">
<input type="hidden" name="exec" value="1" />
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="install" value="<%=pcdata(n)%>" />
<a onclick="window.confirm('<%:Install%> &quot;<%=luci.util.pcdata(n)%>&quot; ?') &#38;&#38; this.parentNode.submit(); return false" href="#"><%:Install%></a>
</form>
<div class="cbi-section-node cbi-section-node-tabbed">
<div class="table">
<div class="tr cbi-section-table-titles">
<div class="th col-2 left"><%:Package name%></div>
<div class="th col-2 left"><%:Version%></div>
<div class="th col-1 center"><%:Size (.ipk)%></div>
<div class="th col-10 left"><%:Description%></div>
<div class="th cbi-section-actions">&#160;</div>
</div>
<div class="td" style="text-align:left"><%=luci.util.pcdata(n)%></div>
<div class="td" style="text-align:left"><%=luci.util.pcdata(v)%></div>
<div class="td" style="text-align:right"><%=luci.util.pcdata(s)%></div>
<div class="td" style="text-align:left"><%=luci.util.pcdata(d)%></div>
<% local empty = true; opkg_list(querypat or letterpat, function(n, v, s, d) if filter[n] then return end; empty = false %>
<div class="tr cbi-rowstyle-<%=rowstyle()%>">
<div class="td col-2 left"><%=luci.util.pcdata(n)%></div>
<div class="td col-2 left"><%=luci.util.pcdata(v)%></div>
<div class="td col-1 center"><%=luci.util.pcdata(s)%></div>
<div class="td col-10 left"><%=luci.util.pcdata(d)%></div>
<div class="td cbi-section-actions">
<form method="post" class="inline" action="<%=REQUEST_URI%>">
<input type="hidden" name="exec" value="1" />
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="install" value="<%=pcdata(n)%>" />
<input class="cbi-button cbi-button-apply" type="submit" onclick="window.confirm('<%:Install%> &quot;<%=luci.util.pcdata(n)%>&quot; ?') &#38;&#38; this.parentNode.submit(); return false" value="<%:Install%>" />
</form>
</div>
</div>
<% end) %>
<% if empty then %>
<div class="tr">
<div class="td left">&#160;</div>
<div class="td left"><em><%:none%></em></div>
<div class="td left"><em><%:none%></em></div>
<div class="td right"><em><%:none%></em></div>
<div class="td left"><em><%:none%></em></div>
</div>
<% end %>
</div>
<% end) %>
<% if empty then %>
<div class="tr cbi-section-table-row">
<div class="td" style="text-align:left">&#160;</div>
<div class="td" style="text-align:left"><em><%:none%></em></div>
<div class="td" style="text-align:left"><em><%:none%></em></div>
<div class="td" style="text-align:right"><em><%:none%></em></div>
<div class="td" style="text-align:left"><em><%:none%></em></div>
</div>
<% end %>
</div>
<% if not querypat then %>
</div>
<% end %>
</fieldset>
</div>
<% end %>
</div>

View file

@ -7,7 +7,6 @@
<%+header%>
<h2 name="content"><%:Reboot%></h2>
<br />
<p><%:Reboots the operating system of your device%></p>
@ -49,7 +48,7 @@
}
//]]></script>
<input class="cbi-button cbi-button-apply" type="button" value="<%:Perform reboot%>" onclick="reboot(this)" />
<input class="cbi-button cbi-button-action important" type="button" value="<%:Perform reboot%>" onclick="reboot(this)" />
<p class="alert-message" style="display:none">
<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />

View file

@ -4,7 +4,7 @@
-%>
<% export("uci_changelog", function(changes) -%>
<fieldset class="cbi-section">
<div class="cbi-section">
<strong><%:Legend:%></strong>
<div class="uci-change-legend">
<div class="uci-change-legend-label"><ins>&#160;</ins> <%:Section added%></div>
@ -32,9 +32,11 @@
ret[#ret+1] = "<br />%s.%s.%s+=<strong>%s</strong>"
%{ r, s, o, util.pcdata(v[i]) }
end
else
elseif v ~= "" then
ret[#ret+1] = "<br />%s.%s.%s=<strong>%s</strong>"
%{ r, s, o, util.pcdata(v) }
else
ret[#ret+1] = "<br /><del>%s.%s.<strong>%s</strong></del>" %{ r, s, o }
end
end
end
@ -57,7 +59,7 @@
ret[#ret+1] = "%s.%s.%s+=<strong>%s</strong><br />"
%{ r, s, o, util.pcdata(v[i]) }
end
else
ret[#ret+1] = "%s.%s.%s=<strong>%s</strong><br />"
%{ r, s, o, util.pcdata(v) }
@ -75,5 +77,5 @@
write(table.concat(ret))
%></div>
</fieldset>
</div>
<%- end) %>

View file

@ -27,21 +27,17 @@
<div class="cbi-page-actions">
<% if redir_url then %>
<div style="float:left">
<form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>">
<input class="cbi-button cbi-button-link" style="float:left; margin:0" type="submit" value="<%:Back%>" />
</form>
</div>
<form method="get" action="<%=luci.util.pcdata(redir_url)%>">
<input class="cbi-button cbi-button-link" type="submit" value="<%:Back%>" />
</form>
<% end %>
<div style="text-align:right">
<input class="cbi-button cbi-button-save" type="button" id="apply_button" value="<%:Save & Apply%>" onclick="uci_apply(true); this.blur()" />
<form class="inline" method="post" action="<%=url("admin/uci/revert")%>">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
<input class="cbi-button cbi-button-reset" type="submit" value="<%:Revert%>" />
</form>
</div>
<input class="cbi-button cbi-button-save" type="button" id="apply_button" value="<%:Save & Apply%>" onclick="uci_apply(true); this.blur()" />
<form method="post" action="<%=url("admin/uci/revert")%>">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
<input class="cbi-button cbi-button-reset" type="submit" value="<%:Revert%>" />
</form>
</div>
<%+footer%>

View file

@ -27,7 +27,7 @@
<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
uci_apply(true);
uci_revert();
});
</script>

View file

@ -215,7 +215,8 @@ a:hover {
* ---------------------------------------------------------------------------------------- */
p,
.cbi-map-descr,
.cbi-section-descr {
.cbi-section-descr,
.table .tr.cbi-section-table-descr .th {
font-size: 13px;
font-weight: normal;
line-height: 18px;
@ -229,7 +230,7 @@ p small {
h1,
h2,
h3,
h3, legend,
h4,
h5,
h6 {
@ -265,14 +266,14 @@ h2 small {
font-size: 14px;
}
h3,
h3, legend,
h4,
h5,
h6 {
line-height: 36px;
}
h3 {
h3, legend {
font-size: 18px;
}
@ -543,6 +544,13 @@ textarea {
height: auto;
}
.td > input[type=text],
.td > input[type=password],
.td > select,
.td > .cbi-dropdown {
width: 100%;
}
.uneditable-input {
background-color: #ffffff;
display: block;
@ -645,6 +653,26 @@ textarea[readonly] {
border-color: #ddd;
}
.cbi-optionals,
.cbi-section-create {
padding: 0 0 10px 10px;
}
.cbi-section-create {
margin: -3px;
display: inline-flex;
align-items: center;
}
.cbi-section-create > * {
margin: 3px;
flex: 1 1 auto;
}
.cbi-section-create > * > input {
width: 100%;
}
.actions,
.cbi-page-actions {
background: #f5f5f5;
@ -706,6 +734,7 @@ textarea[readonly] {
padding: 0;
font-size: 13px;
border-collapse: collapse;
position: relative;
}
.table .th, .table .td {
@ -765,6 +794,19 @@ table tbody th {
vertical-align: top;
}
.tr.placeholder {
height: calc(3em + 20px);
}
.tr.placeholder > .td {
position: absolute;
left: 0;
right: 0;
bottom: 0;
text-align: center;
line-height: 3em;
}
/* Patterns.less
* Repeatable UI elements outside the base styles provided from the scaffolding
* ---------------------------------------------------------------------------- */
@ -1277,99 +1319,67 @@ footer {
outline: 1px dotted #666;
}
.btn.primary,
.cbi-page-actions .cbi-button-apply,
.cbi-page-actions .cbi-button-save,
.cbi-page-actions .cbi-button-reset {
color: #ffffff;
padding: 5px 14px 6px;
background-color: #0064cd;
background-repeat: repeat-x;
background-image: linear-gradient(to bottom, #049cdb, #0064cd);
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
border-color: #0064cd #0064cd #003f81;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
}
.cbi-input-invalid,
.cbi-value-error input {
color: #FF0000;
border-color: #FF0000;
}
.cbi-button-up,
.cbi-input-up {
background-position: center center;
background-image: url('../resources/cbi/up.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
}
.cbi-button-down,
.cbi-input-down {
background-position: center center;
background-image: url('../resources/cbi/down.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
}
.cbi-button-find,
.cbi-input-find {
background-position: 6px center, left top;
padding-left: 28px;
background-image: url('../resources/cbi/find.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
}
.cbi-button-positive,
.cbi-button-fieldadd,
.cbi-button-add,
.cbi-input-add {
background-position: 6px center, left top;
padding-left: 28px;
background-image: url('../resources/cbi/add.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
}
.cbi-button-apply,
.cbi-input-apply {
background-position: 6px center, left top;
padding-left: 28px;
background-image: url('../resources/cbi/apply.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
}
.cbi-button-reset,
.cbi-input-reset {
background-position: 6px center, left top;
padding-left: 28px;
background-image: url('../resources/cbi/reset.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
}
.cbi-button-edit,
.cbi-input-edit {
background-position: 6px center, left top;
padding-left: 28px;
background-image: url('../resources/cbi/edit.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
}
.cbi-button-remove,
.cbi-input-remove {
background-position: 6px center, left top;
padding-left: 28px;
background-image: url('../resources/cbi/remove.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
}
.cbi-button-reload,
.cbi-input-reload {
background-position: 6px center, left top;
padding-left: 28px;
background-image: url('../resources/cbi/reload.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
}
.cbi-button-link,
.cbi-input-link {
background-position: 6px center, left top;
padding-left: 28px;
background-image: url('../resources/cbi/link.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
.cbi-button-save {
border-color: #4a4;
color: #4a4;
}
.cbi-button-neutral,
.cbi-button-download,
.cbi-input-download {
background-position: 6px center, left top;
padding-left: 28px;
background-image: url('../resources/cbi/download.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
.cbi-button-find,
.cbi-button-link,
.cbi-button-up,
.cbi-button-down {
border-color: #444;
color: #444;
}
.btn.primary,
.cbi-button-action,
.cbi-button-apply,
.cbi-button-reload,
.cbi-button-edit {
border-color: #0069d6;
color: #0069d6;
}
.cbi-button-negative,
.cbi-section-remove .cbi-button,
.cbi-button-reset,
.cbi-button-remove {
border-color: #c44;
color: #c44;
}
.btn.primary,
.cbi-button-action.important,
.cbi-page-actions .cbi-button-apply,
.cbi-section-actions .cbi-button-edit {
color: #fff;
background: #0069d6;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.cbi-button-positive.important,
.cbi-page-actions .cbi-button-save {
color: #fff;
background: #4a4;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.cbi-page-actions .cbi-button-apply + .cbi-button-save {
background: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.75);
color: #4a4;
}
.cbi-dropdown {
@ -1525,6 +1535,58 @@ footer {
opacity: .6;
}
.cbi-tooltip-container {
cursor: help;
}
.cbi-tooltip {
position: absolute;
z-index: 1000;
left: -1000px;
opacity: 0;
transition: opacity .25s ease-out;
}
.cbi-tooltip-container:hover .cbi-tooltip:not(:empty) {
left: auto;
opacity: 1;
transition: opacity .25s ease-in;
}
.zonebadge .cbi-tooltip {
padding: 1px;
background: inherit;
margin: -1.6em 0 0 -5px;
border-radius: 3px;
pointer-events: none;
box-shadow: 0 0 3px #444;
}
.zonebadge .cbi-tooltip > * {
margin: 1px;
}
.zone-forwards {
display: flex;
flex-wrap: wrap;
}
.zone-forwards > * {
flex: 1 1 40%;
padding: 1px;
}
.zone-forwards > span {
flex-basis: 10%;
text-align: center;
}
.zone-forwards .zone-src,
.zone-forwards .zone-dest {
display: flex;
flex-direction: column;
}
.btn.active, .btn:active {
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
}
@ -1555,46 +1617,6 @@ footer {
font-size: 11px;
}
/* Button icons for specific pages */
.Startup .cbi-section-table input.cbi-input-apply,
.Startup .cbi-section-table input.cbi-button-apply {
background-image: url("../resources/cbi/apply.gif");
background-position: 7px 4px;
padding: 3px 9px 3px 27px;
}
.Processes .cbi-section-table input.cbi-input-reload,
.Startup .cbi-section-table input.cbi-input-reload {
background-image: url("../resources/cbi/reload.gif");
background-position: 7px 4px;
padding: 3px 9px 3px 27px;
}
.Processes .cbi-section-table input.cbi-input-remove,
.Processes .cbi-section-table div.cbi-section-remove input,
.Startup .cbi-section-table input.cbi-input-remove,
.Startup .cbi-section-table div.cbi-section-remove input {
background-image: url("../resources/cbi/remove.gif");
background-position: 7px 4px;
padding: 3px 9px 3px 27px;
}
.Processes .cbi-section-table input.cbi-input-reset,
.Processes .cbi-section-table input.cbi-button-reset,
.Startup .cbi-section-table input.cbi-input-reset,
.Startup .cbi-section-table input.cbi-button-reset {
background-image: url("../resources/cbi/reset.gif");
background-position: 7px 4px;
padding: 3px 9px 3px 27px;
}
.Startup .cbi-section-table input.cbi-input-save,
.Startup .cbi-section-table input.cbi-button-save {
background-image: url("../resources/cbi/save.gif");
background-position: 7px 4px;
padding: 3px 9px 3px 27px;
}
button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner {
padding: 0;
border: 0;
@ -1746,6 +1768,20 @@ header .pull-right { padding-top: 8px; }
font-weight: normal;
}
.cbi-section-table-titles.named::before,
.cbi-section-table-descr.named::before,
.cbi-section-table-row[data-title]::before {
content: attr(data-title) " ";
display: table-cell;
padding: 10px 10px 9px;
line-height: 18px;
font-weight: bold;
}
.cbi-section-table-row[data-title]::before {
border-top: 1px solid #ddd;
}
.left { text-align: left !important; }
.right { text-align: right !important; }
@ -1784,9 +1820,13 @@ table table td,
vertical-align: middle;
}
.cbi-value-description { display: inline; }
.cbi-value-description img { vertical-align: middle; }
.cbi-value-description {
background-image: url(/luci-static/resources/cbi/help.gif);
background-position: .25em .2em;
background-repeat: no-repeat;
margin: .25em 0 0 0;
padding: 0 0 0 1.7em;
}
.cbi-section-error {
border: 1px solid #FF0000;
@ -1885,6 +1925,7 @@ table table td,
flex-wrap: wrap;
}
.ifacebadge.large,
.network-status-table .ifacebox-body .ifacebadge {
flex: 1;
margin: .5em .25em 0 .25em;
@ -1899,7 +1940,6 @@ table table td,
white-space: nowrap;
color: #666666;
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
cursor: pointer;
}
.zonebadge > em,