From 68ee9304c42f1cc7720baf404533fc419542ae03 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 23 Apr 2026 08:34:28 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Sync=202026-04-23=2008:34:28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- luci-app-pingcontrol/Makefile | 4 +- .../resources/view/pingcontrol/pingcontrol.js | 3 + luci-app-pingcontrol/po/ru/pingcontrol.po | 6 + .../luci/menu.d/luci-app-pingcontrol.json | 1 - luci-theme-teleofis/Makefile | 2 +- .../htdocs/luci-static/teleofis/cascade.css | 123 ++++++++++++++++-- .../luasrc/view/themes/teleofis/footer.htm | 2 +- pingcontrol/Makefile | 4 +- pingcontrol/files/pingcontrol | 24 +++- pingcontrol/files/pingcontrol.config | 1 + pingcontrol/files/pingcontrol.init | 5 + 11 files changed, 150 insertions(+), 25 deletions(-) diff --git a/luci-app-pingcontrol/Makefile b/luci-app-pingcontrol/Makefile index 07946683c..240fda77b 100755 --- a/luci-app-pingcontrol/Makefile +++ b/luci-app-pingcontrol/Makefile @@ -2,10 +2,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-pingcontrol LUCI_DEPENDS:=+pingcontrol - PKG_VERSION:=1 - -PKG_RELEASE:=2 +PKG_RELEASE:=3 LUCI_TITLE:=LuCI network interface control diff --git a/luci-app-pingcontrol/htdocs/luci-static/resources/view/pingcontrol/pingcontrol.js b/luci-app-pingcontrol/htdocs/luci-static/resources/view/pingcontrol/pingcontrol.js index 679f1a179..6228cb8f2 100644 --- a/luci-app-pingcontrol/htdocs/luci-static/resources/view/pingcontrol/pingcontrol.js +++ b/luci-app-pingcontrol/htdocs/luci-static/resources/view/pingcontrol/pingcontrol.js @@ -43,6 +43,9 @@ return view.extend({ o = s.taboption('general',form.DynamicList, 'testip', _('IP address or hostname of test servers')); o.datatype = 'or(hostname,ipaddr("nomask"))'; + o = s.taboption('general',form.Flag, 'ping_silent', _('Silent mode'), _('Do not log success ping')); + + o = s.taboption('general',form.Value, 'check_period', _('Period of check, sec')); o.rmempty = false; o.datatype = 'and(uinteger,min(20))'; diff --git a/luci-app-pingcontrol/po/ru/pingcontrol.po b/luci-app-pingcontrol/po/ru/pingcontrol.po index dd951ee41..b004f13ff 100755 --- a/luci-app-pingcontrol/po/ru/pingcontrol.po +++ b/luci-app-pingcontrol/po/ru/pingcontrol.po @@ -10,6 +10,12 @@ msgstr "Интерфейс для ping-запросов" msgid "IP address or hostname of test servers" msgstr "IP-адрес или имя хоста тестовых серверов" +msgid "Silent mode" +msgstr "Тихий режим" + +msgid "Do not log success ping" +msgstr "Не журналировать успешные попытки" + msgid "Failed attempts before iface up/down" msgstr "Количество неудачных попыток до переподключения интерфейса" diff --git a/luci-app-pingcontrol/root/usr/share/luci/menu.d/luci-app-pingcontrol.json b/luci-app-pingcontrol/root/usr/share/luci/menu.d/luci-app-pingcontrol.json index a994f5029..c024342b5 100644 --- a/luci-app-pingcontrol/root/usr/share/luci/menu.d/luci-app-pingcontrol.json +++ b/luci-app-pingcontrol/root/usr/share/luci/menu.d/luci-app-pingcontrol.json @@ -1,7 +1,6 @@ { "admin/services/pingcontrol": { "title": "Pingcontrol", - "order": 30, "action": { "type": "view", "path": "pingcontrol/pingcontrol" diff --git a/luci-theme-teleofis/Makefile b/luci-theme-teleofis/Makefile index 8e5be1239..bc2114390 100644 --- a/luci-theme-teleofis/Makefile +++ b/luci-theme-teleofis/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Bootstrap Teleofis Theme -LUCI_DEPENDS:= +LUCI_DEPENDS:= +luci-lua-runtime PKG_LICENSE:=Apache-2.0 diff --git a/luci-theme-teleofis/htdocs/luci-static/teleofis/cascade.css b/luci-theme-teleofis/htdocs/luci-static/teleofis/cascade.css index 8a6304a63..691ffc5c2 100644 --- a/luci-theme-teleofis/htdocs/luci-static/teleofis/cascade.css +++ b/luci-theme-teleofis/htdocs/luci-static/teleofis/cascade.css @@ -14,6 +14,109 @@ * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc). * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */ +:root { + --background-color-delta-l-sign: -1; + --background-color-h: 0; + --background-color-s: 0%; + --background-color-l: 100%; + + --background-color-high-hsl: + var(--background-color-h), + var(--background-color-s), + var(--background-color-l); + --background-color-high: hsl(var(--background-color-high-hsl)); + + --background-color-medium-hsl: + var(--background-color-h), + var(--background-color-s), + calc(var(--background-color-l) + var(--background-color-delta-l-sign) * calc(6 / 255 * 100%)); + --background-color-medium: hsl(var(--background-color-medium-hsl)); + + --background-color-low-hsl: + var(--background-color-h), + var(--background-color-s), + calc(var(--background-color-l) + var(--background-color-delta-l-sign) * calc(10 / 255 * 100%)); + --background-color-low: hsl(var(--background-color-low-hsl)); + + --text-color-delta-l-sign: 1; + --text-color-h: 0; + --text-color-s: 0%; + --text-color-l: 0%; + + --text-color-highest-hsl: + var(--text-color-h), + var(--text-color-s), + var(--text-color-l); + --text-color-highest: hsl(var(--text-color-highest-hsl)); + + --text-color-high-hsl: + var(--text-color-h), + var(--text-color-s), + calc(var(--text-color-l) + var(--text-color-delta-l-sign) * calc(64 / 255 * 100%)); + --text-color-high: hsl(var(--text-color-high-hsl)); + + --text-color-medium-hsl: + var(--text-color-h), + var(--text-color-s), + calc(var(--text-color-l) + var(--text-color-delta-l-sign) * calc(128 / 255 * 100%)); + --text-color-medium: hsl(var(--text-color-medium-hsl)); + + --text-color-low-hsl: + var(--text-color-h), + var(--text-color-s), + calc(var(--text-color-l) + var(--text-color-delta-l-sign) * calc(191 / 255 * 100%)); + --text-color-low: hsl(var(--text-color-low-hsl)); + + --border-color-delta-l-sign: -1; + --border-color-h: var(--background-color-h); + --border-color-s: var(--background-color-s); + --border-color-l: var(--background-color-l); + + --border-color-high-hsl: + var(--border-color-h), + var(--border-color-s), + calc(var(--border-color-l) + var(--border-color-delta-l-sign) * calc(51 / 255 * 100%)); + --border-color-high: hsl(var(--border-color-high-hsl)); + + --border-color-medium-hsl: + var(--border-color-h), + var(--border-color-s), + calc(var(--border-color-l) + var(--border-color-delta-l-sign) * calc(34 / 255 * 100%)); + --border-color-medium: hsl(var(--border-color-medium-hsl)); + + --border-color-low-hsl: + var(--border-color-h), + var(--border-color-s), + calc(var(--border-color-l) + var(--border-color-delta-l-sign) * calc(17 / 255 * 100%)); + --border-color-low: hsl(var(--border-color-low-hsl)); + + --primary-color-high: #1976d2; + --primary-color-medium: #1564c0; + --primary-color-low: #b00000; + --on-primary-color: var(--background-color-high); + + --error-color-high-rgb: 246, 43, 18; + --error-color-high: rgb(var(--error-color-high-rgb)); + --error-color-medium: #e8210d; + --error-color-low: #d00000; + --on-error-color: var(--background-color-high); + + --success-color-high-rgb: 0, 172, 89; + --success-color-high: rgb(var(--success-color-high-rgb)); + --success-color-medium: #009a4c; + --success-color-low: #007936; + --on-success-color: var(--background-color-high); + + --warn-color-high: #efbd0b; + --warn-color-medium: #f0c629; + --warn-color-low: #f2d24f; + --on-warn-color: var(--text-color-highest); + + --disabled-opacity: .7; + + color-scheme: light; +} + * { margin: 0; padding: 0; @@ -1657,14 +1760,15 @@ input[type="text"] + .cbi-button-remove { transition: opacity .25s ease-in; } + .cbi-progressbar { - border: 1px solid #ccc; + border: 1px solid var(--border-color-high); border-radius: 3px; position: relative; min-width: 170px; - height: 20px; - margin: 4px 0; - background: #f9f9f9; + height: 8px; + margin: 1.4em 0 4px 0; + background: #fcfcfc; } .cbi-progressbar > div { @@ -1672,16 +1776,13 @@ input[type="text"] + .cbi-button-remove { height: 100%; transition: width .25s ease-in; width: 0%; + border-radius: 2px; } -.cbi-progressbar::after { +.cbi-progressbar::before { position: absolute; - bottom: 0; - top: 0; - right: 0; + top: -1.4em; left: 0; - text-align: center; - text-shadow: 0 0 2px #fff; content: attr(title); white-space: pre; overflow: hidden; @@ -2316,7 +2417,7 @@ html body.apply-overlay-active { bottom: 0; width: 32px; content: " "; - background: url(../resources/icons/loading.gif) no-repeat center; + background: url(../resources/icons/loading.svg) no-repeat center; background-size: 16px; } diff --git a/luci-theme-teleofis/luasrc/view/themes/teleofis/footer.htm b/luci-theme-teleofis/luasrc/view/themes/teleofis/footer.htm index dbef3ac86..7a6b5fadc 100644 --- a/luci-theme-teleofis/luasrc/view/themes/teleofis/footer.htm +++ b/luci-theme-teleofis/luasrc/view/themes/teleofis/footer.htm @@ -8,7 +8,7 @@ <% local ver = require "luci.version" %> diff --git a/pingcontrol/Makefile b/pingcontrol/Makefile index 20f8ba560..80ec41179 100755 --- a/pingcontrol/Makefile +++ b/pingcontrol/Makefile @@ -1,9 +1,9 @@ - +: include $(TOPDIR)/rules.mk PKG_NAME:=pingcontrol PKG_VERSION:=1 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_BUILD_DIR:=$(BUILD_DIR)/pingcontrol include $(INCLUDE_DIR)/package.mk diff --git a/pingcontrol/files/pingcontrol b/pingcontrol/files/pingcontrol index ece5fa195..63acc71d9 100755 --- a/pingcontrol/files/pingcontrol +++ b/pingcontrol/files/pingcontrol @@ -10,6 +10,7 @@ SW_BEFORE_MODRES=$(uci -q get pingcontrol.$1.sw_before_modres) SW_BEFORE_SYSRES=$(uci -q get pingcontrol.$1.sw_before_sysres) PING_OK=$(uci -q get pingcontrol.$1.ping_ok) +SILENT=$(uci -q get pingcontrol.$1.ping_silent) PING_LOST=$(uci -q get pingcontrol.$1.ping_lost) PING_RESTORED=$(uci -q get pingcontrol.$1.ping_restored) BEFORE_IFACE_DOWN=$(uci -q get pingcontrol.$1.before_iface_down) @@ -34,8 +35,15 @@ done while true; do for IP in $TESTIP do - /bin/ping -w5 -c1 -s8 -I $IFNAME $IP &> /dev/null - if [[ "$?" -eq "0" ]]; then + [ -n $IFNAME ] && { + /bin/ping -w5 -c1 -s8 -I $IFNAME $IP &> /dev/null + STATUS=$? + } || { + /bin/ping -w5 -c1 -s8 $IP &> /dev/null + STATUS=$? + } + + if [[ "${STATUS}" -eq "0" ]]; then let host_up_count++ else logger -t pingcontrol "$INSTANCE: Ping to host $IP lost" @@ -50,7 +58,9 @@ while true; do done if [[ "$host_up_count" -gt "0" ]]; then - logger -t pingcontrol "$INSTANCE: Ping OK, reset counters" + [ "${SILENT}" != "1" ] && { + logger -t pingcontrol "$INSTANCE: Ping OK, reset counters" + } if [[ "$lost_flag" -eq "1" ]]; then if [[ -n "$PING_RESTORED" ]]; then logger -t pingcontrol "$INSTANCE: Execute $PING_RESTORED" @@ -58,8 +68,10 @@ while true; do fi else if [[ -n "$PING_OK" ]]; then - logger -t pingcontrol "$INSTANCE: Execute $PING_OK" - eval $PING_OK + [ "${SILENT}" != "1" ] && { + logger -t pingcontrol "$INSTANCE: Execute $PING_OK" + } + eval $PING_OK fi fi host_up_count=0 @@ -99,4 +111,4 @@ while true; do fi sleep $CHECK_PERIOD -done \ No newline at end of file +done diff --git a/pingcontrol/files/pingcontrol.config b/pingcontrol/files/pingcontrol.config index 1ecead9c4..b70754edf 100644 --- a/pingcontrol/files/pingcontrol.config +++ b/pingcontrol/files/pingcontrol.config @@ -3,5 +3,6 @@ config pingcontrol 'pingcontrol' option check_period '30' option iface 'internet' option testip '8.8.8.8' + option ping_silent '1' option sw_before_modres '3' option sw_before_sysres '0' diff --git a/pingcontrol/files/pingcontrol.init b/pingcontrol/files/pingcontrol.init index 217a6106f..1a066cb96 100755 --- a/pingcontrol/files/pingcontrol.init +++ b/pingcontrol/files/pingcontrol.init @@ -42,3 +42,8 @@ service_triggers() { procd_add_reload_trigger 'pingcontrol' procd_add_validation validate_pingcontrol_section } + +reload_service() { + stop + start +}