Luaposix getopt for positional arguments

This commit is contained in:
gSpot
2025-02-06 18:55:57 +03:00
parent c20703d5be
commit 90b711f55e
8 changed files with 82 additions and 64 deletions

View File

@@ -15,22 +15,22 @@ Internet-detector is an application for checking the availability of the Interne
## Installation notes (OpenWrt >= 21.02) ## Installation notes (OpenWrt >= 21.02)
opkg update opkg update
wget --no-check-certificate -O /tmp/internet-detector_1.3.2-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector_1.3.2-r1_all.ipk wget --no-check-certificate -O /tmp/internet-detector_1.3.3-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector_1.3.3-r1_all.ipk
opkg install /tmp/internet-detector_1.3.2-r1_all.ipk opkg install /tmp/internet-detector_1.3.3-r1_all.ipk
rm /tmp/internet-detector_1.3.2-r1_all.ipk rm /tmp/internet-detector_1.3.3-r1_all.ipk
/etc/init.d/internet-detector start /etc/init.d/internet-detector start
/etc/init.d/internet-detector enable /etc/init.d/internet-detector enable
wget --no-check-certificate -O /tmp/luci-app-internet-detector_1.3.2-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-app-internet-detector_1.3.2-r1_all.ipk wget --no-check-certificate -O /tmp/luci-app-internet-detector_1.3.3-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-app-internet-detector_1.3.3-r1_all.ipk
opkg install /tmp/luci-app-internet-detector_1.3.2-r1_all.ipk opkg install /tmp/luci-app-internet-detector_1.3.3-r1_all.ipk
rm /tmp/luci-app-internet-detector_1.3.2-r1_all.ipk rm /tmp/luci-app-internet-detector_1.3.3-r1_all.ipk
/etc/init.d/rpcd restart /etc/init.d/rpcd restart
i18n-ru: i18n-ru:
wget --no-check-certificate -O /tmp/luci-i18n-internet-detector-ru_1.3.2-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-i18n-internet-detector-ru_1.3.2-r1_all.ipk wget --no-check-certificate -O /tmp/luci-i18n-internet-detector-ru_1.3.3-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-i18n-internet-detector-ru_1.3.3-r1_all.ipk
opkg install /tmp/luci-i18n-internet-detector-ru_1.3.2-r1_all.ipk opkg install /tmp/luci-i18n-internet-detector-ru_1.3.3-r1_all.ipk
rm /tmp/luci-i18n-internet-detector-ru_1.3.2-r1_all.ipk rm /tmp/luci-i18n-internet-detector-ru_1.3.3-r1_all.ipk
## Screenshots: ## Screenshots:
@@ -42,9 +42,9 @@ i18n-ru:
**Dependences:** modemmanager. **Dependences:** modemmanager.
wget --no-check-certificate -O /tmp/internet-detector-mod-modem-restart_1.3.2-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-modem-restart_1.3.2-r1_all.ipk wget --no-check-certificate -O /tmp/internet-detector-mod-modem-restart_1.3.3-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-modem-restart_1.3.3-r1_all.ipk
opkg install /tmp/internet-detector-mod-modem-restart_1.3.2-r1_all.ipk opkg install /tmp/internet-detector-mod-modem-restart_1.3.3-r1_all.ipk
rm /tmp/internet-detector-mod-modem-restart_1.3.2-r1_all.ipk rm /tmp/internet-detector-mod-modem-restart_1.3.3-r1_all.ipk
/etc/init.d/internet-detector restart /etc/init.d/internet-detector restart
![](https://github.com/gSpotx2f/luci-app-internet-detector/blob/master/screenshots/04.jpg) ![](https://github.com/gSpotx2f/luci-app-internet-detector/blob/master/screenshots/04.jpg)
@@ -53,11 +53,9 @@ i18n-ru:
**Dependences:** mailsend. **Dependences:** mailsend.
wget --no-check-certificate -O /tmp/internet-detector-mod-email_1.3.2-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-email_1.3.2-r1_all.ipk wget --no-check-certificate -O /tmp/internet-detector-mod-email_1.3.3-r1_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/internet-detector-mod-email_1.3.3-r1_all.ipk
opkg install /tmp/internet-detector-mod-email_1.3.2-r1_all.ipk opkg install /tmp/internet-detector-mod-email_1.3.3-r1_all.ipk
rm /tmp/internet-detector-mod-email_1.3.2-r1_all.ipk rm /tmp/internet-detector-mod-email_1.3.3-r1_all.ipk
/etc/init.d/internet-detector restart /etc/init.d/internet-detector restart
![](https://github.com/gSpotx2f/luci-app-internet-detector/blob/master/screenshots/05.jpg) ![](https://github.com/gSpotx2f/luci-app-internet-detector/blob/master/screenshots/05.jpg)
## [OpenWrt 19.07](https://github.com/gSpotx2f/luci-app-internet-detector/tree/19.07)

View File

@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=internet-detector-mod-email PKG_NAME:=internet-detector-mod-email
PKG_VERSION:=1.3.2 PKG_VERSION:=1.3.3
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/luci-app-internet-detector> PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/luci-app-internet-detector>

View File

@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=internet-detector-mod-modem-restart PKG_NAME:=internet-detector-mod-modem-restart
PKG_VERSION:=1.3.2 PKG_VERSION:=1.3.3
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/luci-app-internet-detector> PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/luci-app-internet-detector>

View File

@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=internet-detector PKG_NAME:=internet-detector
PKG_VERSION:=1.3.2 PKG_VERSION:=1.3.3
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/luci-app-internet-detector> PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/luci-app-internet-detector>

View File

@@ -10,7 +10,7 @@ run_instance() {
config_get enabled "$1" enabled "0" config_get enabled "$1" enabled "0"
if [ $enabled = "1" ]; then if [ $enabled = "1" ]; then
procd_open_instance "$1" procd_open_instance "$1"
procd_set_param command "$PROG" "nodaemon" "$1" procd_set_param command "$PROG" "-a" "nodaemon" "-i" "$1"
procd_close_instance procd_close_instance
fi fi
} }
@@ -24,7 +24,7 @@ start_service() {
} }
stop_service() { stop_service() {
$PROG stop $PROG -a stop
} }
reload_service() { reload_service() {

View File

@@ -11,68 +11,88 @@
(с) 2024 gSpot (https://github.com/gSpotx2f/luci-app-internet-detector) (с) 2024 gSpot (https://github.com/gSpotx2f/luci-app-internet-detector)
--]] --]]
local getopt = require("posix.unistd").getopt
local InternetDetector = require("internet-detector.main") local InternetDetector = require("internet-detector.main")
local function help() local function help()
return string.format( return table.concat({
"Usage: %s daemon <UCI instance> | nodaemon <UCI instance> | debug <UCI instance> | stop | status | inet-status | uipoll | --help", [1] = string.format(
arg[0] "Usage: %s -a daemon -i <UCI instance> | -a nodaemon -i <UCI instance> | -a debug -i <UCI instance> | -a stop | -S | -I | -U | -h",
) arg[0]),
[2] = " -a ARG action: daemon | nodaemon | debug | stop",
[3] = " -i ARG instance: UCI instance name",
[4] = " -S status",
[5] = " -I inet status",
[6] = " -U uipoll",
[7] = " -h print this help text"
}, "\n")
end end
local helpArgs = { ["-h"] = true, ["--help"] = true, help = true } local action, instance
if arg[1] == "daemon" then local params = {}
if arg[2] then local last_index = 1
if InternetDetector:setServiceConfig(arg[2]) then for r, optarg, optind in getopt(arg, "a:i:SIUh") do
if r == "?" then
print("Error! Unrecognized option")
os.exit(1)
end
last_index = optind
if r == "a" then
action = optarg
elseif r == "i" then
instance = optarg
else
params[#params + 1] = r
end
end
if action == "stop" then
InternetDetector:stop()
elseif action then
if not instance then
print("Error! Instance not specified [-i]")
os.exit(1)
end
if action == "daemon" then
if InternetDetector:setServiceConfig(instance) then
InternetDetector:daemon() InternetDetector:daemon()
else else
os.exit(126) os.exit(126)
end end
else elseif action == "nodaemon" then
print(help()) if InternetDetector:setServiceConfig(instance) then
os.exit(1)
end
elseif arg[1] == "nodaemon" then
if arg[2] then
if InternetDetector:setServiceConfig(arg[2]) then
InternetDetector:noDaemon() InternetDetector:noDaemon()
else else
os.exit(126) os.exit(126)
end end
else elseif action == "debug" then
print(help()) if InternetDetector:setServiceConfig(instance) then
os.exit(1)
end
elseif arg[1] == "debug" then
if arg[2] then
if InternetDetector:setServiceConfig(arg[2]) then
InternetDetector.debug = true InternetDetector.debug = true
InternetDetector:noDaemon() InternetDetector:noDaemon()
else else
os.exit(126) os.exit(126)
end end
else
print("Error! Wrong action [-a]")
os.exit(1)
end
else
if params[1] == "S" then
print(InternetDetector:status())
elseif params[1] == "I" then
print(InternetDetector:inetStatus())
elseif params[1] == "U" then
if InternetDetector:status() == "stoped" then
os.exit(126)
else
InternetDetector:setSIGUSR()
print(InternetDetector:inetStatus())
end
elseif params[1] == "h" then
print(help())
else else
print(help()) print(help())
os.exit(1) os.exit(1)
end end
elseif arg[1] == "stop" then
InternetDetector:stop()
elseif arg[1] == "status" then
print(InternetDetector:status())
elseif arg[1] == "inet-status" then
print(InternetDetector:inetStatus())
elseif arg[1] == "uipoll" then
if InternetDetector:status() == "stoped" then
os.exit(126)
else
InternetDetector:setSIGUSR()
print(InternetDetector:inetStatus())
end
elseif helpArgs[arg[1]] then
print(help())
else
print(help())
os.exit(1)
end end
os.exit(0) os.exit(0)

View File

@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-internet-detector PKG_NAME:=luci-app-internet-detector
PKG_VERSION:=1.3.2 PKG_VERSION:=1.3.3
PKG_RELEASE:=1 PKG_RELEASE:=1
LUCI_TITLE:=LuCI support for internet-detector LUCI_TITLE:=LuCI support for internet-detector
LUCI_DEPENDS:=+internet-detector LUCI_DEPENDS:=+internet-detector

View File

@@ -49,7 +49,7 @@ local function startUiInstances()
"instance", "instance",
function(s) function(s)
if s.enabled == "1" then if s.enabled == "1" then
os.execute(string.format("%s daemon %s", appExec, s[".name"])) os.execute(string.format("%s -a daemon -i %s", appExec, s[".name"]))
end end
end end
) )