🚀 Sync 2026-04-23 08:34:28

This commit is contained in:
github-actions[bot] committed 2026-04-23 08:34:28 +08:00
1 parent b86d032e91
commit d0ae20b31e
11 files changed
+149 -24

No files matched your search

+1 -3
View File
@@ -2,10 +2,8 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-pingcontrol PKG_NAME:=luci-app-pingcontrol
LUCI_DEPENDS:=+pingcontrol LUCI_DEPENDS:=+pingcontrol
PKG_VERSION:=1 PKG_VERSION:=1
PKG_RELEASE:=3
PKG_RELEASE:=2
LUCI_TITLE:=LuCI network interface control LUCI_TITLE:=LuCI network interface control
@@ -43,6 +43,9 @@ return view.extend({
o = s.taboption('general',form.DynamicList, 'testip', _('IP address or hostname of test servers')); o = s.taboption('general',form.DynamicList, 'testip', _('IP address or hostname of test servers'));
o.datatype = 'or(hostname,ipaddr("nomask"))'; 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 = s.taboption('general',form.Value, 'check_period', _('Period of check, sec'));
o.rmempty = false; o.rmempty = false;
o.datatype = 'and(uinteger,min(20))'; o.datatype = 'and(uinteger,min(20))';
@@ -10,6 +10,12 @@ msgstr "Интерфейс для ping-запросов"
msgid "IP address or hostname of test servers" msgid "IP address or hostname of test servers"
msgstr "IP-адрес или имя хоста тестовых серверов" msgstr "IP-адрес или имя хоста тестовых серверов"
msgid "Silent mode"
msgstr "Тихий режим"
msgid "Do not log success ping"
msgstr "Не журналировать успешные попытки"
msgid "Failed attempts before iface up/down" msgid "Failed attempts before iface up/down"
msgstr "Количество неудачных попыток до переподключения интерфейса" msgstr "Количество неудачных попыток до переподключения интерфейса"
@@ -1,7 +1,6 @@
{ {
"admin/services/pingcontrol": { "admin/services/pingcontrol": {
"title": "Pingcontrol", "title": "Pingcontrol",
"order": 30,
"action": { "action": {
"type": "view", "type": "view",
"path": "pingcontrol/pingcontrol" "path": "pingcontrol/pingcontrol"
+1 -1
View File
@@ -7,7 +7,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
LUCI_TITLE:=Bootstrap Teleofis Theme LUCI_TITLE:=Bootstrap Teleofis Theme
LUCI_DEPENDS:= LUCI_DEPENDS:= +luci-lua-runtime
PKG_LICENSE:=Apache-2.0 PKG_LICENSE:=Apache-2.0
@@ -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). * 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; margin: 0;
padding: 0; padding: 0;
@@ -1657,14 +1760,15 @@ input[type="text"] + .cbi-button-remove {
transition: opacity .25s ease-in; transition: opacity .25s ease-in;
} }
.cbi-progressbar { .cbi-progressbar {
border: 1px solid #ccc; border: 1px solid var(--border-color-high);
border-radius: 3px; border-radius: 3px;
position: relative; position: relative;
min-width: 170px; min-width: 170px;
height: 20px; height: 8px;
margin: 4px 0; margin: 1.4em 0 4px 0;
background: #f9f9f9; background: #fcfcfc;
} }
.cbi-progressbar > div { .cbi-progressbar > div {
@@ -1672,16 +1776,13 @@ input[type="text"] + .cbi-button-remove {
height: 100%; height: 100%;
transition: width .25s ease-in; transition: width .25s ease-in;
width: 0%; width: 0%;
border-radius: 2px;
} }
.cbi-progressbar::after { .cbi-progressbar::before {
position: absolute; position: absolute;
bottom: 0; top: -1.4em;
top: 0;
right: 0;
left: 0; left: 0;
text-align: center;
text-shadow: 0 0 2px #fff;
content: attr(title); content: attr(title);
white-space: pre; white-space: pre;
overflow: hidden; overflow: hidden;
@@ -2316,7 +2417,7 @@ html body.apply-overlay-active {
bottom: 0; bottom: 0;
width: 32px; width: 32px;
content: " "; content: " ";
background: url(../resources/icons/loading.gif) no-repeat center; background: url(../resources/icons/loading.svg) no-repeat center;
background-size: 16px; background-size: 16px;
} }
@@ -8,7 +8,7 @@
<% local ver = require "luci.version" %> <% local ver = require "luci.version" %>
<footer> <footer>
<div style="height:40px;font-size:95%;color:#999;font-family: Arial,sans-serif;">&#169;&nbsp;TELEOFIS&nbsp;2004-2025&nbsp;</div> <div style="height:40px;font-size:95%;color:#999;font-family: Arial,sans-serif;">&#169;&nbsp;TELEOFIS&nbsp;2004-2022&nbsp;</div>
<ul class="breadcrumb pull-right" id="modemenu" style="display:none"></ul> <ul class="breadcrumb pull-right" id="modemenu" style="display:none"></ul>
</footer> </footer>
</div> </div>
+2 -2
View File
@@ -1,9 +1,9 @@
:
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=pingcontrol PKG_NAME:=pingcontrol
PKG_VERSION:=1 PKG_VERSION:=1
PKG_RELEASE:=2 PKG_RELEASE:=3
PKG_BUILD_DIR:=$(BUILD_DIR)/pingcontrol PKG_BUILD_DIR:=$(BUILD_DIR)/pingcontrol
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
+17 -5
View File
@@ -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) SW_BEFORE_SYSRES=$(uci -q get pingcontrol.$1.sw_before_sysres)
PING_OK=$(uci -q get pingcontrol.$1.ping_ok) 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_LOST=$(uci -q get pingcontrol.$1.ping_lost)
PING_RESTORED=$(uci -q get pingcontrol.$1.ping_restored) PING_RESTORED=$(uci -q get pingcontrol.$1.ping_restored)
BEFORE_IFACE_DOWN=$(uci -q get pingcontrol.$1.before_iface_down) BEFORE_IFACE_DOWN=$(uci -q get pingcontrol.$1.before_iface_down)
@@ -34,8 +35,15 @@ done
while true; do while true; do
for IP in $TESTIP for IP in $TESTIP
do do
/bin/ping -w5 -c1 -s8 -I $IFNAME $IP &> /dev/null [ -n $IFNAME ] && {
if [[ "$?" -eq "0" ]]; then /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++ let host_up_count++
else else
logger -t pingcontrol "$INSTANCE: Ping to host $IP lost" logger -t pingcontrol "$INSTANCE: Ping to host $IP lost"
@@ -50,7 +58,9 @@ while true; do
done done
if [[ "$host_up_count" -gt "0" ]]; then 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 [[ "$lost_flag" -eq "1" ]]; then
if [[ -n "$PING_RESTORED" ]]; then if [[ -n "$PING_RESTORED" ]]; then
logger -t pingcontrol "$INSTANCE: Execute $PING_RESTORED" logger -t pingcontrol "$INSTANCE: Execute $PING_RESTORED"
@@ -58,8 +68,10 @@ while true; do
fi fi
else else
if [[ -n "$PING_OK" ]]; then if [[ -n "$PING_OK" ]]; then
logger -t pingcontrol "$INSTANCE: Execute $PING_OK" [ "${SILENT}" != "1" ] && {
eval $PING_OK logger -t pingcontrol "$INSTANCE: Execute $PING_OK"
}
eval $PING_OK
fi fi
fi fi
host_up_count=0 host_up_count=0
+1
View File
@@ -3,5 +3,6 @@ config pingcontrol 'pingcontrol'
option check_period '30' option check_period '30'
option iface 'internet' option iface 'internet'
option testip '8.8.8.8' option testip '8.8.8.8'
option ping_silent '1'
option sw_before_modres '3' option sw_before_modres '3'
option sw_before_sysres '0' option sw_before_sysres '0'
+5
View File
@@ -42,3 +42,8 @@ service_triggers() {
procd_add_reload_trigger 'pingcontrol' procd_add_reload_trigger 'pingcontrol'
procd_add_validation validate_pingcontrol_section procd_add_validation validate_pingcontrol_section
} }
reload_service() {
stop
start
}