🌈 Sync 2026-06-15 00:02:19

This commit is contained in:
github-actions[bot] committed 2026-06-15 00:02:19 +08:00
1 parent 3921a22889
commit 9475a645b7
31 files changed
+7013 -837

No files matched your search

+1 -1
View File
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-daede
PKG_VERSION:=1.12.0
PKG_RELEASE:=6
PKG_RELEASE:=7
PKG_MAINTAINER:=kenzok8
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
@@ -63,6 +63,29 @@ function fmtMtime(epoch) {
return d.toISOString().slice(0, 10);
}
// Compare two version strings like `sort -V`: split into numeric / non-numeric
// chunks and compare chunk by chunk (numeric chunks numerically). Returns
// <0 if a<b, 0 if equal, >0 if a>b. Used so a stale third-party feed that
// happens to provide an OLDER build (e.g. compile-jell) is never offered as an
// "upgrade" over a newer locally installed package.
function cmpVer(a, b) {
const ax = String(a).match(/(\d+|\D+)/g) || [];
const bx = String(b).match(/(\d+|\D+)/g) || [];
const n = Math.max(ax.length, bx.length);
for (let i = 0; i < n; i++) {
const as = ax[i], bs = bx[i];
if (as === undefined) return -1;
if (bs === undefined) return 1;
if (/^\d+$/.test(as) && /^\d+$/.test(bs)) {
const d = parseInt(as, 10) - parseInt(bs, 10);
if (d !== 0) return d < 0 ? -1 : 1;
} else if (as !== bs) {
return as < bs ? -1 : 1;
}
}
return 0;
}
function probeFile(path) {
return L.resolveDefault(fs.stat(path), null).then(function(st) {
return { exists: !!st, size: st ? st.size : 0, mtime: st ? st.mtime : 0 };
@@ -210,24 +233,27 @@ return view.extend({
]).forEach(function(entry) {
const btn = E('button', { 'class': 'dd-up-btn dd-up-btn-primary' }, _('Upgrade'));
btn.addEventListener('click', function() { upgradePkg(entry.k, btn); });
const sameVersion = entry.r.installed && entry.r.latest && entry.r.installed === entry.r.latest;
const updatable = entry.r.installed && entry.r.latest && entry.r.installed !== entry.r.latest;
// Only treat it as upgradable when the feed version is STRICTLY
// higher than what's installed. A lower/equal feed version (e.g.
// a stale compile-jell build) must never be offered as an upgrade.
const cmp = (entry.r.installed && entry.r.latest)
? cmpVer(entry.r.latest, entry.r.installed) : null;
const updatable = cmp !== null && cmp > 0;
let meta;
if (!entry.r.installed) {
meta = _('not installed via package manager');
btn.disabled = true;
btn.textContent = _('Unavailable');
} else if (sameVersion) {
meta = _('installed') + ': ' + entry.r.installed + ' · ' + _('up to date');
btn.disabled = true;
} else if (!entry.r.latest) {
// latest unknown (registry unreachable) - nothing to upgrade to
meta = _('installed') + ': ' + entry.r.installed + ' · ' + _('latest version unknown');
btn.disabled = true;
} else if (updatable) {
meta = _('installed') + ': ' + entry.r.installed + ' → ' + _('latest') + ': ' + entry.r.latest;
} else {
meta = _('installed') + ': ' + entry.r.installed + (entry.r.latest ? ' · ' + _('latest') + ': ' + entry.r.latest : '');
} else {
// installed >= feed: already up to date (feed may even be older)
meta = _('installed') + ': ' + entry.r.installed + ' · ' + _('up to date');
btn.disabled = true;
}
pkgBody.appendChild(mkRow(
updatable ? '⚠' : (entry.r.installed ? '✓' : '✗'),
@@ -23,7 +23,16 @@ if command -v apk >/dev/null 2>&1; then
}
')
fi
latest=$(apk search "^${PKG}\$" 2>/dev/null | sort -V | tail -1 | sed "s/^${PKG}-//")
# apk search treats ^ and $ as literal chars (not regex anchors), so the old
# `apk search "^pkg$"` matched nothing. Enumerate the exact-name package
# across all feeds via `apk list` and take the highest version. Restricting
# to "<pkg>-<digit>" avoids sibling names like <pkg>-geoip / luci-app-<pkg>.
latest=$(apk list "$PKG" 2>/dev/null | awk -v p="$PKG" '
$1 ~ "^" p "-[0-9]" {
v = $1; sub("^" p "-", "", v);
print v
}
' | sort -V | tail -1)
elif command -v opkg >/dev/null 2>&1; then
installed=$(opkg status "$PKG" 2>/dev/null | awk -F': ' '$1=="Version"{print $2; exit}')
latest=$(opkg info "$PKG" 2>/dev/null | awk -F': ' '$1=="Version"{print $2; exit}')
+5 -4
View File
@@ -1,5 +1,5 @@
#
# Copyright 2022-2024 Rafał Wabik - IceG - From eko.one.pl forum
# Copyright 2022-2026 Rafał Wabik - IceG - From eko.one.pl forum
#
# MIT License
#
@@ -8,15 +8,16 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-lite-watchdog
LUCI_TITLE:=LuCI JS Support for lite-watchdog the connection monitor
MAINTAINER:=Rafał Wabik <4Rafal@gmail.com>
PKG_MAINTAINER:=Rafał Wabik <4Rafal@gmail.com>
LUCI_DESCRIPTION:=LuCI JS interface for the lite-watchdog scripts.
LUCI_DEPENDS:=+sms-tool +kmod-usb-serial +kmod-usb-serial-option +comgt
LUCI_PKGARCH:=all
PKG_VERSION:=1.0.15
PKG_RELEASE:=1
PKG_VERSION:=1.0.17
PKG_RELEASE:=2
define Package/luci-app-lite-watchdog/conffiles
/etc/modem/log.txt
/etc/lite_watchdog.user
endef
include $(TOPDIR)/feeds/luci/luci.mk
@@ -8,142 +8,141 @@
'require tools.widgets as widgets'
/*
Copyright 2022-2024 Rafał Wabik - IceG - From eko.one.pl forum
Copyright 2022-2026 Rafał Wabik - IceG - From eko.one.pl forum
MIT License
*/
function pop(a, message, severity) {
ui.addNotification(a, message, severity)
}
function popTimeout(a, message, timeout, severity) {
ui.addTimeLimitedNotification(a, message, timeout, severity)
}
return view.extend({
usrScriptPath : '/etc/lite_watchdog.user',
load: function() {
return fs.list('/dev').then(function(devs) {
return devs.filter(function(dev) {
return dev.name.match(/^ttyUSB/) || dev.name.match(/^cdc-wdm/) || dev.name.match(/^ttyACM/) || dev.name.match(/^mhi_/) || dev.name.match(/^wwan/);
});
return Promise.all([
L.resolveDefault(fs.list('/dev'), null),
L.resolveDefault(uci.load('watchdog'))
]);
},
fileEditDialog: baseclass.extend({
__init__: function(file, title, description, callback, fileExists = false) {
this.file = file;
this.title = title;
this.description = description;
this.callback = callback;
this.fileExists = fileExists;
},
load: function() {
return L.resolveDefault(fs.read(this.file), '');
},
handleSave: function(ev) {
let textarea = document.getElementById('widget.modal_content');
let value = textarea.value.trim().replace(/\r\n/g, '\n') + '\n';
return fs.write(this.file, value).then(rc => {
textarea.value = value;
popTimeout(null, E('p', _('Contents have been saved.')), 5000, 'info');
if (this.callback) {
return this.callback(rc);
}
}).catch(e => {
ui.addNotification(null, E('p', _('Unable to save the contents') + ': %s'.format(e.message)));
}).finally(() => {
ui.hideModal();
});
},
fileEditDialog: baseclass.extend({
__init__: function(file, title, description, callback, fileExists=false) {
this.file = file;
this.title = title;
this.description = description;
this.callback = callback;
this.fileExists = fileExists;
},
load: function() {
return L.resolveDefault(fs.read(this.file), '');
},
render: function(content) {
error: function(e) {
if (!this.fileExists && e instanceof Error && e.name === 'NotFoundError') {
return this.render();
} else {
ui.showModal(this.title, [
E('div', { 'class': 'cbi-section' }, [
E('div', { 'class': 'cbi-section-descr' }, this.description),
E('div', { 'class': 'cbi-section' },
E('p', {},
E('textarea', {
'id': 'widget.modal_content',
'class': 'cbi-input-textarea',
'style': 'width:100% !important',
'rows': 10,
'wrap': 'off',
'spellcheck': 'false',
},
content)
)
),
]),
E('p', {}, _('Unable to read the contents') + ': %s'.format(e.message)),
E('div', { 'class': 'right' }, [
E('button', {
'class': 'btn',
'click': ui.hideModal,
}, _('Dismiss')),
' ',
E('button', {
'id': 'btn_save',
'class': 'btn cbi-button-positive important',
'click': ui.createHandlerFn(this, this.handleSave),
}, _('Save')),
]),
]);
},
}, _('Dismiss'))
])
], 'cbi-modal');
}
},
handleSave: function(ev) {
let textarea = document.getElementById('widget.modal_content');
let value = textarea.value.trim().replace(/\r\n/g, '\n') + '\n';
show: function() {
ui.showModal(null, E('p', { 'class': 'spinning' }, _('Loading')));
this.load().then(content => {
ui.hideModal();
return this.render(content);
}).catch(e => {
ui.hideModal();
return this.error(e);
});
},
return fs.write(this.file, value).then(rc => {
textarea.value = value;
ui.addNotification(null, E('p', _('Contents have been saved.')),
'info');
if(this.callback) {
return this.callback(rc);
};
}).catch(e => {
ui.addNotification(null, E('p', _('Unable to save the contents')
+ ': %s'.format(e.message)));
}).finally(() => {
ui.hideModal();
});
},
render: function(content) {
ui.showModal(this.title, [
E('p', this.description),
E('textarea', {
'id': 'widget.modal_content',
'class': 'cbi-input-textarea',
'style': 'width:100% !important; height: 60vh; min-height: 500px;',
'wrap': 'off',
'spellcheck': 'false'
}, content.trim()),
E('div', { 'class': 'right' }, [
E('button', {
'class': 'btn cbi-button-remove',
'click': () => {
document.getElementById('widget.modal_content').value = '';
fs.write('/etc/lite_watchdog.user', '').then(() => {
}).catch(e => {
ui.addNotification(null, E('p', _('Unable to clear the file') + ': %s'.format(e.message)), 'error');
});
}
}, _('Clear')),
' ',
E('button', {
'id': 'btn_save',
'class': 'btn cbi-button-positive important',
'click': ui.createHandlerFn(this, this.handleSave)
}, _('Save')),
' ',
E('button', {
'class': 'btn',
'click': ui.hideModal
}, _('Dismiss'))
])
], 'cbi-modal');
}
}),
error: function(e) {
if(!this.fileExists && e instanceof Error && e.name === 'NotFoundError') {
return this.render();
} else {
ui.showModal(this.title, [
E('div', { 'class': 'cbi-section' },
E('p', {}, _('Unable to read the contents')
+ ': %s'.format(e.message))
),
E('div', { 'class': 'right' },
E('button', {
'class': 'btn',
'click': ui.hideModal,
}, _('Dismiss'))
),
]);
};
},
render: function(res) {
show: function() {
ui.showModal(null,
E('p', { 'class': 'spinning' }, _('Loading'))
);
this.load().then(content => {
ui.hideModal();
return this.render(content);
}).catch(e => {
ui.hideModal();
return this.error(e);
})
},
}),
render: function(devs) {
let usrScriptEditDialog = new this.fileEditDialog(
this.usrScriptPath,
_('User script'),
_("User-defined commands."),
);
let sections = uci.sections('watchdog');
let mainAction = sections[0].action;
let m, s, o;
m = new form.Map('watchdog', _('Configuration lite-watchdog'), _('Configuration panel for lite-watchdog and gui application.'));
s = m.section(form.TypedSection, 'watchdog', '', _(''));
s.anonymous = true;
/* Old config
o = s.option(widgets.DeviceSelect, 'iface', _('Interface'),
_('Network interface for Internet access.')
);
o.noaliases = false;
o.default = 'wan';
*/
o = s.option(widgets.NetworkSelect, 'iface', _('Interface'),
_('Network interface for Internet access.')
);
@@ -151,54 +150,338 @@ return view.extend({
o.nocreate = true;
o.rmempty = false;
o.default = 'wan';
o = s.option(form.Button,
'_usr_script_btn', _('Edit user script'),
_('Before executing the action, system calls a script in which user can place his own commands.')
);
o.onclick = () => usrScriptEditDialog.show();
o.inputtitle = _('Edit');
o.inputstyle = 'edit btn';
o = s.option(form.Flag, 'modemrestart', _('Modem restart'),
_('Perform a modem restart before resuming the connection.')
);
o.rmempty = false;
o = s.option(form.Value, 'set_port', _('Port for communication with the modem'),
_("Select one of the available ttyUSBX ports."));
devs.sort((a, b) => a.name > b.name);
devs.forEach(dev => o.value('/dev/' + dev.name));
o.placeholder = _('Please select a port');
o.rmempty = false;
o.depends("modemrestart", "1");
o = s.option(form.Value, 'restartcmd', _('Restart modem with AT command'),
_('AT command to restart the modem.')
);
o.default = 'at+cfun=1,1';
o.rmempty = false;
o.depends("modemrestart", "1");
o = s.option(form.Flag, 'ledstatus', _('LED settings'),
_('The LED shows the internet connection status.')
);
o.rmempty = false;
o = s.option(form.ListValue, 'led',_('<abbr title="Light Emitting Diode">LED</abbr> Name'),
_("Select the status LED."));
o.load = function(section_id) {
let led = s.option(form.ListValue, 'led', _('<abbr title="Light Emitting Diode">LED</abbr> Name'), _("Select the status LED."));
led.load = function(section_id) {
return L.resolveDefault(fs.list('/sys/class/leds'), []).then(L.bind(function(leds) {
if(leds.length > 0) {
leds.sort((a, b) => a.name > b.name);
leds.forEach(e => o.value(e.name));
if (leds.length > 0) {
leds.sort((a, b) => a.name > b.name);
leds.forEach(e => this.value(e.name));
}
return this.super('load', [section_id]);
}, this));
};
o.rmempty = false;
o.depends("ledstatus", "1");
led.depends("ledstatus", "1");
return m.render();
s = m.section(form.TypedSection, 'watchdog', _('User Script Wizard'), _('Before executing the action, system calls a script in which user can place his own commands.'));
s.anonymous = true;
s.tab('uscriptTab', _('Settings'));
function handleID(ev, section_id, value) {
let fa = this.section.getUIElement(section_id, 'first_action');
let ma = this.section.getUIElement(section_id, 'modem_action');
let cmport = this.section.getUIElement(section_id, 'set_port');
let rcmd = this.section.getUIElement(section_id, 'restartcmd');
let rgpio = this.section.getUIElement(section_id, 'gpio');
let contentLines = [];
if (mainAction === "wan") {
// restart interface
if (fa.getValue() === "mr") {
// modem restart
if (ma.getValue() === "sr") {
// soft restart
contentLines.push('#!/bin/sh');
contentLines.push('');
contentLines.push('#');
contentLines.push('# (c) 2025-2026 Rafał Wabik - IceG - From eko.one.pl forum');
contentLines.push('# Script generated by user');
contentLines.push('#');
contentLines.push('# ENV from main');
contentLines.push('# ACTION=wan|reboot');
contentLines.push('# PHASE=pre|post');
contentLines.push('#');
contentLines.push('');
contentLines.push('safe_log() {');
contentLines.push(' [ -n "$LOG_FILE" ] || return 0');
contentLines.push(' date +"%A %d-%B %Y %T, USER-SCRIPT: $1" >> "$LOG_FILE"');
contentLines.push('}');
contentLines.push('');
contentLines.push('reset_counters_and_stage() {');
contentLines.push(' [ -n "$CNT_FILE" ] && : > "$CNT_FILE"');
contentLines.push(' [ -n "$GCNT_FILE" ] && : > "$GCNT_FILE"');
contentLines.push(' if [ -n "$INDEX_FILE" ]; then');
contentLines.push(' echo 0 > "$INDEX_FILE"');
contentLines.push(' fi');
contentLines.push(' [ -n "$STAGE_FILE" ] && rm -f "$STAGE_FILE"');
contentLines.push('}');
contentLines.push('');
contentLines.push('if [ "$PHASE" = "pre" ]; then');
contentLines.push('');
contentLines.push(' safe_log "Commands before main action"');
contentLines.push('');
contentLines.push(' # ---Space for user actions---');
contentLines.push('');
contentLines.push(' # ---Space for user actions---');
contentLines.push('');
contentLines.push('elif [ "$PHASE" = "post" ]; then');
contentLines.push('');
contentLines.push(' safe_log "Commands after main action"');
contentLines.push('');
contentLines.push(' /bin/date +"%A %d-%B %Y %T, Status: OFFLINE ➜ Action from script: Soft modem restart" >> "$LOG_FILE" && sleep 5');
contentLines.push(' (/bin/sms_tool -d ' + cmport.getValue() + ' at "' + rcmd.getValue() + '") && sleep 30');
contentLines.push('');
contentLines.push(' reset_counters_and_stage');
contentLines.push('fi');
contentLines.push('');
contentLines.push('exit 0');
} else {
// hard restart
contentLines.push('#!/bin/sh');
contentLines.push('');
contentLines.push('#');
contentLines.push('# (c) 2025-2026 Rafał Wabik - IceG - From eko.one.pl forum');
contentLines.push('# Script generated by user');
contentLines.push('#');
contentLines.push('# ENV from main');
contentLines.push('# ACTION=wan|reboot');
contentLines.push('# PHASE=pre|post');
contentLines.push('#');
contentLines.push('');
contentLines.push('safe_log() {');
contentLines.push(' [ -n "$LOG_FILE" ] || return 0');
contentLines.push(' date +"%A %d-%B %Y %T, USER-SCRIPT: $1" >> "$LOG_FILE"');
contentLines.push('}');
contentLines.push('');
contentLines.push('reset_counters_and_stage() {');
contentLines.push(' [ -n "$CNT_FILE" ] && : > "$CNT_FILE"');
contentLines.push(' [ -n "$GCNT_FILE" ] && : > "$GCNT_FILE"');
contentLines.push(' if [ -n "$INDEX_FILE" ]; then');
contentLines.push(' echo 0 > "$INDEX_FILE"');
contentLines.push(' fi');
contentLines.push(' [ -n "$STAGE_FILE" ] && rm -f "$STAGE_FILE"');
contentLines.push('}');
contentLines.push('');
contentLines.push('if [ "$PHASE" = "pre" ]; then');
contentLines.push('');
contentLines.push(' safe_log "Commands before main action"');
contentLines.push('');
contentLines.push(' # ---Space for user actions---');
contentLines.push('');
contentLines.push(' # ---Space for user actions---');
contentLines.push('');
contentLines.push('elif [ "$PHASE" = "post" ]; then');
contentLines.push('');
contentLines.push(' safe_log "Commands after main action"');
contentLines.push('');
contentLines.push(' /bin/date +"%A %d-%B %Y %T, Status: OFFLINE ➜ Action from script: Hard modem restart" >> "$LOG_FILE" && sleep 5');
contentLines.push(' /bin/echo "0" > /sys/class/gpio/' + rgpio.getValue() + '/value');
contentLines.push(' sleep 20');
contentLines.push(' /bin/echo "1" > /sys/class/gpio/' + rgpio.getValue() + '/value');
contentLines.push('');
contentLines.push(' reset_counters_and_stage');
contentLines.push('fi');
contentLines.push('');
contentLines.push('exit 0');
}
} else {
// restart router
contentLines.push('#!/bin/sh');
contentLines.push('');
contentLines.push('#');
contentLines.push('# (c) 2025-2026 Rafał Wabik - IceG - From eko.one.pl forum');
contentLines.push('# Script generated by user');
contentLines.push('#');
contentLines.push('# ENV from main');
contentLines.push('# ACTION=wan|reboot');
contentLines.push('# PHASE=pre|post');
contentLines.push('#');
contentLines.push('');
contentLines.push('safe_log() {');
contentLines.push(' [ -n "$LOG_FILE" ] || return 0');
contentLines.push(' date +"%A %d-%B %Y %T, USER-SCRIPT: $1" >> "$LOG_FILE"');
contentLines.push('}');
contentLines.push('');
contentLines.push('reset_counters_and_stage() {');
contentLines.push(' [ -n "$CNT_FILE" ] && : > "$CNT_FILE"');
contentLines.push(' [ -n "$GCNT_FILE" ] && : > "$GCNT_FILE"');
contentLines.push(' if [ -n "$INDEX_FILE" ]; then');
contentLines.push(' echo 0 > "$INDEX_FILE"');
contentLines.push(' fi');
contentLines.push(' [ -n "$STAGE_FILE" ] && rm -f "$STAGE_FILE"');
contentLines.push('}');
contentLines.push('');
contentLines.push('if [ "$PHASE" = "pre" ]; then');
contentLines.push('');
contentLines.push(' safe_log "Commands before main action"');
contentLines.push('');
contentLines.push(' # ---Space for user actions---');
contentLines.push('');
contentLines.push(' # ---Space for user actions---');
contentLines.push('');
contentLines.push('elif [ "$PHASE" = "post" ]; then');
contentLines.push('');
contentLines.push(' safe_log "Commands after main action"');
contentLines.push('');
contentLines.push(' reset_counters_and_stage');
contentLines.push('');
contentLines.push(' /bin/date +"%A %d-%B %Y %T, Status: OFFLINE ➜ Action from script: Reboot" >> "$LOG_FILE" && sleep 5');
contentLines.push(' reboot');
contentLines.push('');
contentLines.push('fi');
contentLines.push('');
contentLines.push('exit 0');
}
} else {
// restart
contentLines.push('#!/bin/sh');
contentLines.push('');
contentLines.push('#');
contentLines.push('# (c) 2025-2026 Rafał Wabik - IceG - From eko.one.pl forum');
contentLines.push('# Script generated by user');
contentLines.push('#');
contentLines.push('# ENV from main');
contentLines.push('# ACTION=wan|reboot');
contentLines.push('# PHASE=pre|post');
contentLines.push('#');
contentLines.push('');
contentLines.push('safe_log() {');
contentLines.push(' [ -n "$LOG_FILE" ] || return 0');
contentLines.push(' date +"%A %d-%B %Y %T, USER-SCRIPT: $1" >> "$LOG_FILE"');
contentLines.push('}');
contentLines.push('');
contentLines.push('reset_counters_and_stage() {');
contentLines.push(' [ -n "$CNT_FILE" ] && : > "$CNT_FILE"');
contentLines.push(' [ -n "$GCNT_FILE" ] && : > "$GCNT_FILE"');
contentLines.push(' if [ -n "$INDEX_FILE" ]; then');
contentLines.push(' echo 0 > "$INDEX_FILE"');
contentLines.push(' fi');
contentLines.push(' [ -n "$STAGE_FILE" ] && rm -f "$STAGE_FILE"');
contentLines.push('}');
contentLines.push('');
contentLines.push('if [ "$PHASE" = "pre" ]; then');
contentLines.push('');
contentLines.push(' safe_log "Commands before main action"');
contentLines.push('');
contentLines.push(' # ---Space for user actions---');
contentLines.push('');
contentLines.push(' # ---Space for user actions---');
contentLines.push('');
contentLines.push(' reset_counters_and_stage');
contentLines.push('');
contentLines.push('fi');
contentLines.push('');
contentLines.push('exit 0');
}
let contentToSave = contentLines.join('\n') + '\n';
return fs.write('/etc/lite_watchdog.user', contentToSave).then(function(rc) {
popTimeout(null, E('p', _('Contents have been saved.')), 5000, 'info');
}).catch(function(e) {
ui.addNotification(null, E('p', _('Unable to save contents: %s').format(e.message)));
});
}
o = s.taboption('uscriptTab', form.DummyValue, '_dummy');
o.rawhtml = true;
o.default = '<div class="cbi-section-descr">' +
_('Hint: You do not need to save anything in the settings. Select the actions and click the Generate button.') +
'</div>';
if (mainAction === "wan") {
o = s.taboption('uscriptTab', form.RichListValue, "first_action", _('Actions in script'),
_("The available options depend on the previously defined main action (interface or router restart)."));
o.value('nn', _("None"));
o.value('mr', _("modem restart"), _('Restart modem if restarting the interfaces did not restore internet access.'));
o.value('rr', _("reboot"), _('Router reboot if restarting the interfaces did not restore internet access.'));
o.optional = false;
o = s.taboption('uscriptTab', form.RichListValue, "modem_action", _("Modem actions"));
o.value('sr', _("soft restart"), _('Restart modem using at commands')+' ('+_('effect depends on modem')+'). '+_('Some at commands can also restart the router.'));
o.value('hr', _("hard restart"), _('Restart modem via GPIO.'));
o.optional = false;
o.depends("first_action", "mr");
o = s.taboption('uscriptTab', form.Value, 'set_port', _('Port for communication with the modem'),
_("Select one of the available ttyUSBX ports."));
res[0].sort((a, b) => a.name > b.name);
res[0].forEach(dev => {
if (dev.name.match(/^ttyUSB/) || dev.name.match(/^ttyACM/) || dev.name.match(/^mhi_/) || dev.name.match(/^wwan/)) {
o.value('/dev/' + dev.name);
}
});
o.placeholder = _('Please select a port');
o.rmempty = false;
o.depends("modem_action", "sr");
o = s.taboption('uscriptTab', form.Value, 'restartcmd', _('AT command'),
_('AT command to restart the modem.')
);
o.default = 'at+cfun=1,1';
o.rmempty = false;
o.depends("modem_action", "sr");
let gpio = s.taboption('uscriptTab', form.ListValue, 'gpio', _('Restart modem using GPIO'), _("Select the GPIO related to 4G/5G modem."));
gpio.load = function(section_id) {
return L.resolveDefault(fs.read('/sys/kernel/debug/gpio'), '').then(L.bind(function(output) {
if (output) {
output.split('\n').forEach(line => {
if (/4g|5g|lte|modem/i.test(line)) {
let cleanLine = line.replace(/\|/g, '').trim();
let value = cleanLine.match(/\(\s*(.*?)\s*\)/)?.[1];
if (value)
gpio.value(value, cleanLine);
}
});
}
return this.super('load', [section_id]);
}, this));
};
gpio.depends("modem_action", "hr");
o = s.taboption('uscriptTab', form.Button, '_Generate');
o.title = _('Generate a script');
o.inputtitle = _('Generate user script');
o.inputstyle = 'cbi-button cbi-button-action important';
o.description = _('Generate and save the prepared script.');
o.onclick = function(ev) {
let section_id = this.section.cfgsections()[0];
handleID.call(this, ev, section_id, null);
};
o.depends("first_action", "mr");
o.depends("first_action", "rr");
} else {
o = s.taboption('uscriptTab', form.RichListValue, "first_action", _('Actions in script'),
_("The availability of actions depends on the selection of the main action (interface or router restart)."));
o.value('nn', _("None"));
o.value('ua', _("user code"), _('Add custom commands before restarting the device.'));
o.optional = false;
o = s.taboption('uscriptTab', form.Button, '_Generate');
o.title = _('Generate a script');
o.inputtitle = _('Generate user script');
o.inputstyle = 'cbi-button cbi-button-action important';
o.description = _('Generate and save the prepared script.');
o.onclick = function(ev) {
let section_id = this.section.cfgsections()[0];
handleID.call(this, ev, section_id, null);
};
o.depends("first_action", "ua");
}
o = s.taboption('uscriptTab', form.Button,
'_usr_script_btn', _('Edit user script'),
_('User can add his script or generate a new one from the selection options.')
);
o.onclick = () => usrScriptEditDialog.show();
o.inputtitle = _('Edit');
o.inputstyle = 'edit btn';
return m.render();
}
});
@@ -4,16 +4,16 @@
'require ui';
'require uci';
/*
Copyright 2023-2024 Rafał Wabik - IceG - From eko.one.pl forum
Copyright 2023-2026 Rafał Wabik - IceG - From eko.one.pl forum
MIT License
Tab is a modification of the package https://github.com/gSpotx2f/luci-app-syslog
*/
return L.view.extend({
tailDefault: 20,
@@ -25,8 +25,15 @@ return L.view.extend({
logdata = logdata.replaceAll('OFFLINE', _('OFFLINE'));
logdata = logdata.replaceAll('ONLINE', _('ONLINE'));
logdata = logdata.replaceAll('Action', _('Action'));
logdata = logdata.replaceAll('Commands before main action', _('Commands before main action'));
logdata = logdata.replaceAll('Commands after main action', _('Commands after main action'));
logdata = logdata.replaceAll('Restarting interface', _('Restarting interface'));
logdata = logdata.replaceAll('At command was sent to modem', _('At command was sent to modem'));
logdata = logdata.replaceAll('from script:', _('from script:'));
logdata = logdata.replaceAll('USER-SCRIPT:', _('USER-SCRIPT:'));
logdata = logdata.replaceAll('Soft modem restart', _('Soft modem restart'));
logdata = logdata.replaceAll('Hard modem restart', _('Hard modem restart'));
logdata = logdata.replaceAll('Space for user actions', _('Space for user actions'));
logdata = logdata.replaceAll('Reboot', _('Reboot'));
logdata = logdata.replaceAll('January', _('January'));
@@ -49,89 +56,89 @@ return L.view.extend({
logdata = logdata.replaceAll('Friday', _('Friday'));
logdata = logdata.replaceAll('Saturday', _('Saturday'));
logdata = logdata.replaceAll('Sunday', _('Sunday'));
logdata = logdata.replaceAll('Watchdog initialized', _('Watchdog initialized'));
logdata = logdata.replaceAll('uptime', _('uptime'));
logdata = logdata.replaceAll('hosts', _('hosts'));
/* Log file translation */
return logdata.trim().split(/\n/).map(line => line.replace(/^<\d+>/, ''));
return logdata.trim().split(/\n/).map(function(line){ return line.replace(/^<\d+>/, ''); });
},
setLogTail: function(cArr) {
let tailNumVal = document.getElementById('tailValue').value;
if(tailNumVal && tailNumVal > 0 && cArr) {
return cArr.slice(-tailNumVal);
};
if (tailNumVal && tailNumVal > 0 && cArr) return cArr.slice(-tailNumVal);
return cArr;
},
setLogFilter: function(cArr) {
let fPattern = document.getElementById('logFilter').value;
if(!fPattern) {
return cArr;
};
let fArr = [];
let fPattern = document.getElementById('logFilter').value;
if (!fPattern) return cArr;
try {
fArr = cArr.filter(s => new RegExp(fPattern, 'iu').test(s));
const re = new RegExp(fPattern, 'iu');
const fArr = cArr.filter(function(s){ return re.test(s); });
return (fArr.length ? fArr : [ _('No matches...') ]);
} catch(err) {
if(err.name === 'SyntaxError') {
ui.addNotification(null,
E('p', {}, _('Wrong regular expression') + ': ' + err.message));
if (err.name === 'SyntaxError') {
ui.addNotification(null, E('p', {}, _('Wrong regular expression') + ': ' + err.message));
return cArr;
} else {
throw err;
};
};
if(fArr.length === 0) {
fArr.push(_('No matches...'));
};
return fArr;
}
throw err;
}
},
handleClear: function(ev) {
if (confirm(_('Clear connection monitor log?')))
{
var ov = document.getElementById('syslog');
ov.value = '';
return fs.write('/etc/modem/log.txt', '');
}
if (confirm(_('Clear connection monitor log?'))) {
var ov = document.getElementById('syslog'); if (ov) ov.value = '';
var ln = document.getElementById('lineNumbers'); if (ln) ln.value = '';
fs.write('/etc/modem/log.txt', '');
fs.write('/tmp/lite_watchdog_cnt', '');
fs.write('/tmp/lite_watchdog_gcnt', '');
fs.write('/tmp/lite_watchdog_index', '0');
fs.remove('/tmp/lite_watchdog_stage');
return true;
}
},
handleChangeDetail: function(ev) {
var x = document.getElementById('log_detail').value;
return uci.load('watchdog').then(function() {
uci.set('watchdog', '@watchdog[0]', 'log', x.toString());
uci.save();
uci.apply();
});
return uci.load('watchdog').then(function() {
uci.set('watchdog', '@watchdog[0]', 'log', x.toString());
uci.save(); uci.apply();
});
},
handleDownload: function(ev) {
return L.resolveDefault(fs.read_direct('/etc/modem/log.txt'), null).then(function (res) {
if (res) {
var link = E('a', {
'download': 'log.txt',
'href': URL.createObjectURL(
new Blob([ res ], { type: 'text/plain' })),
});
link.click();
URL.revokeObjectURL(link.href);
}
}).catch(() => {
ui.addNotification(null, E('p', {}, _('Download error') + ': ' + err.message));
if (res) {
var link = E('a', {
'download': 'log.txt',
'href': URL.createObjectURL(new Blob([ res ], { type: 'text/plain' })),
});
link.click();
URL.revokeObjectURL(link.href);
}
}).catch(function(err){
ui.addNotification(null, E('p', {}, _('Download error') + ': ' + err.message));
});
},
handleRestoreLOG: function(ev) {
return ui.uploadFile('/etc/modem/log.txt', ev.target)
.then(L.bind(function(btn, res) {}, this, ev.target))
.catch(function(e) { ui.addNotification(null, E('p', e.message)) })
.finally(L.bind(function(btn, input) {}, this, ev.target));
},
load: function() {
return fs.read_direct('/etc/modem/log.txt').catch(err => {
return fs.read_direct('/etc/modem/log.txt').catch(function(err){
ui.addNotification(null, E('p', {}, _('Unable to load log data:') + ' ' + err.message));
return '';
});
},
render: function(logdata) {
let navBtnsTop = '1px';
/* Log file translation */
logdata = logdata.replaceAll('Failed', _('Failed'));
logdata = logdata.replaceAll('out of', _('out of'));
@@ -139,8 +146,15 @@ return L.view.extend({
logdata = logdata.replaceAll('OFFLINE', _('OFFLINE'));
logdata = logdata.replaceAll('ONLINE', _('ONLINE'));
logdata = logdata.replaceAll('Action', _('Action'));
logdata = logdata.replaceAll('Commands before main action', _('Commands before main action'));
logdata = logdata.replaceAll('Commands after main action', _('Commands after main action'));
logdata = logdata.replaceAll('Restarting interface', _('Restarting interface'));
logdata = logdata.replaceAll('At command was sent to modem', _('At command was sent to modem'));
logdata = logdata.replaceAll('from script:', _('from script:'));
logdata = logdata.replaceAll('USER-SCRIPT:', _('USER-SCRIPT:'));
logdata = logdata.replaceAll('Soft modem restart', _('Soft modem restart'));
logdata = logdata.replaceAll('Hard modem restart', _('Hard modem restart'));
logdata = logdata.replaceAll('Space for user actions', _('Space for user actions'));
logdata = logdata.replaceAll('Reboot', _('Reboot'));
logdata = logdata.replaceAll('January', _('January'));
@@ -163,40 +177,121 @@ return L.view.extend({
logdata = logdata.replaceAll('Friday', _('Friday'));
logdata = logdata.replaceAll('Saturday', _('Saturday'));
logdata = logdata.replaceAll('Sunday', _('Sunday'));
/* Log file translation */
logdata = logdata.replaceAll('Watchdog initialized', _('Watchdog initialized'));
logdata = logdata.replaceAll('uptime', _('uptime'));
logdata = logdata.replaceAll('hosts', _('hosts'));
/* Log file translation */
let loglines = this.parseLogData(logdata);
uci.load('watchdog').then(function() {
var logsettings = (uci.get('watchdog', '@watchdog[0]', 'log'));
var logsettings = (uci.get('watchdog', '@watchdog[0]', 'log'));
switch (logsettings) {
case 'all':
document.getElementById('log_detail').value = 'all';
break;
case 'offline':
document.getElementById('log_detail').value = 'offline';
break;
default:
}
case 'all': document.getElementById('log_detail').value = 'all'; break;
case 'offline': document.getElementById('log_detail').value = 'offline'; break;
default: ;
}
});
let logTextarea = E('textarea', {
const fontSize = '11px';
const lineH = '1.4em';
const padTop = '6px', padBottom = '6px';
const logHeight = '400px';
let lineNumbers = E('textarea', {
'id': 'lineNumbers',
'readonly': 'readonly',
'class': 'cbi-input-textarea',
'style': [
'resize:none',
'height:' + logHeight,'max-height:800px','min-height:' + logHeight,
'font-size:' + fontSize,'font-family:monospace',
'text-align:right','color:#888','background:var(--border-color-soft)',
'border:1px solid var(--border-color-medium)','border-right:0',
'overflow:hidden',
'padding:' + padTop + ' 6px ' + padBottom + ' 0',
'line-height:' + lineH,'box-sizing:border-box',
'min-width:6ch'
].join(';'),
'wrap': 'off','spellcheck': 'false',
});
let logTextWrapper = E('div', {
'style': 'position:relative; flex:1 1 auto; min-width:0;'
});
let logTextarea = E('textarea', {
'id': 'syslog',
'class': 'cbi-input-textarea',
'style': 'width: 100%; resize: vertical; height:400px; max-height:800px; min-height:400px; min-width:100%; padding: 0 0 0 45px; font-size:12px; font-family: monospace',
'style': [
'display:block','width:100%','resize:vertical',
'height:' + logHeight,'max-height:800px','min-height:' + logHeight,
'padding:' + padTop + ' 36px ' + padBottom + ' 8px',
'font-size:' + fontSize,'font-family:monospace','white-space:pre',
'line-height:' + lineH,'box-sizing:border-box',
'overflow:auto'
].join(';'),
'readonly': 'readonly',
'wrap': 'off',
'rows': this.tailDefault,
'spellcheck': 'false',
}, [ loglines.slice(-this.tailDefault).join('\n') ]);
let overlayNav = E('div', {
'style': 'position:absolute; right:6px; top:6px; display:flex; gap:6px; z-index:2;'
}, [
E('button', {
'class': 'btn','title': _('Go to top'),
'click': function(ev){
logTextarea.scrollTop = 0;
ev.target.blur();
},
'style': 'line-height:1; padding:6px 10px; font-size:16px;'
}, '\u25b2'),
E('button', {
'class': 'btn','title': _('Go to bottom'),
'click': function(ev){
logTextarea.scrollTop = logTextarea.scrollHeight - logTextarea.clientHeight;
ev.target.blur();
},
'style': 'line-height:1; padding:6px 10px; font-size:16px;'
}, '\u25bc'),
]);
logTextWrapper.appendChild(overlayNav);
logTextWrapper.appendChild(logTextarea);
let logContainer = E('div', {
'style': 'display:flex; flex-direction:row; gap:0;'
}, [ lineNumbers, logTextWrapper ]);
const setLineNumberWidth = function(lines) {
const digits = String(Math.max(1, lines)).length;
const ch = Math.max(6, Math.min(10, digits + 2.5));
lineNumbers.style.width = ch + 'ch';
};
const updateLineNumbers = function(text) {
const lines = text.length ? text.split('\n').length : 1;
lineNumbers.value = Array.from({ length: lines }, function(_, i){ return i + 1; }).join('\n');
const rowsCount = (lines < this.tailDefault) ? this.tailDefault : lines;
lineNumbers.rows = rowsCount;
logTextarea.rows = rowsCount;
setLineNumberWidth(lines);
lineNumbers.style.height = logTextarea.offsetHeight + 'px';
lineNumbers.scrollTop = logTextarea.scrollTop;
}.bind(this);
updateLineNumbers(logTextarea.value);
lineNumbers.addEventListener('scroll', function(){ logTextarea.scrollTop = lineNumbers.scrollTop; });
logTextarea.addEventListener('scroll', function(){ lineNumbers.scrollTop = logTextarea.scrollTop; });
let tailValue = E('input', {
'id': 'tailValue',
'name': 'tailValue',
'type': 'text',
'form': 'logForm',
'id': 'tailValue','name': 'tailValue','type': 'text','form': 'logForm',
'class': 'cbi-input-text',
'style': 'width:4em !important; min-width:4em !important; margin-bottom:0.3em !important',
'maxlength': 5,
@@ -205,155 +300,97 @@ return L.view.extend({
ui.addValidator(tailValue, 'uinteger', true);
let logFilter = E('input', {
'id': 'logFilter',
'name': 'logFilter',
'type': 'text',
'form': 'logForm',
'id': 'logFilter','name': 'logFilter','type': 'text','form': 'logForm',
'class': 'cbi-input-text',
'style': 'min-width:16em !important; margin-right:1em !important; margin-bottom:0.3em !important',
'placeholder': _('Entries filter'),
'data-tooltip': _('Filter entries using regexp, press [Delete] to delete all text'),
'keydown': function(ev) {
if (ev.keyCode === 46)
{
if (ev.keyCode === 46) {
var del = document.getElementById('logFilter');
if (del)
var ov = document.getElementById('logFilter');
ov.value = '';
document.getElementById('logFilter').focus();
}
},
if (del) { var ov = document.getElementById('logFilter'); ov.value = ''; document.getElementById('logFilter').focus(); }
}
},
});
let logFormSubmitBtn = E('input', {
'type': 'submit',
'form': 'logForm',
'class': 'cbi-button cbi-button-add',
'type': 'submit','form': 'logForm','class': 'cbi-button cbi-button-add',
'style': 'margin-right:1em !important; margin-bottom:0.3em !important;',
'value': _('Refresh'),
'click': ev => ev.target.blur(),
'value': _('Refresh'),'click': function(ev){ ev.target.blur(); },
});
return E([
E('h2', { 'id': 'logTitle', 'class': 'fade-in' }, _('Connection monitor activity log')),
E('div', { 'class': 'cbi-map-descr' }, _('Connection monitor activity log, which is a conversion of the monitor known from the easyconfig package. More information on the %seko.one.pl forum%s.').format('<a href="https://eko.one.pl/?p=easyconfig" target="_blank">', '</a>')),
E('div', { 'class': 'cbi-map-descr' }, _('Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s.').format('<a href="https://eko.one.pl/?p=easyconfig" target="_blank">', '</a>')),
E('hr'),
E('div', { 'class': 'cbi-section-descr fade-in' }),
E('div', { 'class': 'cbi-section fade-in' },
E('div', { 'class': 'cbi-section-node' },
E('div', { 'id': 'contentSyslog', 'class': 'cbi-value' }, [
E('label', {
'class': 'cbi-value-title',
'for': 'tailValue',
'style': 'margin-bottom:0.3em !important',
}, _('Show only the last entries')),
E('label', { 'class': 'cbi-value-title', 'for': 'tailValue', 'style': 'margin-bottom:0.3em !important' },
_('Show only the last entries')),
E('div', { 'class': 'cbi-value-field' }, [
tailValue,
E('input', {
'type': 'button',
'form': 'logForm',
'class': 'btn cbi-button',
'value': 'x',
'click': ev => {
tailValue.value = null;
logFormSubmitBtn.click();
ev.target.blur();
},
'type': 'button','form': 'logForm','class': 'btn cbi-button','value': 'x',
'click': function(ev){ tailValue.value = null; logFormSubmitBtn.click(); ev.target.blur(); },
'style': 'margin-right:1em !important; margin-bottom:0.3em !important; max-width:4em !important',
}),
E('form', {
'id': 'logForm',
'name': 'logForm',
'id': 'logForm','name': 'logForm',
'style': 'display:inline-block; margin-bottom:0.3em !important',
'submit': ui.createHandlerFn(this, function(ev) {
ev.preventDefault();
let formElems = Array.from(document.forms.logForm.elements);
formElems.forEach(e => e.disabled = true);
return this.load().then(logdata => {
let loglines = this.setLogFilter(this.setLogTail(
this.parseLogData(logdata)));
logTextarea.rows = (loglines.length < this.tailDefault) ? this.tailDefault : loglines.length;
logTextarea.value = loglines.join('\n');
}).finally(() => {
formElems.forEach(e => e.disabled = false);
formElems.forEach(function(e){ e.disabled = true; });
return this.load().then(function(logdata){
let loglines = this.setLogFilter(this.setLogTail(this.parseLogData(logdata)));
const text = loglines.join('\n');
logTextarea.value = text;
updateLineNumbers(text);
logTextarea.scrollTop = logTextarea.scrollHeight - logTextarea.clientHeight;
}.bind(this)).finally(function(){
formElems.forEach(function(e){ e.disabled = false; });
});
}),
}, E('span', {}, '&#160;')),
]),
])
)
),
E('div', { 'class': 'cbi-value' }, [
E('label', {
'class': 'cbi-value-title',
'for' : 'logFilter',
}, _('Type of messages')),
E('div', { 'class': 'cbi-value-field' }, [
E('select', { 'class': 'cbi-input-select', 'id': 'log_detail', 'change': ui.createHandlerFn(this, 'handleChangeDetail') }, [
E('option', { 'value': 'all' }, _('All actions')),
E('option', { 'value': 'offline' }, _('Only connection problems'))
]),
])
]),
E('div', { 'class': 'cbi-value' }, [
E('label', { 'class': 'cbi-value-title', 'for': 'log_detail' }, _('Type of messages')),
E('div', { 'class': 'cbi-value-field' }, [
E('select', { 'class': 'cbi-input-select', 'id': 'log_detail', 'change': ui.createHandlerFn(this, 'handleChangeDetail') }, [
E('option', { 'value': 'all' }, _('All actions')),
E('option', { 'value': 'offline' }, _('Only connection problems'))
]),
])
]),
E('div', { 'class': 'cbi-value' }, [
E('label', {
'class': 'cbi-value-title',
'for' : 'logFilter',
}, _('Message filter')),
E('div', { 'class': 'cbi-value-field' }, logFilter),
]),
E('div', { 'class': 'cbi-value' }, [
E('label', { 'class': 'cbi-value-title', 'for': 'logFilter' }, _('Message filter')),
E('div', { 'class': 'cbi-value-field' }, logFilter),
]),
E('div', { 'class': 'cbi-value' }, [
E('label', {
'class': 'cbi-value-title',
'for' : 'logFormSubmitBtn',
}, _('Refresh log')),
E('div', { 'class': 'cbi-value-field' }, [
logFormSubmitBtn,
])
]),
E('div', { 'class': 'cbi-value' }, [
E('label', { 'class': 'cbi-value-title', 'for': 'logFormSubmitBtn' }, _('Refresh log')),
E('div', { 'class': 'cbi-value-field' }, [ logFormSubmitBtn ])
]),
E('div', { 'class': 'cbi-section fade-in' },
E('div', { 'class': 'cbi-section-node' }, [
E('div', { 'style': 'position:fixed' }, [
E('button', {
'class': 'btn',
'style': 'position:relative; display:block; margin:0 !important; left:1px; top:'
+ navBtnsTop,
'click': ev => {
document.getElementById('logTitle').scrollIntoView(true);
ev.target.blur();
},
}, '\u25b2'),
E('button', {
'class': 'btn',
'style': 'position:relative; display:block; margin:0 !important; margin-top:1px !important; left:1px; top:'
+ navBtnsTop,
'click': ev => {
logTextarea.scrollIntoView(false);
ev.target.blur();
},
}, '\u25bc'),
]),
logTextarea,
])
E('div', { 'class': 'cbi-section-node' }, [ logContainer ])
),
E('div', { 'class': 'right' }, [
E('button', {
'class': 'cbi-button cbi-button-remove',
'id': 'clear',
'click': ui.createHandlerFn(this, 'handleClear')
}, [ _('Clear log') ]),
'\xa0\xa0\xa0',
E('button', {
'class': 'cbi-button cbi-button-apply important',
'id': 'download',
'click': ui.createHandlerFn(this, 'handleDownload')
}, [ _('Download log') ]),
]),
E('div', { 'class': 'right' }, [
E('button', { 'class': 'cbi-button cbi-button-remove', 'id': 'clear', 'click': ui.createHandlerFn(this, 'handleClear') }, [ _('Clear log') ]),
'\xa0\xa0\xa0',
E('button', { 'class': 'cbi-button cbi-button-action important', 'id': 'upload-log', 'click': ui.createHandlerFn(this, 'handleRestoreLOG') }, [ _('Upload log file') ]),
'\xa0\xa0\xa0',
E('button', { 'class': 'cbi-button cbi-button-apply important', 'id': 'download-log', 'click': ui.createHandlerFn(this, 'handleDownload') }, [ _('Download log') ]),
]),
]);
},
@@ -1,303 +1,305 @@
'use strict';
'require form';
'require fs';
'require view';
'require ui';
'require uci';
'require poll';
'require dom';
'require tools.widgets as widgets';
/*
Copyright 2022-2024 Rafał Wabik - IceG - From eko.one.pl forum
MIT License
*/
return view.extend({
formdata: { watchdog: {} },
load: function() {
return L.resolveDefault(fs.exec_direct('/usr/bin/lite-watchdog-data.sh', [ 'json' ]));
uci.load('watchdog')
},
render: function(data) {
var m, s, o;
if (data != null){
try {
var json = JSON.parse(data);
if (!("error" in json)) {
var testtime = json.testtime;
var min = json.min;
var avg = json.avg;
var max = json.max;
if (min != '') {
if (!min.includes('ms')) {
min = min + " ms";
}
if (!avg.includes('ms')) {
avg = avg + " ms";
}
if (!max.includes('ms')) {
max = max + " ms";
}
}
var onoff = json.enable;
var dest = json.dest;
var delay = parseInt(json.delay)/60;
var period = json.period;
var count = json.count;
var action = json.action;
pollData: poll.add(function() {
return L.resolveDefault(fs.exec_direct('/usr/bin/lite-watchdog-data.sh', [ 'json' ]))
.then(function(res) {
var json = JSON.parse(res);
if ( json != null ) {
var view = document.getElementById("testtime");
var view2 = document.getElementById("min");
var view3 = document.getElementById("avg");
var view4 = document.getElementById("max");
var min = json.min.toString();
var ttime = json.testtime.toString();
var countz = json.now_count.toString();
if (countz != '-1') {
var renderHTML = "";
renderHTML = ttime + ' (' + _('failed') + ' ' + countz + ' ' + _('out of') + ' ' + count + ')';
view.innerHTML = '';
view.innerHTML = renderHTML.trim();
}
if (min == '') {
view2.textContent = '-';
view3.textContent = '-';
view4.textContent = '-';
}
else {
var ttime = json.testtime.toString();
var countz = json.now_count.toString();
var testz = json.now_count.toString();
var renderHTML = "";
renderHTML = ttime + ' (' + _('failed') + ' ' + countz + ' ' + _('out of') + ' ' + count + ')';
view.innerHTML = '';
view.innerHTML = renderHTML.trim();
var renderHTML2 = "";
if (!min.includes('ms')) {
min = min + " ms";
}
renderHTML2 = min;
view2.innerHTML = '';
view2.innerHTML = renderHTML2.trim();
var renderHTML3 = "";
var avg = json.avg.toString();
if (!avg.includes('ms')) {
avg = avg + " ms";
}
renderHTML3 = avg;
view3.innerHTML = '';
view3.innerHTML = renderHTML3.trim();
var max = json.max.toString();
var renderHTML4 = "";
if (!max.includes('ms')) {
max = max + " ms";
}
renderHTML4 = max;
view4.innerHTML = '';
view4.innerHTML = renderHTML4.trim();
}
}
});
});
}
} catch (err) {
console.log('Error: ', err.message);
}
}
var info = _('Configuration of the connection monitor, which is a conversion of the monitor known from the easyconfig package. More information on the %seko.one.pl forum%s.').format('<a href="https://eko.one.pl/?p=easyconfig" target="_blank">', '</a>');
m = new form.JSONMap(this.formdata, _('Connection monitor settings'), info);
s = m.section(form.TypedSection, 'watchdog', '', _(''));
s.anonymous = true;
s.render = L.bind(function(view, section_id) {
return E('div', { 'class': 'cbi-section' }, [
E('h3', _('Information')),
E('table', { 'class': 'table' }, [
E('tr', { 'class': 'tr' }, [
E('td', { 'class': 'td left', 'width': '33%' }, [ _('Last check')]),
E('td', { 'class': 'td left', 'id': 'testtime' }, [ testtime || '-' ]),
]),
E('tr', { 'class': 'tr' }, [
E('td', { 'class': 'td left', 'width': '33%' }, [ _('minimum')]),
E('td', { 'class': 'td left', 'id': 'min' }, [ min || '-' ]),
]),
E('tr', { 'class': 'tr' }, [
E('td', { 'class': 'td left', 'width': '33%' }, [ _('average')]),
E('td', { 'class': 'td left', 'id': 'avg' }, [ avg || '-' ]),
]),
E('tr', { 'class': 'tr' }, [
E('td', { 'class': 'td left', 'width': '33%' }, [ _('maximum')]),
E('td', { 'class': 'td left', 'id': 'max' }, [ max || '-' ]),
]),
])
]);
}, o, this);
s = m.section(form.TypedSection, 'watchdog', _(''));
s.anonymous = true;
s.addremove = false;
if(!("error" in json)) {
s.tab('basic', _('Basic settings'));
o = s.taboption('basic', form.Flag, 'enabled', _('Enabled'),
_('Enable a connection monitor.')
);
o.rmempty = false;
o.default = onoff;
o = s.taboption('basic', form.Value, 'delay', _('System startup delay'),
_('[1 - 59] minute(s)')
);
o.default = delay || "3";
o.rmempty = false;
o.validate = function(section_id, value) {
if (value.match(/^[0-9]+(?:\.[0-9]+)?$/) && +value >= 1 && +value < 60)
return true;
return _('Expect a decimal value between one and fifty-nine');
};
o.datatype = 'range(1, 59)';
o = s.taboption('basic', form.Value, 'dest', _('Address or name'),
_('')
);
o.default = dest || "google.com";
o.rmempty = false;
o = s.taboption('basic', form.Value, 'period', _('Verification period'),
_('[1 - 59] minute(s)')
);
o.default = period || "1";
o.rmempty = false;
o.validate = function(section_id, value) {
if (value.match(/^[0-9]+(?:\.[0-9]+)?$/) && +value >= 1 && +value < 60)
return true;
return _('Expect a decimal value between one and fifty-nine');
};
o.datatype = 'range(1, 59)';
o = s.taboption('basic', form.Value, 'period_count', _('Number of failed checks'),
_('[1 - 59]')
);
o.default = count || "10";
o.rmempty = false;
o.validate = function(section_id, value) {
if (value.match(/^[0-9]+(?:\.[0-9]+)?$/) && +value >= 1 && +value < 60)
return true;
return _('Expect a decimal value between one and fifty-nine');
};
o.datatype = 'range(1, 59)';
o = s.taboption('basic', form.ListValue, 'action', _('Action'));
o.value('wan', _('Connection restart'));
o.value('reboot', _('Reboot'));
o.default = action || "wan";
}
return m.render();
},
handleWATCHDOGSETup: function(ev) {
var map = document.querySelector('#maincontent .cbi-map'),
data = this.formdata;
return dom.callClassMethod(map, 'save').then(function() {
var args = [];
args.push(data.watchdog.enabled);
var ax = args.toString();
if ( ax == "1" ) {
ui.addNotification(null, E('p', _('Changes have been saved. Connection Monitor has started.') ), 'info');
}
else {
ui.addNotification(null, E('p', _('Changes have been saved. Connection Monitor is not running.') ), 'info');
}
var args2 = [];
args2.push(data.watchdog.delay);
var ax2 = parseInt(args2)*60;
var args3 = [];
args3.push(data.watchdog.dest);
var ax3 = args3.toString();
var args4 = [];
args4.push(data.watchdog.period);
var ax4 = args4.toString();
var args5 = [];
args5.push(data.watchdog.period_count);
var ax5 = args5.toString();
var args6 = [];
args6.push(data.watchdog.action);
var ax6 = args6.toString();
return uci.load('watchdog').then(function() {
uci.set('watchdog', '@watchdog[0]', 'enabled', ax.toString());
uci.set('watchdog', '@watchdog[0]', 'delay', ax2.toString());
uci.set('watchdog', '@watchdog[0]', 'dest', ax3.toString());
uci.set('watchdog', '@watchdog[0]', 'period', ax4.toString());
uci.set('watchdog', '@watchdog[0]', 'period_count', ax5.toString());
uci.set('watchdog', '@watchdog[0]', 'action', ax6.toString());
uci.save();
uci.apply();
fs.exec_direct('/sbin/watchdog2cron.sh');
if ( ax == "1" ) {
fs.exec('sleep 2');
fs.exec_direct('/sbin/refresh2cron.sh');
}
});
});
},
addFooter: function() {
return E('div', { 'class': 'cbi-page-actions' }, [
E('button', {
'class': 'cbi-button cbi-button-save',
'click': L.ui.createHandlerFn(this, 'handleWATCHDOGSETup')
}, [ _('Save') ])
]);
}
});
'use strict';
'require form';
'require fs';
'require view';
'require ui';
'require uci';
'require poll';
'require dom';
'require tools.widgets as widgets';
/*
Copyright 2022-2026 Rafał Wabik - IceG - From eko.one.pl forum
MIT License
*/
function pop(a, message, severity) {
ui.addNotification(a, message, severity)
}
function popTimeout(a, message, timeout, severity) {
ui.addTimeLimitedNotification(a, message, timeout, severity)
}
function setSpinner(id) {
var el = document.getElementById(id);
if (!el) return;
el.innerHTML = '';
el.appendChild(E('span', { 'class': 'spinning', 'style': 'font-size: inherit;' }, _('Loading...')));
}
function setText(id, value) {
var el = document.getElementById(id);
if (!el) return;
el.innerHTML = '';
el.textContent = value || '-';
}
function setHTML(id, value) {
var el = document.getElementById(id);
if (!el) return;
el.innerHTML = '';
el.innerHTML = (value || '-').trim();
}
return view.extend({
formdata: { watchdog: {} },
load: function() {
return L.resolveDefault(fs.exec_direct('/usr/bin/lite-watchdog-data.sh', [ 'json' ]));
uci.load('watchdog')
},
render: function(data) {
var m, s, o;
var spinEl = E('span', { 'class': 'spinning', 'style': 'font-size: inherit;' }, _('Loading...'));
var testtime = spinEl;
var min = E('span', { 'class': 'spinning', 'style': 'font-size: inherit;' }, _('Loading...'));
var avg = E('span', { 'class': 'spinning', 'style': 'font-size: inherit;' }, _('Loading...'));
var max = E('span', { 'class': 'spinning', 'style': 'font-size: inherit;' }, _('Loading...'));
var onoff = '1', dest = '', delay = 3, period = '1', count = 10, allcount = 10, action = 'wan';
var json = null;
if (data != null) {
try {
json = JSON.parse(data);
if (!("error" in json)) {
testtime = json.testtime || '-';
min = json.min || '--.---';
avg = json.avg || '--.---';
max = json.max || '--.---';
if (min !== '--.---' && !min.includes('ms')) min = min + ' ms';
if (avg !== '--.---' && !avg.includes('ms')) avg = avg + ' ms';
if (max !== '--.---' && !max.includes('ms')) max = max + ' ms';
onoff = json.enable;
dest = json.dest;
var countdest = dest.split(',');
delay = parseInt(json.delay) / 60;
period = json.period;
count = parseInt(json.count);
allcount = parseInt(json.count) * countdest.length;
action = json.action;
}
} catch (err) {
console.log('Error parsing initial data: ', err.message);
}
}
poll.add(function() {
setSpinner('testtime');
setSpinner('min');
setSpinner('avg');
setSpinner('max');
return L.resolveDefault(fs.exec_direct('/usr/bin/lite-watchdog-data.sh', [ 'json' ]))
.then(function(res) {
if (!res) {
setText('testtime', '-');
setText('min', '-');
setText('avg', '-');
setText('max', '-');
return;
}
var pjson;
try { pjson = JSON.parse(res); } catch(e) { return; }
if (!pjson) return;
var pmin = (pjson.min || '').toString();
var pavg = (pjson.avg || '').toString();
var pmax = (pjson.max || '').toString();
var ttime = (pjson.testtime || '').toString();
var countz = (pjson.now_count || '0').toString();
if (countz === '' || parseInt(countz) < 0) countz = '0';
if (pmin !== '' && !pmin.includes('ms')) pmin = pmin + ' ms';
if (pavg !== '' && !pavg.includes('ms')) pavg = pavg + ' ms';
if (pmax !== '' && !pmax.includes('ms')) pmax = pmax + ' ms';
if (ttime === '' || ttime === '-') {
var waitingHTML = '<span class="spinning" style="font-size: inherit;"></span> ' + _('Waiting for ping command execution...');
setHTML('testtime', waitingHTML);
} else {
var timeHTML = ttime + ' (' + _('failed') + ' ' + countz + ' ' + _('out of') + ' ' + count + ')';
setHTML('testtime', timeHTML);
}
if (pmin === '' || pmin === '--.--- ms') {
setText('min', '-');
setText('avg', '-');
setText('max', '-');
} else {
setText('min', pmin);
setText('avg', pavg);
setText('max', pmax);
}
});
}, 60);
var info = _('Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s.').format('<a href="https://eko.one.pl/?p=easyconfig" target="_blank">', '</a>');
m = new form.JSONMap(this.formdata, _('Connection monitor settings'), info);
s = m.section(form.TypedSection, 'watchdog', '', _(''));
s.anonymous = true;
s.render = L.bind(function(view, section_id) {
return E('div', { 'class': 'cbi-section' }, [
E('h3', _('Information')),
E('table', { 'class': 'table' }, [
E('tr', { 'class': 'tr' }, [
E('td', { 'class': 'td left', 'width': '33%' }, [ _('Last check') ]),
E('td', { 'class': 'td left', 'id': 'testtime' }, [ testtime ]),
]),
E('tr', { 'class': 'tr' }, [
E('td', { 'class': 'td left', 'width': '33%' }, [ _('minimum') ]),
E('td', { 'class': 'td left', 'id': 'min' }, [ min ]),
]),
E('tr', { 'class': 'tr' }, [
E('td', { 'class': 'td left', 'width': '33%' }, [ _('average') ]),
E('td', { 'class': 'td left', 'id': 'avg' }, [ avg ]),
]),
E('tr', { 'class': 'tr' }, [
E('td', { 'class': 'td left', 'width': '33%' }, [ _('maximum') ]),
E('td', { 'class': 'td left', 'id': 'max' }, [ max ]),
]),
])
]);
}, o, this);
s = m.section(form.TypedSection, 'watchdog', _(''));
s.anonymous = true;
s.addremove = false;
if (json && !("error" in json)) {
s.tab('basic', _('Basic settings'));
o = s.taboption('basic', form.Flag, 'enabled', _('Enabled'),
_('Enable a connection monitor.')
);
o.rmempty = false;
o.default = onoff;
o = s.taboption('basic', form.Value, 'delay', _('System startup delay'),
_('[1 - 59] minute(s)')
);
o.default = delay || "3";
o.rmempty = false;
o.validate = function(section_id, value) {
if (value.match(/^[0-9]+(?:\.[0-9]+)?$/) && +value >= 1 && +value < 60)
return true;
return _('Expect a decimal value between one and fifty-nine');
};
o.datatype = 'range(1, 59)';
o = s.taboption('basic', form.DynamicList, 'dest', _('Address or name'), _('Set test address (only one recommended).'));
o.default = dest ? dest.split(',') : "google.com";
o.rmempty = false;
o.datatype = 'host';
o.max = 3;
o.validate = function(section_id, value) {
if (Array.isArray(value) && value.length > 3) {
return _('You can add up to 2 destinations.');
}
return true;
};
o = s.taboption('basic', form.Value, 'period', _('Verification period'),
_('[1 - 59] minute(s)')
);
o.default = period || "1";
o.rmempty = false;
o.validate = function(section_id, value) {
if (value.match(/^[0-9]+(?:\.[0-9]+)?$/) && +value >= 1 && +value < 60)
return true;
return _('Expect a decimal value between one and fifty-nine');
};
o.datatype = 'range(1, 59)';
o = s.taboption('basic', form.Value, 'period_count', _('Number of failed checks'),
_('[1 - 59]')
);
o.default = count || "10";
o.rmempty = false;
o.validate = function(section_id, value) {
if (value.match(/^[0-9]+(?:\.[0-9]+)?$/) && +value >= 1 && +value < 60)
return true;
return _('Expect a decimal value between one and fifty-nine');
};
o.datatype = 'range(1, 59)';
o = s.taboption('basic', form.ListValue, 'action', _('Action'));
o.value('wan', _('Connection restart'));
o.value('reboot', _('Reboot'));
o.default = action || "wan";
}
return m.render();
},
handleWATCHDOGSETup: function(ev) {
var map = document.querySelector('#maincontent .cbi-map'),
data = this.formdata;
return dom.callClassMethod(map, 'save').then(function() {
var ax = (data.watchdog.enabled || '').toString();
var ax2 = parseInt(data.watchdog.delay || 0) * 60;
var ax3 = (data.watchdog.dest || '').toString();
var ax4 = (data.watchdog.period || '').toString();
var ax5 = (data.watchdog.period_count || '').toString();
var ax6 = (data.watchdog.action || '').toString();
return uci.load('watchdog').then(function() {
uci.set('watchdog', '@watchdog[0]', 'enabled', ax);
uci.set('watchdog', '@watchdog[0]', 'delay', ax2.toString());
uci.set('watchdog', '@watchdog[0]', 'dest', ax3);
uci.set('watchdog', '@watchdog[0]', 'period', ax4);
uci.set('watchdog', '@watchdog[0]', 'period_count', ax5);
uci.set('watchdog', '@watchdog[0]', 'action', ax6);
uci.save();
uci.apply();
}).then(function() {
return L.resolveDefault(fs.read('/etc/crontabs/root'), '');
}).then(function(crontab) {
var lines = (crontab || '').replace(/\r\n/g, '\n').split('\n');
var filtered = lines.filter(function(l) {
return l.trim() !== '' && !l.includes('watchdog');
});
if (ax === '1') {
filtered.push('*/' + ax4 + ' * * * * /usr/bin/lite_watchdog.sh ' + ax2 + ' 3 "' + ax3 + '" ' + ax5 + ' ' + ax6);
}
return fs.write('/etc/crontabs/root', filtered.join('\n') + '\n');
}).then(function() {
return fs.exec('/etc/init.d/cron', ['restart']);
}).then(function() {
if (ax === '1') {
popTimeout(null, E('p', _('Changes have been saved. Connection Monitor has started.')), 5000, 'info');
} else {
popTimeout(null, E('p', _('Changes have been saved. Connection Monitor is not running.')), 5000, 'info');
}
});
});
},
addFooter: function() {
return E('div', { 'class': 'cbi-page-actions' }, [
E('button', {
'class': 'cbi-button cbi-button-save',
'click': L.ui.createHandlerFn(this, 'handleWATCHDOGSETup')
}, [ _('Save') ])
]);
}
});
+400
View File
@@ -0,0 +1,400 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: cs\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
msgid "Connection Monitor"
msgstr "Monitor připojení"
msgid "Connection monitor settings"
msgstr "Nastavení monitoru připojení"
msgid "Configuration lite-watchdog"
msgstr "Konfigurace lite-watchdog"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "Panel nastavení pro aplikaci lite-watchdog a uživatelské rozhraní."
msgid "Interface"
msgstr "Rozhraní"
msgid "Network interface for Internet access."
msgstr "Síťové rozhraní pro přístup na Internet."
msgid "Port for communication with the modem"
msgstr "Port pro komunikaci s modemem"
msgid "Select one of the available ttyUSBX ports."
msgstr "Vyberte jeden z dostupných portů ttyUSBX."
msgid "Please select a port"
msgstr "Vyberte port"
msgid "Perform a modem restart before resuming the connection."
msgstr "Proveďte restartování modemu před obnovením připojení."
msgid "Restart modem with AT command"
msgstr "Restartování modemu příkazem AT"
msgid "AT command to restart the modem."
msgstr "Příkaz AT pro restartování modemu."
msgid "AT command"
msgstr "Příkaz AT"
msgid "total checks"
msgstr "celkem kontrol"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Konfigurace monitoru připojení známého z balíčku easyconfig. Více informací na %sfóru eko.one.pl%s."
msgid "eko.one.pl forum"
msgstr "fórum eko.one.pl"
msgid "Enable a connection monitor."
msgstr "Povolte monitor připojení."
msgid "System startup delay"
msgstr "Zpoždění při spuštění systému"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] minut(-y)"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "Očekávána je desítková hodnota mezi jednou a padesáti devíti"
msgid "Address or name"
msgstr "Adresa nebo název"
msgid "Verification period"
msgstr "Období ověření"
msgid "Number of failed checks"
msgstr "Počet neúspěšných kontrol"
msgid "Action"
msgstr "Akce"
msgid "Connection restart"
msgstr "Restartování připojení k internetu"
msgid "Modem restart"
msgstr "Restartování modemu"
msgid "Reboot"
msgstr "Restartování zařízení"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "Změny byly uloženy. Monitor připojení byl spuštěn."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "Změny byly uloženy. Monitor připojení není spuštěn."
msgid "Last check"
msgstr "Poslední kontrola"
msgid "minimum"
msgstr "minimum"
msgid "average"
msgstr "průměr"
msgid "maximum"
msgstr "maximum"
msgid "Information"
msgstr "Informace"
msgid "Basic settings"
msgstr "Základní nastavení"
msgid "failed"
msgstr "neúspěšných"
msgid "Failed"
msgstr "Neúspěšných"
msgid "out of"
msgstr "z"
msgid "Activity log"
msgstr "Protokol aktivit"
msgid "Wrong regular expression"
msgstr "Nesprávný regulární výraz"
msgid "No matches..."
msgstr "Žádné výsledky..."
msgid "Clear connection monitor log?"
msgstr "Vymazat protokol monitoru připojení?"
msgid "Download error"
msgstr "Chyba stahování"
msgid "Unable to load log data:"
msgstr "Nelze načíst data protokolu:"
msgid "Entries filter"
msgstr "Filtr položek"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "Filtrujte položky pomocí regulárního výrazu, stiskněte [Delete] pro smazání veškerého textu"
msgid "Refresh"
msgstr "Obnovit"
msgid "Connection monitor activity log"
msgstr "Protokol aktivit monitoru připojení"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Protokol aktivit monitoru připojení známý z balíčku easyconfig. Více informací na %sfóru eko.one.pl%s."
msgid "Show only the last entries"
msgstr "Zobrazit pouze poslední položky"
msgid "Message filter"
msgstr "Filtr zpráv"
msgid "Refresh log"
msgstr "Obnovit protokol"
msgid "Clear log"
msgstr "Vymazat protokol"
msgid "Download log"
msgstr "Stáhnout protokol"
msgid "Upload log file"
msgstr "Nahrát soubor protokolu"
msgid "Type of messages"
msgstr "Typ zpráv"
msgid "All actions"
msgstr "Všechny akce"
msgid "Only connection problems"
msgstr "Pouze problémy s připojením"
msgid "LED settings"
msgstr "Nastavení LED"
msgid "The LED shows the internet connection status."
msgstr "LED indikátor zobrazuje stav připojení na Internet."
msgid "Select the status LED."
msgstr "Vyberte LED indikátor stavu."
msgid "Edit user script"
msgstr "Upravit uživatelský skript"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "Před provedením akce systém zavolá skript, do kterého může uživatel umístit své vlastní příkazy."
msgid "Edit user script"
msgstr "Upravit uživatelský skript"
msgid "User script"
msgstr "Uživatelský skript"
msgid "User-defined commands."
msgstr "Příkazy definované uživatelem."
msgid "Contents have been saved"
msgstr "Obsah byl uložen"
msgid "Unable to save the contents"
msgstr "Obsah nelze uložit"
msgid "Unable to read the contents"
msgstr "Obsah nelze načíst"
msgid "Status"
msgstr "Stav"
msgid "ONLINE"
msgstr "ONLINE"
msgid "OFFLINE"
msgstr "OFFLINE"
msgid "Action"
msgstr "Akce"
msgid "Restarting interface"
msgstr "Restartování připojení k internetu"
msgid "Reboot"
msgstr "Restartování zařízení"
msgid "At command was sent to modem"
msgstr "Příkaz AT byl poslán do modemu"
msgid "January"
msgstr "Leden"
msgid "February"
msgstr "Únor"
msgid "March"
msgstr "Březen"
msgid "April"
msgstr "Duben"
msgid "May"
msgstr "Květen"
msgid "June"
msgstr "Červen"
msgid "July"
msgstr "Červenec"
msgid "August"
msgstr "Srpen"
msgid "September"
msgstr "Září"
msgid "October"
msgstr "Říjen"
msgid "November"
msgstr "Listopad"
msgid "December"
msgstr "Prosinec"
msgid "Monday"
msgstr "Pondělí"
msgid "Tuesday"
msgstr "Úterý"
msgid "Wednesday"
msgstr "Středa"
msgid "Thursday"
msgstr "Čtvrtek"
msgid "Friday"
msgstr "Pátek"
msgid "Saturday"
msgstr "Sobota"
msgid "Sunday"
msgstr "Neděle"
msgid "User Script Wizard"
msgstr "Průvodce uživatelským skriptem"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Tip: Nemusíte nic ukládat v nastavení. Vyberte akce a klikněte na tlačítko Generovat."
msgid "modem restart"
msgstr "restartování modemu"
msgid "reboot"
msgstr "restartování zařízení"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Restartujte modem, pokud restartování rozhraní neobnovilo přístup na Internet."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Pokud restartování rozhraní neobnovilo přístup na Internet, restartujte router."
msgid "Actions in script"
msgstr "Akce ve skriptu"
msgid "Modem actions"
msgstr "Akce s modemem"
msgid "Restart modem using at commands"
msgstr "Restartujte modem pomocí příkazů AT."
msgid "effect depends on modem"
msgstr "efekt závisí na modemu"
msgid "Some at commands can also restart the router."
msgstr "Některé příkazy AT mohou také restartovat router."
msgid "soft restart"
msgstr "měkký restart"
msgid "hard restart"
msgstr "tvrdý restart"
msgid "Restart modem via GPIO."
msgstr "Restartování modemu přes GPIO."
msgid "Restart modem using GPIO"
msgstr "Restartujte modem pomocí GPIO"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "Vyberte GPIO související s modemem 4G/5G."
msgid "Generate a script"
msgstr "Vygenerujte skript"
msgid "Generate user script"
msgstr "Vygenerujte uživatelský skript"
msgid "Generate and save the prepared script."
msgstr "Vygenerujte a uložte připravený skript."
msgid "User can add his script or generate a new one from the selection options."
msgstr "Uživatel může přidat svůj skript nebo vygenerovat nový z možností výběru."
msgid "Set test address (only one recommended)."
msgstr "Nastavte testovací adresu (doporučuje se pouze jedna)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "Dostupné možnosti závisí na dříve definované hlavní akci (restart rozhraní nebo routeru)."
msgid "user code"
msgstr "uživatelský kód"
msgid "Add custom commands before restarting the device."
msgstr "Před restartováním zařízení přidejte vlastní příkazy."
msgid "from script:"
msgstr "ze skriptu:"
msgid "USER-SCRIPT:"
msgstr "Uživatelský skript:"
msgid "Soft modem restart"
msgstr "Měkký restart modemu"
msgid "Hard modem restart"
msgstr "Tvrdý restart modemu"
msgid "Space for user actions"
msgstr "Prostor pro uživatelské akce"
msgid "Commands before main action"
msgstr "Příkazy před hlavní akcí"
msgid "Commands after main action"
msgstr "Příkazy po hlavní akci"
msgid "Loading..."
msgstr "Načítání..."
msgid "Waiting for ping command execution..."
msgstr "Čekání na provedení příkazu ping..."
msgid "Watchdog initialized"
msgstr "Watchdog inicializován"
msgid "uptime"
msgstr "doba provozu"
msgid "hosts"
msgstr "hostitele"
+400
View File
@@ -0,0 +1,400 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: da\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
msgid "Connection Monitor"
msgstr "Forbindelsesmonitor"
msgid "Connection monitor settings"
msgstr "Forbindelsesoritorindstillinger"
msgid "Configuration lite-watchdog"
msgstr "Konfiguration af lite-watchdog"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "Konfigurationspanel til lite-watchdog og GUI-applikation."
msgid "Interface"
msgstr "Grænseflade"
msgid "Network interface for Internet access."
msgstr "Netværksgraenseflade til internetadgang."
msgid "Port for communication with the modem"
msgstr "Port til kommunikation med modemet"
msgid "Select one of the available ttyUSBX ports."
msgstr "Vælg en af de tilgængelige ttyUSBX-porte."
msgid "Please select a port"
msgstr "Vælg venligst en port"
msgid "Perform a modem restart before resuming the connection."
msgstr "Udfør en modemgenstart inden forbindelsen genoptages."
msgid "Restart modem with AT command"
msgstr "Genstart modem med AT-kommando"
msgid "AT command to restart the modem."
msgstr "AT-kommando til at genstarte modemet."
msgid "AT command"
msgstr "AT-kommando"
msgid "total checks"
msgstr "i alt kontroler"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Konfiguration af forbindelsesmonitoren kendt fra easyconfig-pakken. Mere information på %seko.one.pl-forummet%s."
msgid "eko.one.pl forum"
msgstr "eko.one.pl-forum"
msgid "Enable a connection monitor."
msgstr "Aktivér en forbindelsesmonitor."
msgid "System startup delay"
msgstr "Systemstartsforsinkelses"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] minut(ter)"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "Forvent en decimalværdi mellem en og nioghalvtreds"
msgid "Address or name"
msgstr "Adresse eller navn"
msgid "Verification period"
msgstr "Verifikationsperiode"
msgid "Number of failed checks"
msgstr "Antal mislykkede kontroler"
msgid "Action"
msgstr "Handling"
msgid "Connection restart"
msgstr "Forbindelsesgenstart"
msgid "Modem restart"
msgstr "Modemgenstart"
msgid "Reboot"
msgstr "Genstart enhed"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "Ændringer er blevet gemt. Forbindelsesmonitor er startet."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "Ændringer er blevet gemt. Forbindelsesmonitor kører ikke."
msgid "Last check"
msgstr "Sidste kontrol"
msgid "minimum"
msgstr "minimum"
msgid "average"
msgstr "gennemsnit"
msgid "maximum"
msgstr "maksimum"
msgid "Information"
msgstr "Information"
msgid "Basic settings"
msgstr "Grundlæggende indstillinger"
msgid "failed"
msgstr "mislykkede"
msgid "Failed"
msgstr "Mislykkede"
msgid "out of"
msgstr "ud af"
msgid "Activity log"
msgstr "Aktivitetslog"
msgid "Wrong regular expression"
msgstr "Forkert regulært udtryk"
msgid "No matches..."
msgstr "Ingen resultater..."
msgid "Clear connection monitor log?"
msgstr "Ryd forbindelsesmonitorlog?"
msgid "Download error"
msgstr "Downloadfejl"
msgid "Unable to load log data:"
msgstr "Kan ikke indlæse logdata:"
msgid "Entries filter"
msgstr "Poster filter"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "Filtrer poster ved hjælp af regexp, tryk [Delete] for at slette al tekst"
msgid "Refresh"
msgstr "Opdater"
msgid "Connection monitor activity log"
msgstr "Forbindelsesoritoraktivitetslog"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Forbindelsesoritoraktivitetslog kendt fra easyconfig-pakken. Mere information på %seko.one.pl-forummet%s."
msgid "Show only the last entries"
msgstr "Vis kun de seneste poster"
msgid "Message filter"
msgstr "Beskedfilter"
msgid "Refresh log"
msgstr "Opdater log"
msgid "Clear log"
msgstr "Ryd log"
msgid "Download log"
msgstr "Download log"
msgid "Upload log file"
msgstr "Upload logfil"
msgid "Type of messages"
msgstr "Type af beskeder"
msgid "All actions"
msgstr "Alle handlinger"
msgid "Only connection problems"
msgstr "Kun forbindelsesproblemer"
msgid "LED settings"
msgstr "LED-indstillinger"
msgid "The LED shows the internet connection status."
msgstr "LED'en viser status for internetforbindelsen."
msgid "Select the status LED."
msgstr "Vælg status-LED'en."
msgid "Edit user script"
msgstr "Rediger brugerskript"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "Før udførelse af handlingen kalder systemet et script, hvor brugeren kan placere sine egne kommandoer."
msgid "Edit user script"
msgstr "Rediger brugerskript"
msgid "User script"
msgstr "Brugerskript"
msgid "User-defined commands."
msgstr "Brugerdefinerede kommandoer."
msgid "Contents have been saved"
msgstr "Indhold er blevet gemt"
msgid "Unable to save the contents"
msgstr "Kan ikke gemme indholdet"
msgid "Unable to read the contents"
msgstr "Kan ikke læse indholdet"
msgid "Status"
msgstr "Status"
msgid "ONLINE"
msgstr "ONLINE"
msgid "OFFLINE"
msgstr "OFFLINE"
msgid "Action"
msgstr "Handling"
msgid "Restarting interface"
msgstr "Genstart forbindelse til internettet"
msgid "Reboot"
msgstr "Genstart enhed"
msgid "At command was sent to modem"
msgstr "AT-kommando blev sendt til modem"
msgid "January"
msgstr "Januar"
msgid "February"
msgstr "Februar"
msgid "March"
msgstr "Marts"
msgid "April"
msgstr "April"
msgid "May"
msgstr "Maj"
msgid "June"
msgstr "Juni"
msgid "July"
msgstr "Juli"
msgid "August"
msgstr "August"
msgid "September"
msgstr "September"
msgid "October"
msgstr "Oktober"
msgid "November"
msgstr "November"
msgid "December"
msgstr "December"
msgid "Monday"
msgstr "Mandag"
msgid "Tuesday"
msgstr "Tirsdag"
msgid "Wednesday"
msgstr "Onsdag"
msgid "Thursday"
msgstr "Torsdag"
msgid "Friday"
msgstr "Fredag"
msgid "Saturday"
msgstr "Lørdag"
msgid "Sunday"
msgstr "Søndag"
msgid "User Script Wizard"
msgstr "Brugerskript-guide"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Tip: Du behøver ikke at gemme noget i indstillingerne. Vælg handlingerne og klik på Generer-knappen."
msgid "modem restart"
msgstr "modemgenstart"
msgid "reboot"
msgstr "enhedsgenstart"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Genstart modemet, hvis genstart af grænsefladerne ikke gendannede internetadgangen."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Hvis genstart af grænsefladerne ikke gendannede internetadgangen, skal du genstarte routeren."
msgid "Actions in script"
msgstr "Handlinger i script"
msgid "Modem actions"
msgstr "Modemhandlinger"
msgid "Restart modem using at commands"
msgstr "Genstart modem ved hjælp af AT-kommandoer."
msgid "effect depends on modem"
msgstr "effekten afhænger af modemet"
msgid "Some at commands can also restart the router."
msgstr "Nogle AT-kommandoer kan også genstarte routeren."
msgid "soft restart"
msgstr "blød genstart"
msgid "hard restart"
msgstr "hård genstart"
msgid "Restart modem via GPIO."
msgstr "Genstart modem via GPIO."
msgid "Restart modem using GPIO"
msgstr "Genstart modem ved hjælp af GPIO"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "Vælg GPIO'en relateret til 4G/5G-modem."
msgid "Generate a script"
msgstr "Generer et script"
msgid "Generate user script"
msgstr "Generer brugerskript"
msgid "Generate and save the prepared script."
msgstr "Generer og gem det forberedte script."
msgid "User can add his script or generate a new one from the selection options."
msgstr "Brugeren kan tilføje sit script eller generere et nyt fra valgmulighederne."
msgid "Set test address (only one recommended)."
msgstr "Indstil testadresse (kun én anbefalet)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "De tilgængelige muligheder afhænger af den tidligere definerede hovedhandling (grænseflade- eller routergenstart)."
msgid "user code"
msgstr "brugerkode"
msgid "Add custom commands before restarting the device."
msgstr "Tilføj brugerdefinerede kommandoer før enhedsgenstart."
msgid "from script:"
msgstr "fra script:"
msgid "USER-SCRIPT:"
msgstr "BRUGERSKRIPT:"
msgid "Soft modem restart"
msgstr "Blød modemgenstart"
msgid "Hard modem restart"
msgstr "Hård modemgenstart"
msgid "Space for user actions"
msgstr "Plads til brugerhandlinger"
msgid "Commands before main action"
msgstr "Kommandoer før hovedhandling"
msgid "Commands after main action"
msgstr "Kommandoer efter hovedhandling"
msgid "Loading..."
msgstr "Indlæser..."
msgid "Waiting for ping command execution..."
msgstr "Venter på udførelse af ping-kommando..."
msgid "Watchdog initialized"
msgstr "Watchdog initialiseret"
msgid "uptime"
msgstr "opetid"
msgid "hosts"
msgstr "værtsmaskiner"
+400
View File
@@ -0,0 +1,400 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: de\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
msgid "Connection Monitor"
msgstr "Verbindungsmonitor"
msgid "Connection monitor settings"
msgstr "Verbindungsmonitor-Einstellungen"
msgid "Configuration lite-watchdog"
msgstr "Konfiguration lite-watchdog"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "Konfigurationspanel für lite-watchdog und GUI-Anwendung."
msgid "Interface"
msgstr "Schnittstelle"
msgid "Network interface for Internet access."
msgstr "Netzwerkschnittstelle für den Internetzugang."
msgid "Port for communication with the modem"
msgstr "Port für die Kommunikation mit dem Modem"
msgid "Select one of the available ttyUSBX ports."
msgstr "Wählen Sie einen der verfügbaren ttyUSBX-Ports."
msgid "Please select a port"
msgstr "Bitte wählen Sie einen Port"
msgid "Perform a modem restart before resuming the connection."
msgstr "Starten Sie das Modem neu, bevor die Verbindung wieder aufgenommen wird."
msgid "Restart modem with AT command"
msgstr "Modem mit AT-Befehl neu starten"
msgid "AT command to restart the modem."
msgstr "AT-Befehl zum Neustart des Modems."
msgid "AT command"
msgstr "AT-Befehl"
msgid "total checks"
msgstr "Prüfungen insgesamt"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Konfiguration des Verbindungsmonitors aus dem easyconfig-Paket. Weitere Informationen im %sForum eko.one.pl%s."
msgid "eko.one.pl forum"
msgstr "Forum eko.one.pl"
msgid "Enable a connection monitor."
msgstr "Verbindungsmonitor aktivieren."
msgid "System startup delay"
msgstr "Systemstartverzögerung"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] Minute(n)"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "Es wird ein Dezimalwert zwischen eins und neunundfünfzig erwartet"
msgid "Address or name"
msgstr "Adresse oder Name"
msgid "Verification period"
msgstr "Überprüfungszeitraum"
msgid "Number of failed checks"
msgstr "Anzahl fehlgeschlagener Prüfungen"
msgid "Action"
msgstr "Aktion"
msgid "Connection restart"
msgstr "Verbindungsneustart"
msgid "Modem restart"
msgstr "Modem-Neustart"
msgid "Reboot"
msgstr "Neustart"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "Änderungen wurden gespeichert. Verbindungsmonitor wurde gestartet."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "Änderungen wurden gespeichert. Verbindungsmonitor läuft nicht."
msgid "Last check"
msgstr "Letzte Prüfung"
msgid "minimum"
msgstr "Minimum"
msgid "average"
msgstr "Durchschnitt"
msgid "maximum"
msgstr "Maximum"
msgid "Information"
msgstr "Informationen"
msgid "Basic settings"
msgstr "Grundeinstellungen"
msgid "failed"
msgstr "fehlgeschlagen"
msgid "Failed"
msgstr "Fehlgeschlagen"
msgid "out of"
msgstr "von"
msgid "Activity log"
msgstr "Aktivitätsprotokoll"
msgid "Wrong regular expression"
msgstr "Falscher regulärer Ausdruck"
msgid "No matches..."
msgstr "Keine Treffer..."
msgid "Clear connection monitor log?"
msgstr "Verbindungsmonitor-Protokoll löschen?"
msgid "Download error"
msgstr "Downloadfehler"
msgid "Unable to load log data:"
msgstr "Protokolldaten können nicht geladen werden:"
msgid "Entries filter"
msgstr "Eintragsfilter"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "Einträge mit regulärem Ausdruck filtern, [Delete] drücken um Text zu löschen"
msgid "Refresh"
msgstr "Aktualisieren"
msgid "Connection monitor activity log"
msgstr "Aktivitätsprotokoll des Verbindungsmonitors"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Aktivitätsprotokoll des Verbindungsmonitors aus dem easyconfig-Paket. Weitere Informationen im %sForum eko.one.pl%s."
msgid "Show only the last entries"
msgstr "Nur die letzten Einträge anzeigen"
msgid "Message filter"
msgstr "Nachrichtenfilter"
msgid "Refresh log"
msgstr "Protokoll aktualisieren"
msgid "Clear log"
msgstr "Protokoll löschen"
msgid "Download log"
msgstr "Protokoll herunterladen"
msgid "Upload log file"
msgstr "Protokolldatei hochladen"
msgid "Type of messages"
msgstr "Nachrichtentyp"
msgid "All actions"
msgstr "Alle Aktionen"
msgid "Only connection problems"
msgstr "Nur Verbindungsprobleme"
msgid "LED settings"
msgstr "LED-Einstellungen"
msgid "The LED shows the internet connection status."
msgstr "Die LED zeigt den Internetverbindungsstatus an."
msgid "Select the status LED."
msgstr "Status-LED auswählen."
msgid "Edit user script"
msgstr "Benutzerskript bearbeiten"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "Vor der Ausführung der Aktion ruft das System ein Skript auf, in dem der Benutzer eigene Befehle platzieren kann."
msgid "Edit user script"
msgstr "Benutzerskript bearbeiten"
msgid "User script"
msgstr "Benutzerskript"
msgid "User-defined commands."
msgstr "Benutzerdefinierte Befehle."
msgid "Contents have been saved"
msgstr "Inhalt wurde gespeichert"
msgid "Unable to save the contents"
msgstr "Inhalt kann nicht gespeichert werden"
msgid "Unable to read the contents"
msgstr "Inhalt kann nicht gelesen werden"
msgid "Status"
msgstr "Status"
msgid "ONLINE"
msgstr "ONLINE"
msgid "OFFLINE"
msgstr "OFFLINE"
msgid "Action"
msgstr "Aktion"
msgid "Restarting interface"
msgstr "Schnittstelle wird neu gestartet"
msgid "Reboot"
msgstr "Neustart"
msgid "At command was sent to modem"
msgstr "AT-Befehl wurde an das Modem gesendet"
msgid "January"
msgstr "Januar"
msgid "February"
msgstr "Februar"
msgid "March"
msgstr "März"
msgid "April"
msgstr "April"
msgid "May"
msgstr "Mai"
msgid "June"
msgstr "Juni"
msgid "July"
msgstr "Juli"
msgid "August"
msgstr "August"
msgid "September"
msgstr "September"
msgid "October"
msgstr "Oktober"
msgid "November"
msgstr "November"
msgid "December"
msgstr "Dezember"
msgid "Monday"
msgstr "Montag"
msgid "Tuesday"
msgstr "Dienstag"
msgid "Wednesday"
msgstr "Mittwoch"
msgid "Thursday"
msgstr "Donnerstag"
msgid "Friday"
msgstr "Freitag"
msgid "Saturday"
msgstr "Samstag"
msgid "Sunday"
msgstr "Sonntag"
msgid "User Script Wizard"
msgstr "Benutzerskript-Assistent"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Hinweis: Sie müssen nichts in den Einstellungen speichern. Wählen Sie die Aktionen aus und klicken Sie auf die Schaltfläche Generieren."
msgid "modem restart"
msgstr "Modem-Neustart"
msgid "reboot"
msgstr "Neustart"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Starten Sie das Modem neu, wenn der Neustart der Schnittstellen keinen Internetzugang wiederhergestellt hat."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Router neu starten, wenn der Neustart der Schnittstellen keinen Internetzugang wiederhergestellt hat."
msgid "Actions in script"
msgstr "Aktionen im Skript"
msgid "Modem actions"
msgstr "Modemaktionen"
msgid "Restart modem using at commands"
msgstr "Modem mit AT-Befehlen neu starten"
msgid "effect depends on modem"
msgstr "Wirkung hängt vom Modem ab"
msgid "Some at commands can also restart the router."
msgstr "Einige AT-Befehle können auch den Router neu starten."
msgid "soft restart"
msgstr "Soft-Neustart"
msgid "hard restart"
msgstr "Hard-Neustart"
msgid "Restart modem via GPIO."
msgstr "Modem über GPIO neu starten."
msgid "Restart modem using GPIO"
msgstr "Modem über GPIO neu starten"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "GPIO für das 4G/5G-Modem auswählen."
msgid "Generate a script"
msgstr "Skript generieren"
msgid "Generate user script"
msgstr "Benutzerskript generieren"
msgid "Generate and save the prepared script."
msgstr "Vorbereitetes Skript generieren und speichern."
msgid "User can add his script or generate a new one from the selection options."
msgstr "Der Benutzer kann sein Skript hinzufügen oder ein neues aus den Auswahloptionen generieren."
msgid "Set test address (only one recommended)."
msgstr "Testadresse festlegen (nur eine empfohlen)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "Die verfügbaren Optionen hängen von der zuvor definierten Hauptaktion (Schnittstellen- oder Router-Neustart) ab."
msgid "user code"
msgstr "Benutzercode"
msgid "Add custom commands before restarting the device."
msgstr "Benutzerdefinierte Befehle hinzufügen, bevor das Gerät neu gestartet wird."
msgid "from script:"
msgstr "aus Skript:"
msgid "USER-SCRIPT:"
msgstr "BENUTZERSKRIPT:"
msgid "Soft modem restart"
msgstr "Soft-Modem-Neustart"
msgid "Hard modem restart"
msgstr "Hard-Modem-Neustart"
msgid "Space for user actions"
msgstr "Platz für Benutzeraktionen"
msgid "Commands before main action"
msgstr "Befehle vor der Hauptaktion"
msgid "Commands after main action"
msgstr "Befehle nach der Hauptaktion"
msgid "Loading..."
msgstr "Wird geladen..."
msgid "Waiting for ping command execution..."
msgstr "Warte auf Ausführung des Ping-Befehls..."
msgid "Watchdog initialized"
msgstr "Watchdog initialisiert"
msgid "uptime"
msgstr "Betriebszeit"
msgid "hosts"
msgstr "Hosts"
+391
View File
@@ -0,0 +1,391 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: es\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
msgid "Connection Monitor"
msgstr "Monitor de conexión"
msgid "Connection monitor settings"
msgstr "Ajustes del monitor de conexión"
msgid "Configuration lite-watchdog"
msgstr "Configuración de lite-watchdog"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "Panel de configuración para lite-watchdog y la aplicación GUI."
msgid "Interface"
msgstr "Interfaz"
msgid "Network interface for Internet access."
msgstr "Interfaz de red para el acceso a Internet."
msgid "Port for communication with the modem"
msgstr "Puerto para comunicación con el módem"
msgid "Select one of the available ttyUSBX ports."
msgstr "Seleccione uno de los puertos ttyUSBX disponibles."
msgid "Please select a port"
msgstr "Por favor, seleccione un puerto"
msgid "Perform a modem restart before resuming the connection."
msgstr "Realizar un reinicio del módem antes de reanudar la conexión."
msgid "Restart modem with AT command"
msgstr "Reiniciar módem con comando AT"
msgid "AT command to restart the modem."
msgstr "Comando AT para reiniciar el módem."
msgid "AT command"
msgstr "Comando AT"
msgid "total checks"
msgstr "total de comprobaciones"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Configuración del monitor de conexión conocido del paquete easyconfig. Más información en el %sforo eko.one.pl%s."
msgid "eko.one.pl forum"
msgstr "foro eko.one.pl"
msgid "Enable a connection monitor."
msgstr "Activar monitor de conexión."
msgid "System startup delay"
msgstr "Retraso de inicio del sistema"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] minuto(s)"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "Se espera un valor decimal entre uno y cincuenta y nueve"
msgid "Address or name"
msgstr "Dirección o nombre"
msgid "Verification period"
msgstr "Periodo de verificación"
msgid "Number of failed checks"
msgstr "Número de comprobaciones fallidas"
msgid "Action"
msgstr "Acción"
msgid "Connection restart"
msgstr "Reiniciar conexión"
msgid "Modem restart"
msgstr "Reiniciar módem"
msgid "Reboot"
msgstr "Reiniciar dispositivo"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "Los cambios han sido guardados. El Monitor de conexión se ha iniciado."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "Los cambios han sido guardados. El Monitor de conexión no está en ejecución."
msgid "Last check"
msgstr "Última comprobación"
msgid "minimum"
msgstr "mínimo"
msgid "average"
msgstr "promedio"
msgid "maximum"
msgstr "máximo"
msgid "Information"
msgstr "Información"
msgid "Basic settings"
msgstr "Ajustes básicos"
msgid "failed"
msgstr "fallido"
msgid "Failed"
msgstr "Fallido"
msgid "out of"
msgstr "de"
msgid "Activity log"
msgstr "Registro de actividad"
msgid "Wrong regular expression"
msgstr "Expresión regular incorrecta"
msgid "No matches..."
msgstr "Sin coincidencias..."
msgid "Clear connection monitor log?"
msgstr "¿Borrar el registro del monitor de conexión?"
msgid "Download error"
msgstr "Error de descarga"
msgid "Unable to load log data:"
msgstr "No se pudo cargar los datos del registro:"
msgid "Entries filter"
msgstr "Filtro de entradas"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "Filtrar entradas usando regexp, presione [Suprimir] para borrar todo el texto"
msgid "Refresh"
msgstr "Actualizar"
msgid "Connection monitor activity log"
msgstr "Registro de actividad del monitor de conexión"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Registro de actividad del monitor de conexión conocido del paquete easyconfig. Más información en el %sforo eko.one.pl%s."
msgid "Show only the last entries"
msgstr "Mostrar solo las últimas entradas"
msgid "Message filter"
msgstr "Filtro de mensajes"
msgid "Refresh log"
msgstr "Actualizar registro"
msgid "Clear log"
msgstr "Borrar registro"
msgid "Download log"
msgstr "Descargar registro"
msgid "Upload log file"
msgstr "Subir archivo de registro"
msgid "Type of messages"
msgstr "Tipo de mensajes"
msgid "All actions"
msgstr "Todas las acciones"
msgid "Only connection problems"
msgstr "Solo problemas de conexión"
msgid "LED settings"
msgstr "Ajustes de LED"
msgid "The LED shows the internet connection status."
msgstr "El LED muestra el estado de la conexión a Internet."
msgid "Select the status LED."
msgstr "Seleccione el LED de estado."
msgid "Edit user script"
msgstr "Editar script de usuario"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "Antes de ejecutar la acción, el sistema llama a un script donde el usuario puede colocar sus propios comandos."
msgid "User script"
msgstr "Script de usuario"
msgid "User-defined commands."
msgstr "Comandos definidos por el usuario."
msgid "Contents have been saved"
msgstr "El contenido ha sido guardado"
msgid "Unable to save the contents"
msgstr "No se pudo guardar el contenido"
msgid "Unable to read the contents"
msgstr "No se pudo leer el contenido"
msgid "Status"
msgstr "Estado"
msgid "ONLINE"
msgstr "EN LÍNEA"
msgid "OFFLINE"
msgstr "DESCONECTADO"
msgid "Restarting interface"
msgstr "Reiniciando interfaz"
msgid "At command was sent to modem"
msgstr "Se envió el comando AT al módem"
msgid "January"
msgstr "Enero"
msgid "February"
msgstr "Febrero"
msgid "March"
msgstr "Marzo"
msgid "April"
msgstr "Abril"
msgid "May"
msgstr "Mayo"
msgid "June"
msgstr "Junio"
msgid "July"
msgstr "Julio"
msgid "August"
msgstr "Agosto"
msgid "September"
msgstr "Septiembre"
msgid "October"
msgstr "Octubre"
msgid "November"
msgstr "Noviembre"
msgid "December"
msgstr "Diciembre"
msgid "Monday"
msgstr "Lunes"
msgid "Tuesday"
msgstr "Martes"
msgid "Wednesday"
msgstr "Miércoles"
msgid "Thursday"
msgstr "Jueves"
msgid "Friday"
msgstr "Viernes"
msgid "Saturday"
msgstr "Sábado"
msgid "Sunday"
msgstr "Domingo"
msgid "User Script Wizard"
msgstr "Asistente de script de usuario"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Sugerencia: No necesita guardar nada en los ajustes. Seleccione las acciones y haga clic en el botón Generar."
msgid "modem restart"
msgstr "reinicio de módem"
msgid "reboot"
msgstr "reinicio de dispositivo"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Reiniciar el módem si el reinicio de las interfaces no restauró el acceso a Internet."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Reiniciar el router si el reinicio de las interfaces no restauró el acceso a Internet."
msgid "Actions in script"
msgstr "Acciones en el script"
msgid "Modem actions"
msgstr "Acciones del módem"
msgid "Restart modem using at commands"
msgstr "Reiniciar módem usando comandos AT"
msgid "effect depends on modem"
msgstr "el efecto depende del módem"
msgid "Some at commands can also restart the router."
msgstr "Algunos comandos AT también pueden reiniciar el router."
msgid "soft restart"
msgstr "reinicio suave (soft)"
msgid "hard restart"
msgstr "reinicio forzado (hard)"
msgid "Restart modem via GPIO."
msgstr "Reiniciar módem mediante GPIO."
msgid "Restart modem using GPIO"
msgstr "Reiniciar módem usando GPIO"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "Seleccione el GPIO relacionado con el módem 4G/5G."
msgid "Generate a script"
msgstr "Generar un script"
msgid "Generate user script"
msgstr "Generar script de usuario"
msgid "Generate and save the prepared script."
msgstr "Generar y guardar el script preparado."
msgid "User can add his script or generate a new one from the selection options."
msgstr "El usuario puede añadir su propio script o generar uno nuevo desde las opciones de selección."
msgid "Set test address (only one recommended)."
msgstr "Establecer dirección de prueba (se recomienda solo una)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "Las opciones disponibles dependen de la acción principal definida previamente (reinicio de interfaz o de router)."
msgid "user code"
msgstr "código de usuario"
msgid "Add custom commands before restarting the device."
msgstr "Añadir comandos personalizados antes de reiniciar el dispositivo."
msgid "from script:"
msgstr "del script:"
msgid "USER-SCRIPT:"
msgstr "SCRIPT-USUARIO:"
msgid "Soft modem restart"
msgstr "Reinicio de módem suave"
msgid "Hard modem restart"
msgstr "Reinicio de módem forzado"
msgid "Space for user actions"
msgstr "Espacio para acciones del usuario"
msgid "Commands before main action"
msgstr "Comandos antes de la acción principal"
msgid "Commands after main action"
msgstr "Comandos después de la acción principal"
msgid "Loading..."
msgstr "Cargando..."
msgid "Waiting for ping command execution..."
msgstr "Esperando la ejecución del comando ping..."
msgid "Watchdog initialized"
msgstr "Watchdog inicializado"
msgid "uptime"
msgstr "tiempo de actividad"
msgid "hosts"
msgstr "hosts"
+400
View File
@@ -0,0 +1,400 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: fr\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
msgid "Connection Monitor"
msgstr "Moniteur de connexion"
msgid "Connection monitor settings"
msgstr "Paramètres du moniteur de connexion"
msgid "Configuration lite-watchdog"
msgstr "Configuration lite-watchdog"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "Panneau de configuration pour l'application lite-watchdog et l'interface graphique."
msgid "Interface"
msgstr "Interface"
msgid "Network interface for Internet access."
msgstr "Interface réseau pour l'accès à Internet."
msgid "Port for communication with the modem"
msgstr "Port de communication avec le modem"
msgid "Select one of the available ttyUSBX ports."
msgstr "Sélectionnez l'un des ports ttyUSBX disponibles."
msgid "Please select a port"
msgstr "Veuillez sélectionner un port"
msgid "Perform a modem restart before resuming the connection."
msgstr "Effectuez un redémarrage du modem avant de reprendre la connexion."
msgid "Restart modem with AT command"
msgstr "Redémarrer le modem avec la commande AT"
msgid "AT command to restart the modem."
msgstr "Commande AT pour redémarrer le modem."
msgid "AT command"
msgstr "Commande AT"
msgid "total checks"
msgstr "vérifications totales"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Configuration du moniteur de connexion du paquet easyconfig. Plus d'informations sur le %sforum eko.one.pl%s."
msgid "eko.one.pl forum"
msgstr "forum eko.one.pl"
msgid "Enable a connection monitor."
msgstr "Activer un moniteur de connexion."
msgid "System startup delay"
msgstr "Délai de démarrage du système"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] minute(s)"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "Une valeur décimale entre un et cinquante-neuf est attendue"
msgid "Address or name"
msgstr "Adresse ou nom"
msgid "Verification period"
msgstr "Période de vérification"
msgid "Number of failed checks"
msgstr "Nombre de vérifications échouées"
msgid "Action"
msgstr "Action"
msgid "Connection restart"
msgstr "Redémarrage de la connexion"
msgid "Modem restart"
msgstr "Redémarrage du modem"
msgid "Reboot"
msgstr "Redémarrage"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "Les modifications ont été enregistrées. Le moniteur de connexion a démarré."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "Les modifications ont été enregistrées. Le moniteur de connexion ne fonctionne pas."
msgid "Last check"
msgstr "Dernière vérification"
msgid "minimum"
msgstr "minimum"
msgid "average"
msgstr "moyenne"
msgid "maximum"
msgstr "maximum"
msgid "Information"
msgstr "Informations"
msgid "Basic settings"
msgstr "Paramètres de base"
msgid "failed"
msgstr "échoué"
msgid "Failed"
msgstr "Échoué"
msgid "out of"
msgstr "sur"
msgid "Activity log"
msgstr "Journal d'activité"
msgid "Wrong regular expression"
msgstr "Expression régulière incorrecte"
msgid "No matches..."
msgstr "Aucun résultat..."
msgid "Clear connection monitor log?"
msgstr "Effacer le journal du moniteur de connexion ?"
msgid "Download error"
msgstr "Erreur de téléchargement"
msgid "Unable to load log data:"
msgstr "Impossible de charger les données du journal :"
msgid "Entries filter"
msgstr "Filtre des entrées"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "Filtrer les entrées avec une expression régulière, appuyer sur [Suppr] pour supprimer tout le texte"
msgid "Refresh"
msgstr "Actualiser"
msgid "Connection monitor activity log"
msgstr "Journal d'activité du moniteur de connexion"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Journal d'activité du moniteur de connexion du paquet easyconfig. Plus d'informations sur le %sforum eko.one.pl%s."
msgid "Show only the last entries"
msgstr "Afficher uniquement les dernières entrées"
msgid "Message filter"
msgstr "Filtre de messages"
msgid "Refresh log"
msgstr "Actualiser le journal"
msgid "Clear log"
msgstr "Effacer le journal"
msgid "Download log"
msgstr "Télécharger le journal"
msgid "Upload log file"
msgstr "Téléverser le fichier journal"
msgid "Type of messages"
msgstr "Type de messages"
msgid "All actions"
msgstr "Toutes les actions"
msgid "Only connection problems"
msgstr "Problèmes de connexion uniquement"
msgid "LED settings"
msgstr "Paramètres LED"
msgid "The LED shows the internet connection status."
msgstr "La LED indique l'état de la connexion Internet."
msgid "Select the status LED."
msgstr "Sélectionner la LED de statut."
msgid "Edit user script"
msgstr "Modifier le script utilisateur"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "Avant d'exécuter l'action, le système appelle un script dans lequel l'utilisateur peut placer ses propres commandes."
msgid "Edit user script"
msgstr "Modifier le script utilisateur"
msgid "User script"
msgstr "Script utilisateur"
msgid "User-defined commands."
msgstr "Commandes définies par l'utilisateur."
msgid "Contents have been saved"
msgstr "Le contenu a été enregistré"
msgid "Unable to save the contents"
msgstr "Impossible d'enregistrer le contenu"
msgid "Unable to read the contents"
msgstr "Impossible de lire le contenu"
msgid "Status"
msgstr "Statut"
msgid "ONLINE"
msgstr "EN LIGNE"
msgid "OFFLINE"
msgstr "HORS LIGNE"
msgid "Action"
msgstr "Action"
msgid "Restarting interface"
msgstr "Redémarrage de l'interface"
msgid "Reboot"
msgstr "Redémarrage"
msgid "At command was sent to modem"
msgstr "La commande AT a été envoyée au modem"
msgid "January"
msgstr "Janvier"
msgid "February"
msgstr "Février"
msgid "March"
msgstr "Mars"
msgid "April"
msgstr "Avril"
msgid "May"
msgstr "Mai"
msgid "June"
msgstr "Juin"
msgid "July"
msgstr "Juillet"
msgid "August"
msgstr "Août"
msgid "September"
msgstr "Septembre"
msgid "October"
msgstr "Octobre"
msgid "November"
msgstr "Novembre"
msgid "December"
msgstr "Décembre"
msgid "Monday"
msgstr "Lundi"
msgid "Tuesday"
msgstr "Mardi"
msgid "Wednesday"
msgstr "Mercredi"
msgid "Thursday"
msgstr "Jeudi"
msgid "Friday"
msgstr "Vendredi"
msgid "Saturday"
msgstr "Samedi"
msgid "Sunday"
msgstr "Dimanche"
msgid "User Script Wizard"
msgstr "Assistant de script utilisateur"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Conseil : Vous n'avez pas besoin de sauvegarder quoi que ce soit dans les paramètres. Sélectionnez les actions et cliquez sur le bouton Générer."
msgid "modem restart"
msgstr "redémarrage du modem"
msgid "reboot"
msgstr "redémarrage"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Redémarrez le modem si le redémarrage des interfaces n'a pas rétabli l'accès à Internet."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Redémarrage du routeur si le redémarrage des interfaces n'a pas rétabli l'accès à Internet."
msgid "Actions in script"
msgstr "Actions dans le script"
msgid "Modem actions"
msgstr "Actions du modem"
msgid "Restart modem using at commands"
msgstr "Redémarrer le modem avec des commandes AT"
msgid "effect depends on modem"
msgstr "l'effet dépend du modem"
msgid "Some at commands can also restart the router."
msgstr "Certaines commandes AT peuvent également redémarrer le routeur."
msgid "soft restart"
msgstr "redémarrage logiciel"
msgid "hard restart"
msgstr "redémarrage matériel"
msgid "Restart modem via GPIO."
msgstr "Redémarrer le modem via GPIO."
msgid "Restart modem using GPIO"
msgstr "Redémarrer le modem via GPIO"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "Sélectionner le GPIO associé au modem 4G/5G."
msgid "Generate a script"
msgstr "Générer un script"
msgid "Generate user script"
msgstr "Générer un script utilisateur"
msgid "Generate and save the prepared script."
msgstr "Générer et sauvegarder le script préparé."
msgid "User can add his script or generate a new one from the selection options."
msgstr "L'utilisateur peut ajouter son script ou en générer un nouveau à partir des options de sélection."
msgid "Set test address (only one recommended)."
msgstr "Définir l'adresse de test (une seule recommandée)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "Les options disponibles dépendent de l'action principale définie précédemment (redémarrage de l'interface ou du routeur)."
msgid "user code"
msgstr "code utilisateur"
msgid "Add custom commands before restarting the device."
msgstr "Ajouter des commandes personnalisées avant de redémarrer l'appareil."
msgid "from script:"
msgstr "depuis le script :"
msgid "USER-SCRIPT:"
msgstr "SCRIPT-UTILISATEUR :"
msgid "Soft modem restart"
msgstr "Redémarrage logiciel du modem"
msgid "Hard modem restart"
msgstr "Redémarrage matériel du modem"
msgid "Space for user actions"
msgstr "Espace pour les actions utilisateur"
msgid "Commands before main action"
msgstr "Commandes avant l'action principale"
msgid "Commands after main action"
msgstr "Commandes après l'action principale"
msgid "Loading..."
msgstr "Chargement..."
msgid "Waiting for ping command execution..."
msgstr "En attente de l'exécution de la commande ping..."
msgid "Watchdog initialized"
msgstr "Watchdog initialisé"
msgid "uptime"
msgstr "disponibilité"
msgid "hosts"
msgstr "hôtes"
+401
View File
@@ -0,0 +1,401 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: lt\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"(n%100<10 || n%100>=20) ? 1 : 2);\n"
msgid "Connection Monitor"
msgstr "Monitor connessione"
msgid "Connection monitor settings"
msgstr "Impostazioni monitor connessione"
msgid "Configuration lite-watchdog"
msgstr "Configurazione lite-watchdog"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "Pannello di configurazione per l'applicazione lite-watchdog e GUI."
msgid "Interface"
msgstr "Interfaccia"
msgid "Network interface for Internet access."
msgstr "Interfaccia di rete per l'accesso a Internet."
msgid "Port for communication with the modem"
msgstr "Porta per la comunicazione con il modem"
msgid "Select one of the available ttyUSBX ports."
msgstr "Selezionare una delle porte ttyUSBX disponibili."
msgid "Please select a port"
msgstr "Selezionare una porta"
msgid "Perform a modem restart before resuming the connection."
msgstr "Eseguire un riavvio del modem prima di riprendere la connessione."
msgid "Restart modem with AT command"
msgstr "Riavvia il modem con il comando AT"
msgid "AT command to restart the modem."
msgstr "Comando AT per riavviare il modem."
msgid "AT command"
msgstr "Comando AT"
msgid "total checks"
msgstr "verifiche totali"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Configurazione del monitor di connessione del pacchetto easyconfig. Ulteriori informazioni nel %sforum eko.one.pl%s."
msgid "eko.one.pl forum"
msgstr "forum eko.one.pl"
msgid "Enable a connection monitor."
msgstr "Attiva un monitor di connessione."
msgid "System startup delay"
msgstr "Ritardo di avvio del sistema"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] minuto/i"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "Si attende un valore decimale tra uno e cinquantanove"
msgid "Address or name"
msgstr "Indirizzo o nome"
msgid "Verification period"
msgstr "Periodo di verifica"
msgid "Number of failed checks"
msgstr "Numero di verifiche fallite"
msgid "Action"
msgstr "Azione"
msgid "Connection restart"
msgstr "Riavvio connessione"
msgid "Modem restart"
msgstr "Riavvio modem"
msgid "Reboot"
msgstr "Riavvio"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "Le modifiche sono state salvate. Il monitor di connessione è stato avviato."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "Le modifiche sono state salvate. Il monitor di connessione non è in esecuzione."
msgid "Last check"
msgstr "Ultima verifica"
msgid "minimum"
msgstr "minimo"
msgid "average"
msgstr "media"
msgid "maximum"
msgstr "massimo"
msgid "Information"
msgstr "Informazioni"
msgid "Basic settings"
msgstr "Impostazioni di base"
msgid "failed"
msgstr "fallite"
msgid "Failed"
msgstr "Fallite"
msgid "out of"
msgstr "su"
msgid "Activity log"
msgstr "Registro attività"
msgid "Wrong regular expression"
msgstr "Espressione regolare errata"
msgid "No matches..."
msgstr "Nessun risultato..."
msgid "Clear connection monitor log?"
msgstr "Cancellare il registro del monitor di connessione?"
msgid "Download error"
msgstr "Errore di download"
msgid "Unable to load log data:"
msgstr "Impossibile caricare i dati del registro:"
msgid "Entries filter"
msgstr "Filtro voci"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "Filtrare le voci con espressione regolare, premere [Canc] per eliminare tutto il testo"
msgid "Refresh"
msgstr "Aggiorna"
msgid "Connection monitor activity log"
msgstr "Registro attività monitor connessione"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Registro attività del monitor di connessione del pacchetto easyconfig. Ulteriori informazioni nel %sforum eko.one.pl%s."
msgid "Show only the last entries"
msgstr "Mostra solo le ultime voci"
msgid "Message filter"
msgstr "Filtro messaggi"
msgid "Refresh log"
msgstr "Aggiorna registro"
msgid "Clear log"
msgstr "Cancella registro"
msgid "Download log"
msgstr "Scarica registro"
msgid "Upload log file"
msgstr "Carica file registro"
msgid "Type of messages"
msgstr "Tipo di messaggi"
msgid "All actions"
msgstr "Tutte le azioni"
msgid "Only connection problems"
msgstr "Solo problemi di connessione"
msgid "LED settings"
msgstr "Impostazioni LED"
msgid "The LED shows the internet connection status."
msgstr "Il LED mostra lo stato della connessione Internet."
msgid "Select the status LED."
msgstr "Selezionare il LED di stato."
msgid "Edit user script"
msgstr "Modifica script utente"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "Prima di eseguire l'azione, il sistema chiama uno script in cui l'utente può inserire i propri comandi."
msgid "Edit user script"
msgstr "Modifica script utente"
msgid "User script"
msgstr "Script utente"
msgid "User-defined commands."
msgstr "Comandi definiti dall'utente."
msgid "Contents have been saved"
msgstr "Il contenuto è stato salvato"
msgid "Unable to save the contents"
msgstr "Impossibile salvare il contenuto"
msgid "Unable to read the contents"
msgstr "Impossibile leggere il contenuto"
msgid "Status"
msgstr "Stato"
msgid "ONLINE"
msgstr "ONLINE"
msgid "OFFLINE"
msgstr "OFFLINE"
msgid "Action"
msgstr "Azione"
msgid "Restarting interface"
msgstr "Riavvio interfaccia"
msgid "Reboot"
msgstr "Riavvio"
msgid "At command was sent to modem"
msgstr "Il comando AT è stato inviato al modem"
msgid "January"
msgstr "Gennaio"
msgid "February"
msgstr "Febbraio"
msgid "March"
msgstr "Marzo"
msgid "April"
msgstr "Aprile"
msgid "May"
msgstr "Maggio"
msgid "June"
msgstr "Giugno"
msgid "July"
msgstr "Luglio"
msgid "August"
msgstr "Agosto"
msgid "September"
msgstr "Settembre"
msgid "October"
msgstr "Ottobre"
msgid "November"
msgstr "Novembre"
msgid "December"
msgstr "Dicembre"
msgid "Monday"
msgstr "Lunedì"
msgid "Tuesday"
msgstr "Martedì"
msgid "Wednesday"
msgstr "Mercoledì"
msgid "Thursday"
msgstr "Giovedì"
msgid "Friday"
msgstr "Venerdì"
msgid "Saturday"
msgstr "Sabato"
msgid "Sunday"
msgstr "Domenica"
msgid "User Script Wizard"
msgstr "Procedura guidata script utente"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Suggerimento: Non è necessario salvare nulla nelle impostazioni. Selezionare le azioni e fare clic sul pulsante Genera."
msgid "modem restart"
msgstr "riavvio modem"
msgid "reboot"
msgstr "riavvio"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Riavviare il modem se il riavvio delle interfacce non ha ripristinato l'accesso a Internet."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Riavvio del router se il riavvio delle interfacce non ha ripristinato l'accesso a Internet."
msgid "Actions in script"
msgstr "Azioni nello script"
msgid "Modem actions"
msgstr "Azioni modem"
msgid "Restart modem using at commands"
msgstr "Riavvia il modem con i comandi AT"
msgid "effect depends on modem"
msgstr "l'effetto dipende dal modem"
msgid "Some at commands can also restart the router."
msgstr "Alcuni comandi AT possono anche riavviare il router."
msgid "soft restart"
msgstr "riavvio software"
msgid "hard restart"
msgstr "riavvio hardware"
msgid "Restart modem via GPIO."
msgstr "Riavvia il modem tramite GPIO."
msgid "Restart modem using GPIO"
msgstr "Riavvia il modem tramite GPIO"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "Selezionare il GPIO relativo al modem 4G/5G."
msgid "Generate a script"
msgstr "Genera uno script"
msgid "Generate user script"
msgstr "Genera script utente"
msgid "Generate and save the prepared script."
msgstr "Genera e salva lo script preparato."
msgid "User can add his script or generate a new one from the selection options."
msgstr "L'utente può aggiungere il proprio script o generarne uno nuovo dalle opzioni di selezione."
msgid "Set test address (only one recommended)."
msgstr "Impostare l'indirizzo di test (si consiglia solo uno)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "Le opzioni disponibili dipendono dall'azione principale definita in precedenza (riavvio dell'interfaccia o del router)."
msgid "user code"
msgstr "codice utente"
msgid "Add custom commands before restarting the device."
msgstr "Aggiungere comandi personalizzati prima di riavviare il dispositivo."
msgid "from script:"
msgstr "dallo script:"
msgid "USER-SCRIPT:"
msgstr "SCRIPT-UTENTE:"
msgid "Soft modem restart"
msgstr "Riavvio software del modem"
msgid "Hard modem restart"
msgstr "Riavvio hardware del modem"
msgid "Space for user actions"
msgstr "Spazio per le azioni utente"
msgid "Commands before main action"
msgstr "Comandi prima dell'azione principale"
msgid "Commands after main action"
msgstr "Comandi dopo l'azione principale"
msgid "Loading..."
msgstr "Caricamento..."
msgid "Waiting for ping command execution..."
msgstr "In attesa dell'esecuzione del comando ping..."
msgid "Watchdog initialized"
msgstr "Watchdog inizializzato"
msgid "uptime"
msgstr "disponibilità"
msgid "hosts"
msgstr "host"
+399
View File
@@ -0,0 +1,399 @@
msgid ""
msgstr ""
"Language: ja\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
msgid "Connection Monitor"
msgstr "接続モニター"
msgid "Connection monitor settings"
msgstr "接続モニター設定"
msgid "Configuration lite-watchdog"
msgstr "lite-watchdog設定"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "lite-watchdogおよびGUIアプリケーションの設定パネル。"
msgid "Interface"
msgstr "インターフェース"
msgid "Network interface for Internet access."
msgstr "インターネットアクセス用ネットワークインターフェース。"
msgid "Port for communication with the modem"
msgstr "モデムとの通信用ポート"
msgid "Select one of the available ttyUSBX ports."
msgstr "利用可能なttyUSBXポートから1つを選択してください。"
msgid "Please select a port"
msgstr "ポートを選択してください"
msgid "Perform a modem restart before resuming the connection."
msgstr "接続を再開する前にモデムを再起動します。"
msgid "Restart modem with AT command"
msgstr "ATコマンドでモデムを再起動"
msgid "AT command to restart the modem."
msgstr "モデムを再起動するATコマンド。"
msgid "AT command"
msgstr "ATコマンド"
msgid "total checks"
msgstr "合計チェック数"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "easyconfigパッケージで知られている接続モニターの設定。詳しくは%seko.one.plフォーラム%sを参照。"
msgid "eko.one.pl forum"
msgstr "eko.one.plフォーラム"
msgid "Enable a connection monitor."
msgstr "接続モニターを有効にします。"
msgid "System startup delay"
msgstr "システム起動遅延"
msgid "[1 - 59] minute(s)"
msgstr "[1~59]分"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "1から59までの10進値を指定してください"
msgid "Address or name"
msgstr "アドレスまたは名前"
msgid "Verification period"
msgstr "検証期間"
msgid "Number of failed checks"
msgstr "失敗したチェック数"
msgid "Action"
msgstr "アクション"
msgid "Connection restart"
msgstr "接続再起動"
msgid "Modem restart"
msgstr "モデム再起動"
msgid "Reboot"
msgstr "再起動"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "変更が保存されました。接続モニターが開始されました。"
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "変更が保存されました。接続モニターは実行されていません。"
msgid "Last check"
msgstr "最後のチェック"
msgid "minimum"
msgstr "最小"
msgid "average"
msgstr "平均"
msgid "maximum"
msgstr "最大"
msgid "Information"
msgstr "情報"
msgid "Basic settings"
msgstr "基本設定"
msgid "failed"
msgstr "失敗"
msgid "Failed"
msgstr "失敗"
msgid "out of"
msgstr "~の中"
msgid "Activity log"
msgstr "アクティビティログ"
msgid "Wrong regular expression"
msgstr "正規表現が間違っています"
msgid "No matches..."
msgstr "マッチしませんでした..."
msgid "Clear connection monitor log?"
msgstr "接続モニターログをクリアしますか?"
msgid "Download error"
msgstr "ダウンロードエラー"
msgid "Unable to load log data:"
msgstr "ログデータを読み込めません:"
msgid "Entries filter"
msgstr "エントリフィルター"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "正規表現を使用してエントリをフィルター処理し、[削除]を押して全テキストを削除"
msgid "Refresh"
msgstr "更新"
msgid "Connection monitor activity log"
msgstr "接続モニターアクティビティログ"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "easyconfigパッケージで知られている接続モニターアクティビティログ。詳しくは%seko.one.plフォーラム%sを参照。"
msgid "Show only the last entries"
msgstr "最後のエントリのみ表示"
msgid "Message filter"
msgstr "メッセージフィルター"
msgid "Refresh log"
msgstr "ログを更新"
msgid "Clear log"
msgstr "ログをクリア"
msgid "Download log"
msgstr "ログをダウンロード"
msgid "Upload log file"
msgstr "ログファイルをアップロード"
msgid "Type of messages"
msgstr "メッセージの種類"
msgid "All actions"
msgstr "すべてのアクション"
msgid "Only connection problems"
msgstr "接続の問題のみ"
msgid "LED settings"
msgstr "LED設定"
msgid "The LED shows the internet connection status."
msgstr "LEDはインターネット接続ステータスを表示します。"
msgid "Select the status LED."
msgstr "ステータスLEDを選択します。"
msgid "Edit user script"
msgstr "ユーザースクリプトを編集"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "アクション実行前にシステムがスクリプトを呼び出し、ユーザーが独自のコマンドを配置できます。"
msgid "Edit user script"
msgstr "ユーザースクリプトを編集"
msgid "User script"
msgstr "ユーザースクリプト"
msgid "User-defined commands."
msgstr "ユーザー定義コマンド。"
msgid "Contents have been saved"
msgstr "コンテンツが保存されました"
msgid "Unable to save the contents"
msgstr "コンテンツを保存できません"
msgid "Unable to read the contents"
msgstr "コンテンツを読み込めません"
msgid "Status"
msgstr "ステータス"
msgid "ONLINE"
msgstr "オンライン"
msgid "OFFLINE"
msgstr "オフライン"
msgid "Action"
msgstr "アクション"
msgid "Restarting interface"
msgstr "インターフェースを再起動中"
msgid "Reboot"
msgstr "再起動"
msgid "At command was sent to modem"
msgstr "ATコマンドがモデムに送信されました"
msgid "January"
msgstr "1月"
msgid "February"
msgstr "2月"
msgid "March"
msgstr "3月"
msgid "April"
msgstr "4月"
msgid "May"
msgstr "5月"
msgid "June"
msgstr "6月"
msgid "July"
msgstr "7月"
msgid "August"
msgstr "8月"
msgid "September"
msgstr "9月"
msgid "October"
msgstr "10月"
msgid "November"
msgstr "11月"
msgid "December"
msgstr "12月"
msgid "Monday"
msgstr "月曜日"
msgid "Tuesday"
msgstr "火曜日"
msgid "Wednesday"
msgstr "水曜日"
msgid "Thursday"
msgstr "木曜日"
msgid "Friday"
msgstr "金曜日"
msgid "Saturday"
msgstr "土曜日"
msgid "Sunday"
msgstr "日曜日"
msgid "User Script Wizard"
msgstr "ユーザースクリプトウィザード"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "ヒント:設定に何も保存する必要はありません。アクションを選択して[生成]ボタンをクリックします。"
msgid "modem restart"
msgstr "モデム再起動"
msgid "reboot"
msgstr "再起動"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "インターフェースの再起動がインターネットアクセスを復元しなかった場合、モデムを再起動します。"
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "インターフェースの再起動がインターネットアクセスを復元しなかった場合、ルーターを再起動します。"
msgid "Actions in script"
msgstr "スクリプト内のアクション"
msgid "Modem actions"
msgstr "モデムアクション"
msgid "Restart modem using at commands"
msgstr "ATコマンドを使用してモデムを再起動"
msgid "effect depends on modem"
msgstr "効果はモデムに依存します"
msgid "Some at commands can also restart the router."
msgstr "一部のATコマンドはルーターの再起動も可能です。"
msgid "soft restart"
msgstr "ソフト再起動"
msgid "hard restart"
msgstr "ハード再起動"
msgid "Restart modem via GPIO."
msgstr "GPIOを介してモデムを再起動します。"
msgid "Restart modem using GPIO"
msgstr "GPIOを使用してモデムを再起動"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "4G/5Gモデムに関連するGPIOを選択します。"
msgid "Generate a script"
msgstr "スクリプトを生成"
msgid "Generate user script"
msgstr "ユーザースクリプトを生成"
msgid "Generate and save the prepared script."
msgstr "準備されたスクリプトを生成して保存します。"
msgid "User can add his script or generate a new one from the selection options."
msgstr "ユーザーは独自のスクリプトを追加するか、選択オプションから新しいスクリプトを生成できます。"
msgid "Set test address (only one recommended)."
msgstr "テストアドレスを設定(1つのみ推奨)。"
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "利用可能なオプションは、以前に定義されたメインアクション(インターフェースまたはルーター再起動)に依存します。"
msgid "user code"
msgstr "ユーザーコード"
msgid "Add custom commands before restarting the device."
msgstr "デバイスを再起動する前にカスタムコマンドを追加します。"
msgid "from script:"
msgstr "スクリプトから:"
msgid "USER-SCRIPT:"
msgstr "ユーザースクリプト:"
msgid "Soft modem restart"
msgstr "モデムソフト再起動"
msgid "Hard modem restart"
msgstr "モデムハード再起動"
msgid "Space for user actions"
msgstr "ユーザーアクションのスペース"
msgid "Commands before main action"
msgstr "メインアクション前のコマンド"
msgid "Commands after main action"
msgstr "メインアクション後のコマンド"
msgid "Loading..."
msgstr "読み込み中..."
msgid "Waiting for ping command execution..."
msgstr "pingコマンド実行を待機中..."
msgid "Watchdog initialized"
msgstr "ウォッチドッグが初期化されました"
msgid "uptime"
msgstr "アップタイム"
msgid "hosts"
msgstr "ホスト"
+399
View File
@@ -0,0 +1,399 @@
msgid ""
msgstr ""
"Language: ko\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
msgid "Connection Monitor"
msgstr "연결 모니터"
msgid "Connection monitor settings"
msgstr "연결 모니터 설정"
msgid "Configuration lite-watchdog"
msgstr "lite-watchdog 설정"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "lite-watchdog 및 GUI 응용 프로그램의 설정 패널입니다."
msgid "Interface"
msgstr "인터페이스"
msgid "Network interface for Internet access."
msgstr "인터넷 접속용 네트워크 인터페이스."
msgid "Port for communication with the modem"
msgstr "모뎀과의 통신용 포트"
msgid "Select one of the available ttyUSBX ports."
msgstr "사용 가능한 ttyUSBX 포트 중 하나를 선택하세요."
msgid "Please select a port"
msgstr "포트를 선택하세요"
msgid "Perform a modem restart before resuming the connection."
msgstr "연결을 재개하기 전에 모뎀을 다시 시작합니다."
msgid "Restart modem with AT command"
msgstr "AT 명령으로 모뎀 다시 시작"
msgid "AT command to restart the modem."
msgstr "모뎀을 다시 시작하는 AT 명령입니다."
msgid "AT command"
msgstr "AT 명령"
msgid "total checks"
msgstr "총 검사"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "easyconfig 패키지에서 알려진 연결 모니터 구성입니다. %seko.one.pl 포럼%s에서 자세한 정보를 확인하세요."
msgid "eko.one.pl forum"
msgstr "eko.one.pl 포럼"
msgid "Enable a connection monitor."
msgstr "연결 모니터를 활성화합니다."
msgid "System startup delay"
msgstr "시스템 시작 지연"
msgid "[1 - 59] minute(s)"
msgstr "[1~59]분"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "1에서 59 사이의 10진수 값을 입력하세요"
msgid "Address or name"
msgstr "주소 또는 이름"
msgid "Verification period"
msgstr "검증 기간"
msgid "Number of failed checks"
msgstr "실패한 검사 수"
msgid "Action"
msgstr "작업"
msgid "Connection restart"
msgstr "연결 재시작"
msgid "Modem restart"
msgstr "모뎀 재시작"
msgid "Reboot"
msgstr "다시 시작"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "변경 사항이 저장되었습니다. 연결 모니터가 시작되었습니다."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "변경 사항이 저장되었습니다. 연결 모니터가 실행되지 않습니다."
msgid "Last check"
msgstr "마지막 검사"
msgid "minimum"
msgstr "최소"
msgid "average"
msgstr "평균"
msgid "maximum"
msgstr "최대"
msgid "Information"
msgstr "정보"
msgid "Basic settings"
msgstr "기본 설정"
msgid "failed"
msgstr "실패"
msgid "Failed"
msgstr "실패"
msgid "out of"
msgstr "~의"
msgid "Activity log"
msgstr "활동 로그"
msgid "Wrong regular expression"
msgstr "정규식이 잘못되었습니다"
msgid "No matches..."
msgstr "일치하는 항목이 없습니다..."
msgid "Clear connection monitor log?"
msgstr "연결 모니터 로그를 삭제하시겠습니까?"
msgid "Download error"
msgstr "다운로드 오류"
msgid "Unable to load log data:"
msgstr "로그 데이터를 로드할 수 없습니다:"
msgid "Entries filter"
msgstr "항목 필터"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "정규식을 사용하여 항목을 필터링하고, [삭제]를 눌러 모든 텍스트 삭제"
msgid "Refresh"
msgstr "새로고침"
msgid "Connection monitor activity log"
msgstr "연결 모니터 활동 로그"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "easyconfig 패키지에서 알려진 연결 모니터 활동 로그입니다. %seko.one.pl 포럼%s에서 자세한 정보를 확인하세요."
msgid "Show only the last entries"
msgstr "마지막 항목만 표시"
msgid "Message filter"
msgstr "메시지 필터"
msgid "Refresh log"
msgstr "로그 새로고침"
msgid "Clear log"
msgstr "로그 삭제"
msgid "Download log"
msgstr "로그 다운로드"
msgid "Upload log file"
msgstr "로그 파일 업로드"
msgid "Type of messages"
msgstr "메시지 유형"
msgid "All actions"
msgstr "모든 작업"
msgid "Only connection problems"
msgstr "연결 문제만"
msgid "LED settings"
msgstr "LED 설정"
msgid "The LED shows the internet connection status."
msgstr "LED는 인터넷 연결 상태를 표시합니다."
msgid "Select the status LED."
msgstr "상태 LED를 선택합니다."
msgid "Edit user script"
msgstr "사용자 스크립트 편집"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "작업 실행 전에 시스템이 사용자가 고유한 명령을 배치할 수 있는 스크립트를 호출합니다."
msgid "Edit user script"
msgstr "사용자 스크립트 편집"
msgid "User script"
msgstr "사용자 스크립트"
msgid "User-defined commands."
msgstr "사용자 정의 명령."
msgid "Contents have been saved"
msgstr "콘텐츠가 저장되었습니다"
msgid "Unable to save the contents"
msgstr "콘텐츠를 저장할 수 없습니다"
msgid "Unable to read the contents"
msgstr "콘텐츠를 읽을 수 없습니다"
msgid "Status"
msgstr "상태"
msgid "ONLINE"
msgstr "온라인"
msgid "OFFLINE"
msgstr "오프라인"
msgid "Action"
msgstr "작업"
msgid "Restarting interface"
msgstr "인터페이스 재시작 중"
msgid "Reboot"
msgstr "다시 시작"
msgid "At command was sent to modem"
msgstr "AT 명령이 모뎀으로 전송되었습니다"
msgid "January"
msgstr "1월"
msgid "February"
msgstr "2월"
msgid "March"
msgstr "3월"
msgid "April"
msgstr "4월"
msgid "May"
msgstr "5월"
msgid "June"
msgstr "6월"
msgid "July"
msgstr "7월"
msgid "August"
msgstr "8월"
msgid "September"
msgstr "9월"
msgid "October"
msgstr "10월"
msgid "November"
msgstr "11월"
msgid "December"
msgstr "12월"
msgid "Monday"
msgstr "월요일"
msgid "Tuesday"
msgstr "화요일"
msgid "Wednesday"
msgstr "수요일"
msgid "Thursday"
msgstr "목요일"
msgid "Friday"
msgstr "금요일"
msgid "Saturday"
msgstr "토요일"
msgid "Sunday"
msgstr "일요일"
msgid "User Script Wizard"
msgstr "사용자 스크립트 마법사"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "힌트: 설정에 아무것도 저장할 필요가 없습니다. 작업을 선택하고 [생성] 버튼을 클릭합니다."
msgid "modem restart"
msgstr "모뎀 재시작"
msgid "reboot"
msgstr "재시작"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "인터페이스 재시작이 인터넷 액세스를 복구하지 못한 경우 모뎀을 재시작합니다."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "인터페이스 재시작이 인터넷 액세스를 복구하지 못한 경우 라우터를 재시작합니다."
msgid "Actions in script"
msgstr "스크립트의 작업"
msgid "Modem actions"
msgstr "모뎀 작업"
msgid "Restart modem using at commands"
msgstr "AT 명령을 사용하여 모뎀 재시작"
msgid "effect depends on modem"
msgstr "효과는 모뎀에 따라 다릅니다"
msgid "Some at commands can also restart the router."
msgstr "일부 AT 명령은 라우터도 재시작할 수 있습니다."
msgid "soft restart"
msgstr "소프트 재시작"
msgid "hard restart"
msgstr "하드 재시작"
msgid "Restart modem via GPIO."
msgstr "GPIO를 통해 모뎀을 재시작합니다."
msgid "Restart modem using GPIO"
msgstr "GPIO를 사용하여 모뎀 재시작"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "4G/5G 모뎀과 관련된 GPIO를 선택합니다."
msgid "Generate a script"
msgstr "스크립트 생성"
msgid "Generate user script"
msgstr "사용자 스크립트 생성"
msgid "Generate and save the prepared script."
msgstr "준비된 스크립트를 생성하고 저장합니다."
msgid "User can add his script or generate a new one from the selection options."
msgstr "사용자는 고유한 스크립트를 추가하거나 선택 옵션에서 새 스크립트를 생성할 수 있습니다."
msgid "Set test address (only one recommended)."
msgstr "테스트 주소 설정(1개만 권장)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "사용 가능한 옵션은 이전에 정의된 주요 작업(인터페이스 또는 라우터 재시작)에 따라 다릅니다."
msgid "user code"
msgstr "사용자 코드"
msgid "Add custom commands before restarting the device."
msgstr "장치를 재시작하기 전에 사용자 정의 명령을 추가합니다."
msgid "from script:"
msgstr "스크립트에서:"
msgid "USER-SCRIPT:"
msgstr "사용자 스크립트:"
msgid "Soft modem restart"
msgstr "모뎀 소프트 재시작"
msgid "Hard modem restart"
msgstr "모뎀 하드 재시작"
msgid "Space for user actions"
msgstr "사용자 작업 공간"
msgid "Commands before main action"
msgstr "주요 작업 전 명령"
msgid "Commands after main action"
msgstr "주요 작업 후 명령"
msgid "Loading..."
msgstr "로드 중..."
msgid "Waiting for ping command execution..."
msgstr "ping 명령 실행 대기 중..."
msgid "Watchdog initialized"
msgstr "워치도그가 초기화되었습니다"
msgid "uptime"
msgstr "가동 시간"
msgid "hosts"
msgstr "호스트"
+400
View File
@@ -0,0 +1,400 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: nl\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
msgid "Connection Monitor"
msgstr "Verbindingsmonitor"
msgid "Connection monitor settings"
msgstr "Instellingen verbindingsmonitor"
msgid "Configuration lite-watchdog"
msgstr "Configuratie lite-watchdog"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "Configuratiepaneel voor lite-watchdog en GUI-applicatie."
msgid "Interface"
msgstr "Interface"
msgid "Network interface for Internet access."
msgstr "Netwerkinterface voor internettoegang."
msgid "Port for communication with the modem"
msgstr "Poort voor communicatie met de modem"
msgid "Select one of the available ttyUSBX ports."
msgstr "Selecteer een van de beschikbare ttyUSBX-poorten."
msgid "Please select a port"
msgstr "Selecteer alstublieft een poort"
msgid "Perform a modem restart before resuming the connection."
msgstr "Voer een modemherstartuit alvorens de verbinding te hervatten."
msgid "Restart modem with AT command"
msgstr "Modem herstarten met AT-commando"
msgid "AT command to restart the modem."
msgstr "AT-commando om de modem opnieuw te starten."
msgid "AT command"
msgstr "AT-commando"
msgid "total checks"
msgstr "totale controles"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Configuratie van de verbindingsmonitor bekend uit het easyconfig-pakket. Meer informatie op het %seko.one.pl-forum%s."
msgid "eko.one.pl forum"
msgstr "eko.one.pl-forum"
msgid "Enable a connection monitor."
msgstr "Schakel een verbindingsmonitor in."
msgid "System startup delay"
msgstr "Systeemstartvertraging"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] minuten"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "Verwacht een decimale waarde tussen een en negenenvijftig"
msgid "Address or name"
msgstr "Adres of naam"
msgid "Verification period"
msgstr "Verificatieperiode"
msgid "Number of failed checks"
msgstr "Aantal mislukte controles"
msgid "Action"
msgstr "Actie"
msgid "Connection restart"
msgstr "Verbinding opnieuw starten"
msgid "Modem restart"
msgstr "Modem herstarten"
msgid "Reboot"
msgstr "Apparaat opnieuw starten"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "Wijzigingen zijn opgeslagen. Verbindingsmonitor is gestart."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "Wijzigingen zijn opgeslagen. Verbindingsmonitor wordt niet uitgevoerd."
msgid "Last check"
msgstr "Laatste controle"
msgid "minimum"
msgstr "minimum"
msgid "average"
msgstr "gemiddelde"
msgid "maximum"
msgstr "maximum"
msgid "Information"
msgstr "Informatie"
msgid "Basic settings"
msgstr "Basisinstellingen"
msgid "failed"
msgstr "mislukt"
msgid "Failed"
msgstr "Mislukt"
msgid "out of"
msgstr "van"
msgid "Activity log"
msgstr "Activiteitenlogboek"
msgid "Wrong regular expression"
msgstr "Onjuiste reguliere expressie"
msgid "No matches..."
msgstr "Geen resultaten..."
msgid "Clear connection monitor log?"
msgstr "Verbindingsmonitorlog wissen?"
msgid "Download error"
msgstr "Downloadfout"
msgid "Unable to load log data:"
msgstr "Kan loggegevens niet laden:"
msgid "Entries filter"
msgstr "Invoerfilter"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "Filter invoeren met behulp van regexp, druk [Delete] om alle tekst te verwijderen"
msgid "Refresh"
msgstr "Vernieuwen"
msgid "Connection monitor activity log"
msgstr "Verbindingsmonitor activiteitenlogboek"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Verbindingsmonitor activiteitenlogboek bekend uit het easyconfig-pakket. Meer informatie op het %seko.one.pl-forum%s."
msgid "Show only the last entries"
msgstr "Alleen de laatste invoeren weergeven"
msgid "Message filter"
msgstr "Berichtfilter"
msgid "Refresh log"
msgstr "Logboek vernieuwen"
msgid "Clear log"
msgstr "Logboek wissen"
msgid "Download log"
msgstr "Logboek downloaden"
msgid "Upload log file"
msgstr "Logbestand uploaden"
msgid "Type of messages"
msgstr "Type berichten"
msgid "All actions"
msgstr "Alle acties"
msgid "Only connection problems"
msgstr "Alleen verbindingsproblemen"
msgid "LED settings"
msgstr "LED-instellingen"
msgid "The LED shows the internet connection status."
msgstr "De LED geeft de status van de internetverbinding aan."
msgid "Select the status LED."
msgstr "Selecteer de status-LED."
msgid "Edit user script"
msgstr "Gebruikersscript bewerken"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "Alvorens de actie uit te voeren, roept het systeem een script aan waarin de gebruiker zijn eigen commando's kan plaatsen."
msgid "Edit user script"
msgstr "Gebruikersscript bewerken"
msgid "User script"
msgstr "Gebruikersscript"
msgid "User-defined commands."
msgstr "Door gebruiker gedefinieerde commando's."
msgid "Contents have been saved"
msgstr "Inhoud is opgeslagen"
msgid "Unable to save the contents"
msgstr "Kan inhoud niet opslaan"
msgid "Unable to read the contents"
msgstr "Kan inhoud niet lezen"
msgid "Status"
msgstr "Status"
msgid "ONLINE"
msgstr "ONLINE"
msgid "OFFLINE"
msgstr "OFFLINE"
msgid "Action"
msgstr "Actie"
msgid "Restarting interface"
msgstr "Verbinding opnieuw starten"
msgid "Reboot"
msgstr "Apparaat opnieuw starten"
msgid "At command was sent to modem"
msgstr "AT-commando is naar modem verzonden"
msgid "January"
msgstr "Januari"
msgid "February"
msgstr "Februari"
msgid "March"
msgstr "Maart"
msgid "April"
msgstr "April"
msgid "May"
msgstr "Mei"
msgid "June"
msgstr "Juni"
msgid "July"
msgstr "Juli"
msgid "August"
msgstr "Augustus"
msgid "September"
msgstr "September"
msgid "October"
msgstr "Oktober"
msgid "November"
msgstr "November"
msgid "December"
msgstr "December"
msgid "Monday"
msgstr "Maandag"
msgid "Tuesday"
msgstr "Dinsdag"
msgid "Wednesday"
msgstr "Woensdag"
msgid "Thursday"
msgstr "Donderdag"
msgid "Friday"
msgstr "Vrijdag"
msgid "Saturday"
msgstr "Zaterdag"
msgid "Sunday"
msgstr "Zondag"
msgid "User Script Wizard"
msgstr "Wizard gebruikersscript"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Hint: U hoeft niets in de instellingen op te slaan. Selecteer de acties en klik op de knop Genereren."
msgid "modem restart"
msgstr "modem herstarten"
msgid "reboot"
msgstr "apparaat opnieuw starten"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Start de modem opnieuw op als het herstarten van de interfaces internettoegangnie heeft hersteld."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Als het herstarten van de interfaces internettoegangnie heeft hersteld, start u de router opnieuw op."
msgid "Actions in script"
msgstr "Acties in script"
msgid "Modem actions"
msgstr "Modemacties"
msgid "Restart modem using at commands"
msgstr "Start modem opnieuw op met AT-commando's."
msgid "effect depends on modem"
msgstr "effect is afhankelijk van modem"
msgid "Some at commands can also restart the router."
msgstr "Sommige AT-commando's kunnen ook de router opnieuw starten."
msgid "soft restart"
msgstr "zachte herstart"
msgid "hard restart"
msgstr "harde herstart"
msgid "Restart modem via GPIO."
msgstr "Modem herstarten via GPIO."
msgid "Restart modem using GPIO"
msgstr "Start modem opnieuw op met behulp van GPIO"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "Selecteer de GPIO met betrekking tot 4G/5G-modem."
msgid "Generate a script"
msgstr "Een script genereren"
msgid "Generate user script"
msgstr "Gebruikersscript genereren"
msgid "Generate and save the prepared script."
msgstr "Genereer en sla het voorbereide script op."
msgid "User can add his script or generate a new one from the selection options."
msgstr "Gebruiker kan zijn script toevoegen of een nieuw genereren uit de selectieopties."
msgid "Set test address (only one recommended)."
msgstr "Stel testadres in (slechts één aanbevolen)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "De beschikbare opties zijn afhankelijk van de eerder gedefinieerde hoofdactie (interface- of routerherstarten)."
msgid "user code"
msgstr "gebruikerscode"
msgid "Add custom commands before restarting the device."
msgstr "Voeg aangepaste commando's toe alvorens het apparaat opnieuw te starten."
msgid "from script:"
msgstr "uit script:"
msgid "USER-SCRIPT:"
msgstr "GEBRUIKERSSCRIPT:"
msgid "Soft modem restart"
msgstr "Zachte modemherstart"
msgid "Hard modem restart"
msgstr "Harde modemherstart"
msgid "Space for user actions"
msgstr "Ruimte voor gebruikersacties"
msgid "Commands before main action"
msgstr "Commando's vóór hoofdactie"
msgid "Commands after main action"
msgstr "Commando's na hoofdactie"
msgid "Loading..."
msgstr "Laden..."
msgid "Waiting for ping command execution..."
msgstr "Wachten op uitvoering van ping-commando..."
msgid "Watchdog initialized"
msgstr "Watchdog geïnitialiseerd"
msgid "uptime"
msgstr "uptime"
msgid "hosts"
msgstr "hosts"
+123 -6
View File
@@ -37,8 +37,14 @@ msgstr "Restart modemu za pomocą polecenia AT"
msgid "AT command to restart the modem."
msgstr "Polecenie AT restartujące modem."
msgid "Configuration of the connection monitor, which is a conversion of the monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Konfiguracja monitora połączenia, który jest konwersją monitora znanego z pakietu easyconfig. Więcej informacji na %sforum eko.one.pl%s."
msgid "AT command"
msgstr "Polecenie AT"
msgid "total checks"
msgstr "łącznie sprawdzeń"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Konfiguracja monitora połączenia znanego z pakietu easyconfig. Więcej informacji na %sforum eko.one.pl%s."
msgid "eko.one.pl forum"
msgstr "forum eko.one.pl"
@@ -68,7 +74,7 @@ msgid "Action"
msgstr "Akcja"
msgid "Connection restart"
msgstr "Restart połączenia z internetem"
msgstr "Ponowne uruchomienie połączenia z internetem"
msgid "Modem restart"
msgstr "Restart modemu"
@@ -139,8 +145,8 @@ msgstr "Odśwież"
msgid "Connection monitor activity log"
msgstr "Dziennik aktywności monitora połączenia"
msgid "Connection monitor activity log, which is a conversion of the monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Dziennik aktywności monitora połączenia, który jest konwersją monitora znanego z pakietu easyconfig. Więcej informacji na %sforum eko.one.pl%s."
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Dziennik aktywności monitora połączenia znanego z pakietu easyconfig. Więcej informacji na %sforum eko.one.pl%s."
msgid "Show only the last entries"
msgstr "Pokaż tylko ostatnie wpisy"
@@ -157,6 +163,9 @@ msgstr "Wyczyść dziennik"
msgid "Download log"
msgstr "Pobierz dziennik"
msgid "Upload log file"
msgstr "Załaduj plik dziennika"
msgid "Type of messages"
msgstr "Rodzaj komunikatów"
@@ -218,7 +227,7 @@ msgid "Reboot"
msgstr "Ponowne uruchomienie urządzenia"
msgid "At command was sent to modem"
msgstr "Polecenie at zostało wysłane do modemu"
msgstr "Wysłano polecenie at do modemu"
msgid "January"
msgstr "Styczeń"
@@ -276,3 +285,111 @@ msgstr "Sobota"
msgid "Sunday"
msgstr "Niedziela"
msgid "User Script Wizard"
msgstr "Kreator skryptów użytkownika"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Wskazówka: Nie musisz niczego zapisywać w ustawieniach. Wybierz akcje i kliknij przycisk Generuj."
msgid "modem restart"
msgstr "restart modemu"
msgid "reboot"
msgstr "ponowne uruchomienie urządzenia"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Uruchom ponownie modem, jeśli restart interfejsu nie przywrócił dostępu do internetu."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Jeśli restart interfejsu nie przywrócił dostępu do internetu, uruchom ponownie router."
msgid "Actions in script"
msgstr "Akcje w skrypcie"
msgid "Modem actions"
msgstr "Obsługa modemu"
msgid "Restart modem using at commands"
msgstr "Uruchom ponownie modem za pomocą poleceń at."
msgid "effect depends on modem"
msgstr "efekt zależy od modemu"
msgid "Some at commands can also restart the router."
msgstr "Niektóre polecenia at mogą również obsługiwać ponowne uruchomienie routera."
msgid "soft restart"
msgstr "miękki restart"
msgid "hard restart"
msgstr "twardy restart"
msgid "Restart modem via GPIO."
msgstr "Restart modemu za pomocą interfejsu GPIO."
msgid "Restart modem using GPIO"
msgstr "Uruchom ponownie modem za pomocą GPIO"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "Wybierz GPIO przypisane do modemu 4G/5G."
msgid "Generate a script"
msgstr "Wygeneruj skrypt"
msgid "Generate user script"
msgstr "Wygeneruj skrypt użytkownika"
msgid "Generate and save the prepared script."
msgstr "Wygeneruj i zapisz przygotowany skrypt."
msgid "User can add his script or generate a new one from the selection options."
msgstr "Użytkownik może dodać swój skrypt lub wygenerować nowy z opcji wyboru."
msgid "Set test address (only one recommended)."
msgstr "Ustaw adres do odpytywania (zalecany tylko jeden)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "Dostępne opcje zależą od zdefiniowanej wcześniej akcji głównej (restartu interfejsu lub routera)."
msgid "user code"
msgstr "kod użytkownika"
msgid "Add custom commands before restarting the device."
msgstr "Przed ponownym uruchomieniem urządzenia dodaj polecenia niestandardowe."
msgid "from script:"
msgstr "ze skryptu:"
msgid "USER-SCRIPT:"
msgstr "Skrypt użytkownika:"
msgid "Soft modem restart"
msgstr "Miękki restart modemu"
msgid "Hard modem restart"
msgstr "Twardy restart modemu"
msgid "Space for user actions"
msgstr "Miejsce na akcje użytkownika"
msgid "Commands before main action"
msgstr "Polecenia przed główną akcją"
msgid "Commands after main action"
msgstr "Polecenia po akcji głównej"
msgid "Loading..."
msgstr "Wczytywanie..."
msgid "Waiting for ping command execution..."
msgstr "Oczekiwanie na wykonanie polecenia ping..."
msgid "Watchdog initialized"
msgstr "Watchdog zainicjowany"
msgid "uptime"
msgstr "czas działania"
msgid "hosts"
msgstr "host(-y)"
+399
View File
@@ -0,0 +1,399 @@
msgid ""
msgstr ""
"Language: pt_BR\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
msgid "Connection Monitor"
msgstr "Monitor de Conexão"
msgid "Connection monitor settings"
msgstr "Configurações do monitor de conexão"
msgid "Configuration lite-watchdog"
msgstr "Configuração lite-watchdog"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "Painel de configuração para aplicativo lite-watchdog e GUI."
msgid "Interface"
msgstr "Interface"
msgid "Network interface for Internet access."
msgstr "Interface de rede para acesso à Internet."
msgid "Port for communication with the modem"
msgstr "Porta para comunicação com o modem"
msgid "Select one of the available ttyUSBX ports."
msgstr "Selecione uma das portas ttyUSBX disponíveis."
msgid "Please select a port"
msgstr "Selecione uma porta"
msgid "Perform a modem restart before resuming the connection."
msgstr "Execute uma reinicialização do modem antes de retomar a conexão."
msgid "Restart modem with AT command"
msgstr "Reiniciar modem com comando AT"
msgid "AT command to restart the modem."
msgstr "Comando AT para reiniciar o modem."
msgid "AT command"
msgstr "Comando AT"
msgid "total checks"
msgstr "verificações totais"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Configuração do monitor de conexão conhecido do pacote easyconfig. Mais informações no %sfórum eko.one.pl%s."
msgid "eko.one.pl forum"
msgstr "fórum eko.one.pl"
msgid "Enable a connection monitor."
msgstr "Ative um monitor de conexão."
msgid "System startup delay"
msgstr "Atraso de inicialização do sistema"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] minuto(s)"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "Esperado um valor decimal entre um e cinquenta e nove"
msgid "Address or name"
msgstr "Endereço ou nome"
msgid "Verification period"
msgstr "Período de verificação"
msgid "Number of failed checks"
msgstr "Número de verificações com falha"
msgid "Action"
msgstr "Ação"
msgid "Connection restart"
msgstr "Reinicializar conexão"
msgid "Modem restart"
msgstr "Reinicializar modem"
msgid "Reboot"
msgstr "Reiniciar"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "As alterações foram salvas. Monitor de Conexão foi iniciado."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "As alterações foram salvas. Monitor de Conexão não está em execução."
msgid "Last check"
msgstr "Última verificação"
msgid "minimum"
msgstr "mínimo"
msgid "average"
msgstr "médio"
msgid "maximum"
msgstr "máximo"
msgid "Information"
msgstr "Informação"
msgid "Basic settings"
msgstr "Configurações básicas"
msgid "failed"
msgstr "falha"
msgid "Failed"
msgstr "Falha"
msgid "out of"
msgstr "de"
msgid "Activity log"
msgstr "Log de atividades"
msgid "Wrong regular expression"
msgstr "Expressão regular incorreta"
msgid "No matches..."
msgstr "Nenhuma correspondência..."
msgid "Clear connection monitor log?"
msgstr "Limpar o log do monitor de conexão?"
msgid "Download error"
msgstr "Erro de download"
msgid "Unable to load log data:"
msgstr "Não é possível carregar dados de log:"
msgid "Entries filter"
msgstr "Filtro de entradas"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "Filtrar entradas usando regexp, pressione [Excluir] para excluir todo o texto"
msgid "Refresh"
msgstr "Atualizar"
msgid "Connection monitor activity log"
msgstr "Log de atividades do monitor de conexão"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Log de atividades do monitor de conexão conhecido do pacote easyconfig. Mais informações no %sfórum eko.one.pl%s."
msgid "Show only the last entries"
msgstr "Mostrar apenas as últimas entradas"
msgid "Message filter"
msgstr "Filtro de mensagens"
msgid "Refresh log"
msgstr "Atualizar log"
msgid "Clear log"
msgstr "Limpar log"
msgid "Download log"
msgstr "Download log"
msgid "Upload log file"
msgstr "Carregar arquivo de log"
msgid "Type of messages"
msgstr "Tipo de mensagens"
msgid "All actions"
msgstr "Todas as ações"
msgid "Only connection problems"
msgstr "Apenas problemas de conexão"
msgid "LED settings"
msgstr "Configurações de LED"
msgid "The LED shows the internet connection status."
msgstr "O LED mostra o status da conexão com a Internet."
msgid "Select the status LED."
msgstr "Selecione o LED de status."
msgid "Edit user script"
msgstr "Editar script do usuário"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "Antes de executar a ação, o sistema chama um script em que o usuário pode inserir seus próprios comandos."
msgid "Edit user script"
msgstr "Editar script do usuário"
msgid "User script"
msgstr "Script do usuário"
msgid "User-defined commands."
msgstr "Comandos definidos pelo usuário."
msgid "Contents have been saved"
msgstr "O conteúdo foi salvo"
msgid "Unable to save the contents"
msgstr "Não é possível salvar o conteúdo"
msgid "Unable to read the contents"
msgstr "Não é possível ler o conteúdo"
msgid "Status"
msgstr "Status"
msgid "ONLINE"
msgstr "Online"
msgid "OFFLINE"
msgstr "Offline"
msgid "Action"
msgstr "Ação"
msgid "Restarting interface"
msgstr "Reiniciando interface"
msgid "Reboot"
msgstr "Reiniciar"
msgid "At command was sent to modem"
msgstr "Comando AT foi enviado para o modem"
msgid "January"
msgstr "Janeiro"
msgid "February"
msgstr "Fevereiro"
msgid "March"
msgstr "Março"
msgid "April"
msgstr "Abril"
msgid "May"
msgstr "Maio"
msgid "June"
msgstr "Junho"
msgid "July"
msgstr "Julho"
msgid "August"
msgstr "Agosto"
msgid "September"
msgstr "Setembro"
msgid "October"
msgstr "Outubro"
msgid "November"
msgstr "Novembro"
msgid "December"
msgstr "Dezembro"
msgid "Monday"
msgstr "Segunda-feira"
msgid "Tuesday"
msgstr "Terça-feira"
msgid "Wednesday"
msgstr "Quarta-feira"
msgid "Thursday"
msgstr "Quinta-feira"
msgid "Friday"
msgstr "Sexta-feira"
msgid "Saturday"
msgstr "Sábado"
msgid "Sunday"
msgstr "Domingo"
msgid "User Script Wizard"
msgstr "Assistente de Script do Usuário"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Dica: Você não precisa salvar nada nas configurações. Selecione as ações e clique no botão Gerar."
msgid "modem restart"
msgstr "reinicializar modem"
msgid "reboot"
msgstr "reinicializar"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Reinicie o modem se reiniciar as interfaces não restaurar o acesso à Internet."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Reiniciar o roteador se reiniciar as interfaces não restaurar o acesso à Internet."
msgid "Actions in script"
msgstr "Ações no script"
msgid "Modem actions"
msgstr "Ações do modem"
msgid "Restart modem using at commands"
msgstr "Reiniciar modem usando comandos AT"
msgid "effect depends on modem"
msgstr "o efeito depende do modem"
msgid "Some at commands can also restart the router."
msgstr "Alguns comandos AT também podem reiniciar o roteador."
msgid "soft restart"
msgstr "reinicialização suave"
msgid "hard restart"
msgstr "reinicialização forçada"
msgid "Restart modem via GPIO."
msgstr "Reiniciar modem via GPIO."
msgid "Restart modem using GPIO"
msgstr "Reiniciar modem usando GPIO"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "Selecione o GPIO relacionado ao modem 4G/5G."
msgid "Generate a script"
msgstr "Gerar um script"
msgid "Generate user script"
msgstr "Gerar script do usuário"
msgid "Generate and save the prepared script."
msgstr "Gere e salve o script preparado."
msgid "User can add his script or generate a new one from the selection options."
msgstr "O usuário pode adicionar seu script ou gerar um novo a partir das opções de seleção."
msgid "Set test address (only one recommended)."
msgstr "Definir endereço de teste (apenas um recomendado)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "As opções disponíveis dependem da ação principal definida anteriormente (reinicialização da interface ou do roteador)."
msgid "user code"
msgstr "código do usuário"
msgid "Add custom commands before restarting the device."
msgstr "Adicione comandos personalizados antes de reiniciar o dispositivo."
msgid "from script:"
msgstr "do script:"
msgid "USER-SCRIPT:"
msgstr "SCRIPT-USUÁRIO:"
msgid "Soft modem restart"
msgstr "Reinicialização suave do modem"
msgid "Hard modem restart"
msgstr "Reinicialização forçada do modem"
msgid "Space for user actions"
msgstr "Espaço para ações do usuário"
msgid "Commands before main action"
msgstr "Comandos antes da ação principal"
msgid "Commands after main action"
msgstr "Comandos após a ação principal"
msgid "Loading..."
msgstr "Carregando..."
msgid "Waiting for ping command execution..."
msgstr "Aguardando execução do comando ping..."
msgid "Watchdog initialized"
msgstr "Watchdog inicializado"
msgid "uptime"
msgstr "tempo de atividade"
msgid "hosts"
msgstr "hosts"
+401
View File
@@ -0,0 +1,401 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: ru\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
msgid "Connection Monitor"
msgstr "Монитор подключения"
msgid "Connection monitor settings"
msgstr "Настройки монитора подключения"
msgid "Configuration lite-watchdog"
msgstr "Конфигурация lite-watchdog"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "Панель настройки для приложения lite-watchdog и графического интерфейса."
msgid "Interface"
msgstr "Интерфейс"
msgid "Network interface for Internet access."
msgstr "Сетевой интерфейс для доступа в Интернет."
msgid "Port for communication with the modem"
msgstr "Порт для связи с модемом"
msgid "Select one of the available ttyUSBX ports."
msgstr "Выберите один из доступных портов ttyUSBX."
msgid "Please select a port"
msgstr "Выберите порт"
msgid "Perform a modem restart before resuming the connection."
msgstr "Выполните перезапуск модема перед возобновлением соединения."
msgid "Restart modem with AT command"
msgstr "Перезапустить модем с помощью команды AT"
msgid "AT command to restart the modem."
msgstr "Команда AT для перезапуска модема."
msgid "AT command"
msgstr "Команда AT"
msgid "total checks"
msgstr "всего проверок"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Конфигурация монитора подключения из пакета easyconfig. Дополнительная информация на %sфоруме eko.one.pl%s."
msgid "eko.one.pl forum"
msgstr "форум eko.one.pl"
msgid "Enable a connection monitor."
msgstr "Включить монитор подключения."
msgid "System startup delay"
msgstr "Задержка запуска системы"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] минут(ы)"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "Ожидается десятичное значение от одного до пятидесяти девяти"
msgid "Address or name"
msgstr "Адрес или имя"
msgid "Verification period"
msgstr "Период проверки"
msgid "Number of failed checks"
msgstr "Количество неудачных проверок"
msgid "Action"
msgstr "Действие"
msgid "Connection restart"
msgstr "Перезапуск соединения"
msgid "Modem restart"
msgstr "Перезапуск модема"
msgid "Reboot"
msgstr "Перезагрузка"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "Изменения сохранены. Монитор подключения запущен."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "Изменения сохранены. Монитор подключения не работает."
msgid "Last check"
msgstr "Последняя проверка"
msgid "minimum"
msgstr "минимум"
msgid "average"
msgstr "среднее"
msgid "maximum"
msgstr "максимум"
msgid "Information"
msgstr "Информация"
msgid "Basic settings"
msgstr "Основные настройки"
msgid "failed"
msgstr "неудачных"
msgid "Failed"
msgstr "Неудачных"
msgid "out of"
msgstr "из"
msgid "Activity log"
msgstr "Журнал активности"
msgid "Wrong regular expression"
msgstr "Неверное регулярное выражение"
msgid "No matches..."
msgstr "Совпадений не найдено..."
msgid "Clear connection monitor log?"
msgstr "Очистить журнал монитора подключения?"
msgid "Download error"
msgstr "Ошибка загрузки"
msgid "Unable to load log data:"
msgstr "Не удаётся загрузить данные журнала:"
msgid "Entries filter"
msgstr "Фильтр записей"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "Фильтровать записи с помощью регулярного выражения, нажмите [Delete] для удаления всего текста"
msgid "Refresh"
msgstr "Обновить"
msgid "Connection monitor activity log"
msgstr "Журнал активности монитора подключения"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Журнал активности монитора подключения из пакета easyconfig. Дополнительная информация на %sфоруме eko.one.pl%s."
msgid "Show only the last entries"
msgstr "Показать только последние записи"
msgid "Message filter"
msgstr "Фильтр сообщений"
msgid "Refresh log"
msgstr "Обновить журнал"
msgid "Clear log"
msgstr "Очистить журнал"
msgid "Download log"
msgstr "Скачать журнал"
msgid "Upload log file"
msgstr "Загрузить файл журнала"
msgid "Type of messages"
msgstr "Тип сообщений"
msgid "All actions"
msgstr "Все действия"
msgid "Only connection problems"
msgstr "Только проблемы с подключением"
msgid "LED settings"
msgstr "Настройки светодиода"
msgid "The LED shows the internet connection status."
msgstr "Светодиод показывает состояние интернет-соединения."
msgid "Select the status LED."
msgstr "Выбрать индикаторный светодиод."
msgid "Edit user script"
msgstr "Редактировать пользовательский скрипт"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "Перед выполнением действия система вызывает скрипт, в котором пользователь может разместить собственные команды."
msgid "Edit user script"
msgstr "Редактировать пользовательский скрипт"
msgid "User script"
msgstr "Пользовательский скрипт"
msgid "User-defined commands."
msgstr "Команды, определённые пользователем."
msgid "Contents have been saved"
msgstr "Содержимое сохранено"
msgid "Unable to save the contents"
msgstr "Не удаётся сохранить содержимое"
msgid "Unable to read the contents"
msgstr "Не удаётся прочитать содержимое"
msgid "Status"
msgstr "Статус"
msgid "ONLINE"
msgstr "ОНЛАЙН"
msgid "OFFLINE"
msgstr "ОФЛАЙН"
msgid "Action"
msgstr "Действие"
msgid "Restarting interface"
msgstr "Перезапуск интерфейса"
msgid "Reboot"
msgstr "Перезагрузка"
msgid "At command was sent to modem"
msgstr "Команда AT отправлена модему"
msgid "January"
msgstr "Январь"
msgid "February"
msgstr "Февраль"
msgid "March"
msgstr "Март"
msgid "April"
msgstr "Апрель"
msgid "May"
msgstr "Май"
msgid "June"
msgstr "Июнь"
msgid "July"
msgstr "Июль"
msgid "August"
msgstr "Август"
msgid "September"
msgstr "Сентябрь"
msgid "October"
msgstr "Октябрь"
msgid "November"
msgstr "Ноябрь"
msgid "December"
msgstr "Декабрь"
msgid "Monday"
msgstr "Понедельник"
msgid "Tuesday"
msgstr "Вторник"
msgid "Wednesday"
msgstr "Среда"
msgid "Thursday"
msgstr "Четверг"
msgid "Friday"
msgstr "Пятница"
msgid "Saturday"
msgstr "Суббота"
msgid "Sunday"
msgstr "Воскресенье"
msgid "User Script Wizard"
msgstr "Мастер пользовательских скриптов"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Подсказка: Вам не нужно ничего сохранять в настройках. Выберите действия и нажмите кнопку Генерировать."
msgid "modem restart"
msgstr "перезапуск модема"
msgid "reboot"
msgstr "перезагрузка"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Перезапустите модем, если перезапуск интерфейсов не восстановил доступ в Интернет."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Перезагрузка маршрутизатора, если перезапуск интерфейсов не восстановил доступ в Интернет."
msgid "Actions in script"
msgstr "Действия в скрипте"
msgid "Modem actions"
msgstr "Действия с модемом"
msgid "Restart modem using at commands"
msgstr "Перезапустить модем с помощью команд AT"
msgid "effect depends on modem"
msgstr "эффект зависит от модема"
msgid "Some at commands can also restart the router."
msgstr "Некоторые команды AT могут также перезапустить маршрутизатор."
msgid "soft restart"
msgstr "мягкая перезагрузка"
msgid "hard restart"
msgstr "жёсткая перезагрузка"
msgid "Restart modem via GPIO."
msgstr "Перезапустить модем через GPIO."
msgid "Restart modem using GPIO"
msgstr "Перезапустить модем через GPIO"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "Выбрать GPIO, связанный с модемом 4G/5G."
msgid "Generate a script"
msgstr "Создать скрипт"
msgid "Generate user script"
msgstr "Создать пользовательский скрипт"
msgid "Generate and save the prepared script."
msgstr "Создать и сохранить подготовленный скрипт."
msgid "User can add his script or generate a new one from the selection options."
msgstr "Пользователь может добавить свой скрипт или создать новый из параметров выбора."
msgid "Set test address (only one recommended)."
msgstr "Задать тестовый адрес (рекомендуется только один)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "Доступные параметры зависят от ранее определённого основного действия (перезапуск интерфейса или маршрутизатора)."
msgid "user code"
msgstr "пользовательский код"
msgid "Add custom commands before restarting the device."
msgstr "Добавить пользовательские команды перед перезапуском устройства."
msgid "from script:"
msgstr "из скрипта:"
msgid "USER-SCRIPT:"
msgstr "ПОЛЬЗОВАТЕЛЬСКИЙ-СКРИПТ:"
msgid "Soft modem restart"
msgstr "Мягкий перезапуск модема"
msgid "Hard modem restart"
msgstr "Жёсткий перезапуск модема"
msgid "Space for user actions"
msgstr "Место для пользовательских действий"
msgid "Commands before main action"
msgstr "Команды перед основным действием"
msgid "Commands after main action"
msgstr "Команды после основного действия"
msgid "Loading..."
msgstr "Загрузка..."
msgid "Waiting for ping command execution..."
msgstr "Ожидание выполнения команды ping..."
msgid "Watchdog initialized"
msgstr "Watchdog инициализирован"
msgid "uptime"
msgstr "время работы"
msgid "hosts"
msgstr "хосты"
+400
View File
@@ -0,0 +1,400 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: vi\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
msgid "Connection Monitor"
msgstr "Giám sát kết nối"
msgid "Connection monitor settings"
msgstr "Cài đặt giám sát kết nối"
msgid "Configuration lite-watchdog"
msgstr "Cấu hình lite-watchdog"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "Bảng cấu hình cho ứng dụng lite-watchdog và giao diện đồ họa."
msgid "Interface"
msgstr "Giao diện mạng"
msgid "Network interface for Internet access."
msgstr "Giao diện mạng để truy cập Internet."
msgid "Port for communication with the modem"
msgstr "Cổng giao tiếp với modem"
msgid "Select one of the available ttyUSBX ports."
msgstr "Chọn một trong các cổng ttyUSBX có sẵn."
msgid "Please select a port"
msgstr "Vui lòng chọn một cổng"
msgid "Perform a modem restart before resuming the connection."
msgstr "Thực hiện khởi động lại modem trước khi tiếp tục kết nối."
msgid "Restart modem with AT command"
msgstr "Khởi động lại modem bằng lệnh AT"
msgid "AT command to restart the modem."
msgstr "Lệnh AT để khởi động lại modem."
msgid "AT command"
msgstr "Lệnh AT"
msgid "total checks"
msgstr "tổng số lần kiểm tra"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Cấu hình giám sát kết nối từ gói easyconfig. Thông tin thêm trên %sdiễn đàn eko.one.pl%s."
msgid "eko.one.pl forum"
msgstr "diễn đàn eko.one.pl"
msgid "Enable a connection monitor."
msgstr "Bật giám sát kết nối."
msgid "System startup delay"
msgstr "Độ trễ khởi động hệ thống"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] phút"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "Yêu cầu giá trị thập phân từ một đến năm mươi chín"
msgid "Address or name"
msgstr "Địa chỉ hoặc tên"
msgid "Verification period"
msgstr "Khoảng thời gian kiểm tra"
msgid "Number of failed checks"
msgstr "Số lần kiểm tra thất bại"
msgid "Action"
msgstr "Hành động"
msgid "Connection restart"
msgstr "Khởi động lại kết nối"
msgid "Modem restart"
msgstr "Khởi động lại modem"
msgid "Reboot"
msgstr "Khởi động lại thiết bị"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "Các thay đổi đã được lưu. Giám sát kết nối đã bắt đầu."
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "Các thay đổi đã được lưu. Giám sát kết nối không hoạt động."
msgid "Last check"
msgstr "Lần kiểm tra cuối"
msgid "minimum"
msgstr "tối thiểu"
msgid "average"
msgstr "trung bình"
msgid "maximum"
msgstr "tối đa"
msgid "Information"
msgstr "Thông tin"
msgid "Basic settings"
msgstr "Cài đặt cơ bản"
msgid "failed"
msgstr "thất bại"
msgid "Failed"
msgstr "Thất bại"
msgid "out of"
msgstr "trong"
msgid "Activity log"
msgstr "Nhật ký hoạt động"
msgid "Wrong regular expression"
msgstr "Biểu thức chính quy không hợp lệ"
msgid "No matches..."
msgstr "Không có kết quả..."
msgid "Clear connection monitor log?"
msgstr "Xóa nhật ký giám sát kết nối?"
msgid "Download error"
msgstr "Lỗi tải xuống"
msgid "Unable to load log data:"
msgstr "Không thể tải dữ liệu nhật ký:"
msgid "Entries filter"
msgstr "Bộ lọc mục"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "Lọc mục bằng biểu thức chính quy, nhấn [Delete] để xóa tất cả văn bản"
msgid "Refresh"
msgstr "Làm mới"
msgid "Connection monitor activity log"
msgstr "Nhật ký hoạt động giám sát kết nối"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "Nhật ký hoạt động giám sát kết nối từ gói easyconfig. Thông tin thêm trên %sdiễn đàn eko.one.pl%s."
msgid "Show only the last entries"
msgstr "Chỉ hiển thị các mục cuối cùng"
msgid "Message filter"
msgstr "Bộ lọc thông báo"
msgid "Refresh log"
msgstr "Làm mới nhật ký"
msgid "Clear log"
msgstr "Xóa nhật ký"
msgid "Download log"
msgstr "Tải nhật ký"
msgid "Upload log file"
msgstr "Tải lên tệp nhật ký"
msgid "Type of messages"
msgstr "Loại thông báo"
msgid "All actions"
msgstr "Tất cả hành động"
msgid "Only connection problems"
msgstr "Chỉ sự cố kết nối"
msgid "LED settings"
msgstr "Cài đặt đèn LED"
msgid "The LED shows the internet connection status."
msgstr "Đèn LED hiển thị trạng thái kết nối Internet."
msgid "Select the status LED."
msgstr "Chọn đèn LED trạng thái."
msgid "Edit user script"
msgstr "Chỉnh sửa tập lệnh người dùng"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "Trước khi thực hiện hành động, hệ thống gọi một tập lệnh mà người dùng có thể đặt các lệnh của riêng mình."
msgid "Edit user script"
msgstr "Chỉnh sửa tập lệnh người dùng"
msgid "User script"
msgstr "Tập lệnh người dùng"
msgid "User-defined commands."
msgstr "Các lệnh do người dùng định nghĩa."
msgid "Contents have been saved"
msgstr "Nội dung đã được lưu"
msgid "Unable to save the contents"
msgstr "Không thể lưu nội dung"
msgid "Unable to read the contents"
msgstr "Không thể đọc nội dung"
msgid "Status"
msgstr "Trạng thái"
msgid "ONLINE"
msgstr "TRỰC TUYẾN"
msgid "OFFLINE"
msgstr "NGOẠI TUYẾN"
msgid "Action"
msgstr "Hành động"
msgid "Restarting interface"
msgstr "Khởi động lại giao diện mạng"
msgid "Reboot"
msgstr "Khởi động lại thiết bị"
msgid "At command was sent to modem"
msgstr "Lệnh AT đã được gửi đến modem"
msgid "January"
msgstr "Tháng Một"
msgid "February"
msgstr "Tháng Hai"
msgid "March"
msgstr "Tháng Ba"
msgid "April"
msgstr "Tháng Tư"
msgid "May"
msgstr "Tháng Năm"
msgid "June"
msgstr "Tháng Sáu"
msgid "July"
msgstr "Tháng Bảy"
msgid "August"
msgstr "Tháng Tám"
msgid "September"
msgstr "Tháng Chín"
msgid "October"
msgstr "Tháng Mười"
msgid "November"
msgstr "Tháng Mười Một"
msgid "December"
msgstr "Tháng Mười Hai"
msgid "Monday"
msgstr "Thứ Hai"
msgid "Tuesday"
msgstr "Thứ Ba"
msgid "Wednesday"
msgstr "Thứ Tư"
msgid "Thursday"
msgstr "Thứ Năm"
msgid "Friday"
msgstr "Thứ Sáu"
msgid "Saturday"
msgstr "Thứ Bảy"
msgid "Sunday"
msgstr "Chủ Nhật"
msgid "User Script Wizard"
msgstr "Trình hướng dẫn tập lệnh người dùng"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "Gợi ý: Bạn không cần lưu bất cứ điều gì trong cài đặt. Chọn các hành động và nhấp vào nút Tạo."
msgid "modem restart"
msgstr "khởi động lại modem"
msgid "reboot"
msgstr "khởi động lại thiết bị"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "Khởi động lại modem nếu khởi động lại giao diện không khôi phục được truy cập Internet."
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "Khởi động lại bộ định tuyến nếu khởi động lại giao diện không khôi phục được truy cập Internet."
msgid "Actions in script"
msgstr "Hành động trong tập lệnh"
msgid "Modem actions"
msgstr "Hành động modem"
msgid "Restart modem using at commands"
msgstr "Khởi động lại modem bằng lệnh AT"
msgid "effect depends on modem"
msgstr "hiệu quả phụ thuộc vào modem"
msgid "Some at commands can also restart the router."
msgstr "Một số lệnh AT cũng có thể khởi động lại bộ định tuyến."
msgid "soft restart"
msgstr "khởi động lại mềm"
msgid "hard restart"
msgstr "khởi động lại cứng"
msgid "Restart modem via GPIO."
msgstr "Khởi động lại modem qua GPIO."
msgid "Restart modem using GPIO"
msgstr "Khởi động lại modem qua GPIO"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "Chọn GPIO liên quan đến modem 4G/5G."
msgid "Generate a script"
msgstr "Tạo tập lệnh"
msgid "Generate user script"
msgstr "Tạo tập lệnh người dùng"
msgid "Generate and save the prepared script."
msgstr "Tạo và lưu tập lệnh đã chuẩn bị."
msgid "User can add his script or generate a new one from the selection options."
msgstr "Người dùng có thể thêm tập lệnh của mình hoặc tạo tập lệnh mới từ các tùy chọn."
msgid "Set test address (only one recommended)."
msgstr "Đặt địa chỉ kiểm tra (chỉ khuyến nghị một địa chỉ)."
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "Các tùy chọn có sẵn phụ thuộc vào hành động chính đã định nghĩa trước (khởi động lại giao diện hoặc bộ định tuyến)."
msgid "user code"
msgstr "mã người dùng"
msgid "Add custom commands before restarting the device."
msgstr "Thêm các lệnh tùy chỉnh trước khi khởi động lại thiết bị."
msgid "from script:"
msgstr "từ tập lệnh:"
msgid "USER-SCRIPT:"
msgstr "TẬP-LỆNH-NGƯỜI-DÙNG:"
msgid "Soft modem restart"
msgstr "Khởi động lại modem mềm"
msgid "Hard modem restart"
msgstr "Khởi động lại modem cứng"
msgid "Space for user actions"
msgstr "Không gian cho hành động người dùng"
msgid "Commands before main action"
msgstr "Lệnh trước hành động chính"
msgid "Commands after main action"
msgstr "Lệnh sau hành động chính"
msgid "Loading..."
msgstr "Đang tải..."
msgid "Waiting for ping command execution..."
msgstr "Đang chờ thực thi lệnh ping..."
msgid "Watchdog initialized"
msgstr "Watchdog đã khởi tạo"
msgid "uptime"
msgstr "thời gian hoạt động"
msgid "hosts"
msgstr "máy chủ"
+1
View File
@@ -0,0 +1 @@
zh_Hans
@@ -0,0 +1,400 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: zh_Hans\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
msgid "Connection Monitor"
msgstr "连接监控器"
msgid "Connection monitor settings"
msgstr "连接监控器设置"
msgid "Configuration lite-watchdog"
msgstr "lite-watchdog 配置"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "lite-watchdog 及图形界面应用程序的配置面板。"
msgid "Interface"
msgstr "网络接口"
msgid "Network interface for Internet access."
msgstr "用于访问互联网的网络接口。"
msgid "Port for communication with the modem"
msgstr "与调制解调器通信的端口"
msgid "Select one of the available ttyUSBX ports."
msgstr "选择一个可用的 ttyUSBX 端口。"
msgid "Please select a port"
msgstr "请选择一个端口"
msgid "Perform a modem restart before resuming the connection."
msgstr "恢复连接前请重启调制解调器。"
msgid "Restart modem with AT command"
msgstr "使用 AT 命令重启调制解调器"
msgid "AT command to restart the modem."
msgstr "用于重启调制解调器的 AT 命令。"
msgid "AT command"
msgstr "AT 命令"
msgid "total checks"
msgstr "检查总次数"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "来自 easyconfig 软件包的连接监控器配置。更多信息请访问 %seko.one.pl 论坛%s。"
msgid "eko.one.pl forum"
msgstr "eko.one.pl 论坛"
msgid "Enable a connection monitor."
msgstr "启用连接监控器。"
msgid "System startup delay"
msgstr "系统启动延迟"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] 分钟"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "请输入 1 到 59 之间的整数值"
msgid "Address or name"
msgstr "地址或名称"
msgid "Verification period"
msgstr "检查周期"
msgid "Number of failed checks"
msgstr "失败检查次数"
msgid "Action"
msgstr "操作"
msgid "Connection restart"
msgstr "重启连接"
msgid "Modem restart"
msgstr "重启调制解调器"
msgid "Reboot"
msgstr "重启设备"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "更改已保存。连接监控器已启动。"
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "更改已保存。连接监控器未运行。"
msgid "Last check"
msgstr "上次检查"
msgid "minimum"
msgstr "最小值"
msgid "average"
msgstr "平均值"
msgid "maximum"
msgstr "最大值"
msgid "Information"
msgstr "信息"
msgid "Basic settings"
msgstr "基本设置"
msgid "failed"
msgstr "失败"
msgid "Failed"
msgstr "失败"
msgid "out of"
msgstr "共"
msgid "Activity log"
msgstr "活动日志"
msgid "Wrong regular expression"
msgstr "正则表达式错误"
msgid "No matches..."
msgstr "无匹配结果..."
msgid "Clear connection monitor log?"
msgstr "清除连接监控器日志?"
msgid "Download error"
msgstr "下载错误"
msgid "Unable to load log data:"
msgstr "无法加载日志数据:"
msgid "Entries filter"
msgstr "条目过滤器"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "使用正则表达式过滤条目,按 [Delete] 删除所有文本"
msgid "Refresh"
msgstr "刷新"
msgid "Connection monitor activity log"
msgstr "连接监控器活动日志"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "来自 easyconfig 软件包的连接监控器活动日志。更多信息请访问 %seko.one.pl 论坛%s。"
msgid "Show only the last entries"
msgstr "仅显示最新条目"
msgid "Message filter"
msgstr "消息过滤器"
msgid "Refresh log"
msgstr "刷新日志"
msgid "Clear log"
msgstr "清除日志"
msgid "Download log"
msgstr "下载日志"
msgid "Upload log file"
msgstr "上传日志文件"
msgid "Type of messages"
msgstr "消息类型"
msgid "All actions"
msgstr "所有操作"
msgid "Only connection problems"
msgstr "仅连接问题"
msgid "LED settings"
msgstr "LED 设置"
msgid "The LED shows the internet connection status."
msgstr "LED 显示互联网连接状态。"
msgid "Select the status LED."
msgstr "选择状态 LED。"
msgid "Edit user script"
msgstr "编辑用户脚本"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "执行操作前,系统调用一个脚本,用户可在其中放置自定义命令。"
msgid "Edit user script"
msgstr "编辑用户脚本"
msgid "User script"
msgstr "用户脚本"
msgid "User-defined commands."
msgstr "用户自定义命令。"
msgid "Contents have been saved"
msgstr "内容已保存"
msgid "Unable to save the contents"
msgstr "无法保存内容"
msgid "Unable to read the contents"
msgstr "无法读取内容"
msgid "Status"
msgstr "状态"
msgid "ONLINE"
msgstr "在线"
msgid "OFFLINE"
msgstr "离线"
msgid "Action"
msgstr "操作"
msgid "Restarting interface"
msgstr "正在重启网络接口"
msgid "Reboot"
msgstr "重启设备"
msgid "At command was sent to modem"
msgstr "AT 命令已发送至调制解调器"
msgid "January"
msgstr "一月"
msgid "February"
msgstr "二月"
msgid "March"
msgstr "三月"
msgid "April"
msgstr "四月"
msgid "May"
msgstr "五月"
msgid "June"
msgstr "六月"
msgid "July"
msgstr "七月"
msgid "August"
msgstr "八月"
msgid "September"
msgstr "九月"
msgid "October"
msgstr "十月"
msgid "November"
msgstr "十一月"
msgid "December"
msgstr "十二月"
msgid "Monday"
msgstr "星期一"
msgid "Tuesday"
msgstr "星期二"
msgid "Wednesday"
msgstr "星期三"
msgid "Thursday"
msgstr "星期四"
msgid "Friday"
msgstr "星期五"
msgid "Saturday"
msgstr "星期六"
msgid "Sunday"
msgstr "星期日"
msgid "User Script Wizard"
msgstr "用户脚本向导"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "提示:无需在设置中保存任何内容。选择操作并点击生成按钮。"
msgid "modem restart"
msgstr "重启调制解调器"
msgid "reboot"
msgstr "重启设备"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "如果重启接口未能恢复互联网访问,请重启调制解调器。"
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "如果重启接口未能恢复互联网访问,请重启路由器。"
msgid "Actions in script"
msgstr "脚本中的操作"
msgid "Modem actions"
msgstr "调制解调器操作"
msgid "Restart modem using at commands"
msgstr "使用 AT 命令重启调制解调器"
msgid "effect depends on modem"
msgstr "效果取决于调制解调器"
msgid "Some at commands can also restart the router."
msgstr "某些 AT 命令也可以重启路由器。"
msgid "soft restart"
msgstr "软重启"
msgid "hard restart"
msgstr "硬重启"
msgid "Restart modem via GPIO."
msgstr "通过 GPIO 重启调制解调器。"
msgid "Restart modem using GPIO"
msgstr "通过 GPIO 重启调制解调器"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "选择与 4G/5G 调制解调器相关的 GPIO。"
msgid "Generate a script"
msgstr "生成脚本"
msgid "Generate user script"
msgstr "生成用户脚本"
msgid "Generate and save the prepared script."
msgstr "生成并保存准备好的脚本。"
msgid "User can add his script or generate a new one from the selection options."
msgstr "用户可以添加自己的脚本或从选项中生成新脚本。"
msgid "Set test address (only one recommended)."
msgstr "设置测试地址(建议仅设置一个)。"
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "可用选项取决于之前定义的主操作(接口或路由器重启)。"
msgid "user code"
msgstr "用户代码"
msgid "Add custom commands before restarting the device."
msgstr "在重启设备前添加自定义命令。"
msgid "from script:"
msgstr "来自脚本:"
msgid "USER-SCRIPT:"
msgstr "用户脚本:"
msgid "Soft modem restart"
msgstr "调制解调器软重启"
msgid "Hard modem restart"
msgstr "调制解调器硬重启"
msgid "Space for user actions"
msgstr "用户操作空间"
msgid "Commands before main action"
msgstr "主操作前的命令"
msgid "Commands after main action"
msgstr "主操作后的命令"
msgid "Loading..."
msgstr "正在加载..."
msgid "Waiting for ping command execution..."
msgstr "等待执行 ping 命令..."
msgid "Watchdog initialized"
msgstr "看门狗已初始化"
msgid "uptime"
msgstr "运行时间"
msgid "hosts"
msgstr "主机"
@@ -0,0 +1,400 @@
msgid ""
msgstr ""
"Language-Team: Rafał Wabik (IceG)\n"
"Language: zh_Hant\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
msgid "Connection Monitor"
msgstr "連線監控器"
msgid "Connection monitor settings"
msgstr "連線監控器設定"
msgid "Configuration lite-watchdog"
msgstr "lite-watchdog 設定"
msgid "Configuration panel for lite-watchdog and gui application."
msgstr "lite-watchdog 及圖形介面應用程式的設定面板。"
msgid "Interface"
msgstr "網路介面"
msgid "Network interface for Internet access."
msgstr "用於存取網際網路的網路介面。"
msgid "Port for communication with the modem"
msgstr "與數據機通訊的連接埠"
msgid "Select one of the available ttyUSBX ports."
msgstr "選擇一個可用的 ttyUSBX 連接埠。"
msgid "Please select a port"
msgstr "請選擇一個連接埠"
msgid "Perform a modem restart before resuming the connection."
msgstr "恢復連線前請重新啟動數據機。"
msgid "Restart modem with AT command"
msgstr "使用 AT 命令重新啟動數據機"
msgid "AT command to restart the modem."
msgstr "用於重新啟動數據機的 AT 命令。"
msgid "AT command"
msgstr "AT 命令"
msgid "total checks"
msgstr "檢查總次數"
msgid "Configuration of the connection monitor known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "來自 easyconfig 套件的連線監控器設定。更多資訊請訪問 %seko.one.pl 論壇%s。"
msgid "eko.one.pl forum"
msgstr "eko.one.pl 論壇"
msgid "Enable a connection monitor."
msgstr "啟用連線監控器。"
msgid "System startup delay"
msgstr "系統啟動延遲"
msgid "[1 - 59] minute(s)"
msgstr "[1 - 59] 分鐘"
msgid "Expect a decimal value between one and fifty-nine"
msgstr "請輸入 1 到 59 之間的整數值"
msgid "Address or name"
msgstr "位址或名稱"
msgid "Verification period"
msgstr "檢查週期"
msgid "Number of failed checks"
msgstr "失敗檢查次數"
msgid "Action"
msgstr "操作"
msgid "Connection restart"
msgstr "重新啟動連線"
msgid "Modem restart"
msgstr "重新啟動數據機"
msgid "Reboot"
msgstr "重新啟動裝置"
msgid "Changes have been saved. Connection Monitor has started."
msgstr "變更已儲存。連線監控器已啟動。"
msgid "Changes have been saved. Connection Monitor is not running."
msgstr "變更已儲存。連線監控器未執行。"
msgid "Last check"
msgstr "上次檢查"
msgid "minimum"
msgstr "最小值"
msgid "average"
msgstr "平均值"
msgid "maximum"
msgstr "最大值"
msgid "Information"
msgstr "資訊"
msgid "Basic settings"
msgstr "基本設定"
msgid "failed"
msgstr "失敗"
msgid "Failed"
msgstr "失敗"
msgid "out of"
msgstr "共"
msgid "Activity log"
msgstr "活動記錄"
msgid "Wrong regular expression"
msgstr "正規表示式錯誤"
msgid "No matches..."
msgstr "無符合結果..."
msgid "Clear connection monitor log?"
msgstr "清除連線監控器記錄?"
msgid "Download error"
msgstr "下載錯誤"
msgid "Unable to load log data:"
msgstr "無法載入記錄資料:"
msgid "Entries filter"
msgstr "項目篩選器"
msgid "Filter entries using regexp, press [Delete] to delete all text"
msgstr "使用正規表示式篩選項目,按 [Delete] 刪除所有文字"
msgid "Refresh"
msgstr "重新整理"
msgid "Connection monitor activity log"
msgstr "連線監控器活動記錄"
msgid "Connection monitor activity log known from the easyconfig package. More information on the %seko.one.pl forum%s."
msgstr "來自 easyconfig 套件的連線監控器活動記錄。更多資訊請訪問 %seko.one.pl 論壇%s。"
msgid "Show only the last entries"
msgstr "僅顯示最新項目"
msgid "Message filter"
msgstr "訊息篩選器"
msgid "Refresh log"
msgstr "重新整理記錄"
msgid "Clear log"
msgstr "清除記錄"
msgid "Download log"
msgstr "下載記錄"
msgid "Upload log file"
msgstr "上傳記錄檔案"
msgid "Type of messages"
msgstr "訊息類型"
msgid "All actions"
msgstr "所有操作"
msgid "Only connection problems"
msgstr "僅連線問題"
msgid "LED settings"
msgstr "LED 設定"
msgid "The LED shows the internet connection status."
msgstr "LED 顯示網際網路連線狀態。"
msgid "Select the status LED."
msgstr "選擇狀態 LED。"
msgid "Edit user script"
msgstr "編輯使用者指令碼"
msgid "Before executing the action, system calls a script in which user can place his own commands."
msgstr "執行操作前,系統呼叫一個指令碼,使用者可在其中放置自訂命令。"
msgid "Edit user script"
msgstr "編輯使用者指令碼"
msgid "User script"
msgstr "使用者指令碼"
msgid "User-defined commands."
msgstr "使用者自訂命令。"
msgid "Contents have been saved"
msgstr "內容已儲存"
msgid "Unable to save the contents"
msgstr "無法儲存內容"
msgid "Unable to read the contents"
msgstr "無法讀取內容"
msgid "Status"
msgstr "狀態"
msgid "ONLINE"
msgstr "線上"
msgid "OFFLINE"
msgstr "離線"
msgid "Action"
msgstr "操作"
msgid "Restarting interface"
msgstr "正在重新啟動網路介面"
msgid "Reboot"
msgstr "重新啟動裝置"
msgid "At command was sent to modem"
msgstr "AT 命令已傳送至數據機"
msgid "January"
msgstr "一月"
msgid "February"
msgstr "二月"
msgid "March"
msgstr "三月"
msgid "April"
msgstr "四月"
msgid "May"
msgstr "五月"
msgid "June"
msgstr "六月"
msgid "July"
msgstr "七月"
msgid "August"
msgstr "八月"
msgid "September"
msgstr "九月"
msgid "October"
msgstr "十月"
msgid "November"
msgstr "十一月"
msgid "December"
msgstr "十二月"
msgid "Monday"
msgstr "星期一"
msgid "Tuesday"
msgstr "星期二"
msgid "Wednesday"
msgstr "星期三"
msgid "Thursday"
msgstr "星期四"
msgid "Friday"
msgstr "星期五"
msgid "Saturday"
msgstr "星期六"
msgid "Sunday"
msgstr "星期日"
msgid "User Script Wizard"
msgstr "使用者指令碼精靈"
msgid "Hint: You do not need to save anything in the settings. Select the actions and click the Generate button."
msgstr "提示:無需在設定中儲存任何內容。選擇操作並點擊產生按鈕。"
msgid "modem restart"
msgstr "重新啟動數據機"
msgid "reboot"
msgstr "重新啟動裝置"
msgid "Restart modem if restarting the interfaces did not restore internet access."
msgstr "如果重新啟動介面未能恢復網際網路存取,請重新啟動數據機。"
msgid "Router reboot if restarting the interfaces did not restore internet access."
msgstr "如果重新啟動介面未能恢復網際網路存取,請重新啟動路由器。"
msgid "Actions in script"
msgstr "指令碼中的操作"
msgid "Modem actions"
msgstr "數據機操作"
msgid "Restart modem using at commands"
msgstr "使用 AT 命令重新啟動數據機"
msgid "effect depends on modem"
msgstr "效果取決於數據機"
msgid "Some at commands can also restart the router."
msgstr "某些 AT 命令也可以重新啟動路由器。"
msgid "soft restart"
msgstr "軟重啟"
msgid "hard restart"
msgstr "硬重啟"
msgid "Restart modem via GPIO."
msgstr "透過 GPIO 重新啟動數據機。"
msgid "Restart modem using GPIO"
msgstr "透過 GPIO 重新啟動數據機"
msgid "Select the GPIO related to 4G/5G modem."
msgstr "選擇與 4G/5G 數據機相關的 GPIO。"
msgid "Generate a script"
msgstr "產生指令碼"
msgid "Generate user script"
msgstr "產生使用者指令碼"
msgid "Generate and save the prepared script."
msgstr "產生並儲存準備好的指令碼。"
msgid "User can add his script or generate a new one from the selection options."
msgstr "使用者可以新增自己的指令碼或從選項中產生新指令碼。"
msgid "Set test address (only one recommended)."
msgstr "設定測試位址(建議僅設定一個)。"
msgid "The available options depend on the previously defined main action (interface or router restart)."
msgstr "可用選項取決於之前定義的主操作(介面或路由器重新啟動)。"
msgid "user code"
msgstr "使用者程式碼"
msgid "Add custom commands before restarting the device."
msgstr "在重新啟動裝置前新增自訂命令。"
msgid "from script:"
msgstr "來自指令碼:"
msgid "USER-SCRIPT:"
msgstr "使用者指令碼:"
msgid "Soft modem restart"
msgstr "數據機軟重啟"
msgid "Hard modem restart"
msgstr "數據機硬重啟"
msgid "Space for user actions"
msgstr "使用者操作空間"
msgid "Commands before main action"
msgstr "主操作前的命令"
msgid "Commands after main action"
msgstr "主操作後的命令"
msgid "Loading..."
msgstr "正在載入..."
msgid "Waiting for ping command execution..."
msgstr "等待執行 ping 命令..."
msgid "Watchdog initialized"
msgstr "看門狗已初始化"
msgid "uptime"
msgstr "運行時間"
msgid "hosts"
msgstr "主機"
@@ -1,9 +1,7 @@
#!/bin/sh
# Copyright 2020-2023 Rafał Wabik (IceG) - From eko.one.pl forum
# Copyright 2020-2026 Rafał Wabik (IceG) - From eko.one.pl forum
# MIT License
chmod +x /sbin/watchdog2cron.sh 2>&1 &
chmod +x /sbin/refresh2cron.sh 2>&1 &
chmod +x /usr/bin/lite-watchdog-data.sh 2>&1 &
chmod +x /usr/bin/lite_watchdog.sh 2>&1 &
chmod +x /etc/lite_watchdog.user 2>&1 &
@@ -1,25 +0,0 @@
#!/bin/sh
[ -e /etc/crontabs/root ] || touch /etc/crontabs/root
if grep -q "watchdog" /etc/crontabs/root; then
grep -v "watchdog" /etc/crontabs/root > /tmp/new_cron
mv /tmp/new_cron /etc/crontabs/root
/etc/init.d/cron restart
fi
sleep 2
if ! grep -q "watchdog" /etc/crontabs/root; then
DY=$(uci -q get watchdog.@watchdog[0].delay)
PD=$(uci -q get watchdog.@watchdog[0].period)
DT=$(uci -q get watchdog.@watchdog[0].dest)
CT=$(uci -q get watchdog.@watchdog[0].period_count)
AN=$(uci -q get watchdog.@watchdog[0].action)
echo "*/$PD * * * * /usr/bin/lite_watchdog.sh $DY 3 $DT $CT $AN" >> /etc/crontabs/root
/etc/init.d/cron restart
fi
exit 0
@@ -1,31 +0,0 @@
#!/bin/sh
[ -e /etc/crontabs/root ] || touch /etc/crontabs/root
sleep 4
ONF=$(uci -q get watchdog.@watchdog[0].enabled)
if [ "x$ONF" != "x1" ]; then
if grep -q "watchdog" /etc/crontabs/root; then
grep -v "watchdog" /etc/crontabs/root > /tmp/new_cron
mv /tmp/new_cron /etc/crontabs/root
/etc/init.d/cron restart
fi
exit 0
fi
if ! grep -q "watchdog" /etc/crontabs/root; then
grep -v "watchdog" /etc/crontabs/root > /tmp/new_cron
mv /tmp/new_cron /etc/crontabs/root
DY=$(uci -q get watchdog.@watchdog[0].delay)
PD=$(uci -q get watchdog.@watchdog[0].period)
DT=$(uci -q get watchdog.@watchdog[0].dest)
CT=$(uci -q get watchdog.@watchdog[0].period_count)
AN=$(uci -q get watchdog.@watchdog[0].action)
echo "*/$PD * * * * /usr/bin/lite_watchdog.sh $DY 3 $DT $CT $AN" >> /etc/crontabs/root
/etc/init.d/cron restart
fi
exit 0
@@ -1,29 +1,57 @@
#!/bin/sh
VPING="$(cat /tmp/lite_watchdog)"
VMIN=$(echo $VPING | awk -v FS="(round-trip|ms)" '{print $2}')
MIN=$(echo $VMIN | awk -F[=/] '{print $4}' | xargs)
AVG=$(echo $VMIN | awk -F[=/] '{print $5}' | xargs)
MAX=$(echo $VMIN | awk -F[=/] '{print $6}' | xargs)
PING_FILE="/tmp/lite_watchdog"
TEST_TIME_FILE="/tmp/lite_watchdog_tt"
GCNT_FILE="/tmp/lite_watchdog_gcnt"
TEST_TIME="$(cat /tmp/lite_watchdog_tt)"
MIN=""
AVG=""
MAX=""
CNT=$(wc -l < /tmp/lite_watchdog_cnt)
CNT=$((CNT-1))
if [ -f "$PING_FILE" ]; then
VPING="$(cat "$PING_FILE" 2>/dev/null)"
ONV=$(uci -q get watchdog.@watchdog[0].enabled)
if [ $ONV == "0" ]; then
LINE="$(printf '%s\n' "$VPING" | grep -E '(^|[[:space:]])(rtt|round-trip)[^=]*min/avg/max' | tail -n1)"
if [ -n "$LINE" ]; then
STATS="$(printf '%s' "$LINE" | sed -n 's/.*=\s*\([^ ]*\)\s*ms.*/\1/p')"
ON="0"
else
ON="1"
MIN="$(printf '%s' "$STATS" | cut -d'/' -f1)"
AVG="$(printf '%s' "$STATS" | cut -d'/' -f2)"
MAX="$(printf '%s' "$STATS" | cut -d'/' -f3)"
fi
fi
DT=$(uci -q get watchdog.@watchdog[0].dest)
DY=$(uci -q get watchdog.@watchdog[0].delay)
PD=$(uci -q get watchdog.@watchdog[0].period)
CT=$(uci -q get watchdog.@watchdog[0].period_count)
AN=$(uci -q get watchdog.@watchdog[0].action)
[ -n "$MIN" ] || MIN="--.---"
[ -n "$AVG" ] || AVG="--.---"
[ -n "$MAX" ] || MAX="--.---"
if [ -f "$TEST_TIME_FILE" ]; then
TEST_TIME="$(cat "$TEST_TIME_FILE" 2>/dev/null)"
else
TEST_TIME=""
fi
if [ -f "$GCNT_FILE" ]; then
NOW_COUNT="$(wc -l < "$GCNT_FILE" 2>/dev/null)"
case "$NOW_COUNT" in ''|*[!0-9]*) NOW_COUNT=0 ;; esac
else
NOW_COUNT=0
fi
ONV="$(uci -q get watchdog.@watchdog[0].enabled)"
if [ "$ONV" = "0" ]; then ON="0"; else ON="1"; fi
DT="$(uci -q get watchdog.@watchdog[0].dest)"
DY="$(uci -q get watchdog.@watchdog[0].delay)"
PD="$(uci -q get watchdog.@watchdog[0].period)"
CT="$(uci -q get watchdog.@watchdog[0].period_count)"
AN="$(uci -q get watchdog.@watchdog[0].action)"
[ -n "$DT" ] || DT=""
[ -n "$DY" ] || DY="0"
[ -n "$PD" ] || PD="0"
[ -n "$CT" ] || CT="0"
[ -n "$AN" ] || AN=""
cat <<EOF
{
@@ -32,7 +60,7 @@ cat <<EOF
"delay":"$DY",
"period":"$PD",
"count":"$CT",
"now_count":"$CNT",
"now_count":"$NOW_COUNT",
"action":"$AN",
"testtime":"$TEST_TIME",
"min":"$MIN",
@@ -40,4 +68,5 @@ cat <<EOF
"max":"$MAX"
}
EOF
exit 0
@@ -1,115 +1,249 @@
#!/bin/sh
#
# $1 delay time
# $2 ping count
# $3 host
# $4 period count
# $3 hosts
# $4 period count (PRD – offline action counter)
# $5 action reboot|wan
#
# Status files:
# /tmp/lite_watchdog_gcnt (offline counter)
# /tmp/lite_watchdog_hidx (host index)
# Lock:
# /tmp/lite_watchdog.lock
# Action:
# /tmp/lite_watchdog_stage
T=$(uci -q get watchdog.@watchdog[0].iface)
T="$(uci -q get watchdog.@watchdog[0].iface)"
[ -z "$T" ] && exit 0
[ "x$T" = "xnone" ] && exit 0
UPTIME=$(awk '{printf "%d", $1}' /proc/uptime)
[ $UPTIME -le $1 ] && exit 0
UPTIME="$(awk '{printf "%d", $1}' /proc/uptime)"
[ "$UPTIME" -le "$1" ] && exit 0
DIR="/etc/modem"
LOG_FILE="$DIR/log.txt"
CNT_FILE="/tmp/lite_watchdog_cnt"
GCNT_FILE="/tmp/lite_watchdog_gcnt"
HIDX_FILE="/tmp/lite_watchdog_hidx"
LOCKDIR="/tmp/lite_watchdog.lock"
STAGE_FILE="/tmp/lite_watchdog_stage"
LINES_MAX=11000
LINES_MIN=6000
LINES_COUNT=$(wc -l $LOG_FILE | awk '{print $1}')
LOG_D=$(uci -q get watchdog.@watchdog[0].log)
LOG_D="$(uci -q get watchdog.@watchdog[0].log)"
LEDST=$(uci -q get watchdog.@watchdog[0].ledstatus)
LEDX=$(uci -q get watchdog.@watchdog[0].led)
LEDON="/sys/class/leds/$LEDX/brightness"
LEDST="$(uci -q get watchdog.@watchdog[0].ledstatus)"
LEDX="$(uci -q get watchdog.@watchdog[0].led)"
LEDPATH="/sys/class/leds/$LEDX"
LEDON="$LEDPATH/brightness"
LEDMAX="255"
[ -f "$LEDPATH/max_brightness" ] && LEDMAX="$(cat "$LEDPATH/max_brightness" 2>/dev/null || echo 255)"
if [[ "$LINES_COUNT" -ge "$LINES_MAX" ]]; then
echo "$(tail -$LINES_MIN $LOG_FILE)" > $LOG_FILE
[ -d "$DIR" ] || mkdir -p "$DIR" 2>/dev/null
[ -f "$LOG_FILE" ] || : > "$LOG_FILE"
LINES_COUNT="$(wc -l < "$LOG_FILE" 2>/dev/null)"
[ -z "$LINES_COUNT" ] && LINES_COUNT=0
if [ "$LINES_COUNT" -ge "$LINES_MAX" ]; then
tmpf="$(mktemp /tmp/lwlog.XXXXXX)"
tail -n "$LINES_MIN" "$LOG_FILE" > "$tmpf" 2>/dev/null
cat "$tmpf" > "$LOG_FILE"
rm -f "$tmpf"
fi
if [ ! -f "$CNT_FILE" ]; then
echo -n "" > /tmp/lite_watchdog_cnt
echo 0 >> /tmp/lite_watchdog_cnt
acquire_lock() {
i=0
while ! mkdir "$LOCKDIR" 2>/dev/null; do
i=$((i+1))
[ "$i" -ge 10 ] && break
sleep 1
done
}
release_lock() {
rmdir "$LOCKDIR" 2>/dev/null
}
lines_count() {
f="$1"
[ -f "$f" ] || { echo 0; return; }
n="$(wc -l < "$f" 2>/dev/null)"
case "$n" in ''|*[!0-9]*) n=0 ;; esac
echo "$n"
}
lines_reset() { : > "$1"; }
lines_inc() { echo "fail" >> "$1"; }
read_int_file() {
f="$1"
[ -f "$f" ] || { echo 0; return; }
v="$(cat "$f" 2>/dev/null)"
case "$v" in ''|*[!0-9]*) v=0 ;; esac
echo "$v"
}
init_temp_files() {
local init_needed=0
if [ ! -d "/tmp" ] || [ ! -w "/tmp" ]; then
logger -t LITE-WATCHDOG "ERROR: /tmp directory is not accessible or writable"
exit 1
fi
if [ ! -f "$GCNT_FILE" ]; then
: > "$GCNT_FILE" 2>/dev/null || {
logger -t LITE-WATCHDOG "ERROR: Cannot create $GCNT_FILE"
exit 1
}
init_needed=1
else
if ! wc -l < "$GCNT_FILE" >/dev/null 2>&1; then
: > "$GCNT_FILE"
init_needed=1
fi
fi
if [ ! -f "$HIDX_FILE" ]; then
echo "0" > "$HIDX_FILE" 2>/dev/null || {
logger -t LITE-WATCHDOG "ERROR: Cannot create $HIDX_FILE"
exit 1
}
init_needed=1
else
hidx_val="$(read_int_file "$HIDX_FILE")"
if [ "$hidx_val" -ge "$HOST_COUNT" ]; then
echo "0" > "$HIDX_FILE"
init_needed=1
fi
fi
if [ -f "$STAGE_FILE" ] && [ "$UPTIME" -lt 300 ]; then
rm -f "$STAGE_FILE"
init_needed=1
fi
if [ "$init_needed" -eq 1 ]; then
date +"%A %d-%B %Y %T, Watchdog initialized (uptime: ${UPTIME}s, hosts: $HOST_COUNT)" >> "$LOG_FILE"
fi
}
PC="$2"
case "$PC" in
''|*[!0-9]*) PC=1 ;;
*) [ "$PC" -le 0 ] && PC=1 ;;
esac
HOSTS="$(echo "$3" | tr ',' ' ')"
HOST_COUNT=0
for H in $HOSTS; do
[ -n "$H" ] || continue
eval "HOST_${HOST_COUNT}=\$H"
HOST_COUNT=$((HOST_COUNT + 1))
done
[ "$HOST_COUNT" -le 0 ] && exit 0
PRD="$4"
case "$PRD" in
''|*[!0-9]*) PRD=3 ;;
*) if [ "$PRD" -le 0 ] || [ "$PRD" -gt 100 ]; then PRD=3; fi ;;
esac
MAX_GLOBAL_COUNT=$((PRD + 5))
init_temp_files
date +"%Y-%m-%d %T" > /tmp/lite_watchdog_tt
acquire_lock
HIDX="$(read_int_file "$HIDX_FILE")"
if [ "$HIDX" -ge "$HOST_COUNT" ] || [ "$HIDX" -lt 0 ]; then
HIDX=0
echo "0" > "$HIDX_FILE"
fi
date +"%Y-%m-%d %T" 2>&1 > /tmp/lite_watchdog_tt
ping -q -4 -w 10 -c $2 $3 > /tmp/lite_watchdog 2>/dev/null
eval "CURRENT_HOST=\$HOST_${HIDX}"
PR=$(awk '/packets received/ {print $4}' /tmp/lite_watchdog)
[ -z "$PR" ] && PR=0
if [ "$PR" = "0" ]; then
if [ -z "$CURRENT_HOST" ]; then
logger -t LITE-WATCHDOG "ERROR: Cannot read host at index $HIDX"
release_lock
exit 1
fi
release_lock
echo 0 >> /tmp/lite_watchdog_cnt
if ping -q -4 -w 10 -c "$PC" "$CURRENT_HOST" >/tmp/lite_watchdog 2>&1; then
# ONLINE
acquire_lock
if [ "$LOG_D" != "offline" ]; then
date +"%A %d-%B %Y %T, Status: ONLINE (host: $CURRENT_HOST)" >> "$LOG_FILE"
fi
lines_reset "$GCNT_FILE"
release_lock
rm -f "$STAGE_FILE"
TSTC=$(wc -l < /tmp/lite_watchdog_cnt)
TST=$((TSTC-1))
date +"%A %d-%B %Y %T, Status: OFFLINE > Failed $TST out of $4" >> $LOG_FILE
if [ "x$LEDST" = "x1" ]; then
echo "0" > $LEDON
fi
if [ "x$LEDST" = "x1" ] && [ -w "$LEDON" ]; then
echo "$LEDMAX" > "$LEDON" 2>/dev/null
fi
exit 0
else
if [ "$LOG_D" != "offline" ]; then
date +"%A %d-%B %Y %T, Status: ONLINE" >> $LOG_FILE
fi
if [ "x$LEDST" = "x1" ]; then
echo "255" > $LEDON
fi
# OFFLINE
acquire_lock
GCNT_BEFORE="$(lines_count "$GCNT_FILE")"
[ "$GCNT_BEFORE" -lt "$MAX_GLOBAL_COUNT" ] && lines_inc "$GCNT_FILE"
GCNT="$(lines_count "$GCNT_FILE")"
NEXT_HIDX=$(( (HIDX + 1) % HOST_COUNT ))
echo "$NEXT_HIDX" > "$HIDX_FILE"
release_lock
echo 1 > /tmp/lite_watchdog_cnt
exit 0
fi
CNT=$(wc -l < /tmp/lite_watchdog_cnt)
CNT=$((CNT-1))
date +"%A %d-%B %Y %T, Status: OFFLINE, host: $CURRENT_HOST ➜ Failed $GCNT out of $PRD" >> "$LOG_FILE"
if [ $CNT -ge $4 ]; then
if [ "x$LEDST" = "x1" ] && [ -w "$LEDON" ]; then
echo "0" > "$LEDON" 2>/dev/null
fi
case "$5" in
"reboot")
[ -e /etc/lite_watchdog.user ] && env -i ACTION="reboot" /bin/sh /etc/lite_watchdog.user
if [ "$GCNT" -ge "$PRD" ]; then
ACTION="$5"
WAN="$(uci -q get watchdog.@watchdog[0].iface)"
date +"%A %d-%B %Y %T, Status: OFFLINE > Action: Reboot" >> $LOG_FILE && sleep 5
if [ -x /etc/lite_watchdog.user ]; then
env -i \
ACTION="$ACTION" PHASE="pre" \
HOST_COUNT="$HOST_COUNT" PRD="$PRD" \
GCNT_FILE="$GCNT_FILE" \
GCNT="$GCNT" GLOBAL_THRESHOLD="$PRD" \
LOG_FILE="$LOG_FILE" STAGE_FILE="$STAGE_FILE" \
/bin/sh /etc/lite_watchdog.user >/dev/null 2>&1
fi
logger -t LITE-WATCHDOG "Reboot"
reboot
;;
"wan")
[ -e /etc/lite_watchdog.user ] && env -i ACTION="wan" /bin/sh /etc/lite_watchdog.user
case "$ACTION" in
reboot)
date +"%A %d-%B %Y %T, Status: OFFLINE ➜ Action: Reboot" >> "$LOG_FILE" && sleep 5
logger -t LITE-WATCHDOG "Reboot"
reboot
;;
wan)
if [ ! -f "$STAGE_FILE" ]; then
date +"%A %d-%B %Y %T, Status: OFFLINE ➜ Action: Restarting interface" >> "$LOG_FILE" && sleep 5
logger -t LITE-WATCHDOG "Restarting network interface: \"$WAN\"."
: > "$STAGE_FILE"
( ifdown "$WAN"; sleep 5; ifup "$WAN" ) &
fi
;;
esac
echo -n "" > /tmp/lite_watchdog_cnt
echo 0 >> /tmp/lite_watchdog_cnt
MODRES=$(uci -q get watchdog.@watchdog[0].modemrestart)
if [ "$MODRES" == "1" ]; then
CMD=$(uci -q get watchdog.@watchdog[0].restartcmd)
PORT=$(uci -q get watchdog.@watchdog[0].set_port)
logger -t LITE-WATCHDOG "Restart modem on port: \"$PORT\"."
(sms_tool -d $PORT at "$CMD") &
date +"%A %d-%B %Y %T, Status: OFFLINE > Action: At command was sent to modem" >> $LOG_FILE && sleep 59
fi
WANT=$(uci -q get watchdog.@watchdog[0].iface)
if [[ "$WANT" == *"@"* ]]; then
WAN=$(echo $WANT | sed 's/@//')
else
WAN=$(uci -q get watchdog.@watchdog[0].iface)
fi
date +"%A %d-%B %Y %T, Status: OFFLINE > Action: Restarting interface" >> $LOG_FILE && sleep 5
logger -t LITE-WATCHDOG "Restarting network interface: \"$WAN\"."
(ifdown $WAN; sleep 5; ifup $WAN) &
;;
esac
if [ -f "$STAGE_FILE" ] && [ "$GCNT" -ge $((PRD + 1)) ]; then
if [ -x /etc/lite_watchdog.user ]; then
env -i \
ACTION="$5" PHASE="post" \
HOST_COUNT="$HOST_COUNT" PRD="$PRD" \
GCNT_FILE="$GCNT_FILE" \
GCNT="$GCNT" GLOBAL_THRESHOLD="$PRD" \
LOG_FILE="$LOG_FILE" STAGE_FILE="$STAGE_FILE" \
/bin/sh /etc/lite_watchdog.user >/dev/null 2>&1
fi
fi
fi
fi
exit 0
@@ -1,34 +1,39 @@
{
"luci-app-lite-watchdog": {
"description": "Grant access to LuCI app lite-watchdog",
"read": {
"file": {
"/usr/bin/lite-watchdog-data.sh": [ "exec" ],
"/usr/bin/lite_watchdog.sh": [ "exec" ],
"/sbin/watchdog2cron.sh": [ "exec" ],
"/sbin/refresh2cron.sh": [ "exec" ],
"/etc/lite_watchdog.user": [ "exec" ],
"/etc/modem/log.txt": [ "read" ],
"/tmp/lite_watchdog_cnt": [ "read" ],
"/tmp/lite_watchdog": [ "read" ],
"/tmp/lite_watchdog_tt": [ "read" ],
"/etc/lite_watchdog.user": [ "read" ],
"/etc/watchdog": [ "read" ]
},
"uci": [ "watchdog", "luci-app-lite-watchdog" ]
},
"write": {
"file": {
"/etc/watchdog": [ "write" ],
"/tmp/lite_watchdog_cnt": [ "write" ],
"/tmp/lite_watchdog": [ "write" ],
"/tmp/lite_watchdog_tt": [ "write" ],
"/etc/lite_watchdog.user": [ "write" ],
"/sys/class/leds/*/brightness": [ "write" ],
"/etc/modem/log.txt": [ "write" ]
},
"uci": [ "watchdog", "luci-app-lite-watchdog" ]
}
}
}
{
"luci-app-lite-watchdog": {
"description": "Grant access to LuCI app lite-watchdog",
"read": {
"file": {
"/usr/bin/lite-watchdog-data.sh": [ "exec" ],
"/usr/bin/lite_watchdog.sh": [ "exec" ],
"/etc/init.d/cron restart": [ "exec" ],
"/etc/lite_watchdog.user": [ "exec" ],
"/etc/modem/log.txt": [ "read" ],
"/tmp/lite_watchdog_cnt": [ "read" ],
"/tmp/lite_watchdog": [ "read" ],
"/tmp/lite_watchdog_tt": [ "read" ],
"/etc/lite_watchdog.user": [ "read" ],
"/etc/watchdog": [ "read" ],
"/etc/crontabs/root": [ "read" ]
},
"uci": [ "watchdog", "luci-app-lite-watchdog" ]
},
"write": {
"file": {
"/etc/watchdog": [ "write" ],
"/etc/init.d/cron restart": [ "exec" ],
"/tmp/lite_watchdog_cnt": [ "write" ],
"/tmp/lite_watchdog_gcnt": [ "write" ],
"/tmp/lite_watchdog_index": [ "write" ],
"/tmp/lite_watchdog_stage": [ "write" ],
"/tmp/lite_watchdog": [ "write" ],
"/tmp/lite_watchdog_tt": [ "write" ],
"/etc/lite_watchdog.user": [ "write" ],
"/etc/crontabs/root": [ "write" ],
"/sys/class/leds/*/brightness": [ "write" ],
"/etc/modem/log.txt": [ "write" ]
},
"uci": [ "watchdog", "luci-app-lite-watchdog" ]
}
}
}
+1 -1
View File
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-log-viewer
PKG_VERSION:=1.5.0
PKG_RELEASE:=2
PKG_RELEASE:=3
LUCI_TITLE:=Advanced syslog and kernel log (tail, search, etc)
LUCI_DEPENDS:=+ucode +ucode-mod-fs
LUCI_PKGARCH:=all
@@ -724,7 +724,7 @@ return baseclass.extend({
if(!fPattern) {
return entriesArray;
};
fPattern = this.htmlEntities(fPattern);
//fPattern = this.htmlEntities(fPattern);
return (this.msgFilterReValue) ?
this.setRegexpFilter(entriesArray, 5, fPattern) :
this.setStringFilter(entriesArray, 5, fPattern);