update 2026-05-27 23:25:57

This commit is contained in:
action committed 2026-05-27 23:25:57 +08:00
1 parent 84f707b52b
commit d0159b49a5
759 files changed
+362365

No files matched your search

+17
View File
@@ -0,0 +1,17 @@
#
# (с) 2026 gSpot (https://github.com/gSpotx2f/luci-app-internet-detector)
#
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-internet-detector
PKG_VERSION:=1.7.3
PKG_RELEASE:=1
LUCI_TITLE:=LuCI support for internet-detector
LUCI_DEPENDS:=+internet-detector
LUCI_PKGARCH:=all
#include ../../luci.mk
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,150 @@
'use strict';
'require baseclass';
'require fs';
'require rpc';
'require uci';
document.head.append(E('style', {'type': 'text/css'},
`
:root {
--app-id-font-color: #454545;
--app-id-font-shadow: #fff;
--app-id-connected-color: #6bdebb;
--app-id-disconnected-color: #f8aeba;
--app-id-undefined-color: #dfdfdf;
}
:root[data-darkmode="true"] {
--app-id-font-color: #f6f6f6;
--app-id-font-shadow: #4d4d4d;
--app-id-connected-color: #005F20;
--app-id-disconnected-color: #a93734;
--app-id-undefined-color: #4d4d4d;
}
.id-connected {
--on-color: var(--app-id-font-color);
background-color: var(--app-id-connected-color) !important;
border-color: var(--app-id-connected-color) !important;
color: var(--app-id-font-color) !important;
text-shadow: 0 1px 1px var(--app-id-font-shadow);
}
.id-disconnected {
--on-color: var(--app-id-font-color);
background-color: var(--app-id-disconnected-color) !important;
border-color: var(--app-id-disconnected-color) !important;
color: var(--app-id-font-color) !important;
text-shadow: 0 1px 1px var(--app-id-font-shadow);
}
.id-undefined {
--on-color: var(--app-id-font-color);
background-color: var(--app-id-undefined-color) !important;
border-color: var(--app-id-undefined-color) !important;
color: var(--app-id-font-color) !important;
text-shadow: 0 1px 1px var(--app-id-font-shadow);
}
.id-label-status {
display: inline-block;
word-wrap: break-word;
margin: 2px !important;
padding: 4px 8px;
border: 1px solid;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
font-weight: bold;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
`));
return baseclass.extend({
title : _('Internet'),
appName : 'internet-detector',
currentAppMode : null,
inetStatus : null,
callUIPoll: rpc.declare({
object: 'luci.internet-detector',
method: 'UIPoll',
expect: { '': {} }
}),
getUIPoll() {
return this.callUIPoll().then(data => {
return data;
});
},
callInetStatus: rpc.declare({
object: 'luci.internet-detector',
method: 'InetStatus',
expect: { '': {} }
}),
getInetStatus() {
return this.callInetStatus().then(data => {
return data;
});
},
async load() {
if(!this.currentAppMode) {
await uci.load(this.appName).then(data => {
this.currentAppMode = uci.get(this.appName, 'config', 'mode');
}).catch(e => {});
};
if(this.currentAppMode == '2') {
return this.getUIPoll();
}
else if(this.currentAppMode == '1') {
return L.resolveDefault(this.getInetStatus(), null);
};
},
render(data) {
if(this.currentAppMode == '0') {
return;
}
this.inetStatus = data;
let inetStatusArea = E('div', {});
if(!this.inetStatus || !this.inetStatus.instances || this.inetStatus.instances.length == 0) {
let label = E('span', { 'class': 'id-label-status id-undefined' }, _('Undefined'));
if(this.currentAppMode == '2') {
label.classList.add('spinning');
};
inetStatusArea.append(label);
} else {
this.inetStatus.instances.sort((a, b) => a.num - b.num);
for(let i of this.inetStatus.instances) {
let status = _('Disconnected');
let className = 'id-label-status id-disconnected';
if(i.inet == 0) {
status = _('Connected');
className = 'id-label-status id-connected';
}
else if(i.inet == -1) {
status = _('Undefined');
className = 'id-label-status id-undefined spinning';
};
let publicIp = (i.mod_public_ip !== undefined) ?
' | %s: %s'.format(_('Public IP'), (i.mod_public_ip == '') ? _('Undefined') : _(i.mod_public_ip))
: '';
inetStatusArea.append(
E('span', { 'class': className }, '%s%s%s'.format(
i.instance + ': ', status, publicIp)
)
);
};
};
return E('div', {
'class': 'cbi-section',
'style': 'margin-bottom:1em',
}, inetStatusArea);
},
});
@@ -0,0 +1,747 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.2\n"
"Last-Translator: \n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? "
"1 : 2);\n"
"Language: ru\n"
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
msgstr "Имя <abbr title=\"Светодиод\">LED</abbr>"
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> control"
msgstr "Управление <abbr title=\"Светодиод\">LED</abbr>"
msgid ""
"<abbr title=\"Light Emitting Diode\">LED</abbr> indicates the Internet status."
msgstr "<abbr title=\"Светодиод\">LED</abbr> отображает статус Интернет."
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> mode"
msgstr "Режим <abbr title=\"Светодиод\">LED</abbr>"
msgid ""
"<abbr title=\"Light Emitting Diode\">LED</abbr> will display the link activity of this network device."
msgstr ""
"<abbr title=\"Светодиод\">LED</abbr> будет отображать активность линка этого сетевого устройства."
msgid "Add instance"
msgstr "Добавить экземпляр"
msgid "After connection"
msgstr "После подключения"
msgid "After disconnection"
msgstr "После отключения"
msgid "Alive interval"
msgstr "Интервал при подключении"
msgid "Alive period"
msgstr "Период после подключения"
msgid "An email will be sent when connected or disconnected from the Internet."
msgstr "Сообщение будет отправлено на email при подключении или отключении от Интернет."
msgid "An error has occurred"
msgstr "Произошла ошибка"
msgid "Attempt interval"
msgstr "Интервал попыток"
msgid "Attempts"
msgstr "Попытки"
msgid "Big: 248 bytes"
msgstr "Большой: 248 байт"
msgid "Blinking (kernel: timer)"
msgstr "Мигание (kernel: timer)"
msgid "Bot API token is missing!"
msgstr "Отсутствует API токен бота!"
msgid "Bot token"
msgstr "Токен бота"
msgid "ID чата"
msgstr ""
msgid "Check type"
msgstr "Тип проверки"
msgid "Checking Internet availability."
msgstr "Проверка доступности Интернет."
msgid "Checking the real public IP address."
msgstr "Проверка реального публичного IP адреса."
msgid "Command failed"
msgstr "Команда не выполнена"
msgid "Connected"
msgstr "Подключен"
msgid "Connection attempts"
msgstr "Попытки подключения"
msgid "Connection timeout"
msgstr "Таймаут соединения"
msgid "Contents have been saved."
msgstr "Содержимое сохранено."
msgid "Curl is not available..."
msgstr "Curl недоступен..."
msgid "Dead interval"
msgstr "Интервал при отключении"
msgid "Dead period"
msgstr "Период после отключения"
msgid "Debug"
msgstr "Отладка"
msgid "Default port value for TCP connections."
msgstr "Стандартное значение порта для TCP-подключений."
msgid "Description"
msgstr "Описание"
msgid "Device"
msgstr "Устройство"
msgid "Device will be rebooted when the Internet is disconnected."
msgstr "Устройство будет перезагружено при отключении Интернет."
msgid "Disable forced reboot"
msgstr "Отключить принудительную перезагрузку"
msgid "Disabled"
msgstr "Отключен"
msgid "Disabled: detector is completely off."
msgstr "Отключен: детектор полностью выключен."
msgid "Disconnected"
msgstr "Отключен"
msgid "Dismiss"
msgstr "Закрыть"
msgid "DNS query type"
msgstr "Тип DNS-запроса"
msgid "Edit"
msgstr "Изменить"
msgid "Edit down-script"
msgstr "Изменить down-script"
msgid "Edit regular-script"
msgstr "Изменить regular-script"
msgid "Edit public-ip-script"
msgstr "Изменить public-ip-script"
msgid "Edit up-script"
msgstr "Изменить up-script"
msgid "Email notification"
msgstr "Уведомление по email"
msgid "Email address of the recipient."
msgstr "Email-адрес получателя."
msgid "Email address of the sender."
msgstr "Email-адрес отправителя."
msgid "Enable"
msgstr "Включить"
msgid "Enable public-ip-script"
msgstr "Включить public-ip-script"
msgid "Enabled"
msgstr "Включен"
msgid "Error"
msgstr "Ошибка"
msgid "Error!"
msgstr "Ошибка!"
msgid "Expecting:"
msgstr "Ожидается:"
msgid "Failed interval"
msgstr "Интервал при неудаче"
msgid "Failed to get %s init status: %s"
msgstr "Не удалось получить статус инициализации %s: %s"
msgid "Forced reboot delay"
msgstr "Задержка принудительной перезагрузки"
msgid "Host alias"
msgstr "Псевдоним хоста"
msgid "Host availability check type."
msgstr "Тип проверки доступности хоста."
msgid "Host identifier in messages. If not specified, hostname will be used."
msgstr "Идентификатор хоста в сообщениях. Если не указан, будет использовано имя хоста."
msgid "Hostname/IP address of the SMTP server."
msgstr "Имя хоста/IP-адрес SMTP-сервера."
msgid "Hosts"
msgstr "Хосты"
msgid "Hosts polling interval when the Internet is down."
msgstr "Интервал опроса хостов если Интернет недоступен."
msgid "Hosts polling interval when the Internet is up."
msgstr "Интервал опроса хостов если Интернет доступен."
msgid ""
"Hosts for checking Internet availability. Hosts are polled (in list "
"order) until at least one responds."
msgstr ""
"Хосты для проверки доступности Интернет. Хосты опрашиваются (в порядке "
"списка) до тех пор, пока хотя бы один из них не ответит."
msgid "Huge: 1492 bytes"
msgstr "Огромный: 1492 байта"
msgid "ID of the Telegram chat to which messages will be sent."
msgstr "ID чата Telegram в который будут отправлены сообщения."
msgid "ICMP-echo request (ping)"
msgstr "Запрос ICMP-echo (ping)"
msgid "ICMP packet data size"
msgstr "Размер данных ICMP-пакета"
msgid "Incorrect bot token?"
msgstr "Неправильный токен бота?"
msgid "Info"
msgstr "Информация"
msgid "Instances"
msgstr "Экземпляры"
msgid "Interface"
msgstr "Интерфейс"
msgid "Interface timeout"
msgstr "Таймаут интерфейса"
msgid "Internet"
msgstr "Интернет"
msgid "Internet Detector"
msgstr "Интернет-детектор"
msgid "Internet detector mode"
msgstr "Режим интернет-детектора"
msgid "Internet status"
msgstr "Статус Интернет"
msgid "Interval between IP address requests."
msgstr "Интервал между запросами IP адреса."
msgid "Interval between IP address requests if the IP address is not defined."
msgstr "Интервал между запросами IP адреса, если IP адрес не определён."
msgid "Interval between modem restarts."
msgstr "Интервал между перезапусками модема."
msgid "Interval between network restarts."
msgstr "Интервал между перезапусками сети."
msgid "Interval between down-script runs."
msgstr "Интервал между запусками down-script."
msgid "Interval between up-script runs."
msgstr "Интервал между запусками up-script."
msgid "Invalid instance name..."
msgstr "Недопустимое имя экземпляра..."
msgid "Jumbo: 9000 bytes"
msgstr "Гигантский: 9000 байт"
msgid "LED control"
msgstr "Управление LED"
msgid "Link On"
msgstr "Подключение"
msgid "Loading"
msgstr "Загрузка"
msgid "Log event level."
msgstr "Уровень событий лога."
msgid "Logging"
msgstr "Запись событий в лог"
msgid "Mailsend is not available..."
msgstr "Mailsend недоступен..."
msgid "Main settings"
msgstr "Основные настройки"
msgid "Maximum number of attempts to connect to each host."
msgstr "Максимальное количество попыток подключения к каждому хосту."
msgid ""
"Maximum number of network restart attempts before Internet access is "
"available."
msgstr ""
"Максимальное количество попыток перезапуска сети до появления доступа в "
"Интренет."
msgid ""
"Maximum number of up-script run attempts when connected to the Internet."
msgstr ""
"Максимальное количество попыток запуска up-script при подключении к Интренет."
msgid ""
"Maximum number of down-script run attempts before Internet access is available."
msgstr ""
"Максимальное количество попыток запуска down-script до появления доступа в "
"Интренет."
msgid "Maximum timeout for waiting for a response from the host."
msgstr "Максимальный таймаут ожидания ответа от хоста."
msgid "ModemManager is not available..."
msgstr "ModemManager недоступен..."
msgid "Modem will be restarted when the Internet is disconnected."
msgstr "Модем будет перезапущен при отключении Интернет."
msgid ""
"ModemManger interface. If specified, it will be restarted after restarting "
"ModemManager."
msgstr ""
"Интерфейс ModemManager. Если задан, то будет перезапущен после перезапуска "
"ModemManger."
msgid "Network device activity (kernel: netdev)"
msgstr "Активность сетевого устройства (kernel: netdev)"
msgid ""
"Network device for Internet access. If not specified, the default "
"device is used."
msgstr ""
"Сетевое устройство для доступа в Интернет. Если не указано, используется "
"устройство по умолчанию."
msgid ""
"Network device for sending messages. If not specified, the default "
"device is used."
msgstr ""
"Сетевое устройство для отправки сообщений. Если не указано, используется "
"устройство по умолчанию."
msgid ""
"Network device or interface to restart. If not specified, then the network service is restarted."
msgstr ""
"Сетевое устройство или интерфейс для перезапуска. Если не задано, то будет перезапущена сетевая "
"служба."
msgid "Network will be restarted when the Internet is disconnected."
msgstr "Сеть будет перезапущена при отключении Интернет."
msgid "Next run"
msgstr "Следующий запуск"
msgid "No <abbr title=\"Light Emitting Diode\">LED</abbr>s available..."
msgstr "Нет доступных <abbr title=\"Светодиод\">LED</abbr>..."
msgid "No messages available. Write something to the bot and try again."
msgstr "Нет доступных сообщений. Напишите что-нибудь боту и попробуйте ещё раз."
msgid "Not scheduled"
msgstr "Не запланирован"
msgid "Notice"
msgstr "Сообщение"
msgid "Number of attempts to request an IP address."
msgstr "Количество попыток запроса IP адреса"
msgid "Off"
msgstr "Выключить"
msgid "Off-state delay"
msgstr "Задержка выключенного состояния"
msgid "Off-state delay for blinking option."
msgstr "Задержка выключенного состояния для опции мигания."
msgid "On"
msgstr "Включить"
msgid "On startup"
msgstr "При запуске"
msgid "On-state delay"
msgstr "Задержка включённого состояния"
msgid "On-state delay for blinking option."
msgstr "Задержка включённого состояния для опции мигания."
msgid "One of the following:"
msgstr "Одно из следующих значений:"
msgid "Password"
msgstr "Пароль"
msgid "Password for SMTP authentication."
msgstr "Пароль для SMTP-аутентификации."
msgid ""
"Period of time after connecting to Internet before up-script runs."
msgstr ""
"Период времени после подключения к Интернет перед запуском up-script."
msgid ""
"Period of time after connecting to the Internet before sending a message."
msgstr "Период времени после подключения к Интернет перед отправкой сообщения."
msgid ""
"Period of time after disconnecting from Internet before down-script runs."
msgstr ""
"Период времени после отключения от Интернет перед запуском down-script."
msgid ""
"Period of time after disconnecting from Internet before sending a message."
msgstr "Период времени отсутствия доступа в Интренет перед отправкой сообщения."
msgid "Period of time without Internet access before modem restart."
msgstr "Период времени отсутствия доступа в Интренет перед перезапуском модема."
msgid "Period of time without Internet access before network restart."
msgstr "Период времени отсутствия доступа в Интренет перед перезапуском сети."
msgid ""
"Period of time without Internet access until the device is rebooted."
msgstr ""
"Период времени отсутствия доступа в Интренет перед перезагрузкой устройства."
msgid "Polling interval"
msgstr "Интервал опроса"
msgid "Provider"
msgstr "Провайдер"
msgid "Proxy"
msgstr "Прокси"
msgid "Proxy host"
msgstr "Хост прокси"
msgid "Proxy password"
msgstr "Пароль прокси"
msgid "Proxy port"
msgstr "Порт прокси"
msgid "Proxy user"
msgstr "Пользователь прокси"
msgid "Public IP"
msgstr "Публичный IP"
msgid "Public IP address"
msgstr "Публичный IP адрес"
msgid "Reboot device"
msgstr "Перезагрузка устройства"
msgid "Reboot device if the Internet is disconnected at service startup."
msgstr "Перезагрузка устройства если Интренет отключен при запуске службы."
msgid "Receive"
msgstr "Приём"
msgid "Recipient"
msgstr "Получатель"
msgid "Regular script"
msgstr "Регулярный скрипт"
msgid "Request chat ID from bot API"
msgstr "Запросить ID чата через API бота"
msgid "Restart"
msgstr "Перезапуск"
msgid "Restart attempts"
msgstr "Попытки перезапуска"
msgid "Restart modem"
msgstr "Перезапуск модема"
msgid "Restart modem if the Internet is disconnected at service startup."
msgstr "Перезапуск модема если Интренет отключен при запуске службы."
msgid "Restart network"
msgstr "Перезапуск сети"
msgid "Restart network if the Internet is disconnected at service startup."
msgstr "Перезапуск сети если Интренет отключен при запуске службы."
msgid "Restart service"
msgstr "Перезапуск службы"
msgid "Device timeout"
msgstr "Таймаут устройства"
msgid "Run interval"
msgstr "Интервал запуска"
msgid "Run if Internet state is"
msgstr "Выполнять если статус Интернет"
msgid "Run service at startup"
msgstr "Запуск службы при старте"
msgid "Run down-script if the Internet is disconnected at service startup."
msgstr "Выполнить down-script если Интренет отключен при запуске службы."
msgid "Run up-script if the Internet is connected at service startup."
msgstr "Выполнить up-script если Интренет подключен при запуске службы."
msgid "Running"
msgstr "Выполняется"
msgid "SMTP server"
msgstr "SMTP-сервер"
msgid "SMTP server port"
msgstr "Порт SMTP-сервера"
msgid "SSL: SMTP over SSL."
msgstr "SSL: SMTP поверх SSL."
msgid "Save"
msgstr "Сохранить"
msgid "Security"
msgstr "Безопасность"
msgid "Send message on service startup."
msgstr "Отправлять сообщение при запуске службы."
msgid "Sender"
msgstr "Отправитель"
msgid "Server response timeout"
msgstr "Таймаут ответа сервера"
msgid "Service"
msgstr "Служба"
msgid "Service action failed \"%s %s\": %s"
msgstr "Не удалось выполнить действие службы \"%s %s\": %s"
msgid "Service configuration"
msgstr "Конфигурация службы"
msgid "Service for determining the public IP address."
msgstr "Сервис для определения публичного IP адреса."
msgid "Service: detector always runs as a system service."
msgstr "Служба: детектор работает постоянно, как системная служба."
msgid "Set the modem to be allowed to use any band."
msgstr "Разрешить модему использование любой частоты."
msgid "Shell commands that are run regularly."
msgstr "Команды shell выполняемые регулярно."
msgid "Shell commands that run when connected to the Internet."
msgstr "Команды shell выполняемые при подключении к Интернет."
msgid "Shell commands that run regularly at a specified interval. Current state of the Internet is available as value of the <code>$INET_STATE</code> variable (<code>0</code> - connected, <code>1</code> - disconnected)."
msgstr "Команды shell выполняемые регулярно с заданным интервалом. Текущее состояние Интернет доступно как значение переменной <code>$INET_STATE</code> (<code>0</code> - подключен, <code>1</code> - отключен)."
msgid "Shell commands that run when the public IP address changes. New IP is available as value of the <code>$PUBLIC_IP</code> variable (empty string if undefined)."
msgstr "Команды shell выполняемые при изменении публичного IP адреса. Новый IP доступен как значение переменной <code>$PUBLIC_IP</code> (пустая строка если не определён)."
msgid "Shell commands to run when connected or disconnected from the Internet."
msgstr "Команды shell выполняемые при подключении или отключении Интернет."
msgid "Shell commands to run when disconnected from the Internet."
msgstr "Команды shell выполняемые при отключении от Интернет."
msgid "Small: 1 byte"
msgstr "Маленький: 1 байт"
msgid "Standard: 56 bytes"
msgstr "Стандартный: 56 байт"
msgid "Stopped"
msgstr "Остановлена"
msgid "TCP port"
msgstr "TCP-порт"
msgid "TCP port connection"
msgstr "Подключение к TCP-порту"
msgid "Telegram bot API token."
msgstr "API токен Telegram бота."
msgid "Telegram message will be sent when connected or disconnected from the Internet."
msgstr "Сообщение в Telegram будет отправлено при подключении или отключении от Интернет."
msgid "The type of record requested in the DNS query (if the service supports it)."
msgstr "Тип записи запрашиваемой в DNS-запросе (если сервис поддерживает)."
msgid "TLS: use STARTTLS if the server supports it."
msgstr "TLS: использовать STARTTLS если сервер поддерживает."
msgid "Timeout between stopping and starting a network device when restarting."
msgstr "Таймаут между остановкой и запуском сетевого устройства при перезапуске."
msgid "Timeout between stopping and starting a ModemManger interface when restarting."
msgstr "Таймаут между остановкой и запуском интерфейса ModemManger при перезапуске."
msgid "To support HTTP services, you need to install curl."
msgstr "Для поддержки HTTP сервисов необходимо установить curl."
msgid "To support URL checking, you need to install curl."
msgstr "Для поддержки проверки URL необходимо установить curl."
msgid "Transmit"
msgstr "Передача"
msgid "Type a time string"
msgstr "Введите строку времени"
msgid "Unable to read the contents"
msgstr "Невозможно прочитать содержимое"
msgid "Unable to save the contents"
msgstr "Невозможно сохранить содержимое"
msgid "Undefined"
msgstr "Неопределён"
msgid "Unlock modem bands"
msgstr "Освободить частоты модема"
msgid "URL test (HTTP)"
msgstr "Тест URL (HTTP)"
msgid ""
"URLs for checking Internet availability. URLs are polled (in list "
"order) until at least one returns HTTP status code 200."
msgstr ""
"URL для проверки доступности Интернет. URL опрашиваются (в порядке "
"списка) до тех пор, пока хотя бы один из них не вернёт код статуса HTTP 200."
msgid "User"
msgstr "Пользователь"
msgid "User scripts"
msgstr "Пользовательские скрипты"
msgid "Username for SMTP authentication."
msgstr "Имя пользователя для SMTP-аутентификации."
msgid "Waiting for a reboot to complete before performing a forced reboot."
msgstr ""
"Ожидание завершения перезагрузки перед выполнением принудительной "
"перезагрузки."
msgid "Warning"
msgstr "Внимание"
msgid "Web UI only (UI detector)"
msgstr "Только web-интерфейс (UI детектор)"
msgid "Web UI only: detector works only when the Web UI is open (UI detector)."
msgstr ""
"Только web-интерфейс: детектор работает только в web-интерфейсе (UI "
"детектор)."
msgid "When email will be sent"
msgstr "Когда будет отправлено сообщение"
msgid "When message will be sent"
msgstr "Когда будет отправлено сообщение"
msgid "Windows: 32 bytes"
msgstr "Windows: 32 байта"
msgid ""
"You need to register a new %sTelegram bot%s. Then get the bot's API token and paste it into the <code>Bot token</code> field. After that, open a chat with the bot, write something (in the Telegram app) and you will be able to get the chat ID using the <code>ID</code> button."
msgstr ""
"Необходимо зарегистрировать новый %sTelegram бот%s. Затем получить API токен бота и вставить его в поле <code>Токен бота</code>. После этого, откройте чат с ботом, напишите что-нибудь (в приложении Telegram) и можно будет получить ID чата с помощью кнопки <code>ID</code>."
msgid "after connection"
msgstr "после подключения"
msgid "after connection or disconnection"
msgstr "после подключения или отключения"
msgid "after disconnection"
msgstr "после отключения"
msgid "connected"
msgstr "подключен"
msgid "connected or disconnected"
msgstr "подключен или отключен"
msgid "days"
msgstr "дни"
msgid "disconnected"
msgstr "отключен"
msgid "down-script"
msgstr "down-script"
msgid "hour"
msgstr "час"
msgid "infinitely"
msgstr "бесконечно"
msgid "hours"
msgstr "часы"
msgid "min"
msgstr "мин"
msgid "minutes"
msgstr "минуты"
msgid "msec"
msgstr "мсек"
msgid "sec"
msgstr "сек"
msgid "seconds"
msgstr "секунды"
msgid "up-script"
msgstr "up-script"
@@ -0,0 +1,706 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
msgstr ""
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> control"
msgstr ""
msgid ""
"<abbr title=\"Light Emitting Diode\">LED</abbr> indicates the Internet status."
msgstr ""
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> mode"
msgstr ""
msgid ""
"<abbr title=\"Light Emitting Diode\">LED</abbr> will display the link activity of this network device."
msgstr ""
msgid "Add instance"
msgstr ""
msgid "After connection"
msgstr ""
msgid "After disconnection"
msgstr ""
msgid "Alive interval"
msgstr ""
msgid "Alive period"
msgstr ""
msgid "An email will be sent when connected or disconnected from the Internet."
msgstr ""
msgid "An error has occurred"
msgstr ""
msgid "Attempt interval"
msgstr ""
msgid "Attempts"
msgstr ""
msgid "Big: 248 bytes"
msgstr ""
msgid "Blinking (kernel: timer)"
msgstr ""
msgid "Bot API token is missing!"
msgstr ""
msgid "Bot token"
msgstr ""
msgid "Chat ID"
msgstr ""
msgid "Check type"
msgstr ""
msgid "Checking Internet availability."
msgstr ""
msgid "Checking the real public IP address."
msgstr ""
msgid "Command failed"
msgstr ""
msgid "Connected"
msgstr ""
msgid "Connection attempts"
msgstr ""
msgid "Connection timeout"
msgstr ""
msgid "Contents have been saved."
msgstr ""
msgid "Curl is not available..."
msgstr ""
msgid "Dead interval"
msgstr ""
msgid "Dead period"
msgstr ""
msgid "Debug"
msgstr ""
msgid "Default port value for TCP connections."
msgstr ""
msgid "Description"
msgstr ""
msgid "Device"
msgstr ""
msgid "Device will be rebooted when the Internet is disconnected."
msgstr ""
msgid "Disable forced reboot"
msgstr ""
msgid "Disabled"
msgstr ""
msgid "Disabled: detector is completely off."
msgstr ""
msgid "Disconnected"
msgstr ""
msgid "Dismiss"
msgstr ""
msgid "DNS query type"
msgstr ""
msgid "Edit"
msgstr ""
msgid "Edit down-script"
msgstr ""
msgid "Edit regular-script"
msgstr ""
msgid "Edit public-ip-script"
msgstr ""
msgid "Edit up-script"
msgstr ""
msgid "Email notification"
msgstr ""
msgid "Email address of the recipient."
msgstr ""
msgid "Email address of the sender."
msgstr ""
msgid "Enable"
msgstr ""
msgid "Enable public-ip-script"
msgstr ""
msgid "Enabled"
msgstr ""
msgid "Error"
msgstr ""
msgid "Error!"
msgstr ""
msgid "Expecting:"
msgstr ""
msgid "Failed interval"
msgstr ""
msgid "Failed to get %s init status: %s"
msgstr ""
msgid "Forced reboot delay"
msgstr ""
msgid "Host alias"
msgstr ""
msgid "Host availability check type."
msgstr ""
msgid "Host identifier in messages. If not specified, hostname will be used."
msgstr ""
msgid "Hostname/IP address of the SMTP server."
msgstr ""
msgid "Hosts"
msgstr ""
msgid "Hosts polling interval when the Internet is down."
msgstr ""
msgid "Hosts polling interval when the Internet is up."
msgstr ""
msgid ""
"Hosts for checking Internet availability. Hosts are polled (in list "
"order) until at least one responds."
msgstr ""
msgid "Huge: 1492 bytes"
msgstr ""
msgid "ID of the Telegram chat to which messages will be sent."
msgstr ""
msgid "ICMP-echo request (ping)"
msgstr ""
msgid "ICMP packet data size"
msgstr ""
msgid "Incorrect bot token?"
msgstr ""
msgid "Info"
msgstr ""
msgid "Instances"
msgstr ""
msgid "Interface"
msgstr ""
msgid "Interface timeout"
msgstr ""
msgid "Internet"
msgstr ""
msgid "Internet Detector"
msgstr ""
msgid "Internet detector mode"
msgstr ""
msgid "Internet status"
msgstr ""
msgid "Interval between IP address requests."
msgstr ""
msgid "Interval between IP address requests if the IP address is not defined."
msgstr ""
msgid "Interval between modem restarts."
msgstr ""
msgid "Interval between network restarts."
msgstr ""
msgid "Interval between down-script runs."
msgstr ""
msgid "Interval between up-script runs."
msgstr ""
msgid "Invalid instance name..."
msgstr ""
msgid "Jumbo: 9000 bytes"
msgstr ""
msgid "LED control"
msgstr ""
msgid "Link On"
msgstr ""
msgid "Loading"
msgstr ""
msgid "Log event level."
msgstr ""
msgid "Logging"
msgstr ""
msgid "Mailsend is not available..."
msgstr ""
msgid "Main settings"
msgstr ""
msgid "Maximum number of attempts to connect to each host."
msgstr ""
msgid ""
"Maximum number of network restart attempts before Internet access is "
"available."
msgstr ""
msgid ""
"Maximum number of up-script run attempts when connected to the Internet."
msgstr ""
msgid ""
"Maximum number of down-script run attempts before Internet access is available."
msgstr ""
msgid "Maximum timeout for waiting for a response from the host."
msgstr ""
msgid "ModemManager is not available..."
msgstr ""
msgid "Modem will be restarted when the Internet is disconnected."
msgstr ""
msgid ""
"ModemManger interface. If specified, it will be restarted after restarting "
"ModemManager."
msgstr ""
msgid "Network device activity (kernel: netdev)"
msgstr ""
msgid ""
"Network device for Internet access. If not specified, the default "
"device is used."
msgstr ""
msgid ""
"Network device for sending messages. If not specified, the default "
"device is used."
msgstr ""
msgid ""
"Network device or interface to restart. If not specified, then the network service is restarted."
msgstr ""
msgid "Network will be restarted when the Internet is disconnected."
msgstr ""
msgid "Next run"
msgstr ""
msgid "No <abbr title=\"Light Emitting Diode\">LED</abbr>s available..."
msgstr ""
msgid "No messages available. Write something to the bot and try again."
msgstr ""
msgid "Not scheduled"
msgstr ""
msgid "Notice"
msgstr ""
msgid "Number of attempts to request an IP address."
msgstr ""
msgid "Off"
msgstr ""
msgid "Off-state delay"
msgstr ""
msgid "Off-state delay for blinking option."
msgstr ""
msgid "On"
msgstr ""
msgid "On startup"
msgstr ""
msgid "On-state delay"
msgstr ""
msgid "On-state delay for blinking option."
msgstr ""
msgid "One of the following:"
msgstr ""
msgid "Password"
msgstr ""
msgid "Password for SMTP authentication."
msgstr ""
msgid ""
"Period of time after connecting to Internet before up-script runs."
msgstr ""
msgid ""
"Period of time after connecting to the Internet before sending a message."
msgstr ""
msgid ""
"Period of time after disconnecting from Internet before down-script runs."
msgstr ""
msgid ""
"Period of time after disconnecting from Internet before sending a message."
msgstr ""
msgid "Period of time without Internet access before modem restart."
msgstr ""
msgid "Period of time without Internet access before network restart."
msgstr ""
msgid ""
"Period of time without Internet access until the device is rebooted."
msgstr ""
msgid "Polling interval"
msgstr ""
msgid "Provider"
msgstr ""
msgid "Proxy"
msgstr ""
msgid "Proxy host"
msgstr ""
msgid "Proxy password"
msgstr ""
msgid "Proxy port"
msgstr ""
msgid "Proxy user"
msgstr ""
msgid "Public IP"
msgstr ""
msgid "Public IP address"
msgstr ""
msgid "Reboot device"
msgstr ""
msgid "Reboot device if the Internet is disconnected at service startup."
msgstr ""
msgid "Receive"
msgstr ""
msgid "Recipient"
msgstr ""
msgid "Regular script"
msgstr ""
msgid "Request chat ID from bot API"
msgstr ""
msgid "Restart"
msgstr ""
msgid "Restart attempts"
msgstr ""
msgid "Restart modem"
msgstr ""
msgid "Restart modem if the Internet is disconnected at service startup."
msgstr ""
msgid "Restart network"
msgstr ""
msgid "Restart network if the Internet is disconnected at service startup."
msgstr ""
msgid "Restart service"
msgstr ""
msgid "Device timeout"
msgstr ""
msgid "Run interval"
msgstr ""
msgid "Run if Internet state is"
msgstr ""
msgid "Run service at startup"
msgstr ""
msgid "Run down-script if the Internet is disconnected at service startup."
msgstr ""
msgid "Run up-script if the Internet is connected at service startup."
msgstr ""
msgid "Running"
msgstr ""
msgid "SMTP server"
msgstr ""
msgid "SMTP server port"
msgstr ""
msgid "SSL: SMTP over SSL."
msgstr ""
msgid "Save"
msgstr ""
msgid "Security"
msgstr ""
msgid "Send message on service startup."
msgstr ""
msgid "Sender"
msgstr ""
msgid "Server response timeout"
msgstr ""
msgid "Service"
msgstr ""
msgid "Service action failed \"%s %s\": %s"
msgstr ""
msgid "Service configuration"
msgstr ""
msgid "Service for determining the public IP address."
msgstr ""
msgid "Service: detector always runs as a system service."
msgstr ""
msgid "Set the modem to be allowed to use any band."
msgstr ""
msgid "Shell commands that are run regularly."
msgstr ""
msgid "Shell commands that run when connected to the Internet."
msgstr ""
msgid "Shell commands that run regularly at a specified interval. Current state of the Internet is available as value of the <code>$INET_STATE</code> variable (<code>0</code> - connected, <code>1</code> - disconnected)."
msgstr ""
msgid "Shell commands that run when the public IP address changes. New IP is available as value of the <code>$PUBLIC_IP</code> variable (empty string if undefined)."
msgstr ""
msgid "Shell commands to run when connected or disconnected from the Internet."
msgstr ""
msgid "Shell commands to run when disconnected from the Internet."
msgstr ""
msgid "Small: 1 byte"
msgstr ""
msgid "Standard: 56 bytes"
msgstr ""
msgid "Stopped"
msgstr ""
msgid "TCP port"
msgstr ""
msgid "TCP port connection"
msgstr ""
msgid "Telegram bot API token."
msgstr ""
msgid "Telegram message will be sent when connected or disconnected from the Internet."
msgstr ""
msgid "The type of record requested in the DNS query (if the service supports it)."
msgstr ""
msgid "TLS: use STARTTLS if the server supports it."
msgstr ""
msgid "Timeout between stopping and starting a network device when restarting."
msgstr ""
msgid "Timeout between stopping and starting a ModemManger interface when restarting."
msgstr ""
msgid "To support HTTP services, you need to install curl."
msgstr ""
msgid "To support URL checking, you need to install curl."
msgstr ""
msgid "Transmit"
msgstr ""
msgid "Type a time string"
msgstr ""
msgid "Unable to read the contents"
msgstr ""
msgid "Unable to save the contents"
msgstr ""
msgid "Undefined"
msgstr ""
msgid "Unlock modem bands"
msgstr ""
msgid "URL test (HTTP)"
msgstr ""
msgid ""
"URLs for checking Internet availability. URLs are polled (in list "
"order) until at least one returns HTTP status code 200."
msgstr ""
msgid "User"
msgstr ""
msgid "User scripts"
msgstr ""
msgid "Username for SMTP authentication."
msgstr ""
msgid "Waiting for a reboot to complete before performing a forced reboot."
msgstr ""
msgid "Warning"
msgstr ""
msgid "Web UI only (UI detector)"
msgstr ""
msgid "Web UI only: detector works only when the Web UI is open (UI detector)."
msgstr ""
msgid "When email will be sent"
msgstr ""
msgid "When message will be sent"
msgstr ""
msgid "Windows: 32 bytes"
msgstr ""
msgid ""
"You need to register a new %sTelegram bot%s. Then get the bot's API token and paste it into the <code>Bot token</code> field. After that, open a chat with the bot, write something (in the Telegram app) and you will be able to get the chat ID using the <code>ID</code> button."
msgstr ""
msgid "after connection"
msgstr ""
msgid "after disconnection"
msgstr ""
msgid "connected"
msgstr ""
msgid "connected or disconnected"
msgstr ""
msgid "days"
msgstr ""
msgid "disconnected"
msgstr ""
msgid "down-script"
msgstr ""
msgid "hour"
msgstr ""
msgid "hours"
msgstr ""
msgid "infinitely"
msgstr ""
msgid "min"
msgstr ""
msgid "minutes"
msgstr ""
msgid "msec"
msgstr ""
msgid "sec"
msgstr ""
msgid "seconds"
msgstr ""
msgid "up-script"
msgstr ""
@@ -0,0 +1,97 @@
#!/usr/bin/env lua
local appName = "internet-detector"
local appExec = "/usr/bin/internet-detector"
local mailsendExec = "/usr/bin/mailsend"
local modemManagerInit = "/etc/init.d/modemmanager"
local curlExec = "/usr/bin/curl"
local InternetDetector = require(appName .. ".main")
local uci = require("uci")
local unistd = require("posix.unistd")
local function prequire(package)
local retVal, pkg = pcall(require, package)
return retVal and pkg
end
local function init()
local lines = {}
if prequire(appName .. ".modules.mod_modem_restart") then
lines[#lines + 1] = '"mm_mod":true'
if (unistd.access(modemManagerInit, "x") and
os.execute(modemManagerInit .. " enabled") == 0) then
lines[#lines + 1] = '"mm_init":true'
else
lines[#lines + 1] = '"mm_init":false'
end
else
lines[#lines + 1] = '"mm_mod":false'
end
if prequire(appName .. ".modules.mod_email") then
lines[#lines + 1] = '"email_mod":true'
if unistd.access(mailsendExec, "x") then
lines[#lines + 1] = '"email_exec":true'
else
lines[#lines + 1] = '"email_exec":false'
end
else
lines[#lines + 1] = '"email_mod":false'
end
if prequire(appName .. ".modules.mod_telegram") then
lines[#lines + 1] = '"telegram":true'
else
lines[#lines + 1] = '"telegram":false'
end
if unistd.access(curlExec, "x") then
lines[#lines + 1] = '"curl_exec":true'
else
lines[#lines + 1] = '"curl_exec":false'
end
return string.format("{%s}", table.concat(lines, ","))
end
local function startUiInstances()
local uciCursor = uci.cursor()
local mode = tonumber(uciCursor:get(appName, "config", "mode"))
if mode == 2 then
uciCursor:foreach(
appName,
"instance",
function(s)
if s.enabled == "1" then
os.execute(string.format("%s -a daemon -i %s", appExec, s[".name"]))
end
end
)
end
end
local function uiPoll()
if InternetDetector:status() == "stoped" then
startUiInstances()
else
InternetDetector:setSIGUSR()
end
return InternetDetector:inetStatus()
end
local function list()
io.write('{"Init":{},"Status":{},"InetStatus":{},"UIPoll":{}}')
end
if arg[1] == "list" then
list()
elseif arg[1] == "call" then
if arg[2] == "Init" then
io.write(init())
elseif arg[2] == "Status" then
io.write(string.format('{"status":"%s"}', tostring(InternetDetector:status())))
elseif arg[2] == "InetStatus" then
io.write(InternetDetector:inetStatus())
elseif arg[2] == "UIPoll" then
io.write(uiPoll())
end
end
os.exit(0)
@@ -0,0 +1,17 @@
{
"admin/services/internet-detector": {
"title": "Internet Detector",
"order": 80,
"action": {
"type": "view",
"path": "internet-detector"
},
"depends": {
"acl": [ "luci-app-internet-detector" ],
"fs": {
"/usr/bin/internet-detector": "executable"
},
"uci": { "internet-detector": true }
}
}
}
@@ -0,0 +1,28 @@
{
"luci-app-internet-detector": {
"description": "Grant access to internet-detector procedures",
"read": {
"file": {
"/sys/class/leds": [ "list" ],
"/etc/internet-detector/up-script*": [ "read" ],
"/etc/internet-detector/down-script*": [ "read" ],
"/etc/internet-detector/public-ip-script*": [ "read" ],
"/etc/internet-detector/regular-script*": [ "read" ]
},
"uci": [ "internet-detector" ],
"ubus": {
"luci": [ "getInitList", "setInitAction" ],
"luci.internet-detector": [ "Init", "Status", "InetStatus", "UIPoll" ]
}
},
"write": {
"file": {
"/etc/internet-detector/up-script*": [ "write" ],
"/etc/internet-detector/down-script*": [ "write" ],
"/etc/internet-detector/public-ip-script*": [ "write" ],
"/etc/internet-detector/regular-script*": [ "write" ]
},
"uci": [ "internet-detector" ]
}
}
}