From 4ff18a126958366df81706a2d48222783545787e Mon Sep 17 00:00:00 2001 From: gSpot Date: Fri, 4 Jul 2025 00:02:25 +0300 Subject: [PATCH] v1.6. New module: mod_telegram. mod_public_ip: Added support for HTTP services. --- README.md | 42 ++- internet-detector-mod-email/Makefile | 2 +- .../internet-detector/modules/mod_email.lua | 3 +- internet-detector-mod-modem-restart/Makefile | 2 +- .../modules/mod_modem_restart.lua | 2 +- internet-detector-mod-telegram/Makefile | 41 +++ .../modules/mod_telegram.lua | 264 ++++++++++++++++++ internet-detector/Makefile | 2 +- .../files/etc/config/internet-detector | 5 + .../modules/mod_public_ip.lua | 186 ++++++++---- luci-app-internet-detector/Makefile | 2 +- .../resources/view/internet-detector.js | 245 +++++++++++++++- .../po/ru/internet-detector.po | 62 +++- .../po/templates/internet-detector.pot | 51 +++- .../usr/libexec/rpcd/luci.internet-detector | 11 + screenshots/06.jpg | Bin 0 -> 169591 bytes 16 files changed, 830 insertions(+), 90 deletions(-) create mode 100644 internet-detector-mod-telegram/Makefile create mode 100644 internet-detector-mod-telegram/files/usr/lib/lua/internet-detector/modules/mod_telegram.lua create mode 100644 screenshots/06.jpg diff --git a/README.md b/README.md index 99ec230..2753b86 100644 --- a/README.md +++ b/README.md @@ -13,26 +13,27 @@ Internet-detector is an application for checking the availability of the Interne **OpenWrt >= 21.02.** **Dependences:** lua, luaposix, libuci-lua. +**Recommended:** curl. ## Installation notes: opkg update - wget --no-check-certificate -O /tmp/internet-detector_1.5.2-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector_1.5.2-r1_all.ipk - opkg install /tmp/internet-detector_1.5.2-r1_all.ipk - rm /tmp/internet-detector_1.5.2-r1_all.ipk + wget --no-check-certificate -O /tmp/internet-detector_1.6.0-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector_1.6.0-r1_all.ipk + opkg install /tmp/internet-detector_1.6.0-r1_all.ipk + rm /tmp/internet-detector_1.6.0-r1_all.ipk service internet-detector start service internet-detector enable - wget --no-check-certificate -O /tmp/luci-app-internet-detector_1.5.2-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-app-internet-detector_1.5.2-r1_all.ipk - opkg install /tmp/luci-app-internet-detector_1.5.2-r1_all.ipk - rm /tmp/luci-app-internet-detector_1.5.2-r1_all.ipk + wget --no-check-certificate -O /tmp/luci-app-internet-detector_1.6.0-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-app-internet-detector_1.6.0-r1_all.ipk + opkg install /tmp/luci-app-internet-detector_1.6.0-r1_all.ipk + rm /tmp/luci-app-internet-detector_1.6.0-r1_all.ipk service rpcd restart i18n-ru: - wget --no-check-certificate -O /tmp/luci-i18n-internet-detector-ru_1.5.2-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-i18n-internet-detector-ru_1.5.2-r1_all.ipk - opkg install /tmp/luci-i18n-internet-detector-ru_1.5.2-r1_all.ipk - rm /tmp/luci-i18n-internet-detector-ru_1.5.2-r1_all.ipk + wget --no-check-certificate -O /tmp/luci-i18n-internet-detector-ru_1.6.0-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-i18n-internet-detector-ru_1.6.0-r1_all.ipk + opkg install /tmp/luci-i18n-internet-detector-ru_1.6.0-r1_all.ipk + rm /tmp/luci-i18n-internet-detector-ru_1.6.0-r1_all.ipk ## Screenshots: @@ -44,9 +45,9 @@ i18n-ru: **Dependences:** modemmanager. - wget --no-check-certificate -O /tmp/internet-detector-mod-modem-restart_1.5.2-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-modem-restart_1.5.2-r1_all.ipk - opkg install /tmp/internet-detector-mod-modem-restart_1.5.2-r1_all.ipk - rm /tmp/internet-detector-mod-modem-restart_1.5.2-r1_all.ipk + wget --no-check-certificate -O /tmp/internet-detector-mod-modem-restart_1.6.0-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-modem-restart_1.6.0-r1_all.ipk + opkg install /tmp/internet-detector-mod-modem-restart_1.6.0-r1_all.ipk + rm /tmp/internet-detector-mod-modem-restart_1.6.0-r1_all.ipk service internet-detector restart ![](https://github.com/gSpotx2f/luci-app-internet-detector/blob/master/screenshots/04.jpg) @@ -55,9 +56,20 @@ i18n-ru: **Dependences:** mailsend. - wget --no-check-certificate -O /tmp/internet-detector-mod-email_1.5.2-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-email_1.5.2-r1_all.ipk - opkg install /tmp/internet-detector-mod-email_1.5.2-r1_all.ipk - rm /tmp/internet-detector-mod-email_1.5.2-r1_all.ipk + wget --no-check-certificate -O /tmp/internet-detector-mod-email_1.6.0-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-email_1.6.0-r1_all.ipk + opkg install /tmp/internet-detector-mod-email_1.6.0-r1_all.ipk + rm /tmp/internet-detector-mod-email_1.6.0-r1_all.ipk service internet-detector restart ![](https://github.com/gSpotx2f/luci-app-internet-detector/blob/master/screenshots/05.jpg) + +## Telegram notification module (internet-detector-mod-telegram): + +**Dependences:** curl. + + wget --no-check-certificate -O /tmp/internet-detector-mod-telegram_1.6.0-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-telegram_1.6.0-r1_all.ipk + opkg install /tmp/internet-detector-mod-telegram_1.6.0-r1_all.ipk + rm /tmp/internet-detector-mod-telegram_1.6.0-r1_all.ipk + service internet-detector restart + +![](https://github.com/gSpotx2f/luci-app-internet-detector/blob/master/screenshots/06.jpg) diff --git a/internet-detector-mod-email/Makefile b/internet-detector-mod-email/Makefile index 3a67b94..e2f731a 100644 --- a/internet-detector-mod-email/Makefile +++ b/internet-detector-mod-email/Makefile @@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=internet-detector-mod-email -PKG_VERSION:=1.5.2 +PKG_VERSION:=1.6.0 PKG_RELEASE:=1 PKG_MAINTAINER:=gSpot diff --git a/internet-detector-mod-email/files/usr/lib/lua/internet-detector/modules/mod_email.lua b/internet-detector-mod-email/files/usr/lib/lua/internet-detector/modules/mod_email.lua index dfc190b..4725245 100644 --- a/internet-detector-mod-email/files/usr/lib/lua/internet-detector/modules/mod_email.lua +++ b/internet-detector-mod-email/files/usr/lib/lua/internet-detector/modules/mod_email.lua @@ -86,7 +86,7 @@ function Module:init(t) self._enabled = true else self._enabled = false - self.syslog("warning", string.format("%s: %s is not available", self.name, self.mta)) + self.syslog("err", string.format("%s: %s is not available", self.name, self.mta)) end if (not self.mailRecipient or @@ -162,6 +162,7 @@ function Module:run(currentStatus, lastStatus, timeDiff, timeNow, inetChecked) if not self._enabled then return end + if currentStatus == 1 then self._aliveCounter = 0 self._msgSentConnect = false diff --git a/internet-detector-mod-modem-restart/Makefile b/internet-detector-mod-modem-restart/Makefile index 0b8ac35..8787fd7 100644 --- a/internet-detector-mod-modem-restart/Makefile +++ b/internet-detector-mod-modem-restart/Makefile @@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=internet-detector-mod-modem-restart -PKG_VERSION:=1.5.2 +PKG_VERSION:=1.6.0 PKG_RELEASE:=1 PKG_MAINTAINER:=gSpot diff --git a/internet-detector-mod-modem-restart/files/usr/lib/lua/internet-detector/modules/mod_modem_restart.lua b/internet-detector-mod-modem-restart/files/usr/lib/lua/internet-detector/modules/mod_modem_restart.lua index d292196..7afeb5a 100644 --- a/internet-detector-mod-modem-restart/files/usr/lib/lua/internet-detector/modules/mod_modem_restart.lua +++ b/internet-detector-mod-modem-restart/files/usr/lib/lua/internet-detector/modules/mod_modem_restart.lua @@ -72,7 +72,7 @@ function Module:init(t) self._enabled = true else self._enabled = false - self.syslog("warning", string.format( + self.syslog("err", string.format( "%s: modemmanager service is not available", self.name)) end end diff --git a/internet-detector-mod-telegram/Makefile b/internet-detector-mod-telegram/Makefile new file mode 100644 index 0000000..bc63987 --- /dev/null +++ b/internet-detector-mod-telegram/Makefile @@ -0,0 +1,41 @@ +# +# (с) 2025 gSpot (https://github.com/gSpotx2f/luci-app-internet-detector) +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=internet-detector-mod-telegram +PKG_VERSION:=1.6.0 +PKG_RELEASE:=1 +PKG_MAINTAINER:=gSpot + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) + SECTION:=net + CATEGORY:=Network + TITLE:=Telegram messenger module for internet-detector + URL:=https://github.com/gSpotx2f/luci-app-internet-detector + PKGARCH:=all + DEPENDS:=+internet-detector +curl +endef + +define Package/$(PKG_NAME)/description + Telegram messenger support for internet-detector. +endef + +define Package/$(PKG_NAME)/conffiles +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/usr/lib/lua/internet-detector/modules + $(INSTALL_DATA) ./files/usr/lib/lua/internet-detector/modules/mod_telegram.lua $(1)/usr/lib/lua/internet-detector/modules/mod_telegram.lua +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/internet-detector-mod-telegram/files/usr/lib/lua/internet-detector/modules/mod_telegram.lua b/internet-detector-mod-telegram/files/usr/lib/lua/internet-detector/modules/mod_telegram.lua new file mode 100644 index 0000000..e0e70b1 --- /dev/null +++ b/internet-detector-mod-telegram/files/usr/lib/lua/internet-detector/modules/mod_telegram.lua @@ -0,0 +1,264 @@ +--[[ + Dependences: + curl +--]] + +local unistd = require("posix.unistd") + +local Module = { + name = "mod_telegram", + runPrio = 70, + syslog = function(level, msg) return true end, + debugOutput = function(msg) return true end, + writeValue = function(filePath, str) return false end, + readValue = function(filePath) return nil end, + deadPeriod = 0, + alivePeriod = 0, + mode = 0, -- 0: connected, 1: disconnected, 2: both + hostAlias = "OpenWrt", + connectTimeout = 5, + tgAPIToken = nil, + tgChatId = nil, + tgMsgURLpattern = "https://api.telegram.org/bot%s/sendMessage?chat_id=%s&parse_mode=html&text=%s", + msgTextPattern = "[%s] (%s) @ %s", -- Message (host, instance, message) + msgConnectPattern = "Connected: %s", + msgDisconnectPattern = "Disconnected: %s", + msgSeparator = " | ", + msgMaxItems = 50, + msgSendAttempts = 3, + msgSendTimeout = 5, + curlExec = "/usr/bin/curl", + curlParams = "-s", + status = nil, + _enabled = false, + _deadCounter = 0, + _aliveCounter = 0, + _msgSentDisconnect = true, + _disconnected = true, + _msgSentConnect = true, + _connected = true, + _msgBuffer = {}, + _msgSendCounter = 3, + _msgTimeoutCounter = 5, +} + +local function prequire(package) + local retVal, pkg = pcall(require, package) + return retVal and pkg +end + +function Module:init(t) + self._enabled = true + if t.mode ~= nil then + self.mode = tonumber(t.mode) + end + if t.dead_period ~= nil then + self.deadPeriod = tonumber(t.dead_period) + end + if t.alive_period ~= nil then + self.alivePeriod = tonumber(t.alive_period) + end + if t.host_alias then + self.hostAlias = t.host_alias + else + self.hostAlias = self.config.hostname + end + if t.api_token ~= nil then + self.tgAPIToken = t.api_token + end + if t.chat_id ~= nil then + self.tgChatId = t.chat_id + end + if tonumber(t.message_at_startup) == 1 then + self._msgSentDisconnect = false + self._disconnected = false + self._msgSentConnect = false + self._connected = false + end + + if unistd.access(self.curlExec, "x") then + self._enabled = true + else + self._enabled = false + self.syslog("err", string.format("%s: %s is not available", self.name, self.curlExec)) + end + if not self.tgAPIToken then + self._enabled = false + self.syslog("err", string.format("%s: Telegram bot API token not specified.", self.name)) + end + if not self.tgChatId then + self._enabled = false + self.syslog("err", string.format("%s: Telegram chat ID not specified.", self.name)) + end + + self._msgSendCounter = self.msgSendAttempts +end + +function Module:escape(str) + local t = {} + for i in str:gmatch(".") do + if i:match("[^%w_]") then + t[#t + 1] = "%" .. string.format("%x", string.byte(i)) + else + t[#t + 1] = i + end + end + return table.concat(t) +end + +function Module:appendNotice(str) + self._msgBuffer[#self._msgBuffer + 1] = str + if #self._msgBuffer > self.msgMaxItems then + local t = {} + for i = #self._msgBuffer - self.msgMaxItems + 1, #self._msgBuffer do + t[#t + 1] = self._msgBuffer[i] + end + self._msgBuffer = t + end +end + +function Module:httpRequest(url) + local retCode = 1, data + local fh = io.popen(string.format( + '%s --connect-timeout %s %s "%s"; printf "\n$?";', self.curlExec, self.connectTimeout, self.curlParams, url), "r") + if fh then + data = fh:read("*a") + fh:close() + local s, e = data:find("[0-9]+\n?$") + retCode = tonumber(data:sub(s)) + data = data:sub(0, s - 2) + if not data or data == "" then + data = nil + end + else + retCode = 1 + end + return retCode, data +end + +function Module:parseResponse(str) + local ok, errCode, desc + ok = str:match('"ok":(%w+)') + if ok == "false" then + errCode = tonumber(str:match('"error_code":(%d+)')) + if errCode then + desc = str:match('"description":"([%w%s%p_]+)"') + end + end + return ok, errCode, desc +end + +function Module:messageRequest(msg, textPattern) + local retVal = 1 + local tgMsg = string.format( + textPattern, self.hostAlias, self.config.serviceConfig.instance, msg) + local url = string.format( + self.tgMsgURLpattern, self.tgAPIToken, self.tgChatId, self:escape(tgMsg)) + + local ok, errCode, desc + local retCode, data = self:httpRequest(url) + if data then + ok, errCode, desc = self:parseResponse(data) + end + if retCode == 0 and ok == "true" then + retVal = 0 + self.syslog("info", string.format( + "%s: Message sent to chat %s", self.name, self.tgChatId)) + else + if errCode == 400 or errCode == 406 then + retVal = 2 + elseif (errCode == 401 or + errCode == 403 or + errCode == 404 or + errCode == 420) then + retVal = 3 + end + if errCode and desc then + self.syslog("warning", string.format( + "%s: %s %s", self.name, tostring(errCode), tostring(desc))) + end + end + return retVal +end + +function Module:sendMessage(msg, textPattern) + local retVal = self:messageRequest(msg, textPattern) + if retVal == 0 then + self._msgBuffer = {} + elseif retVal == 2 then + self.syslog("err", string.format( + "%s: Server error (invalid API token or chat ID)", self.name)) + else + self.syslog("err", string.format( + "%s: An error occured while sending message", self.name)) + end + return retVal +end + +function Module:run(currentStatus, lastStatus, timeDiff, timeNow, inetChecked) + if not self._enabled then + return + end + + if currentStatus == 1 then + self._aliveCounter = 0 + self._msgSentConnect = false + + if not self._disconnected then + self._disconnected = true + self:appendNotice(string.format( + self.msgDisconnectPattern, os.date("%Y.%m.%d %H:%M:%S", os.time()))) + end + if not self._msgSentDisconnect and (self.mode == 1 or self.mode == 2) then + if self._deadCounter >= self.deadPeriod then + self._msgSendCounter = 0 + self._msgSentDisconnect = true + else + self._deadCounter = self._deadCounter + timeDiff + end + end + self._connected = false + else + self._deadCounter = 0 + self._msgSentDisconnect = false + + if not self._connected then + self._connected = true + self:appendNotice(string.format( + self.msgConnectPattern, os.date("%Y.%m.%d %H:%M:%S", os.time()))) + end + if not self._msgSentConnect and (self.mode == 0 or self.mode == 2) then + if self._aliveCounter >= self.alivePeriod then + self._msgSendCounter = 0 + self._msgSentConnect = true + else + self._aliveCounter = self._aliveCounter + timeDiff + end + end + self._disconnected = false + end + + if self._msgSendCounter < self.msgSendAttempts then + if self._msgTimeoutCounter >= self.msgSendTimeout then + if #self._msgBuffer > 0 then + local retVal = self:sendMessage(table.concat(self._msgBuffer, self.msgSeparator), self.msgTextPattern) + if retVal == 1 then + self._msgSendCounter = self._msgSendCounter + 1 + else + self._msgSendCounter = self.msgSendAttempts + end + end + self._msgTimeoutCounter = 0 + else + self._msgTimeoutCounter = self._msgTimeoutCounter + timeDiff + end + else + self._msgTimeoutCounter = self.msgSendTimeout + end +end + +function Module:onExit() + return true +end + +return Module diff --git a/internet-detector/Makefile b/internet-detector/Makefile index 8d84084..57e79ff 100644 --- a/internet-detector/Makefile +++ b/internet-detector/Makefile @@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=internet-detector -PKG_VERSION:=1.5.2 +PKG_VERSION:=1.6.0 PKG_RELEASE:=1 PKG_MAINTAINER:=gSpot diff --git a/internet-detector/files/etc/config/internet-detector b/internet-detector/files/etc/config/internet-detector index aeb8aab..5dfc688 100644 --- a/internet-detector/files/etc/config/internet-detector +++ b/internet-detector/files/etc/config/internet-detector @@ -44,6 +44,11 @@ config instance 'internet' option mod_email_mode '0' option mod_email_alive_period '0' option mod_email_mail_security 'tls' + option mod_telegram_enabled '0' + option mod_telegram_message_at_startup '0' + option mod_telegram_mode '2' + option mod_telegram_dead_period '0' + option mod_telegram_alive_period '0' option mod_user_scripts_enabled '0' option mod_user_scripts_alive_period '0' option mod_user_scripts_up_script_attempts '1' diff --git a/internet-detector/files/usr/lib/lua/internet-detector/modules/mod_public_ip.lua b/internet-detector/files/usr/lib/lua/internet-detector/modules/mod_public_ip.lua index ce184f6..f44b5b9 100644 --- a/internet-detector/files/usr/lib/lua/internet-detector/modules/mod_public_ip.lua +++ b/internet-detector/files/usr/lib/lua/internet-detector/modules/mod_public_ip.lua @@ -20,39 +20,69 @@ local Module = { port = 53, runInterval = 600, runIntervalFailed = 60, - runIntervalDNSFailed = 1, + runIntervalIPFailed = 1, requestAttempts = 2, timeout = 3, + curlExec = "/usr/bin/curl", + curlParams = "-s", providers = { opendns1 = { - name = "opendns1", host = "myip.opendns.com", + name = "opendns1", type = "dns", host = "myip.opendns.com", server = "208.67.222.222", server6 = "2620:119:35::35", port = 53, queryType = "A", queryType6 = "AAAA", }, - opendns2 = { - name = "opendns2", host = "myip.opendns.com", + opendns2 = { + name = "opendns2", type = "dns", host = "myip.opendns.com", server = "208.67.220.220", server6 = "2620:119:35::35", port = 53, queryType = "A", queryType6 = "AAAA", }, - opendns3 = { - name = "opendns3", host = "myip.opendns.com", + opendns3 = { + name = "opendns3", type = "dns", host = "myip.opendns.com", server = "208.67.222.220", server6 = "2620:119:35::35", port = 53, queryType = "A", queryType6 = "AAAA", }, - opendns4 = { - name = "opendns4", host = "myip.opendns.com", + opendns4 = { + name = "opendns4", type = "dns", host = "myip.opendns.com", server = "208.67.220.222", server6 = "2620:119:35::35", port = 53, queryType = "A", queryType6 = "AAAA", }, - akamai = { - name = "akamai", host = "whoami.akamai.net", + google = { + name = "google", type = "dns", host = "o-o.myaddr.l.google.com", + server = "ns1.google.com", server6 = "ns1.google.com", + port = 53, queryType = "TXT", queryType6 = "TXT", + }, + akamai = { + name = "akamai", type = "dns", host = "whoami.akamai.net", server = "ns1-1.akamaitech.net", server6 = "ns1-1.akamaitech.net", port = 53, queryType = "A", queryType6 = "AAAA", }, - google = { - name = "google", host = "o-o.myaddr.l.google.com", - server = "ns1.google.com", server6 = "ns1.google.com", - port = 53, queryType = "TXT", queryType6 = "TXT", + akamai_http = { + name = "akamai_http", type = "http", url = "http://whatismyip.akamai.com/", + parseResponseFunc = nil, + }, + amazonaws= { + name = "amazonaws", type = "http", url = "http://checkip.amazonaws.com/", + parseResponseFunc = nil, + }, + wgetip= { + name = "wgetip", type = "http", url = "http://wgetip.com/", + parseResponseFunc = nil, + }, + ifconfig= { + name = "ifconfig", type = "http", url = "http://ifconfig.me/", + parseResponseFunc = nil, + }, + ipecho= { + name = "ipecho", type = "http", url = "http://ipecho.net/plain", + parseResponseFunc = nil, + }, + canhazip= { + name = "canhazip", type = "http", url = "http://canhazip.com/", + parseResponseFunc = nil, + }, + icanhazip = { + name = "icanhazip", type = "http", url = "http://icanhazip.com/", + parseResponseFunc = nil, }, }, ipScript = "", @@ -64,9 +94,10 @@ local Module = { _lastResolvedIp = nil, _enabled = false, _counter = 0, - _DNSFalseCounter = 0, + _IPFalseCounter = 0, _interval = 600, _DNSPacket = nil, + _requestIP = nil, } function Module:runIpScript() @@ -172,6 +203,7 @@ function Module:sendUDPMessage(message, server, port) end local ok, errMsg, errNum = socket.sendto(sock, message, saTable[1]) + local response = {} if ok then local ret, resp, errNum = socket.recvfrom(sock, 1024) @@ -212,13 +244,10 @@ end function Module:parseParts(message, start, parts) local partStart = start + 2 local partLen = message:sub(start, start + 1) - if #partLen == 0 then return parts end - local partEnd = partStart + (tonumber(partLen, 16) * 2) - parts[#parts + 1] = message:sub(partStart, partEnd - 1) if message:sub(partEnd, partEnd + 1) == "00" or partEnd > #message then return parts @@ -240,6 +269,7 @@ function Module:decodeMessage(message) local ARCOUNT = message:sub(21, 24) local questionSectionStarts = 25 + local questionParts = self:parseParts(message, questionSectionStarts, {}) local qtypeStarts = questionSectionStarts + (#table.concat(questionParts)) + (#questionParts * 2) + 1 local qclassStarts = qtypeStarts + 4 @@ -251,11 +281,11 @@ function Module:decodeMessage(message) if numAnswers > 0 then for answerCount = 1, numAnswers do if answerSectionStarts < #message then - local ATYPE = tonumber( + local ATYPE = tonumber( message:sub(answerSectionStarts + 5, answerSectionStarts + 8), 16) - local RDLENGTH = tonumber( + local RDLENGTH = tonumber( message:sub(answerSectionStarts + 21, answerSectionStarts + 24), 16) - local RDDATA = message:sub( + local RDDATA = message:sub( answerSectionStarts + 25, answerSectionStarts + 24 + (RDLENGTH * 2)) local RDDATA_decoded = "" @@ -290,26 +320,23 @@ function Module:decodeMessage(message) end answerSectionStarts = answerSectionStarts + 24 + (RDLENGTH * 2) - if RDDATA_decoded:match("^[a-f0-9.:]+$") then + if RDDATA_decoded:match("^[a-fA-F0-9.:]+$") then retTable[#retTable + 1] = RDDATA_decoded end end end end - return retTable end -function Module:requestIP() +function Module:requestIPDNS() local res local qtype = self._qtype and self._provider.queryType6 or self._provider.queryType local server = self._qtype and self._provider.server6 or self._provider.server local port = self._provider.port or self.port - if not self._DNSPacket then self._DNSPacket = self:buildMessage(self._provider.host, qtype) end - local retCode, response = self:sendUDPMessage(self._DNSPacket, server, port) if retCode == 0 and response then local retTable = self:decodeMessage(response) @@ -320,7 +347,57 @@ function Module:requestIP() self.syslog("warning", string.format( "%s: UDP error when requesting an IP address", self.name)) end + return res +end +function Module:httpRequest(url) + local retCode = 1, data + local iface = "" + if self.config.serviceConfig.iface then + iface = " --interface " .. self.config.serviceConfig.iface + end + local fh = io.popen(string.format( + '%s%s --connect-timeout %s %s "%s"; printf "\n$?";', self.curlExec, iface, self.timeout, self.curlParams, url), "r") + if fh then + data = fh:read("*a") + fh:close() + local s, e = data:find("[0-9]+\n?$") + retCode = tonumber(data:sub(s)) + data = data:sub(0, s - 2) + if not data or data == "" then + data = nil + end + else + retCode = 1 + end + return retCode, data +end + +function Module:parseHTTPResponse(data) + data = data:gsub("^[%s%c]+", ""):gsub("[%s%c]+$", "") + if data:match("^[a-fA-F0-9.:]+$") then + return data + end + return +end + +function Module:requestIPHTTP() + local res + local url = self._provider.url + local parseResponseFunc = self._provider.parseResponseFunc + if url then + local retCode, data = self:httpRequest(url) + if retCode == 0 and data then + if type(parseResponseFunc) == "function" then + res = parseResponseFunc(data) + else + res = self:parseHTTPResponse(data) + end + else + self.syslog("warning", string.format( + "%s: HTTP error when requesting an IP address", self.name)) + end + end return res end @@ -352,12 +429,28 @@ function Module:init(t) if t.qtype ~= nil then self._qtype = (tonumber(t.qtype) ~= 0) end - self._currentIp = nil - self._lastResolvedIp = nil - self._DNSPacket = nil - self._interval = self.runInterval - self._DNSFalseCounter = 0 - self._enabled = true + self._currentIp = nil + self._lastResolvedIp = nil + self._DNSPacket = nil + self._interval = self.runInterval + self._IPFalseCounter = 0 + self._enabled = true + if not self._provider then + self._enabled = false + else + if self._provider.url and not unistd.access(self.curlExec, "x") then + self._enabled = false + self.syslog("err", string.format( + "%s: %s is not available. You need to install curl.", self.name, self.curlExec)) + end + if self._provider.type == "dns" then + self._requestIP = self.requestIPDNS + elseif self._provider.type == "http" then + self._requestIP = self.requestIPHTTP + else + self._enabled = false + end + end end function Module:run(currentStatus, lastStatus, timeDiff, timeNow, inetChecked) @@ -366,23 +459,20 @@ function Module:run(currentStatus, lastStatus, timeDiff, timeNow, inetChecked) end if currentStatus == 0 then if self._counter == 0 or self._counter >= self._interval or currentStatus ~= lastStatus then - - local ip = self:requestIP() - + local ip = self:_requestIP() if not ip then - ip = "" - self._DNSFalseCounter = self._DNSFalseCounter + 1 - if self._DNSFalseCounter >= self.requestAttempts then + ip = "" + self._IPFalseCounter = self._IPFalseCounter + 1 + if self._IPFalseCounter >= self.requestAttempts then self._interval = self.runIntervalFailed - self._DNSFalseCounter = 0 + self._IPFalseCounter = 0 else - self._interval = self.runIntervalDNSFailed + self._interval = self.runIntervalIPFailed end else - self._interval = self.runInterval - self._DNSFalseCounter = 0 + self._interval = self.runInterval + self._IPFalseCounter = 0 end - if ip ~= self._currentIp then self.status = ip if ip ~= "" then @@ -400,11 +490,11 @@ function Module:run(currentStatus, lastStatus, timeDiff, timeNow, inetChecked) self._counter = 0 end else - self._currentIp = nil - self.status = self._currentIp - self._DNSFalseCounter = 0 - self._counter = 0 - self._interval = self.runInterval + self._currentIp = nil + self.status = self._currentIp + self._IPFalseCounter = 0 + self._counter = 0 + self._interval = self.runInterval end self._counter = self._counter + timeDiff end diff --git a/luci-app-internet-detector/Makefile b/luci-app-internet-detector/Makefile index c92be25..83cb687 100644 --- a/luci-app-internet-detector/Makefile +++ b/luci-app-internet-detector/Makefile @@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-internet-detector -PKG_VERSION:=1.5.2 +PKG_VERSION:=1.6.0 PKG_RELEASE:=1 LUCI_TITLE:=LuCI support for internet-detector LUCI_DEPENDS:=+internet-detector diff --git a/luci-app-internet-detector/htdocs/luci-static/resources/view/internet-detector.js b/luci-app-internet-detector/htdocs/luci-static/resources/view/internet-detector.js index 981f276..94bef58 100644 --- a/luci-app-internet-detector/htdocs/luci-static/resources/view/internet-detector.js +++ b/luci-app-internet-detector/htdocs/luci-static/resources/view/internet-detector.js @@ -134,6 +134,33 @@ var Timefield = ui.Textfield.extend({ }, }); +var TextfieldButton = ui.Textfield.extend({ + render() { + let frameEl = E('div', { 'id': this.options.id }), + inputEl = E('input', { + 'id' : this.options.id ? 'widget.' + this.options.id : null, + 'name' : this.options.name, + 'type' : 'text', + 'class' : 'cbi-input-text', + 'readonly' : this.options.readonly ? '' : null, + 'disabled' : this.options.disabled ? '' : null, + 'maxlength' : this.options.maxlength, + 'placeholder': this.options.placeholder, + 'value' : this.value, + }); + frameEl.appendChild(E('div', { 'class': 'control-group' }, [ + inputEl, + E('button', { + 'class' : `cbi-button cbi-button-${this.options.btnstyle || 'neutral'}`, + 'title' : this.options.btntitle, + 'aria-label': this.options.btntitle, + 'click' : this.options.onclick, + }, this.options.btntext,) + ])); + return this.bind(frameEl); + }, +}); + return view.extend({ appName : 'internet-detector', configDir : '/etc/internet-detector', @@ -149,10 +176,13 @@ return view.extend({ ledsPath : '/sys/class/leds', ledsPerInstance : 3, leds : [], + tgUpdatesURLPattern : 'https://api.telegram.org/bot%s/getUpdates', mm : false, mmInit : false, email : false, emailExec : false, + telegram : false, + curlExec : false, modRegularScriptNextRun: {}, callInitStatus: rpc.declare({ @@ -330,6 +360,61 @@ return view.extend({ }); }, + getTgChatIdHandler(ev, instance) { + ev.preventDefault(); + let botToken; + let botTokenInput = document.getElementById( + 'widget.cbid.%s.%s.mod_telegram_api_token'.format(this.appName, instance)); + if(botTokenInput) { + botToken = botTokenInput.value; + }; + if(!botTokenInput || !botToken) { + alert(_('Bot API token is missing!')); + return; + }; + let apiURL = this.tgUpdatesURLPattern.format(botToken); + + console.log(`Requesting chat ID: ${apiURL}`); + + return fetch(apiURL).then(r => { + if(r.ok) { + r.json().then(j => { + let chats = []; + if(j.ok && j.result) { + j.result.forEach(i => { + if(i.message && i.message.chat && i.message.chat.id) { + if(!chats.includes(i.message.chat.id)) { + chats.push(i.message.chat.id); + }; + }; + }); + }; + let tgChatIdInput = document.getElementById( + 'widget.cbid.%s.%s.mod_telegram_chat_id'.format(this.appName, instance)); + if(tgChatIdInput) { + if(chats.length == 0) { + alert(_('No messages available. Write something to the bot and try again.')); + } else { + tgChatIdInput.value = chats[chats.length - 1]; + tgChatIdInput.focus(); + tgChatIdInput.blur(); + }; + }; + }); + } else { + let status = r.status; + let errorString = `${_('Error')} ${r.status}.`; + if(status == 404) { + errorString += ` ${_('Incorrect bot token?')}`; + }; + alert(errorString); + }; + }).catch(e => { + alert(e.message); + throw e; + }); + }, + CBITimeInput: form.Value.extend({ __name__ : 'CBI.TimeInput', @@ -354,6 +439,27 @@ return view.extend({ }, }), + CBITextfieldButtonInput: form.Value.extend({ + __name__ : 'CBI.TextfieldButtonInput', + + renderWidget(section_id, option_index, cfgvalue) { + let value = (cfgvalue != null) ? cfgvalue : this.default, + widget = new TextfieldButton(value, { + id : this.cbid(section_id), + optional : this.optional || this.rmempty, + datatype : this.datatype, + placeholder: this.placeholder, + validate : L.bind(this.validate, this, section_id), + disabled : (this.readonly != null) ? this.readonly : this.map.readonly, + btntext : this.btntext, + btntitle : this.btntitle, + btnstyle : this.btnstyle, + onclick : this.onclick, + }); + return widget.render(); + }, + }), + CBIBlockInetStatus: form.Value.extend({ __name__ : 'CBI.BlockInetStatus', @@ -542,6 +648,12 @@ return view.extend({ if(data[3].email_exec) { this.emailExec = true; }; + if(data[3].telegram) { + this.telegram = true; + }; + if(data[3].curl_exec) { + this.curlExec = true; + }; }; this.currentAppMode = uci.get(this.appName, 'config', 'mode'); @@ -756,6 +868,9 @@ return view.extend({ if(this.email) { s.tab('email', _('Email notification')); }; + if(this.telegram) { + s.tab('telegram', _('Telegram notification')); + }; s.tab('user_scripts', _('User scripts')); s.tab('regular_script', _('Regular script')); }; @@ -1081,16 +1196,27 @@ return view.extend({ // provider o = s.taboption('public_ip', form.ListValue, - 'mod_public_ip_provider', _('DNS provider'), - _('Service for determining the public IP address through DNS.') + 'mod_public_ip_provider', _('Provider'), + _('Service for determining the public IP address.') + '
' + + ((this.curlExec) ? '' : + _('To support HTTP services you need to install curl.')) ); o.modalonly = true; - o.value('opendns1'); - o.value('opendns2'); - o.value('opendns3'); - o.value('opendns4'); - o.value('akamai'); - o.value('google'); + o.value('opendns1', 'opendns1 (DNS)'); + o.value('opendns2', 'opendns2 (DNS)'); + o.value('opendns3', 'opendns3 (DNS)'); + o.value('opendns4', 'opendns4 (DNS)'); + o.value('google', 'google (DNS)'); + o.value('akamai', 'akamai (DNS)'); + if(this.curlExec) { + o.value('akamai_http', "akamai (HTTP)"); + o.value('amazonaws', "amazonaws (HTTP)"); + o.value('wgetip', "wgetip.com (HTTP)"); + o.value('ifconfig', "ifconfig.me (HTTP)"); + o.value('ipecho', "ipecho.net (HTTP)"); + o.value('canhazip', "canhazip.com (HTTP)"); + o.value('icanhazip', "icanhazip.com (HTTP)"); + }; o.default = 'opendns1'; // ipv6 @@ -1102,6 +1228,12 @@ return view.extend({ o.value('0', 'A (IPv4)'); o.value('1', 'AAAA (IPv6)'); o.default = '0'; + o.depends({ 'mod_public_ip_provider': 'opendns1' }); + o.depends({ 'mod_public_ip_provider': 'opendns2' }); + o.depends({ 'mod_public_ip_provider': 'opendns3' }); + o.depends({ 'mod_public_ip_provider': 'opendns4' }); + o.depends({ 'mod_public_ip_provider': 'google' }); + o.depends({ 'mod_public_ip_provider': 'akamai' }); // interval o = s.taboption('public_ip', form.ListValue, @@ -1290,6 +1422,103 @@ return view.extend({ }; }; + // Telegram notification + + if(this.telegram) { + if(this.curlExec) { + o = s.taboption('telegram', form.DummyValue, '_dummy'); + o.rawhtml = true; + o.default = '
' + + _('Telegram message will be sent when connected or disconnected from the Internet.') + + '
' + + _("You need to register a new %sTelegram bot%s. Then get the bot's API token and paste it into the Bot token 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 ID button.").format("", '') + + '
'; + + o.modalonly = true; + + // enabled + o = s.taboption('telegram', form.Flag, 'mod_telegram_enabled', + _('Enable')); + o.rmempty = false; + o.modalonly = true; + + // mode + o = s.taboption('telegram', form.ListValue, + 'mod_telegram_mode', _('When message will be sent') + ); + o.modalonly = true; + o.value(0, _('after connection')); + o.value(1, _('after disconnection')); + o.value(2, _('after connection or disconnection')); + o.default = '0'; + + // alive_period + o = s.taboption('telegram', this.CBITimeInput, + 'mod_telegram_alive_period', _('Alive period'), + _('Period of time after connecting to the Internet before sending a message.') + ); + o.rmempty = false; + o.modalonly = true; + o.depends({ 'mod_telegram_mode': '0' }); + o.depends({ 'mod_telegram_mode': '2' }); + o.default = '0'; + + // dead_period + o = s.taboption('telegram', this.CBITimeInput, + 'mod_telegram_dead_period', _('Dead period'), + _('Period of time after disconnecting from Internet before sending a message.') + ); + o.rmempty = false; + o.modalonly = true; + o.depends({ 'mod_telegram_mode': '1' }); + o.depends({ 'mod_telegram_mode': '2' }); + o.default = '0'; + + // host_alias + o = s.taboption('telegram', form.Value, 'mod_telegram_host_alias', + _('Host alias'), + _('Host identifier in messages. If not specified, hostname will be used.')); + o.modalonly = true; + + // tg_api_token + o = s.taboption('telegram', form.Value, + 'mod_telegram_api_token', _('Bot token'), + _('Telegram bot API token.')); + o.password = true; + o.modalonly = true; + + // tg_chat_id + o = s.taboption('telegram', this.CBITextfieldButtonInput, + 'mod_telegram_chat_id', _('Chat ID'), + _('ID of the Telegram chat to which messages will be sent.') + ); + o.btntext = _('ID'), + o.btntitle = _('Request chat ID from bot API'), + o.btnstyle = 'action', + o.onclick = ui.createHandlerFn(this, + (ev) => this.getTgChatIdHandler(ev, s.section)); + o.modalonly = true; + o.optional = false; + o.rmempty = false; + o.depends({ 'mod_telegram_api_token': /.+/ }); + + // message_at_startup + o = s.taboption('telegram', form.Flag, 'mod_telegram_message_at_startup', + _('On startup'), + _('Send message on service startup.') + ); + o.rmempty = false; + o.modalonly = true; + } else { + o = s.taboption('telegram', form.DummyValue, '_dummy'); + o.rawhtml = true; + o.default = '
' + + _('Curl is not available...') + + '
'; + o.modalonly = true; + }; + }; + // User scripts o = s.taboption('user_scripts', form.DummyValue, '_dummy'); diff --git a/luci-app-internet-detector/po/ru/internet-detector.po b/luci-app-internet-detector/po/ru/internet-detector.po index 56adb1f..5bbacec 100644 --- a/luci-app-internet-detector/po/ru/internet-detector.po +++ b/luci-app-internet-detector/po/ru/internet-detector.po @@ -39,7 +39,7 @@ msgid "Alive period" msgstr "Период после подключения" msgid "An email will be sent when connected or disconnected from the Internet." -msgstr "Сообщение будет отправлено при подключении или отключении от Интернет." +msgstr "Сообщение будет отправлено на email при подключении или отключении от Интернет." msgid "An error has occurred" msgstr "Произошла ошибка" @@ -56,6 +56,15 @@ msgstr "Большой: 248 байт" msgid "Blink" msgstr "Мигание" +msgid "Bot API token is missing!" +msgstr "Отсутствует API токен бота!" + +msgid "Bot token" +msgstr "Токен бота" + +msgid "ID чата" +msgstr "" + msgid "Check type" msgstr "Тип проверки" @@ -80,6 +89,9 @@ msgstr "Таймаут соединения" msgid "Contents have been saved." msgstr "Содержимое сохранено." +msgid "Curl is not available..." +msgstr "Curl недоступен..." + msgid "Dead interval" msgstr "Интервал при отключении" @@ -113,9 +125,6 @@ msgstr "Закрыть" msgid "DNS query type" msgstr "Тип DNS-запроса" -msgid "DNS provider" -msgstr "DNS провайдер" - msgid "Edit" msgstr "Изменить" @@ -152,6 +161,9 @@ msgstr "Включить public-ip-script" msgid "Enabled" msgstr "Включен" +msgid "Error" +msgstr "Ошибка" + msgid "Expecting:" msgstr "Ожидается:" @@ -180,7 +192,7 @@ msgid "Hosts" msgstr "Хосты" msgid "Hosts polling interval when the Internet is down." -msgstr "Интервал опроса хостов если Интернет не доступен." +msgstr "Интервал опроса хостов если Интернет недоступен." msgid "Hosts polling interval when the Internet is up." msgstr "Интервал опроса хостов если Интернет доступен." @@ -195,12 +207,18 @@ 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 "Instances" msgstr "Экземпляры" @@ -250,7 +268,7 @@ msgid "Loading" msgstr "Загрузка" msgid "Mailsend is not available..." -msgstr "Mailsend не доступен..." +msgstr "Mailsend недоступен..." msgid "Main settings" msgstr "Основные настройки" @@ -280,7 +298,7 @@ msgid "Maximum timeout for waiting for a response from the host." msgstr "Максимальный таймаут ожидания ответа от хоста." msgid "ModemManager is not available..." -msgstr "ModemManager не доступен..." +msgstr "ModemManager недоступен..." msgid "Modem will be restarted when the Internet is disconnected." msgstr "Модем будет перезапущен при отключении Интернет." @@ -314,6 +332,9 @@ msgstr "Следующий запуск" msgid "No LEDs available..." msgstr "Нет доступных LED..." +msgid "No messages available. Write something to the bot and try again." +msgstr "Нет доступных сообщений. Напишите что-нибудь боту и попробуйте ещё раз." + msgid "Not scheduled" msgstr "Не запланирован" @@ -373,6 +394,9 @@ msgstr "Регулярный скрипт" msgid "Polling interval" msgstr "Интервал опроса" +msgid "Provider" +msgstr "Провайдер" + msgid "Public IP" msgstr "Публичный IP" @@ -388,6 +412,9 @@ msgstr "Перезагрузка устройства если Интренет msgid "Recipient" msgstr "Получатель" +msgid "Request chat ID from bot API" +msgstr "Запросить ID чата через API бота" + msgid "Restart" msgstr "Перезапуск" @@ -463,8 +490,8 @@ msgstr "Не удалось выполнить действие службы \"% msgid "Service configuration" msgstr "Конфигурация службы" -msgid "Service for determining the public IP address through DNS." -msgstr "Сервис для определения публичного IP адреса через DNS." +msgid "Service for determining the public IP address." +msgstr "Сервис для определения публичного IP адреса." msgid "Service: detector always runs as a system service." msgstr "Служба: детектор работает постоянно, как системная служба." @@ -505,6 +532,12 @@ 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-запросе (если сервис поддерживает)." @@ -517,6 +550,9 @@ 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 "Type a time string" msgstr "Введите строку времени" @@ -557,12 +593,20 @@ msgstr "" msgid "When email will be sent" msgstr "Когда будет отправлено сообщение" +msgid "When message will be sent" +msgstr "Когда будет отправлено сообщение" + msgid "Windows: 32 bytes" msgstr "Windows: 32 байта" msgid "Write messages to the system log." msgstr "Записывать сообщения в системный журнал." +msgid "" +"You need to register a new %sTelegram bot%s. Then get the bot's API token and paste it into the Bot token 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 ID button." +msgstr "" +"Необходимо зарегистрировать новый %sTelegram бот%s. Затем получить API токен бота и вставить его в поле Токен бота. После этого, откройте чат с ботом, напишите что-нибудь (в приложении Telegram) и можно будет получить ID чата с помощью кнопки ID." + msgid "after connection" msgstr "после подключения" diff --git a/luci-app-internet-detector/po/templates/internet-detector.pot b/luci-app-internet-detector/po/templates/internet-detector.pot index 51ee979..6fd4baf 100644 --- a/luci-app-internet-detector/po/templates/internet-detector.pot +++ b/luci-app-internet-detector/po/templates/internet-detector.pot @@ -44,6 +44,15 @@ msgstr "" msgid "Blink" msgstr "" +msgid "Bot API token is missing!" +msgstr "" + +msgid "Bot token" +msgstr "" + +msgid "Chat ID" +msgstr "" + msgid "Check type" msgstr "" @@ -68,6 +77,9 @@ msgstr "" msgid "Contents have been saved." msgstr "" +msgid "Curl is not available..." +msgstr "" + msgid "Dead interval" msgstr "" @@ -101,9 +113,6 @@ msgstr "" msgid "DNS query type" msgstr "" -msgid "DNS provider" -msgstr "" - msgid "Edit" msgstr "" @@ -140,6 +149,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Error" +msgstr "" + msgid "Expecting:" msgstr "" @@ -181,12 +193,18 @@ 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 "Instances" msgstr "" @@ -289,6 +307,9 @@ msgstr "" msgid "No LEDs available..." msgstr "" +msgid "No messages available. Write something to the bot and try again." +msgstr "" + msgid "Not scheduled" msgstr "" @@ -345,6 +366,9 @@ msgstr "" msgid "Polling interval" msgstr "" +msgid "Provider" +msgstr "" + msgid "Public IP" msgstr "" @@ -360,6 +384,9 @@ msgstr "" msgid "Recipient" msgstr "" +msgid "Request chat ID from bot API" +msgstr "" + msgid "Restart" msgstr "" @@ -435,7 +462,7 @@ msgstr "" msgid "Service configuration" msgstr "" -msgid "Service for determining the public IP address through DNS." +msgid "Service for determining the public IP address." msgstr "" msgid "Service: detector always runs as a system service." @@ -477,6 +504,12 @@ 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 "" @@ -489,6 +522,9 @@ 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 "Type a time string" msgstr "" @@ -525,12 +561,19 @@ msgstr "" msgid "When email will be sent" msgstr "" +msgid "When message will be sent" +msgstr "" + msgid "Windows: 32 bytes" msgstr "" msgid "Write messages to the system log." msgstr "" +msgid "" +"You need to register a new %sTelegram bot%s. Then get the bot's API token and paste it into the Bot token 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 ID button." +msgstr "" + msgid "after connection" msgstr "" diff --git a/luci-app-internet-detector/root/usr/libexec/rpcd/luci.internet-detector b/luci-app-internet-detector/root/usr/libexec/rpcd/luci.internet-detector index 4882890..42da7ac 100755 --- a/luci-app-internet-detector/root/usr/libexec/rpcd/luci.internet-detector +++ b/luci-app-internet-detector/root/usr/libexec/rpcd/luci.internet-detector @@ -4,6 +4,7 @@ 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") @@ -37,6 +38,16 @@ local function init() 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 diff --git a/screenshots/06.jpg b/screenshots/06.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9acf0b05a9d468899b89bc1d22d20acccfdbd75a GIT binary patch literal 169591 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�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 C{uhk^ literal 0 HcmV?d00001