diff --git a/luci-app-pingcontrol/Makefile b/luci-app-pingcontrol/Makefile index 07946683..240fda77 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 679f1a17..6228cb8f 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 dd951ee4..b004f13f 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 a994f502..c024342b 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 8e5be123..bc211439 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 8a6304a6..691ffc5c 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 dbef3ac8..7a6b5fad 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 20f8ba56..80ec4117 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 ece5fa19..63acc71d 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 1ecead9c..b70754ed 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 217a6106..1a066cb9 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 +}