From 49207b47ca048fdb9262b89c0683829f8e75972c Mon Sep 17 00:00:00 2001 From: Marek Küthe Date: Tue, 4 Jul 2023 11:42:23 +0200 Subject: luci-app-lldpd: Create from Tano Systems MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a copy of https://github.com/tano-systems/luci-app-tn-lldpd, which is licensed under the MIT License. Signed-off-by: Marek Küthe luci-app-lldpd: Rename luci-app-tn-lldpd to luci-app-lldpd The original version of Tanosystem has a naming scheme which does not correspond to the standard naming scheme in OpenWrt LuCi. Therefore the renaming. Signed-off-by: Marek Küthe luci-app-lldpd: Fix bug not getting the current lldpd status Specifying the arguments in the wrong order can (and has in my tests) resulted in errors. So you can see in the man page that flags like -f come first and then the command. Signed-off-by: Marek Küthe luci-app-lldpd: Disable option to enable SNMP agent SNMP agent support is not enabled by default in lldpd. This can (and has in my tests) cause LLDP to stop working. See comment in source code. Signed-off-by: Marek Küthe luci-app-lldpd: Add option to disable sending sensitive information Added an option that sets the "-k" flag, which results in less sensitive information being sent. See man pages and description in source code. Signed-off-by: Marek Küthe luci-app-lldpd: Add license information to Makefile All of Tano Systems source code for the app is licensed under the MIT License. This has now been indicated accordingly in the Makefile. Signed-off-by: Marek Küthe luci-app-lldpd: Remove old footer from Tano Systems The app from Tano Systems appears to include a footer. Since most LuCi apps do not, I have removed it. Signed-off-by: Marek Küthe luci-app-lldpd: Bug fix caused that the management IP address could not be set. The TanoWrt fork calls the option to set the management IP addresses "lldp_sys_mgmt_ip". However, in OpenWrt it is called "lldp_mgmt_ip". Signed-off-by: Marek Küthe luci-app-lldpd: Improve style Remove double space Signed-off-by: Marek Küthe luci-app-lldpd: Adding the Lua dependency The rpcd script used by the Luci app is written in Lua. Therefore, runtime dependencies for Lua must exist when using the Luci app. Signed-off-by: Marek Küthe luci-app-lldpd: Remove old files Since the app is called luci-app-lldpd and not luci-app-tn-lldpd, the files for the TanoWrt app are no longer necessary. Signed-off-by: Marek Küthe luci-app-lldpd: RPCd backend change from Lua to ucode Signed-off-by: Marek Küthe luci-app-lldpd: Update filter matrix The old filter matrix was based on the man pages, but the selected value in the range 1-20 was also assigned to the configuration and thus lldpd was configured incorrectly. lldpd expects a value in the range 0-19. The webapp matrix has now been changed so that the values 0-19 also appear there. This leads to a unification of configuration and webapp. Signed-off-by: Marek Küthe luci-app-lldpd: Add location parameter Signed-off-by: Marek Küthe --- .../root/etc/uci-defaults/40_luci-lldpd | 4 ++ .../root/usr/share/luci/menu.d/luci-app-lldpd.json | 38 +++++++++++++++ .../root/usr/share/rpcd/acl.d/luci-app-lldpd.json | 56 ++++++++++++++++++++++ .../luci-app-lldpd/root/usr/share/rpcd/ucode/lldpd | 22 +++++++++ 4 files changed, 120 insertions(+) create mode 100644 applications/luci-app-lldpd/root/etc/uci-defaults/40_luci-lldpd create mode 100644 applications/luci-app-lldpd/root/usr/share/luci/menu.d/luci-app-lldpd.json create mode 100644 applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json create mode 100644 applications/luci-app-lldpd/root/usr/share/rpcd/ucode/lldpd (limited to 'applications/luci-app-lldpd/root') diff --git a/applications/luci-app-lldpd/root/etc/uci-defaults/40_luci-lldpd b/applications/luci-app-lldpd/root/etc/uci-defaults/40_luci-lldpd new file mode 100644 index 0000000000..d7bfee271d --- /dev/null +++ b/applications/luci-app-lldpd/root/etc/uci-defaults/40_luci-lldpd @@ -0,0 +1,4 @@ +#!/bin/sh + +rm -f /tmp/luci-indexcache +exit 0 diff --git a/applications/luci-app-lldpd/root/usr/share/luci/menu.d/luci-app-lldpd.json b/applications/luci-app-lldpd/root/usr/share/luci/menu.d/luci-app-lldpd.json new file mode 100644 index 0000000000..6944fafa46 --- /dev/null +++ b/applications/luci-app-lldpd/root/usr/share/luci/menu.d/luci-app-lldpd.json @@ -0,0 +1,38 @@ +{ + "admin/services/lldpd": { + "title": "LLDP", + "order": 80, + "action": { + "type": "firstchild" + }, + "depends": { + "uci": { + "lldpd": true + } + } + }, + + "admin/services/lldpd/status": { + "title": "Status", + "order": 10, + "action": { + "type": "view", + "path": "lldpd/status" + }, + "depends": { + "acl": [ "luci-app-lldpd-status" ] + } + }, + + "admin/services/lldpd/config": { + "title": "Settings", + "order": 20, + "action": { + "type": "view", + "path": "lldpd/config" + }, + "depends": { + "acl": [ "luci-app-lldpd-config" ] + } + } +} diff --git a/applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json b/applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json new file mode 100644 index 0000000000..d79d7bd3c6 --- /dev/null +++ b/applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json @@ -0,0 +1,56 @@ +{ + "luci-app-lldpd-status": { + "description": "Grant access for LLDP status information", + "read": { + "ubus": { + "lldpd": [ + "getStatus" + ] + }, + "uci": [ + "lldpd", + "luci" + ] + } + }, + + "luci-app-lldpd-config": { + "description": "Grant access for LLDP configuration", + "read": { + "uci": [ + "lldpd", + "luci", + "network", + "wireless", + "firewall" + ], + "ubus": { + "luci": [ + "getInitList" + ], + "luci-rpc": [ + "getBoardJSON", + "getHostHints", + "getNetworkDevices", + "getWirelessDevices" + ], + "network": [ + "get_proto_handlers" + ], + "network.interface": [ + "dump" + ] + } + }, + "write": { + "uci": [ + "lldpd" + ], + "ubus": { + "luci": [ + "setInitAction" + ] + } + } + } +} diff --git a/applications/luci-app-lldpd/root/usr/share/rpcd/ucode/lldpd b/applications/luci-app-lldpd/root/usr/share/rpcd/ucode/lldpd new file mode 100644 index 0000000000..a35376f871 --- /dev/null +++ b/applications/luci-app-lldpd/root/usr/share/rpcd/ucode/lldpd @@ -0,0 +1,22 @@ +'use strict'; + +import { popen } from 'fs'; + +function lldpcli_json(section) { + return json(popen(`lldpcli -f json0 show ${section}`, 'r')); +} + +return { + lldpd: { + getStatus: { + call: function() { + return { + statistics: lldpcli_json("statistics"), + neighbors: lldpcli_json("neighbors details"), + interfaces: lldpcli_json("interfaces"), + chassis: lldpcli_json("chassis") + }; + } + } + } +}; -- cgit v1.2.3 From d3953006c2fe54806db97dbbadc2163847cd1dbf Mon Sep 17 00:00:00 2001 From: Paul Donald Date: Mon, 22 Apr 2024 01:31:16 +0200 Subject: luci-app-lldpd: Fixes and additions Signed-off-by: Paul Donald --- applications/luci-app-lldpd/Makefile | 2 + .../htdocs/luci-static/resources/lldpd.js | 52 +- .../luci-static/resources/lldpd/details_hide.svg | 22 +- .../luci-static/resources/lldpd/details_show.svg | 23 +- .../htdocs/luci-static/resources/lldpd/lldpd.css | 20 +- .../luci-static/resources/view/lldpd/config.js | 269 +++++++--- .../luci-static/resources/view/lldpd/status.js | 6 +- applications/luci-app-lldpd/po/ru/lldpd.po | 555 +++++++++++---------- applications/luci-app-lldpd/po/templates/lldpd.pot | 480 +++++++++--------- .../root/etc/uci-defaults/40_luci-lldpd | 4 - .../root/usr/share/rpcd/acl.d/luci-app-lldpd.json | 23 +- .../luci-app-lldpd/root/usr/share/rpcd/ucode/lldpd | 22 - .../root/usr/share/rpcd/ucode/luci.lldpd | 22 + 13 files changed, 841 insertions(+), 659 deletions(-) delete mode 100644 applications/luci-app-lldpd/root/etc/uci-defaults/40_luci-lldpd delete mode 100644 applications/luci-app-lldpd/root/usr/share/rpcd/ucode/lldpd create mode 100644 applications/luci-app-lldpd/root/usr/share/rpcd/ucode/luci.lldpd (limited to 'applications/luci-app-lldpd/root') diff --git a/applications/luci-app-lldpd/Makefile b/applications/luci-app-lldpd/Makefile index e5ab43ec4d..7007659d11 100644 --- a/applications/luci-app-lldpd/Makefile +++ b/applications/luci-app-lldpd/Makefile @@ -1,6 +1,8 @@ # # Copyright (c) 2018, Tano Systems. All Rights Reserved. # Anton Kikin +# Copyright (c) 2023-2024. All Rights Reserved. +# Paul Donald # include $(TOPDIR)/rules.mk diff --git a/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js b/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js index bc39ed5018..7b0121e548 100644 --- a/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js +++ b/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js @@ -1,6 +1,8 @@ /* * Copyright (c) 2018-2020, Tano Systems LLC. All Rights Reserved. * Anton Kikin + * Copyright (c) 2023-2024. All Rights Reserved. + * Paul Donald */ 'use strict'; @@ -40,6 +42,11 @@ * 18 x x x * 19 x x x */ + +const etitle = _('enable filter'); +const ptitle = _('keep only one protocol'); +const ntitle = _('keep only one neighbor'); + var cbiFilterSelect = form.Value.extend({ __name__: 'CBI.LLDPD.FilterSelect', @@ -98,9 +105,9 @@ var cbiFilterSelect = form.Value.extend({ // Prepend description with table legend this.description = - '
  • ' + _('E — enable filter') + '
  • ' + - '
  • ' + _('P — keep only one protocol') + '
  • ' + - '
  • ' + _('N — keep only one neighbor') + '
  • ' + + '
    • ' + 'E — ' + etitle + '
    • ' + + '
    • ' + 'P — ' + ptitle + '
    • ' + + '
    • ' + 'N — ' + ntitle + '
    • ' + '
    ' + this.description; var rendered = this.super('renderFrame', arguments); @@ -112,7 +119,8 @@ var cbiFilterSelect = form.Value.extend({ }, renderWidget: function(section_id, option_index, cfgvalue) { - var selected = parseInt(cfgvalue) - 1; + //default value is "15" - rows are zero based + var selected = parseInt(cfgvalue) || 15; var tbody = []; @@ -138,12 +146,12 @@ var cbiFilterSelect = form.Value.extend({ }) ]), E('td', {}, i), - E('td', {}, renderFilterVal(i, 0)), - E('td', {}, renderFilterVal(i, 1)), - E('td', {}, renderFilterVal(i, 2)), - E('td', {}, renderFilterVal(i, 3)), - E('td', {}, renderFilterVal(i, 4)), - E('td', {}, renderFilterVal(i, 5)) + E('td', {'title': etitle}, renderFilterVal(i, 0)), + E('td', {'title': ptitle}, renderFilterVal(i, 1)), + E('td', {'title': ntitle}, renderFilterVal(i, 2)), + E('td', {'title': etitle}, renderFilterVal(i, 3)), + E('td', {'title': ptitle}, renderFilterVal(i, 4)), + E('td', {'title': ntitle}, renderFilterVal(i, 5)) ])); }; @@ -171,6 +179,29 @@ var cbiFilterSelect = form.Value.extend({ }, }); +var CBIMultiIOSelect = form.MultiValue.extend({ + __name__: 'CBI.MultiIOSelect', + + renderWidget: function(section_id, option_index, cfgvalue) { + var value = (cfgvalue != null) ? cfgvalue : this.default ? this.default : '', + choices = this.transformChoices() ? this.transformChoices() : ''; + + var widget = new ui.Dropdown(L.toArray(value), choices, { + id: this.cbid(section_id), + sort: this.keylist, + multiple: true, + optional: true, + display_items: 5, + dropdown_items: -1, + create: true, + disabled: (this.readonly != null) ? this.readonly : this.map.readonly, + validate: L.bind(this.validate, this, section_id), + }); + + return widget.render(); + } +}); + function init() { return new Promise(function(resolveFn, rejectFn) { var data = session.getLocalData('luci-app-lldpd'); @@ -189,5 +220,6 @@ function init() { return L.Class.extend({ cbiFilterSelect: cbiFilterSelect, + CBIMultiIOSelect: CBIMultiIOSelect, init: init, }); diff --git a/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/details_hide.svg b/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/details_hide.svg index 7607870d58..0b64b95c78 100644 --- a/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/details_hide.svg +++ b/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/details_hide.svg @@ -1,13 +1,9 @@ - - - - - -image/svg+xml - - - - - - - + + + image/svg+xml + + + Layer 1 + + + \ No newline at end of file diff --git a/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/details_show.svg b/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/details_show.svg index 867ef4b998..e51e19ddee 100644 --- a/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/details_show.svg +++ b/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/details_show.svg @@ -1,14 +1,9 @@ - - - - - -image/svg+xml - - - - - - - - + + + image/svg+xml + + + Layer 1 + + + \ No newline at end of file diff --git a/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/lldpd.css b/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/lldpd.css index 0f3c0e1b98..5932e41536 100644 --- a/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/lldpd.css +++ b/applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd/lldpd.css @@ -1,6 +1,8 @@ /* * Copyright (c) 2020, Tano Systems LLC. All Rights Reserved. * Author: Anton Kikin + * Copyright (c) 2023-2024. All Rights Reserved. + * Paul Donald */ /* @@ -9,7 +11,7 @@ table.lldpd-filter td, table.lldpd-filter th { border: 1px solid #ccc !important; - padding: 2px 10px 2px 10px; + padding: 2px 10px; text-align: center; } @@ -25,7 +27,7 @@ table.lldpd-filter tbody tr { } table.lldpd-filter tr.lldpd-filter-selected td { - background-color: #eeeeee; + background-color: #EEE; } /* @@ -33,18 +35,12 @@ table.lldpd-filter tr.lldpd-filter-selected td { */ .lldpd-params { column-count: 2; - -moz-column-count: 2; - -webkit-column-count: 2; column-gap: 24px; - -moz-column-gap: 24px; - -webkit-column-gap: 24px; } @media only screen and (max-width: 850px) { .lldpd-params { column-count: 1; - -moz-column-count: 1; - -webkit-column-count: 1; } } @@ -53,9 +49,7 @@ table.lldpd-filter tr.lldpd-filter-selected td { grid-template-columns: 1fr auto; border-bottom: 1px solid #e6e6e6; padding: 0 8px; - -webkit-column-break-inside: avoid; - -moz-column-break-inside: avoid; - column-break-inside: avoid; +/* column-break-inside: avoid;*/ } .td .lldpd-params > div:last-of-type { @@ -79,8 +73,6 @@ table.lldpd-filter tr.lldpd-filter-selected td { .td .lldpd-params { column-count: 1; - -moz-column-count: 1; - -webkit-column-count: 1; } .td .lldpd-params > div { @@ -101,8 +93,6 @@ table.lldpd-filter tr.lldpd-filter-selected td { display: inline-block; width: auto !important; width: fit-content !important; - width: -moz-fit-content !important; - width: -webkit-fit-content !important; box-shadow: 0 1px 3px 0 grey; padding: 0px 8px; border-radius: 5px; diff --git a/applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js b/applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js index a4761f969e..a8e32b4275 100644 --- a/applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js +++ b/applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js @@ -1,12 +1,15 @@ /* * Copyright (c) 2020 Tano Systems LLC. All Rights Reserved. * Author: Anton Kikin + * Copyright (c) 2023-2024. All Rights Reserved. + * Paul Donald */ 'use strict'; 'require rpc'; 'require form'; 'require lldpd'; +'require network'; 'require uci'; 'require tools.widgets as widgets'; @@ -29,6 +32,25 @@ var callInitAction = rpc.declare({ expect: { result: false } }); +var usage = _('See syntax here.').format('href=https://lldpd.github.io/usage.html target="_blank"'); + +const validateioentries = function(section_id, value) { + if (value) { + const emsg = _('Cannot have both interface %s and its exclusion %s'); + const a = value.split(' '); + const noex = a.filter(el=> !el.startsWith('!')); + const ex = a.filter(el=> el.startsWith('!') && !el.startsWith('!!')); + for (var i of noex) { + for (var e of ex) { + if ('!'+i == e){ + return emsg.format(i, e); + } + } + } + } + return true; +}; + return L.view.extend({ __init__: function() { this.super('__init__', arguments); @@ -46,7 +68,8 @@ return L.view.extend({ return Promise.all([ callInitList('lldpd'), lldpd.init(), - uci.load('lldpd') + uci.load('lldpd'), + network.getDevices() ]); }, @@ -60,6 +83,7 @@ return L.view.extend({ populateBasicOptions: function(s, tab, data) { var o; var serviceEnabled = data[0]; + var net_devices = data[3]; // Service enable/disable o = s.taboption(tab, form.Flag, 'enabled', _('Enable service')); @@ -71,17 +95,17 @@ return L.view.extend({ }; o.write = function(section_id, value) { - uci.set('mstpd', section_id, 'enabled', value); + uci.set('lldpd', section_id, 'enabled', value); if (value == '1') { // Enable and start - return callInitAction('lldpd', 'enable').then(function() { + callInitAction('lldpd', 'enable').then(function() { return callInitAction('lldpd', 'start'); }); } else { // Stop and disable - return callInitAction('lldpd', 'stop').then(function() { + callInitAction('lldpd', 'stop').then(function() { return callInitAction('lldpd', 'disable'); }); } @@ -90,71 +114,120 @@ return L.view.extend({ // System description o = s.taboption(tab, form.Value, 'lldp_description', _('System description'), - _('Override system description with the provided description.')); + _('Override %s.').format('system description')); o.placeholder = 'System description'; // System hostname o = s.taboption(tab, form.Value, 'lldp_hostname', _('System hostname'), - _('Override system hostname with the provided value.')); + _('Override %s.').format('system hostname')); o.placeholder = 'System hostname'; // Host location o = s.taboption(tab, form.Value, 'lldp_location', _('Host location'), - _('Override the location of the host announced by lldp.')); - + _('Override the announced location of the host.') + '
    ' + + usage); + // multiple syntaxes alert for location parameter o.placeholder = 'address country EU'; + o.rmempty = true; + o.validate = function(section_id, value) { + if (value) { + if (!value.match(/^coordinate |^address |^elin /)) + return _("Must start: 'coordinate ...', 'address ...' or 'elin ...'"); + } + return true; + }; + // Platform o = s.taboption(tab, form.Value, 'lldp_platform', _('System platform description'), - _('Override the platform description with the provided value. ' + - 'The default description is the kernel name (Linux).')); + _('Override %s.').format('system platform') + '
    ' + + _('The default description is the kernel name (Linux).')); o.placeholder = 'System platform description'; + o = s.taboption(tab, form.Flag, 'lldp_capability_advertisements', _('System capability advertisements')); + o.default = '1'; //lldpd internal default + + // Capabilities override + o = s.taboption(tab, form.MultiValue, 'lldp_syscapabilities', + _('System capabilities'), + _('Override %s.').format('system capabilities') + '
    ' + + _('The default is derived from kernel information.')); + o.depends({lldp_capability_advertisements: '1'}); + o.value('bridge'); + o.value('docsis'); + o.value('other'); + o.value('repeater'); + o.value('router'); + o.value('station'); + o.value('telephone'); + o.value('wlan'); + o.cfgvalue = function(section_id) { + return String(this.super('load', [section_id]) || this.default).split(','); + }; + o.write = function(section_id, value) { + return this.super('write', [ section_id, L.toArray(value).join(',') ]); + }; + + o = s.taboption(tab, form.Flag, 'lldp_mgmt_addr_advertisements', _('System management IO advertisements')); + o.default = '1'; //lldpd internal default + // Management addresses of this system - o = s.taboption(tab, form.Value, 'lldp_mgmt_ip', - _('Management addresses of this system'), - _('Specify the management addresses of this system. ' + - 'If not specified, the first IPv4 and the first ' + - 'IPv6 are used. If an exact IP address is provided, it is used ' + - 'as a management address without any check. If you want to ' + - 'blacklist IPv6 addresses, you can use !*:*. ' + - 'See more details about available patterns ' + - 'here.')); - - o.placeholder = 'Management addresses'; + // This value: lldpd.init handles as a single value, and needs a CSV for lldpd.conf: 'configure system ip management pattern' + o = s.taboption(tab, lldpd.CBIMultiIOSelect, 'lldp_mgmt_ip', + _('System management IO'), + _('Defaults to the first IPv4 and IPv6. ' + + 'If an exact IP address is provided, it is used ' + + 'as a management address without any check. To ' + + 'blacklist IPv6 addresses, use !*:*.') + '
    ' + + usage); + o.placeholder = 'Addresses and interfaces'; + o.depends({lldp_mgmt_addr_advertisements: '1'}); + o.cfgvalue = function(section_id) { + const opt = uci.get(this.config, section_id, this.option); + return opt ? opt.split(',') : ''; + }; + net_devices.forEach(nd => { + o.value(nd.getName()); + o.value('!'+nd.getName()); + nd.getIPAddrs().forEach(addr => o.value(addr.split('/')[0], E([], [addr.split('/')[0], ' (', E('strong', {}, nd.getName()), ')']))); + nd.getIP6Addrs().forEach(addr => o.value(addr.split('/')[0], E([], [addr.split('/')[0], ' (', E('strong', {}, nd.getName()), ')']))); + }); + o.value('!*:*'); + o.validate = validateioentries; + o.write = function(section_id, value, sep) { + return this.super('write', [ section_id, value.join(',') ]); + } // LLDP tx interval o = s.taboption(tab, form.Value, 'lldp_tx_interval', _('Transmit delay'), - _('The transmit delay is the delay between two ' + + _('The delay between ' + 'transmissions of LLDP PDU. The default value ' + - 'is 30 seconds.')); - - o.datatype = 'uinteger'; + 'is 30 seconds.') + '
    ' + + _('Suffix %s for millisecond values.').format('ms')); o.default = 30; o.placeholder = 30; o.rmempty = false; o.validate = function(section_id, value) { - if (value != parseInt(value)) - return _('Must be a number'); - else if (value <= 0) - return _('Transmit delay must be greater than 0'); + const pattern = /^(\d+)(?:ms)?$/; + if (!value.match(pattern) || parseInt(value) <= 0) + return _('Must be a greater than zero number optionally suffixed with "ms"'); return true; }; // LLDP tx hold o = s.taboption(tab, form.Value, 'lldp_tx_hold', _('Transmit hold value'), - _('This value is used to compute the TTL of transmitted ' + - 'packets which is the product of this value and of the ' + - 'transmit delay. The default value is 4 and therefore ' + + _('Determines the transmitted ' + + 'packet TTL (== this value * transmit delay). ' + + 'The default value is 4 ∴ ' + 'the default TTL is 120 seconds.')); o.datatype = 'uinteger'; @@ -172,9 +245,9 @@ return L.view.extend({ // Received-only mode (-r) o = s.taboption(tab, form.Flag, 'readonly_mode', - _('Enable receive-only mode'), - _('With this option, LLDPd will not send any frames. ' + - 'It will only listen to neighbors.')); + _('Receive-only mode'), + _("LLDPd won't send any frames; " + + 'only listen to neighbors.')); o.rmempty = false; o.optional = false; @@ -190,34 +263,43 @@ return L.view.extend({ /** @private */ populateIfacesOptions: function(s, tab, data) { var o; + var net_devices = data[3]; // Interfaces to listen on - o = s.taboption(tab, widgets.DeviceSelect, 'interface', - _('Network interfaces'), - _('Specify which interface to listen and send LLDPDU to. ' + - 'If no interfaces is specified, LLDPd will use all available physical interfaces.')); - - o.nobridges = true; - o.rmempty = true; - o.multiple = true; - o.nocreate = true; - o.noaliases = true; - o.networks = null; + // This value: lldpd.init handles as a list value, and produces a CSV for lldpd.conf: 'configure system interface pattern' + o = s.taboption(tab, lldpd.CBIMultiIOSelect, 'interface', + _('Network IO'), + _('Specify which interface (not) to listen upon and send LLDPDU from. ' + + 'Absent any value, LLDPd uses all available physical interfaces.')); + + o.value('*'); + net_devices.forEach(nd => { + o.value(nd.getName()); + o.value('!'+nd.getName()); + o.value('!!'+nd.getName()); + }); + o.value('!*:*'); + o.validate = validateioentries; // ChassisID interfaces - o = s.taboption(tab, widgets.DeviceSelect, 'cid_interface', - _('Network interfaces for chassis ID computing'), - _('Specify which interfaces to use for computing chassis ID. ' + - 'If no interfaces is specified, all interfaces are considered. ' + - 'LLDPd will take the first MAC address from all the considered ' + + // This value: lldpd.init handles as a list value, and produces a CSV for the -C param + o = s.taboption(tab, lldpd.CBIMultiIOSelect, 'cid_interface', + _('Network IO for chassis ID'), + _('Specify which interfaces (not) to use for computing chassis ID. ' + + 'Absent any value, all interfaces are considered. ' + + 'LLDPd takes the first MAC address from all the considered ' + 'interfaces to compute the chassis ID.')); - o.nobridges = false; - o.rmempty = true; - o.multiple = true; - o.nocreate = true; - o.noaliases = true; - o.networks = null; + o.value('*'); + o.value('!*'); + net_devices.forEach(nd => { + o.value(nd.getName()); + o.value('!'+nd.getName()); + o.value('!!'+nd.getName()); + }); + o.value('!*:*'); + o.validate = validateioentries; + }, // ----------------------------------------------------------------------------------------- @@ -242,7 +324,7 @@ return L.view.extend({ // o.placeholder = '/var/run/agentx.sock'; // o.default = ''; - // LLDP class + // LLDP-MED class o = s.taboption(tab, form.ListValue, 'lldp_class', _('LLDP-MED device class')); @@ -253,12 +335,55 @@ return L.view.extend({ o.default = '4'; + // LLDP-MED policy + o = s.taboption(tab, form.Value, 'lldp_policy', + _('LLDP-MED policy')); + o.depends({lldp_class: '2'}); + o.depends({lldp_class: '3'}); + + o.rmempty = true; + o.placeholder = 'application streaming-video'; + o.value('application voice'); + o.value('application voice unknown'); + o.value('application voice-signaling'); + o.value('application voice-signaling unknown'); + o.value('application guest-voice'); + o.value('application guest-voice unknown'); + o.value('application guest-voice-signaling'); + o.value('application guest-voice-signaling unknown'); + o.value('application softphone-voice'); + o.value('application softphone-voice unknown'); + o.value('application video-conferencing'); + o.value('application video-conferencing unknown'); + o.value('application streaming-video'); + o.value('application streaming-video unknown'); + o.value('application video-signaling'); + o.value('application video-signaling unknown'); + + o.validate = function(section_id, value) { + if (value && !value.startsWith('application ')) + return _('Must start: application ...'); + return true; + }; + + // LLDP-MED fast-start + o = s.taboption(tab, form.Flag, 'lldpmed_fast_start', + _('LLDP-MED fast-start')); + + // LLDP-MED fast-start + o = s.taboption(tab, form.Value, 'lldpmed_fast_start_tx_interval', + _('LLDP-MED fast-start tx-interval')); + o.depends({lldpmed_fast_start: '1'}); + o.datatype = 'uinteger'; + o.placeholder = '10'; + o.rmempty = true; + // LLDP-MED inventory TLV transmission (-i) o = s.taboption(tab, form.Flag, 'lldpmed_no_inventory', _('Disable LLDP-MED inventory TLV transmission'), _('LLDPd will still receive (and publish using SNMP if enabled) ' + 'those LLDP-MED TLV but will not send them. Use this option ' + - 'if you don\'t want to transmit sensible information like serial numbers.')); + 'if you do not want to transmit sensitive information like serial numbers.')); o.default = '0'; @@ -266,15 +391,15 @@ return L.view.extend({ o = s.taboption(tab, form.Flag, 'lldp_no_version', _('Disable advertising of kernel release, version and machine'), _('Kernel name (ie: Linux) will still be shared, and Inventory ' + - 'software version will be set to \'Unknown\'.')); + 'software version will be set to %s.').format('Unknown')); o.default = '0'; // Filter neighbors (-H) o = s.taboption(tab, lldpd.cbiFilterSelect, 'filter', _('Specify the behaviour when detecting multiple neighbors'), - _('The default filter is 15. For more details see \"FILTERING NEIGHBORS\" section ' + - 'here.')); + _('The default filter is 15. Refer to "FILTERING NEIGHBORS".') + '
    ' + + usage); o.default = 15; @@ -291,11 +416,11 @@ return L.view.extend({ // The destination MAC address used to send LLDPDU o = s.taboption(tab, form.ListValue, 'lldp_agenttype', - _('The destination MAC address used to send LLDPDU'), - _('The destination MAC address used to send LLDPDU allows an agent ' + + _('LLDPDU destination MAC'), + _('Allows an agent ' + 'to control the propagation of LLDPDUs. By default, the ' + - '01:80:c2:00:00:0e MAC address is used and limit the propagation ' + - 'of the LLDPDU to the nearest bridge.')); + 'MAC address %s is used and limits the propagation ' + + 'of the LLDPDU to the nearest bridge.').format('01:80:c2:00:00:0e')); o.value('nearest-bridge', '01:80:c2:00:00:0e (nearest-bridge)'); o.value('nearest-nontpmr-bridge', '01:80:c2:00:00:03 (nearest-nontpmr-bridge)'); @@ -331,10 +456,10 @@ return L.view.extend({ o.rmempty = true; o = ss.taboption('lldp', form.Flag, 'force_lldp', - _('Force to send LLDP packets'), - _('Force to send LLDP packets even when there is no LLDP peer ' + - 'detected but there is a peer speaking another protocol detected. ' + - 'By default, LLDP packets are sent when there is a peer speaking ' + + _('Force sending LLDP packets'), + _('Even when there is no LLDP peer ' + + 'detected but there is a peer speaking another protocol detected.') + '
    ' + + _('By default, LLDP packets are sent when there is a peer speaking ' + 'LLDP detected or when there is no peer at all.')); o.default = '0'; @@ -469,8 +594,8 @@ return L.view.extend({ var m, s; m = new form.Map('lldpd', _('LLDPd Settings'), - _('LLDPd is a implementation of IEEE 802.1ab ' + - '(LLDP).') + + _('LLDPd is an implementation of IEEE 802.1ab') + ' ' + + '(LLDP).' + ' ' + _('On this page you may configure LLDPd parameters.')); s = m.section(form.TypedSection, 'lldpd'); diff --git a/applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js b/applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js index 96847e11c3..b3fa30b3cb 100644 --- a/applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js +++ b/applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js @@ -1,6 +1,8 @@ /* * Copyright (c) 2020 Tano Systems. All Rights Reserved. * Author: Anton Kikin + * Copyright (c) 2023-2024. All Rights Reserved. + * Paul Donald */ 'use strict'; @@ -11,7 +13,7 @@ 'require poll'; var callLLDPStatus = rpc.declare({ - object: 'lldpd', + object: 'luci.lldpd', method: 'getStatus', expect: {} }); @@ -21,7 +23,7 @@ var dataMap = { localChassis: null, }, remote: { - neightbors: null, + neighbors: null, statistics: null, }, }; diff --git a/applications/luci-app-lldpd/po/ru/lldpd.po b/applications/luci-app-lldpd/po/ru/lldpd.po index be605661cb..32998ff31a 100644 --- a/applications/luci-app-lldpd/po/ru/lldpd.po +++ b/applications/luci-app-lldpd/po/ru/lldpd.po @@ -13,118 +13,157 @@ msgstr "" "POT-Creation-Date: 2018-05-23 18:25+0300\n" "X-Generator: Poedit 2.3\n" -#: htdocs/luci-static/resources/view/lldpd/status.js:52 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:52 msgid "Administrative Status" msgstr "Административное состояние" -#: htdocs/luci-static/resources/view/lldpd/config.js:445 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:584 msgid "Advanced Settings" msgstr "Дополнительные настройки" -#: htdocs/luci-static/resources/view/lldpd/status.js:196 -#: htdocs/luci-static/resources/view/lldpd/status.js:207 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:196 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:207 msgid "Age" msgstr "Возраст" -#: htdocs/luci-static/resources/view/lldpd/status.js:57 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:57 msgid "Ageout count" msgstr "Устарело" -#: htdocs/luci-static/resources/view/lldpd/config.js:439 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:418 +msgid "" +"Allows an agent to control the propagation of LLDPDUs. By default, the MAC " +"address %s is used and limits the propagation of the LLDPDU to the nearest " +"bridge." +msgstr "" +"Данный параметр позволяет агенту контролировать распространение LLDPDU. По " +"умолчанию используется MAC-адрес %s и ограничивает распространение LLDPDU до " +"ближайшего моста." + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:578 msgid "Basic Settings" msgstr "Основные настройки" -#: htdocs/luci-static/resources/view/lldpd/config.js:332 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:460 +msgid "" +"By default, LLDP packets are sent when there is a peer speaking LLDP " +"detected or when there is no peer at all." +msgstr "" +"По умолчанию пакеты LLDP отправляются, когда обнаружен сосед с поддержкой " +"LLDP или когда вообще нет обнаруженных соседей." + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:471 msgid "CDP" msgstr "CDP" -#: htdocs/luci-static/resources/view/lldpd/config.js:342 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:481 msgid "CDP version" msgstr "Версия протокола CDP" -#: htdocs/luci-static/resources/view/lldpd/config.js:344 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:483 msgid "CDPv1 and CDPv2" msgstr "CDPv1 и CDPv2" -#: htdocs/luci-static/resources/view/lldpd/status.js:317 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:37 +msgid "Cannot have both interface %s and its exclusion %s" +msgstr "Оба и интерфейс %s и его исключение %s нельзя" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:317 msgid "Capabilities" msgstr "Возможности" -#: htdocs/luci-static/resources/view/lldpd/status.js:44 -#: htdocs/luci-static/resources/view/lldpd/status.js:63 -#: htdocs/luci-static/resources/view/lldpd/status.js:682 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:44 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:63 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:679 msgid "Collecting data..." msgstr "Сбор данных..." -#: htdocs/luci-static/resources/view/lldpd/config.js:243 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:331 msgid "Communication Device Endpoints (Class III)" msgstr "Communication Device Endpoints (класс III)" -#: htdocs/luci-static/resources/view/lldpd/status.js:59 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:182 +msgid "" +"Defaults to the first IPv4 and IPv6. If an exact IP address is provided, it " +"is used as a management address without any check. To blacklist IPv6 " +"addresses, use !*:*." +msgstr "" +"Если не указано, используется первый IPv4 и первый IPv6 адреса. Если указан " +"конкретный IP-адрес, он будет использован как адрес управления без какой-" +"либо проверки. Если вы хотите занести в черный список IPv6-адреса, вы можете " +"использовать шаблон !*:*." + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:59 msgid "Delete count" msgstr "Удалено" -#: htdocs/luci-static/resources/view/lldpd/status.js:271 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:271 msgid "Description" msgstr "Описание" -#: htdocs/luci-static/resources/view/lldpd/config.js:250 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:226 +msgid "" +"Determines the transmitted packet TTL (== this value * transmit delay). The " +"default value is 4 ∴ the default TTL is 120 seconds." +msgstr "" +"Это значение используется для вычисления TTL переданных пакетов, которое " +"является произведением этого значения и задержки передачи. Значение по " +"умолчанию равно 4. Соответственно, значение TTL по умолчанию составляет 120 " +"секунд." + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:381 msgid "Disable LLDP-MED inventory TLV transmission" msgstr "Отключить отправку инвентарной информации LLDP-MED TLV" -#: htdocs/luci-static/resources/view/lldpd/status.js:150 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:390 +msgid "Disable advertising of kernel release, version and machine" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:150 msgid "Disabled" msgstr "Отключено" -#: htdocs/luci-static/resources/view/lldpd/status.js:688 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:685 msgid "Discovered Neighbors" msgstr "Обнаруженные соседи" -#: htdocs/luci-static/resources/view/lldpd/status.js:39 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:39 msgid "Discovered chassis" msgstr "Обнаруженное шасси" -#: htdocs/luci-static/resources/view/lldpd/status.js:40 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:40 msgid "Discovered port" msgstr "Обнаруженный порт" -#: htdocs/luci-static/resources/lldpd.js:117 -msgid "E — enable filter" -msgstr "E — включить фильтр" - -#: htdocs/luci-static/resources/view/lldpd/config.js:392 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:531 msgid "EDP" msgstr "EDP" -#: htdocs/luci-static/resources/view/lldpd/config.js:334 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:473 msgid "Enable CDP" msgstr "Включить CDP" -#: htdocs/luci-static/resources/view/lldpd/config.js:394 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:533 msgid "Enable EDP" msgstr "Включить EDP" -#: htdocs/luci-static/resources/view/lldpd/config.js:374 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:513 msgid "Enable FDP" msgstr "Включить FDP" -#: htdocs/luci-static/resources/view/lldpd/config.js:312 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:451 msgid "Enable LLDP" msgstr "Включить LLDP" -#: htdocs/luci-static/resources/view/lldpd/config.js:420 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:559 msgid "Enable SONMP" msgstr "Включить SONMP" -#: htdocs/luci-static/resources/view/lldpd/config.js:168 -msgid "Enable receive-only mode" -msgstr "Включить режим «только приём»" - -#: htdocs/luci-static/resources/view/lldpd/config.js:65 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:87 msgid "Enable service" msgstr "Включить службу" -#: htdocs/luci-static/resources/view/lldpd/config.js:335 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:474 msgid "" "Enable the support of CDP protocol to deal with Cisco routers that do not " "speak LLDP" @@ -132,7 +171,7 @@ msgstr "" "Включить поддержку протокола CDP для работы с маршрутизаторами Cisco, " "которые не имеют поддержки LLDP" -#: htdocs/luci-static/resources/view/lldpd/config.js:395 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:534 msgid "" "Enable the support of EDP protocol to deal with Extreme routers and switches " "that do not speak LLDP." @@ -140,7 +179,7 @@ msgstr "" "Включить поддержку протокола EDP для работы с маршрутизаторами и " "коммутаторам Extreme, которые не имеют поддержки LLDP." -#: htdocs/luci-static/resources/view/lldpd/config.js:375 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:514 msgid "" "Enable the support of FDP protocol to deal with Foundry routers that do not " "speak LLDP" @@ -148,7 +187,7 @@ msgstr "" "Включить поддержку протокола FDP для работы с маршрутизаторами Foundry, " "которые не имеют поддержки LLDP" -#: htdocs/luci-static/resources/view/lldpd/config.js:421 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:560 msgid "" "Enable the support of SONMP protocol to deal with Nortel routers and " "switches that do not speak LLDP." @@ -156,397 +195,396 @@ msgstr "" "Включить поддержку протокола SONMP для работы с маршрутизаторами и " "коммутаторами Nortel, которые не имеют поддержки LLDP." -#: htdocs/luci-static/resources/view/lldpd/config.js:372 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:458 +msgid "" +"Even when there is no LLDP peer detected but there is a peer speaking " +"another protocol detected." +msgstr "" +"Даже если соседей с поддержкой LLDP не обнаружено, но есть соседи, с " +"поддержкой другого протокола." + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:511 msgid "FDP" msgstr "FDP" -#: htdocs/luci-static/resources/lldpd.js:170 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:160 msgid "Filter" msgstr "Фильтр" -#: htdocs/luci-static/resources/view/lldpd/config.js:267 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:406 msgid "Force port ID subtype" msgstr "Использовать в качестве ID порта" -#: htdocs/luci-static/resources/view/lldpd/config.js:358 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:497 msgid "Force sending CDPv2 packets" msgstr "Форсировать отправку CDPv2 пакетов" -#: htdocs/luci-static/resources/view/lldpd/config.js:318 -msgid "Force to send LLDP packets" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:457 +msgid "Force sending LLDP packets" msgstr "Форсировать отправку LLDP пакетов" -#: htdocs/luci-static/resources/view/lldpd/config.js:319 -msgid "" -"Force to send LLDP packets even when there is no LLDP peer detected but " -"there is a peer speaking another protocol detected. By default, LLDP packets " -"are sent when there is a peer speaking LLDP detected or when there is no " -"peer at all." -msgstr "" -"Принудительно отправлять пакеты LLDP, даже если соседей с поддержкой LLDP не " -"обнаружено, но есть соседи, с поддержкой другого протокола. По умолчанию " -"пакеты LLDP отправляются, когда обнаружен сосед с поддержкой LLDP или когда " -"вообще нет обнаруженных соседей." - -#: htdocs/luci-static/resources/view/lldpd/config.js:241 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:329 msgid "Generic Endpoint (Class I)" msgstr "Generic Endpoint (класс I)" -#: root/usr/share/rpcd/acl.d/luci-app-lldpd.json:18 +#: applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json:18 msgid "Grant access for LLDP configuration" msgstr "Предоставить доступ к конфигурации LLDP" -#: root/usr/share/rpcd/acl.d/luci-app-lldpd.json:3 +#: applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json:3 msgid "Grant access for LLDP status information" msgstr "Предоставить доступ к информации о состоянии LLDP" -#: htdocs/luci-static/resources/view/lldpd/status.js:274 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:128 +msgid "Host location" +msgstr "Местоположение хоста" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:274 msgid "ID" msgstr "ID" -#: htdocs/luci-static/resources/view/lldpd/status.js:275 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:275 msgid "ID type" msgstr "Тип ID" -#: htdocs/luci-static/resources/view/lldpd/status.js:114 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:114 msgid "IP address" msgstr "IP-адрес" -#: htdocs/luci-static/resources/view/lldpd/config.js:229 -msgid "" -"If the path to the socket is set, then LLDPd will enable an SNMP subagent " -"using AgentX protocol. This allows you to get information about local system " -"and remote systems through SNMP." -msgstr "" -"Если указан путь к сокету, то LLDPd включит SNMP агент, используя протокол " -"AgentX. Это позволяет получать информацию о локальной системе и удаленных " -"системах через SNMP." - -#: htdocs/luci-static/resources/lldpd.js:171 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:161 msgid "Incoming" msgstr "Входящие" -#: htdocs/luci-static/resources/view/lldpd/status.js:58 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:58 msgid "Insert count" msgstr "Обнаружено" -#: htdocs/luci-static/resources/view/lldpd/config.js:271 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:410 msgid "Interface MAC address" msgstr "MAC-адрес интерфейса" -#: htdocs/luci-static/resources/view/lldpd/status.js:689 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:686 msgid "Interface Statistics" msgstr "Статистика интерфейсов" -#: htdocs/luci-static/resources/view/lldpd/config.js:272 -#: htdocs/luci-static/resources/view/lldpd/status.js:110 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:411 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:110 msgid "Interface name" msgstr "Имя интерфейса" -#: htdocs/luci-static/resources/view/lldpd/config.js:310 -#: root/usr/share/luci/menu.d/luci-app-lldpd.json:3 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:391 +msgid "" +"Kernel name (ie: Linux) will still be shared, and Inventory software version " +"will be set to %s." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:449 +#: applications/luci-app-lldpd/root/usr/share/luci/menu.d/luci-app-lldpd.json:3 msgid "LLDP" msgstr "LLDP" -#: htdocs/luci-static/resources/view/lldpd/status.js:672 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:669 msgid "LLDP Status" msgstr "Состояние LLDP" -#: htdocs/luci-static/resources/view/lldpd/config.js:239 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:327 msgid "LLDP-MED device class" msgstr "Класс устройства LLDP-MED" -#: htdocs/luci-static/resources/lldpd.js:19 -msgid "LLDPd LuCI application (version %s)" -msgstr "LuCI приложение управления LLDPd (версия %s)" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:369 +msgid "LLDP-MED fast-start" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:373 +msgid "LLDP-MED fast-start tx-interval" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:338 +msgid "LLDP-MED policy" +msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:455 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:417 +msgid "LLDPDU destination MAC" +msgstr "MAC-адрес назначения, используемый для отправки LLDPDU." + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:594 msgid "LLDPd Settings" msgstr "Настройки LLDPd" -#: htdocs/luci-static/resources/view/lldpd/config.js:456 -msgid "" -"LLDPd is a implementation of IEEE 802.1ab (LLDP)." -msgstr "" -"LLDPd это программная реализация стандарта IEEE 802.1ab (LLDP)." +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:595 +msgid "LLDPd is an implementation of IEEE 802.1ab" +msgstr "LLDPd это программная реализация стандарта IEEE 802.1ab" -#: htdocs/luci-static/resources/view/lldpd/config.js:251 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:382 msgid "" "LLDPd will still receive (and publish using SNMP if enabled) those LLDP-MED " -"TLV but will not send them. Use this option if you don't want to transmit " -"sensible information like serial numbers." +"TLV but will not send them. Use this option if you do not want to transmit " +"sensitive information like serial numbers." msgstr "" "LLDPd будет по прежнему получать (и публиковать, используя SNMP, если он " "включен) информацию LLDP-MED TLV, но не будет отправлять. Используйте эту " "опцию, если вы не хотите передавать важную информацию, такую как серийные " "номера." -#: htdocs/luci-static/resources/view/lldpd/status.js:677 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:247 +msgid "LLDPd won't send any frames; only listen to neighbors." +msgstr "" +"С этой опцией LLDPd не будет отправлять какие-либо пакеты. LLDPd будет " +"только прослушивать сеть для обнаружения соседей." + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:674 msgid "Local Chassis" msgstr "Локальное шасси" -#: htdocs/luci-static/resources/view/lldpd/status.js:112 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:112 msgid "Local ID" msgstr "Локально заданный ID" -#: htdocs/luci-static/resources/view/lldpd/status.js:37 -#: htdocs/luci-static/resources/view/lldpd/status.js:50 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:37 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:50 msgid "Local interface" msgstr "Локальный интерфейс" -#: htdocs/luci-static/resources/view/lldpd/status.js:108 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:108 msgid "MAC address" msgstr "MAC-адрес" -#: htdocs/luci-static/resources/view/lldpd/status.js:231 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:231 msgid "MFS" msgstr "MFS" -#: htdocs/luci-static/resources/view/lldpd/status.js:293 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:293 msgid "Management IP(s)" msgstr "IP-адреса" -#: htdocs/luci-static/resources/view/lldpd/config.js:114 -msgid "Management addresses of this system" -msgstr "Адреса управления данной системы" - -#: htdocs/luci-static/resources/view/lldpd/config.js:242 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:330 msgid "Media Endpoint (Class II)" msgstr "Media Endpoint (класс II)" -#: htdocs/luci-static/resources/view/lldpd/config.js:139 -#: htdocs/luci-static/resources/view/lldpd/config.js:160 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:219 +msgid "Must be a greater than zero number optionally suffixed with \"ms\"" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:238 msgid "Must be a number" msgstr "Должно быть числом" -#: htdocs/luci-static/resources/lldpd.js:119 -msgid "N — keep only one neighbor" -msgstr "N — хранить только одного соседа" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:137 +msgid "Must start: 'coordinate ...', 'address ...' or 'elin ...'" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:363 +msgid "Must start: application ..." +msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:195 -#: htdocs/luci-static/resources/view/lldpd/status.js:206 -#: htdocs/luci-static/resources/view/lldpd/status.js:268 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:195 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:206 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:268 msgid "Name" msgstr "Имя" -#: htdocs/luci-static/resources/view/lldpd/config.js:244 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:332 msgid "Network Connectivity Device (Class IV)" msgstr "Network Connectivity Device (класс IV)" -#: htdocs/luci-static/resources/view/lldpd/config.js:442 -msgid "Network Interfaces" -msgstr "Сетевые интерфейсы" - -#: htdocs/luci-static/resources/view/lldpd/config.js:189 -msgid "Network interfaces" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:269 +msgid "Network IO" msgstr "Сетевые интерфейсы" -#: htdocs/luci-static/resources/view/lldpd/config.js:202 -msgid "Network interfaces for chassis ID computing" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:285 +msgid "Network IO for chassis ID" msgstr "Сетевые интерфейсы, используемые для вычисления ID шасси (chassis ID)" -#: htdocs/luci-static/resources/view/lldpd/status.js:604 -#: htdocs/luci-static/resources/view/lldpd/status.js:661 -#: htdocs/luci-static/resources/view/lldpd/status.js:665 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:581 +msgid "Network Interfaces" +msgstr "Сетевые интерфейсы" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:601 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:658 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:662 msgid "No data to display" msgstr "Нет данных для отображения" -#: htdocs/luci-static/resources/view/lldpd/config.js:458 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:597 msgid "On this page you may configure LLDPd parameters." msgstr "На данной странице можно настроить параметры LLDPd." -#: htdocs/luci-static/resources/view/lldpd/config.js:345 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:484 msgid "Only CDPv2" msgstr "Только CDPv2" -#: htdocs/luci-static/resources/lldpd.js:172 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:162 msgid "Outgoing" msgstr "Исходящие" -#: htdocs/luci-static/resources/view/lldpd/config.js:93 -msgid "Override system description with the provided description." -msgstr "Переопределить описание системы заданным значением." - -#: htdocs/luci-static/resources/view/lldpd/config.js:100 -msgid "Override system hostname with the provided value." -msgstr "Переопределить имя системы заданным значением." +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:115 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:122 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:146 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:157 +msgid "Override %s." +msgstr "Переопределить %s." -#: htdocs/luci-static/resources/view/lldpd/config.js:107 -msgid "" -"Override the platform description with the provided value. The default " -"description is the kernel name (Linux)." -msgstr "" -"Переопределить описание платформы заданным значением. По умолчанию " -"используется имя используемого ядра (Linux)." - -#: htdocs/luci-static/resources/lldpd.js:118 -msgid "P — keep only one protocol" -msgstr "P — хранить только один протокол" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:129 +msgid "Override the announced location of the host." +msgstr "Переопределите объявленное местоположение хоста." -#: htdocs/luci-static/resources/view/lldpd/status.js:214 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:214 msgid "Port ID" msgstr "ID порта" -#: htdocs/luci-static/resources/view/lldpd/status.js:217 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:217 msgid "Port ID type" msgstr "Тип ID порта" -#: htdocs/luci-static/resources/view/lldpd/status.js:222 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:222 msgid "Port description" msgstr "Описание порта" -#: htdocs/luci-static/resources/view/lldpd/status.js:38 -#: htdocs/luci-static/resources/view/lldpd/status.js:51 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:38 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:51 msgid "Protocol" msgstr "Протокол" -#: htdocs/luci-static/resources/view/lldpd/config.js:448 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:587 msgid "Protocols Support" msgstr "Поддержка протоколов" -#: htdocs/luci-static/resources/view/lldpd/status.js:54 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:246 +msgid "Receive-only mode" +msgstr "Режим «только приём»" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:54 msgid "Rx" msgstr "Rx" -#: htdocs/luci-static/resources/view/lldpd/status.js:144 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:144 msgid "Rx and Tx" msgstr "Rx и Tx" -#: htdocs/luci-static/resources/view/lldpd/status.js:146 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:146 msgid "Rx only" msgstr "Только Rx" -#: htdocs/luci-static/resources/view/lldpd/status.js:56 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:56 msgid "Rx unrecognized" msgstr "Rx (не распознано)" -#: htdocs/luci-static/resources/view/lldpd/config.js:228 -msgid "SNMP agentX socket path" -msgstr "Путь к сокету SNMP agentX" - -#: htdocs/luci-static/resources/view/lldpd/config.js:418 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:557 msgid "SONMP (NTDP, NDP, BNMP, BDP)" msgstr "SONMP (NTDP, NDP, BNMP, BDP)" -#: htdocs/luci-static/resources/view/lldpd/config.js:351 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:33 +msgid "See syntax here." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:490 msgid "Send CDP packets even if no CDP peer detected" msgstr "Отправлять CDP пакеты даже если не обнаружено соседей с CDP протоколом" -#: htdocs/luci-static/resources/view/lldpd/config.js:402 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:541 msgid "Send EDP packets even if no EDP peer detected" msgstr "Отправлять EDP пакеты даже если не обнаружено соседей с EDP протоколом" -#: htdocs/luci-static/resources/view/lldpd/config.js:382 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:521 msgid "Send FDP packets even if no FDP peer detected" msgstr "Отправлять FDP пакеты даже если не обнаружено соседей с FDP протоколом" -#: htdocs/luci-static/resources/view/lldpd/config.js:428 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:567 msgid "Send SONMP packets even if no SONMP peer detected" msgstr "" "Отправлять SONMP пакеты даже если не обнаружено соседей с SONMP протоколом" -#: root/usr/share/luci/menu.d/luci-app-lldpd.json:28 +#: applications/luci-app-lldpd/root/usr/share/luci/menu.d/luci-app-lldpd.json:28 msgid "Settings" msgstr "Настройки" -#: htdocs/luci-static/resources/view/lldpd/config.js:259 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:398 msgid "Specify the behaviour when detecting multiple neighbors" msgstr "Поведение при обнаружении нескольких соседей" -#: htdocs/luci-static/resources/view/lldpd/config.js:115 -msgid "" -"Specify the management addresses of this system. If not specified, the first " -"IPv4 and the first IPv6 are used. If an exact IP address is provided, it is " -"used as a management address without any check. If you want to blacklist " -"IPv6 addresses, you can use !*:*. See more details about " -"available patterns here." -msgstr "" -"Адреса управления данной системой. Если не указано, используется первый IPv4 " -"и первый IPv6 адреса. Если указан конкретный IP-адрес, он будет использован " -"как адрес управления без какой-либо проверки. Если вы хотите занести в " -"черный список IPv6-адреса, вы можете использовать шаблон ! *: *. Подробнее о доступных шаблонах читайте здесь." - -#: htdocs/luci-static/resources/view/lldpd/config.js:190 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:270 msgid "" -"Specify which interface to listen and send LLDPDU to. If no interfaces is " -"specified, LLDPd will use all available physical interfaces." +"Specify which interface (not) to listen upon and send LLDPDU from. Absent " +"any value, LLDPd uses all available physical interfaces." msgstr "" "Укажите какие интерфейсы должны прослушивать и отправлять LLDPDU. Если " "интерфейсы не указаны, LLDPd будет использовать все доступные физические " "интерфейсы." -#: htdocs/luci-static/resources/view/lldpd/config.js:203 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:286 msgid "" -"Specify which interfaces to use for computing chassis ID. If no interfaces " -"is specified, all interfaces are considered. LLDPd will take the first MAC " -"address from all the considered interfaces to compute the chassis ID." +"Specify which interfaces (not) to use for computing chassis ID. Absent any " +"value, all interfaces are considered. LLDPd takes the first MAC address from " +"all the considered interfaces to compute the chassis ID." msgstr "" "Укажите какие интерфейсы необходимо использовать для вычисления " "идентификатора шасси (chassis ID). Если интерфейсы не указаны, будут " "иcпользованы все интерфейсы. LLDPd получит первый MAC-адрес из всех " "доступных интерфейсов для вычисления ID шасси." -#: root/usr/share/luci/menu.d/luci-app-lldpd.json:16 +#: applications/luci-app-lldpd/root/usr/share/luci/menu.d/luci-app-lldpd.json:16 msgid "Status" msgstr "Состояние" -#: htdocs/luci-static/resources/view/lldpd/config.js:92 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:211 +msgid "Suffix %s for millisecond values." +msgstr "Прибавляй суффикс %s для значений миллисекунд." + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:156 +msgid "System capabilities" +msgstr "Системные возможности" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:151 +msgid "System capability advertisements" +msgstr "Объявления системных возможност" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:114 msgid "System description" msgstr "Описание системы" -#: htdocs/luci-static/resources/view/lldpd/config.js:99 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:121 msgid "System hostname" msgstr "Имя системы" -#: htdocs/luci-static/resources/view/lldpd/config.js:106 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:181 +msgid "System management IO" +msgstr "Адреса управления данной системы" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:175 +msgid "System management IO advertisements" +msgstr "Объявления адресов управления данной системы" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:145 msgid "System platform description" msgstr "Описание платформы" -#: htdocs/luci-static/resources/view/lldpd/status.js:226 -#: htdocs/luci-static/resources/view/lldpd/status.js:228 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:226 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:228 msgid "TTL" msgstr "TTL" -#: htdocs/luci-static/resources/view/lldpd/config.js:260 -msgid "" -"The default filter is 15. For more details see \"FILTERING NEIGHBORS\" " -"section here." +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:147 +msgid "The default description is the kernel name (Linux)." +msgstr "По умолчанию используется имя используемого ядра (Linux)." + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:399 +msgid "The default filter is 15. Refer to "FILTERING NEIGHBORS"." msgstr "" "По умолчанию используется фильтр 15. Более подробную информацию о данной " -"опции можно посмотреть в разделе «FILTERING NEIGHBORS» здесь." - -#: htdocs/luci-static/resources/view/lldpd/config.js:278 -msgid "The destination MAC address used to send LLDPDU" -msgstr "MAC-адрес назначения, используемый для отправки LLDPDU" +"опции можно посмотреть в разделе «FILTERING NEIGHBORS»." -#: htdocs/luci-static/resources/view/lldpd/config.js:279 -msgid "" -"The destination MAC address used to send LLDPDU allows an agent to control " -"the propagation of LLDPDUs. By default, the 01:80:c2:00:00:0e " -"MAC address is used and limit the propagation of the LLDPDU to the nearest " -"bridge." -msgstr "" -"MAC-адрес назначения, используемый для отправки LLDPDU. Данный параметр " -"позволяет агенту контролировать распространение LLDPDU. По умолчанию " -"используется MAC-адрес 01:80:c2:00:00:0e и ограничивает " -"распространение LLDPDU до ближайшего моста." +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:158 +msgid "The default is derived from kernel information." +msgstr "Значение по умолчанию получено из информации о ядре." -#: htdocs/luci-static/resources/view/lldpd/config.js:128 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:208 msgid "" -"The transmit delay is the delay between two transmissions of LLDP PDU. The " -"default value is 30 seconds." +"The delay between transmissions of LLDP PDU. The default value is 30 seconds." msgstr "" "Задержка между двумя передачами LLDP PDU. Значение по умолчанию составляет " "30 секунд." -#: htdocs/luci-static/resources/view/lldpd/status.js:673 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:670 msgid "" "This page allows you to see discovered LLDP neighbors, local interfaces " "statistics and local chassis information." @@ -554,59 +592,36 @@ msgstr "" "На данной странице вы можете посмотреть таблицу обнаруженных соседей LLDP, " "статистику локальных интерфейсов и информацию о локальном шасси." -#: htdocs/luci-static/resources/view/lldpd/config.js:148 -msgid "" -"This value is used to compute the TTL of transmitted packets which is the " -"product of this value and of the transmit delay. The default value is 4 and " -"therefore the default TTL is 120 seconds." -msgstr "" -"Это значение используется для вычисления TTL переданных пакетов, которое " -"является произведением этого значения и задержки передачи. Значение по " -"умолчанию равно 4. Соответственно, значение TTL по умолчанию составляет 120 " -"секунд." - -#: htdocs/luci-static/resources/view/lldpd/config.js:127 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:207 msgid "Transmit delay" msgstr "Задержка отправки" -#: htdocs/luci-static/resources/view/lldpd/config.js:141 -msgid "Transmit delay must be greater than 0" -msgstr "Значение задержки отправки должно быть больше 0" - -#: htdocs/luci-static/resources/view/lldpd/config.js:147 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:225 msgid "Transmit hold value" msgstr "Значение «transmit hold»" -#: htdocs/luci-static/resources/view/lldpd/config.js:162 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:240 msgid "Transmit hold value must be greater than 0" msgstr "Значение «transmit hold» должно быть больше 0" -#: htdocs/luci-static/resources/view/lldpd/status.js:53 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:53 msgid "Tx" msgstr "Tx" -#: htdocs/luci-static/resources/view/lldpd/status.js:55 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:55 msgid "Tx discarded" msgstr "Tx (отброшено)" -#: htdocs/luci-static/resources/view/lldpd/status.js:148 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:148 msgid "Tx only" msgstr "Только Tx" -#: htdocs/luci-static/resources/view/lldpd/status.js:152 -#: htdocs/luci-static/resources/view/lldpd/status.js:260 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:152 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:260 msgid "Unknown" msgstr "Неизвестно" -#: htdocs/luci-static/resources/view/lldpd/config.js:169 -msgid "" -"With this option, LLDPd will not send any frames. It will only listen to " -"neighbors." -msgstr "" -"С этой опцией LLDPd не будет отправлять какие-либо пакеты. LLDPd будет " -"только прослушивать сеть для обнаружения соседей." - -#: htdocs/luci-static/resources/view/lldpd/config.js:268 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:407 msgid "" "With this option, you can force the port identifier to be the interface name " "or the MAC address." @@ -614,16 +629,24 @@ msgstr "" "Данная настройка позволяет принудительно использовать в качестве " "идентификатор порта имя интерфейса или MAC-адрес." -#: htdocs/luci-static/resources/view/lldpd/status.js:305 -#: htdocs/luci-static/resources/view/lldpd/status.js:314 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:305 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:314 msgid "disabled" msgstr "выключено" -#: htdocs/luci-static/resources/view/lldpd/status.js:305 -#: htdocs/luci-static/resources/view/lldpd/status.js:314 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:44 +msgid "enable filter" +msgstr "включить фильтр" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:305 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:314 msgid "enabled" msgstr "включено" -#: htdocs/luci-static/resources/lldpd.js:21 -msgid "© 2018–2021, Tano Systems LLC, Anton Kikin" -msgstr "© 2018–2021, ООО «Тано Системс», Антон Кикин" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:46 +msgid "keep only one neighbor" +msgstr "хранить только одного соседа" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:45 +msgid "keep only one protocol" +msgstr "хранить только один протокол" diff --git a/applications/luci-app-lldpd/po/templates/lldpd.pot b/applications/luci-app-lldpd/po/templates/lldpd.pot index de98481c61..e75159675a 100644 --- a/applications/luci-app-lldpd/po/templates/lldpd.pot +++ b/applications/luci-app-lldpd/po/templates/lldpd.pot @@ -1,561 +1,595 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: htdocs/luci-static/resources/view/lldpd/status.js:52 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:52 msgid "Administrative Status" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:445 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:584 msgid "Advanced Settings" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:196 -#: htdocs/luci-static/resources/view/lldpd/status.js:207 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:196 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:207 msgid "Age" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:57 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:57 msgid "Ageout count" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:439 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:418 +msgid "" +"Allows an agent to control the propagation of LLDPDUs. By default, the MAC " +"address %s is used and limits the propagation of the LLDPDU to the nearest " +"bridge." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:578 msgid "Basic Settings" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:332 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:460 +msgid "" +"By default, LLDP packets are sent when there is a peer speaking LLDP " +"detected or when there is no peer at all." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:471 msgid "CDP" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:342 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:481 msgid "CDP version" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:344 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:483 msgid "CDPv1 and CDPv2" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:317 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:37 +msgid "Cannot have both interface %s and its exclusion %s" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:317 msgid "Capabilities" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:44 -#: htdocs/luci-static/resources/view/lldpd/status.js:63 -#: htdocs/luci-static/resources/view/lldpd/status.js:682 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:44 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:63 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:679 msgid "Collecting data..." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:243 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:331 msgid "Communication Device Endpoints (Class III)" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:59 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:182 +msgid "" +"Defaults to the first IPv4 and IPv6. If an exact IP address is provided, it " +"is used as a management address without any check. To blacklist IPv6 " +"addresses, use !*:*." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:59 msgid "Delete count" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:271 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:271 msgid "Description" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:250 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:226 +msgid "" +"Determines the transmitted packet TTL (== this value * transmit delay). The " +"default value is 4 ∴ the default TTL is 120 seconds." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:381 msgid "Disable LLDP-MED inventory TLV transmission" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:150 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:390 +msgid "Disable advertising of kernel release, version and machine" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:150 msgid "Disabled" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:688 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:685 msgid "Discovered Neighbors" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:39 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:39 msgid "Discovered chassis" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:40 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:40 msgid "Discovered port" msgstr "" -#: htdocs/luci-static/resources/lldpd.js:117 -msgid "E — enable filter" -msgstr "" - -#: htdocs/luci-static/resources/view/lldpd/config.js:392 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:531 msgid "EDP" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:334 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:473 msgid "Enable CDP" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:394 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:533 msgid "Enable EDP" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:374 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:513 msgid "Enable FDP" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:312 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:451 msgid "Enable LLDP" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:420 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:559 msgid "Enable SONMP" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:168 -msgid "Enable receive-only mode" -msgstr "" - -#: htdocs/luci-static/resources/view/lldpd/config.js:65 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:87 msgid "Enable service" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:335 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:474 msgid "" "Enable the support of CDP protocol to deal with Cisco routers that do not " "speak LLDP" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:395 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:534 msgid "" "Enable the support of EDP protocol to deal with Extreme routers and switches " "that do not speak LLDP." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:375 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:514 msgid "" "Enable the support of FDP protocol to deal with Foundry routers that do not " "speak LLDP" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:421 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:560 msgid "" "Enable the support of SONMP protocol to deal with Nortel routers and " "switches that do not speak LLDP." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:372 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:458 +msgid "" +"Even when there is no LLDP peer detected but there is a peer speaking " +"another protocol detected." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:511 msgid "FDP" msgstr "" -#: htdocs/luci-static/resources/lldpd.js:170 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:160 msgid "Filter" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:267 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:406 msgid "Force port ID subtype" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:358 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:497 msgid "Force sending CDPv2 packets" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:318 -msgid "Force to send LLDP packets" -msgstr "" - -#: htdocs/luci-static/resources/view/lldpd/config.js:319 -msgid "" -"Force to send LLDP packets even when there is no LLDP peer detected but " -"there is a peer speaking another protocol detected. By default, LLDP packets " -"are sent when there is a peer speaking LLDP detected or when there is no " -"peer at all." +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:457 +msgid "Force sending LLDP packets" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:241 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:329 msgid "Generic Endpoint (Class I)" msgstr "" -#: root/usr/share/rpcd/acl.d/luci-app-lldpd.json:18 +#: applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json:18 msgid "Grant access for LLDP configuration" msgstr "" -#: root/usr/share/rpcd/acl.d/luci-app-lldpd.json:3 +#: applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json:3 msgid "Grant access for LLDP status information" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:274 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:128 +msgid "Host location" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:274 msgid "ID" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:275 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:275 msgid "ID type" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:114 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:114 msgid "IP address" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:229 -msgid "" -"If the path to the socket is set, then LLDPd will enable an SNMP subagent " -"using AgentX protocol. This allows you to get information about local system " -"and remote systems through SNMP." -msgstr "" - -#: htdocs/luci-static/resources/lldpd.js:171 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:161 msgid "Incoming" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:58 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:58 msgid "Insert count" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:271 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:410 msgid "Interface MAC address" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:689 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:686 msgid "Interface Statistics" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:272 -#: htdocs/luci-static/resources/view/lldpd/status.js:110 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:411 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:110 msgid "Interface name" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:310 -#: root/usr/share/luci/menu.d/luci-app-lldpd.json:3 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:391 +msgid "" +"Kernel name (ie: Linux) will still be shared, and Inventory software version " +"will be set to %s." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:449 +#: applications/luci-app-lldpd/root/usr/share/luci/menu.d/luci-app-lldpd.json:3 msgid "LLDP" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:672 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:669 msgid "LLDP Status" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:239 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:327 msgid "LLDP-MED device class" msgstr "" -#: htdocs/luci-static/resources/lldpd.js:19 -msgid "LLDPd LuCI application (version %s)" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:369 +msgid "LLDP-MED fast-start" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:373 +msgid "LLDP-MED fast-start tx-interval" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:338 +msgid "LLDP-MED policy" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:417 +msgid "LLDPDU destination MAC" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:455 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:594 msgid "LLDPd Settings" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:456 -msgid "" -"LLDPd is a implementation of IEEE 802.1ab (LLDP)." +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:595 +msgid "LLDPd is an implementation of IEEE 802.1ab" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:251 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:382 msgid "" "LLDPd will still receive (and publish using SNMP if enabled) those LLDP-MED " -"TLV but will not send them. Use this option if you don't want to transmit " -"sensible information like serial numbers." +"TLV but will not send them. Use this option if you do not want to transmit " +"sensitive information like serial numbers." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:677 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:247 +msgid "LLDPd won't send any frames; only listen to neighbors." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:674 msgid "Local Chassis" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:112 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:112 msgid "Local ID" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:37 -#: htdocs/luci-static/resources/view/lldpd/status.js:50 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:37 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:50 msgid "Local interface" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:108 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:108 msgid "MAC address" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:231 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:231 msgid "MFS" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:293 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:293 msgid "Management IP(s)" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:114 -msgid "Management addresses of this system" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:330 +msgid "Media Endpoint (Class II)" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:242 -msgid "Media Endpoint (Class II)" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:219 +msgid "Must be a greater than zero number optionally suffixed with \"ms\"" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:139 -#: htdocs/luci-static/resources/view/lldpd/config.js:160 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:238 msgid "Must be a number" msgstr "" -#: htdocs/luci-static/resources/lldpd.js:119 -msgid "N — keep only one neighbor" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:137 +msgid "Must start: 'coordinate ...', 'address ...' or 'elin ...'" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:195 -#: htdocs/luci-static/resources/view/lldpd/status.js:206 -#: htdocs/luci-static/resources/view/lldpd/status.js:268 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:363 +msgid "Must start: application ..." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:195 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:206 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:268 msgid "Name" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:244 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:332 msgid "Network Connectivity Device (Class IV)" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:442 -msgid "Network Interfaces" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:269 +msgid "Network IO" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:189 -msgid "Network interfaces" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:285 +msgid "Network IO for chassis ID" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:202 -msgid "Network interfaces for chassis ID computing" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:581 +msgid "Network Interfaces" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:604 -#: htdocs/luci-static/resources/view/lldpd/status.js:661 -#: htdocs/luci-static/resources/view/lldpd/status.js:665 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:601 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:658 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:662 msgid "No data to display" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:458 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:597 msgid "On this page you may configure LLDPd parameters." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:345 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:484 msgid "Only CDPv2" msgstr "" -#: htdocs/luci-static/resources/lldpd.js:172 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:162 msgid "Outgoing" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:93 -msgid "Override system description with the provided description." +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:115 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:122 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:146 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:157 +msgid "Override %s." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:100 -msgid "Override system hostname with the provided value." +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:129 +msgid "Override the announced location of the host." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:107 -msgid "" -"Override the platform description with the provided value. The default " -"description is the kernel name (Linux)." -msgstr "" - -#: htdocs/luci-static/resources/lldpd.js:118 -msgid "P — keep only one protocol" -msgstr "" - -#: htdocs/luci-static/resources/view/lldpd/status.js:214 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:214 msgid "Port ID" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:217 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:217 msgid "Port ID type" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:222 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:222 msgid "Port description" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:38 -#: htdocs/luci-static/resources/view/lldpd/status.js:51 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:38 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:51 msgid "Protocol" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:448 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:587 msgid "Protocols Support" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:54 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:246 +msgid "Receive-only mode" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:54 msgid "Rx" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:144 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:144 msgid "Rx and Tx" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:146 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:146 msgid "Rx only" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:56 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:56 msgid "Rx unrecognized" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:228 -msgid "SNMP agentX socket path" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:557 +msgid "SONMP (NTDP, NDP, BNMP, BDP)" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:418 -msgid "SONMP (NTDP, NDP, BNMP, BDP)" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:33 +msgid "See syntax here." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:351 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:490 msgid "Send CDP packets even if no CDP peer detected" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:402 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:541 msgid "Send EDP packets even if no EDP peer detected" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:382 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:521 msgid "Send FDP packets even if no FDP peer detected" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:428 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:567 msgid "Send SONMP packets even if no SONMP peer detected" msgstr "" -#: root/usr/share/luci/menu.d/luci-app-lldpd.json:28 +#: applications/luci-app-lldpd/root/usr/share/luci/menu.d/luci-app-lldpd.json:28 msgid "Settings" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:259 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:398 msgid "Specify the behaviour when detecting multiple neighbors" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:115 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:270 msgid "" -"Specify the management addresses of this system. If not specified, the first " -"IPv4 and the first IPv6 are used. If an exact IP address is provided, it is " -"used as a management address without any check. If you want to blacklist " -"IPv6 addresses, you can use !*:*. See more details about " -"available patterns here." +"Specify which interface (not) to listen upon and send LLDPDU from. Absent " +"any value, LLDPd uses all available physical interfaces." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:190 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:286 msgid "" -"Specify which interface to listen and send LLDPDU to. If no interfaces is " -"specified, LLDPd will use all available physical interfaces." +"Specify which interfaces (not) to use for computing chassis ID. Absent any " +"value, all interfaces are considered. LLDPd takes the first MAC address from " +"all the considered interfaces to compute the chassis ID." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:203 -msgid "" -"Specify which interfaces to use for computing chassis ID. If no interfaces " -"is specified, all interfaces are considered. LLDPd will take the first MAC " -"address from all the considered interfaces to compute the chassis ID." +#: applications/luci-app-lldpd/root/usr/share/luci/menu.d/luci-app-lldpd.json:16 +msgid "Status" msgstr "" -#: root/usr/share/luci/menu.d/luci-app-lldpd.json:16 -msgid "Status" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:211 +msgid "Suffix %s for millisecond values." +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:156 +msgid "System capabilities" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:92 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:151 +msgid "System capability advertisements" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:114 msgid "System description" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:99 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:121 msgid "System hostname" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:106 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:181 +msgid "System management IO" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:175 +msgid "System management IO advertisements" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:145 msgid "System platform description" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:226 -#: htdocs/luci-static/resources/view/lldpd/status.js:228 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:226 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:228 msgid "TTL" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:260 -msgid "" -"The default filter is 15. For more details see \"FILTERING NEIGHBORS\" " -"section here." +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:147 +msgid "The default description is the kernel name (Linux)." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:278 -msgid "The destination MAC address used to send LLDPDU" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:399 +msgid "The default filter is 15. Refer to "FILTERING NEIGHBORS"." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:279 -msgid "" -"The destination MAC address used to send LLDPDU allows an agent to control " -"the propagation of LLDPDUs. By default, the 01:80:c2:00:00:0e " -"MAC address is used and limit the propagation of the LLDPDU to the nearest " -"bridge." +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:158 +msgid "The default is derived from kernel information." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:128 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:208 msgid "" -"The transmit delay is the delay between two transmissions of LLDP PDU. The " -"default value is 30 seconds." +"The delay between transmissions of LLDP PDU. The default value is 30 seconds." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:673 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:670 msgid "" "This page allows you to see discovered LLDP neighbors, local interfaces " "statistics and local chassis information." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:148 -msgid "" -"This value is used to compute the TTL of transmitted packets which is the " -"product of this value and of the transmit delay. The default value is 4 and " -"therefore the default TTL is 120 seconds." -msgstr "" - -#: htdocs/luci-static/resources/view/lldpd/config.js:127 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:207 msgid "Transmit delay" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:141 -msgid "Transmit delay must be greater than 0" -msgstr "" - -#: htdocs/luci-static/resources/view/lldpd/config.js:147 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:225 msgid "Transmit hold value" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:162 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:240 msgid "Transmit hold value must be greater than 0" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:53 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:53 msgid "Tx" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:55 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:55 msgid "Tx discarded" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:148 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:148 msgid "Tx only" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:152 -#: htdocs/luci-static/resources/view/lldpd/status.js:260 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:152 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:260 msgid "Unknown" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/config.js:169 -msgid "" -"With this option, LLDPd will not send any frames. It will only listen to " -"neighbors." -msgstr "" - -#: htdocs/luci-static/resources/view/lldpd/config.js:268 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/config.js:407 msgid "" "With this option, you can force the port identifier to be the interface name " "or the MAC address." msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:305 -#: htdocs/luci-static/resources/view/lldpd/status.js:314 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:305 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:314 msgid "disabled" msgstr "" -#: htdocs/luci-static/resources/view/lldpd/status.js:305 -#: htdocs/luci-static/resources/view/lldpd/status.js:314 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:44 +msgid "enable filter" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:305 +#: applications/luci-app-lldpd/htdocs/luci-static/resources/view/lldpd/status.js:314 msgid "enabled" msgstr "" -#: htdocs/luci-static/resources/lldpd.js:21 -msgid "© 2018–2021, Tano Systems LLC, Anton Kikin" +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:46 +msgid "keep only one neighbor" +msgstr "" + +#: applications/luci-app-lldpd/htdocs/luci-static/resources/lldpd.js:45 +msgid "keep only one protocol" msgstr "" diff --git a/applications/luci-app-lldpd/root/etc/uci-defaults/40_luci-lldpd b/applications/luci-app-lldpd/root/etc/uci-defaults/40_luci-lldpd deleted file mode 100644 index d7bfee271d..0000000000 --- a/applications/luci-app-lldpd/root/etc/uci-defaults/40_luci-lldpd +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json b/applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json index d79d7bd3c6..240cd24779 100644 --- a/applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json +++ b/applications/luci-app-lldpd/root/usr/share/rpcd/acl.d/luci-app-lldpd.json @@ -3,7 +3,7 @@ "description": "Grant access for LLDP status information", "read": { "ubus": { - "lldpd": [ + "luci.lldpd": [ "getStatus" ] }, @@ -18,27 +18,14 @@ "description": "Grant access for LLDP configuration", "read": { "uci": [ - "lldpd", - "luci", - "network", - "wireless", - "firewall" + "lldpd" ], "ubus": { + "luci.lldpd": [ + "getStatus" + ], "luci": [ "getInitList" - ], - "luci-rpc": [ - "getBoardJSON", - "getHostHints", - "getNetworkDevices", - "getWirelessDevices" - ], - "network": [ - "get_proto_handlers" - ], - "network.interface": [ - "dump" ] } }, diff --git a/applications/luci-app-lldpd/root/usr/share/rpcd/ucode/lldpd b/applications/luci-app-lldpd/root/usr/share/rpcd/ucode/lldpd deleted file mode 100644 index a35376f871..0000000000 --- a/applications/luci-app-lldpd/root/usr/share/rpcd/ucode/lldpd +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -import { popen } from 'fs'; - -function lldpcli_json(section) { - return json(popen(`lldpcli -f json0 show ${section}`, 'r')); -} - -return { - lldpd: { - getStatus: { - call: function() { - return { - statistics: lldpcli_json("statistics"), - neighbors: lldpcli_json("neighbors details"), - interfaces: lldpcli_json("interfaces"), - chassis: lldpcli_json("chassis") - }; - } - } - } -}; diff --git a/applications/luci-app-lldpd/root/usr/share/rpcd/ucode/luci.lldpd b/applications/luci-app-lldpd/root/usr/share/rpcd/ucode/luci.lldpd new file mode 100644 index 0000000000..fff7ac55f3 --- /dev/null +++ b/applications/luci-app-lldpd/root/usr/share/rpcd/ucode/luci.lldpd @@ -0,0 +1,22 @@ +'use strict'; + +import { popen } from 'fs'; + +function lldpcli_json(section) { + return json(popen(`lldpcli -f json0 show ${section}`, 'r')); +} + +return { + 'luci.lldpd': { + getStatus: { + call: function() { + return { + statistics: lldpcli_json("statistics"), + neighbors: lldpcli_json("neighbors details"), + interfaces: lldpcli_json("interfaces"), + chassis: lldpcli_json("chassis") + }; + } + } + } +}; -- cgit v1.2.3