mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-27 10:31:38 +08:00
🚀 Sync 2026-04-23 08:34:28
This commit is contained in:
parent
b86d032e91
commit
d0ae20b31e
@ -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
|
||||
|
||||
|
||||
@ -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))';
|
||||
|
||||
@ -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 "Количество неудачных попыток до переподключения интерфейса"
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
{
|
||||
"admin/services/pingcontrol": {
|
||||
"title": "Pingcontrol",
|
||||
"order": 30,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "pingcontrol/pingcontrol"
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
<% local ver = require "luci.version" %>
|
||||
|
||||
<footer>
|
||||
<div style="height:40px;font-size:95%;color:#999;font-family: Arial,sans-serif;">© TELEOFIS 2004-2025 </div>
|
||||
<div style="height:40px;font-size:95%;color:#999;font-family: Arial,sans-serif;">© TELEOFIS 2004-2022 </div>
|
||||
<ul class="breadcrumb pull-right" id="modemenu" style="display:none"></ul>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
done
|
||||
|
||||
@ -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'
|
||||
|
||||
@ -42,3 +42,8 @@ service_triggers() {
|
||||
procd_add_reload_trigger 'pingcontrol'
|
||||
procd_add_validation validate_pingcontrol_section
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user