mirror of
https://github.com/gSpotx2f/luci-app-internet-detector.git
synced 2025-12-06 03:26:50 +03:00
Fixed mod_public_ip
This commit is contained in:
30
README.md
30
README.md
@@ -15,22 +15,22 @@ Internet-detector is an application for checking the availability of the Interne
|
||||
## Installation notes (OpenWrt >= 21.02)
|
||||
|
||||
opkg update
|
||||
wget --no-check-certificate -O /tmp/internet-detector_1.4.3-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector_1.4.3-r1_all.ipk
|
||||
opkg install /tmp/internet-detector_1.4.3-r1_all.ipk
|
||||
rm /tmp/internet-detector_1.4.3-r1_all.ipk
|
||||
wget --no-check-certificate -O /tmp/internet-detector_1.4.4-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector_1.4.4-r1_all.ipk
|
||||
opkg install /tmp/internet-detector_1.4.4-r1_all.ipk
|
||||
rm /tmp/internet-detector_1.4.4-r1_all.ipk
|
||||
service internet-detector start
|
||||
service internet-detector enable
|
||||
|
||||
wget --no-check-certificate -O /tmp/luci-app-internet-detector_1.4.3-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-app-internet-detector_1.4.3-r1_all.ipk
|
||||
opkg install /tmp/luci-app-internet-detector_1.4.3-r1_all.ipk
|
||||
rm /tmp/luci-app-internet-detector_1.4.3-r1_all.ipk
|
||||
wget --no-check-certificate -O /tmp/luci-app-internet-detector_1.4.4-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-app-internet-detector_1.4.4-r1_all.ipk
|
||||
opkg install /tmp/luci-app-internet-detector_1.4.4-r1_all.ipk
|
||||
rm /tmp/luci-app-internet-detector_1.4.4-r1_all.ipk
|
||||
service rpcd restart
|
||||
|
||||
i18n-ru:
|
||||
|
||||
wget --no-check-certificate -O /tmp/luci-i18n-internet-detector-ru_1.4.3-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-i18n-internet-detector-ru_1.4.3-r1_all.ipk
|
||||
opkg install /tmp/luci-i18n-internet-detector-ru_1.4.3-r1_all.ipk
|
||||
rm /tmp/luci-i18n-internet-detector-ru_1.4.3-r1_all.ipk
|
||||
wget --no-check-certificate -O /tmp/luci-i18n-internet-detector-ru_1.4.4-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-i18n-internet-detector-ru_1.4.4-r1_all.ipk
|
||||
opkg install /tmp/luci-i18n-internet-detector-ru_1.4.4-r1_all.ipk
|
||||
rm /tmp/luci-i18n-internet-detector-ru_1.4.4-r1_all.ipk
|
||||
|
||||
## Screenshots:
|
||||
|
||||
@@ -42,9 +42,9 @@ i18n-ru:
|
||||
|
||||
**Dependences:** modemmanager.
|
||||
|
||||
wget --no-check-certificate -O /tmp/internet-detector-mod-modem-restart_1.4.3-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-modem-restart_1.4.3-r1_all.ipk
|
||||
opkg install /tmp/internet-detector-mod-modem-restart_1.4.3-r1_all.ipk
|
||||
rm /tmp/internet-detector-mod-modem-restart_1.4.3-r1_all.ipk
|
||||
wget --no-check-certificate -O /tmp/internet-detector-mod-modem-restart_1.4.4-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-modem-restart_1.4.4-r1_all.ipk
|
||||
opkg install /tmp/internet-detector-mod-modem-restart_1.4.4-r1_all.ipk
|
||||
rm /tmp/internet-detector-mod-modem-restart_1.4.4-r1_all.ipk
|
||||
service internet-detector restart
|
||||
|
||||

|
||||
@@ -53,9 +53,9 @@ i18n-ru:
|
||||
|
||||
**Dependences:** mailsend.
|
||||
|
||||
wget --no-check-certificate -O /tmp/internet-detector-mod-email_1.4.3-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-email_1.4.3-r1_all.ipk
|
||||
opkg install /tmp/internet-detector-mod-email_1.4.3-r1_all.ipk
|
||||
rm /tmp/internet-detector-mod-email_1.4.3-r1_all.ipk
|
||||
wget --no-check-certificate -O /tmp/internet-detector-mod-email_1.4.4-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-email_1.4.4-r1_all.ipk
|
||||
opkg install /tmp/internet-detector-mod-email_1.4.4-r1_all.ipk
|
||||
rm /tmp/internet-detector-mod-email_1.4.4-r1_all.ipk
|
||||
service internet-detector restart
|
||||
|
||||

|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=internet-detector-mod-email
|
||||
PKG_VERSION:=1.4.3
|
||||
PKG_VERSION:=1.4.4
|
||||
PKG_RELEASE:=1
|
||||
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/luci-app-internet-detector>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=internet-detector-mod-modem-restart
|
||||
PKG_VERSION:=1.4.3
|
||||
PKG_VERSION:=1.4.4
|
||||
PKG_RELEASE:=1
|
||||
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/luci-app-internet-detector>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=internet-detector
|
||||
PKG_VERSION:=1.4.3
|
||||
PKG_VERSION:=1.4.4
|
||||
PKG_RELEASE:=1
|
||||
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/luci-app-internet-detector>
|
||||
|
||||
|
||||
@@ -28,7 +28,9 @@ config instance 'internet'
|
||||
option mod_public_ip_provider 'opendns1'
|
||||
option mod_public_ip_qtype '0'
|
||||
option mod_public_ip_interval '600'
|
||||
option mod_public_ip_timeout '3'
|
||||
option mod_public_ip_interval_failed '60'
|
||||
option mod_public_ip_request_attempts '2'
|
||||
option mod_public_ip_timeout '2'
|
||||
option mod_public_ip_enable_ip_script '0'
|
||||
option mod_email_enabled '0'
|
||||
option mod_email_mode '0'
|
||||
|
||||
@@ -76,11 +76,11 @@ function Module:init(t)
|
||||
end
|
||||
end
|
||||
|
||||
function Module:SetTriggerTimer(t)
|
||||
function Module:setTriggerTimer(t)
|
||||
self.writeValue(t.ledTriggerFile, "timer")
|
||||
end
|
||||
|
||||
function Module:SetTriggerNone(t)
|
||||
function Module:setTriggerNone(t)
|
||||
self.writeValue(t.ledTriggerFile, "none")
|
||||
end
|
||||
|
||||
@@ -92,12 +92,12 @@ function Module:getCurrentTrigger(t)
|
||||
end
|
||||
|
||||
function Module:on(t)
|
||||
self:SetTriggerNone(t)
|
||||
self:setTriggerNone(t)
|
||||
self.writeValue(t.ledBrightnessFile, t.ledMaxBrightness)
|
||||
end
|
||||
|
||||
function Module:off(t)
|
||||
self:SetTriggerNone(t)
|
||||
self:setTriggerNone(t)
|
||||
self.writeValue(t.ledBrightnessFile, 0)
|
||||
end
|
||||
|
||||
@@ -120,7 +120,7 @@ function Module:ledRunFunc(t, currentStatus)
|
||||
end
|
||||
elseif t.ledAction1 == 3 then
|
||||
if not self:getCurrentTrigger(t) then
|
||||
self:SetTriggerTimer(t)
|
||||
self:setTriggerTimer(t)
|
||||
end
|
||||
end
|
||||
else
|
||||
@@ -134,7 +134,7 @@ function Module:ledRunFunc(t, currentStatus)
|
||||
end
|
||||
elseif t.ledAction2 == 3 then
|
||||
if not self:getCurrentTrigger(t) then
|
||||
self:SetTriggerTimer(t)
|
||||
self:setTriggerTimer(t)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,23 +4,25 @@ local stdlib = require("posix.stdlib")
|
||||
local unistd = require("posix.unistd")
|
||||
|
||||
local Module = {
|
||||
name = "mod_public_ip",
|
||||
runPrio = 50,
|
||||
config = {
|
||||
noModules = false,
|
||||
debug = false,
|
||||
name = "mod_public_ip",
|
||||
runPrio = 50,
|
||||
config = {
|
||||
noModules = false,
|
||||
debug = false,
|
||||
serviceConfig = {
|
||||
iface = nil,
|
||||
},
|
||||
},
|
||||
syslog = function(level, msg) return true end,
|
||||
writeValue = function(filePath, str) return false end,
|
||||
readValue = function(filePath) return nil end,
|
||||
port = 53,
|
||||
runInterval = 600,
|
||||
runIntervalFailed = 60,
|
||||
timeout = 3,
|
||||
providers = {
|
||||
syslog = function(level, msg) return true end,
|
||||
writeValue = function(filePath, str) return false end,
|
||||
readValue = function(filePath) return nil end,
|
||||
port = 53,
|
||||
runInterval = 600,
|
||||
runIntervalFailed = 60,
|
||||
runIntervalDNSFailed = 1,
|
||||
requestAttempts = 2,
|
||||
timeout = 3,
|
||||
providers = {
|
||||
opendns1 = {
|
||||
name = "opendns1", host = "myip.opendns.com",
|
||||
server = "208.67.222.222", server6 = "2620:119:35::35",
|
||||
@@ -52,16 +54,18 @@ local Module = {
|
||||
port = 53, queryType = "TXT", queryType6 = "TXT",
|
||||
},
|
||||
},
|
||||
ipScript = "",
|
||||
enableIpScript = false,
|
||||
status = nil,
|
||||
_provider = nil,
|
||||
_qtype = false,
|
||||
_currentIp = nil,
|
||||
_enabled = false,
|
||||
_counter = 0,
|
||||
_interval = 600,
|
||||
_DNSPacket = nil,
|
||||
ipScript = "",
|
||||
enableIpScript = false,
|
||||
status = nil,
|
||||
_provider = nil,
|
||||
_qtype = false,
|
||||
_currentIp = nil,
|
||||
_lastResolvedIp = nil,
|
||||
_enabled = false,
|
||||
_counter = 0,
|
||||
_DNSFalseCounter = 0,
|
||||
_interval = 600,
|
||||
_DNSPacket = nil,
|
||||
}
|
||||
|
||||
function Module:runIpScript()
|
||||
@@ -306,7 +310,7 @@ function Module:decodeMessage(message)
|
||||
return retTable
|
||||
end
|
||||
|
||||
function Module:resolveIP()
|
||||
function Module:requestIP()
|
||||
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
|
||||
@@ -324,7 +328,7 @@ function Module:resolveIP()
|
||||
end
|
||||
else
|
||||
self.syslog("warning", string.format(
|
||||
"%s: DNS error when requesting an IP address", self.name))
|
||||
"%s: UDP error when requesting an IP address", self.name))
|
||||
end
|
||||
|
||||
return res
|
||||
@@ -334,6 +338,12 @@ function Module:init(t)
|
||||
if t.interval ~= nil then
|
||||
self.runInterval = tonumber(t.interval)
|
||||
end
|
||||
if t.interval_failed ~= nil then
|
||||
self.runIntervalFailed = tonumber(t.interval_failed)
|
||||
end
|
||||
if t.request_attempts ~= nil then
|
||||
self.requestAttempts = tonumber(t.request_attempts)
|
||||
end
|
||||
if t.timeout ~= nil then
|
||||
self.timeout = tonumber(t.timeout)
|
||||
end
|
||||
@@ -352,10 +362,12 @@ function Module:init(t)
|
||||
if t.qtype ~= nil then
|
||||
self._qtype = (tonumber(t.qtype) ~= 0)
|
||||
end
|
||||
self._currentIp = nil
|
||||
self._DNSPacket = nil
|
||||
self._interval = self.runInterval
|
||||
self._enabled = true
|
||||
self._currentIp = nil
|
||||
self._lastResolvedIp = nil
|
||||
self._DNSPacket = nil
|
||||
self._interval = self.runInterval
|
||||
self._DNSFalseCounter = 0
|
||||
self._enabled = true
|
||||
end
|
||||
|
||||
function Module:run(currentStatus, lastStatus, timeDiff, timeNow, inetChecked)
|
||||
@@ -365,33 +377,44 @@ function Module:run(currentStatus, lastStatus, timeDiff, timeNow, inetChecked)
|
||||
if currentStatus == 0 then
|
||||
if self._counter == 0 or self._counter >= self._interval or currentStatus ~= lastStatus then
|
||||
|
||||
local ip = self:resolveIP()
|
||||
local ip = self:requestIP()
|
||||
|
||||
if not ip then
|
||||
ip = ""
|
||||
self._interval = self.runIntervalFailed
|
||||
ip = ""
|
||||
self._DNSFalseCounter = self._DNSFalseCounter + 1
|
||||
if self._DNSFalseCounter >= self.requestAttempts then
|
||||
self._interval = self.runIntervalFailed
|
||||
self._DNSFalseCounter = 0
|
||||
else
|
||||
self._interval = self.runIntervalDNSFailed
|
||||
end
|
||||
else
|
||||
self._interval = self.runInterval
|
||||
self._interval = self.runInterval
|
||||
self._DNSFalseCounter = 0
|
||||
end
|
||||
|
||||
if ip ~= self._currentIp then
|
||||
self.status = ip
|
||||
self.syslog(
|
||||
"notice",
|
||||
string.format("%s: public IP address %s", self.name, (ip == "") and "Undefined" or ip)
|
||||
)
|
||||
if self._counter > 0 then
|
||||
self:runIpScript()
|
||||
if ip ~= "" then
|
||||
if self._counter > 0 and ip ~= self._lastResolvedIp then
|
||||
self.syslog(
|
||||
"notice",
|
||||
string.format("%s: public IP address changed to %s", self.name, ip)
|
||||
)
|
||||
self:runIpScript()
|
||||
end
|
||||
self._lastResolvedIp = ip
|
||||
end
|
||||
end
|
||||
self._currentIp = ip
|
||||
self._counter = 0
|
||||
end
|
||||
else
|
||||
self._currentIp = nil
|
||||
self.status = self._currentIp
|
||||
self._counter = 0
|
||||
self._interval = self.runInterval
|
||||
self._currentIp = nil
|
||||
self.status = self._currentIp
|
||||
self._DNSFalseCounter = 0
|
||||
self._counter = 0
|
||||
self._interval = self.runInterval
|
||||
end
|
||||
self._counter = self._counter + timeDiff
|
||||
end
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-internet-detector
|
||||
PKG_VERSION:=1.4.3
|
||||
PKG_VERSION:=1.4.4
|
||||
PKG_RELEASE:=1
|
||||
LUCI_TITLE:=LuCI support for internet-detector
|
||||
LUCI_DEPENDS:=+internet-detector
|
||||
|
||||
@@ -1038,6 +1038,30 @@ return view.extend({
|
||||
o.value(3600, '1' + ' ' + _('hour'));
|
||||
o.value(10800, '3' + ' ' + _('hour'));
|
||||
|
||||
// interval_failed
|
||||
o = s.taboption('public_ip', form.ListValue,
|
||||
'mod_public_ip_interval_failed', _('Failed interval'),
|
||||
_('Interval between IP address requests if the IP address is not defined.')
|
||||
);
|
||||
o.default = '60';
|
||||
o.modalonly = true;
|
||||
o.value(30, '30' + ' ' + _('sec'));
|
||||
o.value(60, '1' + ' ' + _('min'));
|
||||
o.value(180, '3' + ' ' + _('min'));
|
||||
o.value(300, '5' + ' ' + _('min'));
|
||||
o.value(600, '10' + ' ' + _('min'));
|
||||
|
||||
// request_attempts
|
||||
o = s.taboption('public_ip', form.ListValue,
|
||||
'mod_public_ip_request_attempts', _('Attempts'),
|
||||
_('Number of attempts to request an IP address.')
|
||||
);
|
||||
o.default = '2'
|
||||
o.modalonly = true;
|
||||
for(let i = 1; i <= 3; i++) {
|
||||
o.value(i);
|
||||
};
|
||||
|
||||
// timeout
|
||||
o = s.taboption('public_ip', form.ListValue,
|
||||
'mod_public_ip_timeout', _('Server response timeout')
|
||||
|
||||
@@ -44,6 +44,9 @@ msgstr "Сообщение будет отправлено при подключ
|
||||
msgid "An error has occurred"
|
||||
msgstr "Произошла ошибка"
|
||||
|
||||
msgid "Attempts"
|
||||
msgstr "Попытки"
|
||||
|
||||
msgid "Big: 248 bytes"
|
||||
msgstr "Большой: 248 байт"
|
||||
|
||||
@@ -149,11 +152,8 @@ msgstr "Включен"
|
||||
msgid "Expecting:"
|
||||
msgstr "Ожидается:"
|
||||
|
||||
msgid "Public IP"
|
||||
msgstr "Публичный IP"
|
||||
|
||||
msgid "Public IP address"
|
||||
msgstr "Публичный IP адрес"
|
||||
msgid "Failed interval"
|
||||
msgstr "Интервал при неудаче"
|
||||
|
||||
msgid "Failed to get %s init status: %s"
|
||||
msgstr "Не удалось получить статус инициализации %s: %s"
|
||||
@@ -216,6 +216,9 @@ 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 "Jumbo: 9000 bytes"
|
||||
msgstr "Гигантский: 9000 байт"
|
||||
|
||||
@@ -282,6 +285,9 @@ msgstr "Нет доступных <abbr title=\"Светодиод\">LED</abbr>.
|
||||
msgid "Not scheduled"
|
||||
msgstr "Не запланирован"
|
||||
|
||||
msgid "Number of attempts to request an IP address."
|
||||
msgstr "Количество попыток запроса IP адреса"
|
||||
|
||||
msgid "Off"
|
||||
msgstr "Выключить"
|
||||
|
||||
@@ -332,6 +338,12 @@ msgstr "Регулярный скрипт"
|
||||
msgid "Polling interval"
|
||||
msgstr "Интервал опроса"
|
||||
|
||||
msgid "Public IP"
|
||||
msgstr "Публичный IP"
|
||||
|
||||
msgid "Public IP address"
|
||||
msgstr "Публичный IP адрес"
|
||||
|
||||
msgid "Reboot device"
|
||||
msgstr "Перезагрузка устройства"
|
||||
|
||||
|
||||
@@ -32,6 +32,9 @@ msgstr ""
|
||||
msgid "An error has occurred"
|
||||
msgstr ""
|
||||
|
||||
msgid "Attempts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Big: 248 bytes"
|
||||
msgstr ""
|
||||
|
||||
@@ -137,10 +140,7 @@ msgstr ""
|
||||
msgid "Expecting:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Public IP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Public IP address"
|
||||
msgid "Failed interval"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to get %s init status: %s"
|
||||
@@ -202,6 +202,9 @@ msgstr ""
|
||||
msgid "Interval between IP address requests."
|
||||
msgstr ""
|
||||
|
||||
msgid "Interval between IP address requests if the IP address is not defined."
|
||||
msgstr ""
|
||||
|
||||
msgid "Jumbo: 9000 bytes"
|
||||
msgstr ""
|
||||
|
||||
@@ -260,6 +263,9 @@ msgstr ""
|
||||
msgid "Not scheduled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number of attempts to request an IP address."
|
||||
msgstr ""
|
||||
|
||||
msgid "Off"
|
||||
msgstr ""
|
||||
|
||||
@@ -307,6 +313,12 @@ msgstr ""
|
||||
msgid "Polling interval"
|
||||
msgstr ""
|
||||
|
||||
msgid "Public IP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Public IP address"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reboot device"
|
||||
msgstr ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user