🎨 Sync 2023-04-04 20:37
@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-passwall
|
||||
PKG_VERSION:=4.62
|
||||
PKG_RELEASE:=6
|
||||
PKG_RELEASE:=7
|
||||
|
||||
PKG_CONFIG_DEPENDS:= \
|
||||
CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \
|
||||
|
@ -146,10 +146,17 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
|
||||
end
|
||||
type.cfgvalue = get_cfgvalue(v.id, "type")
|
||||
type.write = get_write(v.id, "type")
|
||||
-- pre-proxy node
|
||||
o = s:taboption("Main", ListValue, vid .. "-main_node", string.format('<a style="color:red">%s</a>', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including <code>Default</code>) has a separate switch that controls whether this rule uses the pre-proxy or not."))
|
||||
-- pre-proxy
|
||||
o = s:taboption("Main", Flag, vid .. "-preproxy_enabled", translate("Preproxy"))
|
||||
o:depends("tcp_node", v.id)
|
||||
o:value("nil", translate("Close"))
|
||||
o.rmempty = false
|
||||
o.cfgvalue = get_cfgvalue(v.id, "preproxy_enabled")
|
||||
o.write = get_write(v.id, "preproxy_enabled")
|
||||
o = s:taboption("Main", ListValue, vid .. "-main_node", string.format('<a style="color:red">%s</a>', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including <code>Default</code>) has a separate switch that controls whether this rule uses the pre-proxy or not."))
|
||||
o:depends(vid .. "-preproxy_enabled", "1")
|
||||
for k1, v1 in pairs(balancing_list) do
|
||||
o:value(v1.id, v1.remark)
|
||||
end
|
||||
for k1, v1 in pairs(normal_list) do
|
||||
o:value(v1.id, v1.remark)
|
||||
end
|
||||
@ -158,18 +165,18 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
|
||||
-- Xray dialerProxy
|
||||
local dialerProxy = s:taboption("Main", Flag, vid .. "-dialerProxy", translate("dialerProxy"))
|
||||
dialerProxy.default = "0"
|
||||
dialerProxy:depends(vid .. "-type", "Xray")
|
||||
dialerProxy.cfgvalue = get_cfgvalue(v.id, "dialerProxy")
|
||||
dialerProxy.write = get_write(v.id, "dialerProxy")
|
||||
dialerProxy.rmempty = false
|
||||
dialerProxy:depends({ [vid .. "-type"] = "Xray", [vid .. "-preproxy_enabled"] = "1" })
|
||||
if (has_v2ray and has_xray) or (v.type == "V2ray" and not has_v2ray) or (v.type == "Xray" and not has_xray) then
|
||||
type:depends("tcp_node", v.id)
|
||||
else
|
||||
type:depends("tcp_node", "hide") --不存在的依赖,即始终隐藏
|
||||
if v.type == "Xray" then
|
||||
dialerProxy:depends("tcp_node", v.id)
|
||||
dialerProxy:depends({ tcp_node = v.id, [vid .. "-preproxy_enabled"] = "1" })
|
||||
end
|
||||
end
|
||||
dialerProxy.cfgvalue = get_cfgvalue(v.id, "dialerProxy")
|
||||
dialerProxy.write = get_write(v.id, "dialerProxy")
|
||||
dialerProxy.rmempty = false
|
||||
|
||||
uci:foreach(appname, "shunt_rules", function(e)
|
||||
local id = e[".name"]
|
||||
@ -190,7 +197,7 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
|
||||
end
|
||||
for k1, v1 in pairs(normal_list) do
|
||||
o:value(v1.id, v1.remark)
|
||||
pt:depends(node_option, v1.id)
|
||||
pt:depends({ [node_option] = v1.id, [vid .. "-preproxy_enabled"] = "1" })
|
||||
end
|
||||
o.cfgvalue = get_cfgvalue(v.id, id)
|
||||
o.write = get_write(v.id, id)
|
||||
@ -212,9 +219,12 @@ if (has_v2ray or has_xray) and #nodes_table > 0 then
|
||||
|
||||
local id = "default_proxy_tag"
|
||||
o = s:taboption("Main", ListValue, vid .. "-" .. id, string.format('* <a style="color:red">%s</a>', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node."))
|
||||
for k1, v1 in pairs(balancing_list) do
|
||||
o:value(v1.id, v1.remark)
|
||||
end
|
||||
for k1, v1 in pairs(normal_list) do
|
||||
if v1.protocol ~= "_balancing" then
|
||||
o:depends(vid .. "-default_node", v1.id)
|
||||
o:depends({ [vid .. "-default_node"] = v1.id, [vid .. "-preproxy_enabled"] = "1" })
|
||||
end
|
||||
end
|
||||
o:value("nil", translate("Close"))
|
||||
|
@ -173,11 +173,17 @@ probeInterval.description = translate("The interval between initiating probes. E
|
||||
|
||||
-- 分流
|
||||
if #nodes_table > 0 then
|
||||
o = s:option(ListValue, "main_node", string.format('<a style="color:red">%s</a>', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including <code>Default</code>) has a separate switch that controls whether this rule uses the pre-proxy or not."))
|
||||
o = s:option(Flag, "preproxy_enabled", translate("Preproxy"))
|
||||
o:depends("protocol", "_shunt")
|
||||
o:value("nil", translate("Close"))
|
||||
dialerProxy = s:option(Flag, "dialerProxy", translate("dialerProxy"))
|
||||
dialerProxy:depends({ type = "Xray", protocol = "_shunt" , })
|
||||
o.rmempty = false
|
||||
o = s:option(ListValue, "main_node", string.format('<a style="color:red">%s</a>', translate("Preproxy Node")), translate("Set the node to be used as a pre-proxy. Each rule (including <code>Default</code>) has a separate switch that controls whether this rule uses the pre-proxy or not."))
|
||||
o:depends("preproxy_enabled", "1")
|
||||
local dialerProxy = s:option(Flag, "dialerProxy", translate("dialerProxy"))
|
||||
dialerProxy.hidden = true
|
||||
dialerProxy:depends({ type = "Xray", protocol = "_shunt", preproxy_enabled = "1" })
|
||||
for k, v in pairs(balancers_table) do
|
||||
o:value(v.id, v.remarks)
|
||||
end
|
||||
for k, v in pairs(nodes_table) do
|
||||
o:value(v.id, v.remarks)
|
||||
--dialerProxy:depends({ type = "Xray", main_node = v.id })
|
||||
@ -193,17 +199,17 @@ uci:foreach(appname, "shunt_rules", function(e)
|
||||
o:value("_blackhole", translate("Blackhole"))
|
||||
o:depends("protocol", "_shunt")
|
||||
|
||||
for k, v in pairs(balancers_table) do
|
||||
o:value(v.id, v.remarks)
|
||||
end
|
||||
if #nodes_table > 0 then
|
||||
for k, v in pairs(balancers_table) do
|
||||
o:value(v.id, v.remarks)
|
||||
end
|
||||
local pt = s:option(ListValue, e[".name"] .. "_proxy_tag", string.format('* <a style="color:red">%s</a>', e.remarks .. " " .. translate("Preproxy")))
|
||||
pt:value("nil", translate("Close"))
|
||||
pt:value("main", translate("Preproxy Node"))
|
||||
pt.default = "nil"
|
||||
for k, v in pairs(nodes_table) do
|
||||
o:value(v.id, v.remarks)
|
||||
pt:depends(e[".name"], v.id)
|
||||
pt:depends({ preproxy_enabled = "1", [e[".name"]] = v.id })
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -216,21 +222,22 @@ shunt_tips.cfgvalue = function(t, n)
|
||||
end
|
||||
shunt_tips:depends("protocol", "_shunt")
|
||||
|
||||
default_node = s:option(ListValue, "default_node", string.format('* <a style="color:red">%s</a>', translate("Default")))
|
||||
local default_node = s:option(ListValue, "default_node", string.format('* <a style="color:red">%s</a>', translate("Default")))
|
||||
default_node:depends("protocol", "_shunt")
|
||||
default_node:value("_direct", translate("Direct Connection"))
|
||||
default_node:value("_blackhole", translate("Blackhole"))
|
||||
for k, v in pairs(nodes_table) do default_node:value(v.id, v.remarks) end
|
||||
default_node:depends("protocol", "_shunt")
|
||||
|
||||
if #nodes_table > 0 then
|
||||
for k, v in pairs(balancers_table) do
|
||||
default_node:value(v.id, v.remarks)
|
||||
end
|
||||
local dpt = s:option(ListValue, "default_proxy_tag", string.format('* <a style="color:red">%s</a>', translate("Default Preproxy")), translate("When using, localhost will connect this node first and then use this node to connect the default node."))
|
||||
dpt:value("nil", translate("Close"))
|
||||
dpt:value("main", translate("Preproxy Node"))
|
||||
dpt.default = "nil"
|
||||
for k, v in pairs(nodes_table) do
|
||||
if v.protocol ~= "_balancing" then
|
||||
dpt:depends("default_node", v.id)
|
||||
end
|
||||
default_node:value(v.id, v.remarks)
|
||||
dpt:depends({ preproxy_enabled = "1", default_node = v.id })
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -398,7 +398,7 @@ msgid "Default Preproxy"
|
||||
msgstr "默认前置代理"
|
||||
|
||||
msgid "There are no available nodes, please add or subscribe nodes first."
|
||||
mststr "没有可用节点,请先添加或订阅节点。"
|
||||
msgstr "没有可用节点,请先添加或订阅节点。"
|
||||
|
||||
msgid "No shunt rules? Click me to go to add."
|
||||
msgstr "没有分流规则?点我前往去添加。"
|
||||
|
@ -1063,29 +1063,31 @@ start_dns() {
|
||||
DNSMASQ_FILTER_IPV6=$FILTER_PROXY_IPV6
|
||||
|
||||
echolog "过滤服务配置:准备接管域名解析..."
|
||||
local items=$(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1)
|
||||
[ -n "$items" ] && {
|
||||
for item in $items; do
|
||||
[ "$(config_n_get $item enabled)" = "1" ] || continue
|
||||
[ "$(config_n_get $item tcp_node)" = "default" ] && [ "$TCP_NODE" != "nil" ] && {
|
||||
local item_tcp_proxy_mode=$(config_n_get $item tcp_proxy_mode default)
|
||||
[ "$item_tcp_proxy_mode" = "default" ] && item_tcp_proxy_mode=$TCP_PROXY_MODE
|
||||
global=$(echo "${global}${item_tcp_proxy_mode}" | grep "global")
|
||||
returnhome=$(echo "${returnhome}${item_tcp_proxy_mode}" | grep "returnhome")
|
||||
chnlist=$(echo "${chnlist}${item_tcp_proxy_mode}" | grep "chnroute")
|
||||
gfwlist=$(echo "${gfwlist}${item_tcp_proxy_mode}" | grep "gfwlist")
|
||||
ACL_TCP_PROXY_MODE=${ACL_TCP_PROXY_MODE}${item_tcp_proxy_mode}
|
||||
}
|
||||
[ "$(config_n_get $item udp_node)" = "default" ] && [ "$UDP_NODE" != "nil" ] && {
|
||||
local item_udp_proxy_mode=$(config_n_get $item udp_proxy_mode default)
|
||||
[ "$item_udp_proxy_mode" = "default" ] && item_udp_proxy_mode=$UDP_PROXY_MODE
|
||||
global=$(echo "${global}${item_udp_proxy_mode}" | grep "global")
|
||||
returnhome=$(echo "${returnhome}${item_udp_proxy_mode}" | grep "returnhome")
|
||||
chnlist=$(echo "${chnlist}${item_udp_proxy_mode}" | grep "chnroute")
|
||||
gfwlist=$(echo "${gfwlist}${item_udp_proxy_mode}" | grep "gfwlist")
|
||||
ACL_UDP_PROXY_MODE=${ACL_UDP_PROXY_MODE}${item_udp_proxy_mode}
|
||||
}
|
||||
done
|
||||
[ "$ENABLED_ACLS" == 1 ] && {
|
||||
local items=$(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1)
|
||||
[ -n "$items" ] && {
|
||||
for item in $items; do
|
||||
[ "$(config_n_get $item enabled)" = "1" ] || continue
|
||||
[ "$(config_n_get $item tcp_node)" = "default" ] && [ "$TCP_NODE" != "nil" ] && {
|
||||
local item_tcp_proxy_mode=$(config_n_get $item tcp_proxy_mode default)
|
||||
[ "$item_tcp_proxy_mode" = "default" ] && item_tcp_proxy_mode=$TCP_PROXY_MODE
|
||||
global=$(echo "${global}${item_tcp_proxy_mode}" | grep "global")
|
||||
returnhome=$(echo "${returnhome}${item_tcp_proxy_mode}" | grep "returnhome")
|
||||
chnlist=$(echo "${chnlist}${item_tcp_proxy_mode}" | grep "chnroute")
|
||||
gfwlist=$(echo "${gfwlist}${item_tcp_proxy_mode}" | grep "gfwlist")
|
||||
ACL_TCP_PROXY_MODE=${ACL_TCP_PROXY_MODE}${item_tcp_proxy_mode}
|
||||
}
|
||||
[ "$(config_n_get $item udp_node)" = "default" ] && [ "$UDP_NODE" != "nil" ] && {
|
||||
local item_udp_proxy_mode=$(config_n_get $item udp_proxy_mode default)
|
||||
[ "$item_udp_proxy_mode" = "default" ] && item_udp_proxy_mode=$UDP_PROXY_MODE
|
||||
global=$(echo "${global}${item_udp_proxy_mode}" | grep "global")
|
||||
returnhome=$(echo "${returnhome}${item_udp_proxy_mode}" | grep "returnhome")
|
||||
chnlist=$(echo "${chnlist}${item_udp_proxy_mode}" | grep "chnroute")
|
||||
gfwlist=$(echo "${gfwlist}${item_udp_proxy_mode}" | grep "gfwlist")
|
||||
ACL_UDP_PROXY_MODE=${ACL_UDP_PROXY_MODE}${item_udp_proxy_mode}
|
||||
}
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
case "$DNS_MODE" in
|
||||
|
@ -163,11 +163,11 @@ local gfwlist = PROXY_MODE:find("gfwlist")
|
||||
local only_global
|
||||
|
||||
local dnsmasq_default_dns
|
||||
if CHNROUTE_MODE_DEFAULT_DNS ~= "nil" and (chnlist or gfwlist) then
|
||||
if CHNROUTE_MODE_DEFAULT_DNS == "remote" then
|
||||
if CHNROUTE_MODE_DEFAULT_DNS ~= "nil" then
|
||||
if chnlist and CHNROUTE_MODE_DEFAULT_DNS == "remote" then
|
||||
dnsmasq_default_dns = TUN_DNS
|
||||
end
|
||||
if CHNROUTE_MODE_DEFAULT_DNS == "chinadns_ng" and CHINADNS_DNS ~= "0" then
|
||||
if (chnlist or gfwlist) and CHNROUTE_MODE_DEFAULT_DNS == "chinadns_ng" and CHINADNS_DNS ~= "0" then
|
||||
dnsmasq_default_dns = CHINADNS_DNS
|
||||
end
|
||||
end
|
||||
|
@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=Argon Theme
|
||||
LUCI_DEPENDS:=+curl +jsonfilter
|
||||
PKG_VERSION:=1.7.5
|
||||
PKG_RELEASE:=20230322
|
||||
PKG_VERSION:=1.7.7
|
||||
PKG_RELEASE:=20230404
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
|
@ -973,6 +973,34 @@ form.inline + form.inline,
|
||||
.cbi-value-field .cbi-button-neutral {
|
||||
min-width: 2.5rem !important;
|
||||
}
|
||||
/* Replace LuCI's default file and folder type icons */
|
||||
img[src="/luci-static/resources/cbi/reload.gif"] {
|
||||
content: url("/luci-static/argon/img/reload.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/file.gif"] {
|
||||
content: url("/luci-static/argon/img/file.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/add.gif"] {
|
||||
content: url("/luci-static/argon/img/add.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/remove.gif"] {
|
||||
content: url("/luci-static/argon/img/remove.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/edit.gif"] {
|
||||
content: url("/luci-static/argon/img/edit.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/fieldadd.gif"] {
|
||||
content: url("/luci-static/argon/img/fieldadd.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/link.gif"] {
|
||||
content: url("/luci-static/argon/img/link.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/find.gif"] {
|
||||
content: url("/luci-static/argon/img/find.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/folder.gif"] {
|
||||
content: url("/luci-static/argon/img/folder.webp");
|
||||
}
|
||||
/* input */
|
||||
.cbi-value input[type="password"],
|
||||
.cbi-value input[type="text"] {
|
||||
@ -1271,10 +1299,41 @@ small {
|
||||
.cbi-section > legend {
|
||||
display: none !important;
|
||||
}
|
||||
.cbi-section-error {
|
||||
padding: 1.5rem;
|
||||
color: #fb6340;
|
||||
/* Define the error text border breathe display animation */
|
||||
@keyframes error-border-breathe {
|
||||
0%{
|
||||
border-color: #fb6340;
|
||||
}
|
||||
50%{
|
||||
border-color: transparent;
|
||||
}
|
||||
100%{
|
||||
border-color: #fb6340;
|
||||
}
|
||||
}
|
||||
/* Center display error text box */
|
||||
.cbi-section-error > ul{
|
||||
text-align: center;
|
||||
}
|
||||
/* Add border for error text box, and border breathe display animation to make it more noticeable */
|
||||
.cbi-section-error > ul > li {
|
||||
font-weight: 600;
|
||||
max-width: 60%;
|
||||
color: #fb6340;
|
||||
line-height: 1rem;
|
||||
display: inline-block;
|
||||
border: 2px solid #fb6340;
|
||||
border-radius: 0.3rem;
|
||||
animation: error-border-breathe 1.5s ease-in-out infinite;
|
||||
padding-left: 4px;
|
||||
padding-right: 4px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
.cbi-input-invalid,
|
||||
.cbi-value-error input {
|
||||
color: #fb6340;
|
||||
border: 1px dashed #fb6340;
|
||||
}
|
||||
fieldset > fieldset {
|
||||
margin: 0;
|
||||
@ -1426,6 +1485,30 @@ td > table > tbody > tr > td,
|
||||
.a-to-btn {
|
||||
text-decoration: none;
|
||||
}
|
||||
/* file selector button */
|
||||
::file-selector-button {
|
||||
color: #fff;
|
||||
border-radius: .25rem;
|
||||
border: 1px solid #2e6da4;
|
||||
padding: .4rem .5rem;
|
||||
background-color: #337ab7;
|
||||
box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
::file-selector-button:hover,
|
||||
::file-selector-button:focus,
|
||||
::file-selector-button:active {
|
||||
outline: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
::file-selector-button:hover,
|
||||
::file-selector-button:focus {
|
||||
box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
::file-selector-button:active {
|
||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
|
||||
}
|
||||
/* table */
|
||||
.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
|
||||
width: auto !important;
|
||||
@ -1540,6 +1623,40 @@ td > table > tbody > tr > td,
|
||||
#cbi-network-switch_vlan .td {
|
||||
flex-basis: 12%;
|
||||
}
|
||||
/* Fix background color of table-titles */
|
||||
.cbi-section-node > .cbi-section-table > tbody > .cbi-section-table-titles th {
|
||||
background-color: var(--lighter);
|
||||
border: none;
|
||||
}
|
||||
/* Fix background color of table-descr */
|
||||
.cbi-section-node > .cbi-section-table > tbody > .cbi-section-table-descr th {
|
||||
border: none;
|
||||
}
|
||||
/* Fix background color not change when the H tag is in the table rowstyle-1 */
|
||||
.cbi-section-node > .cbi-section-table > tbody > .cbi-rowstyle-1 th {
|
||||
background-color: #fff;
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: none;
|
||||
}
|
||||
/* Fix background color not change when the H tag is in the table rowstyle-2 */
|
||||
.cbi-section-node > .cbi-section-table > tbody > .cbi-rowstyle-2 th {
|
||||
background-color: #f9f9f9;
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: none;
|
||||
}
|
||||
/* Change the color of the H label in the table to make it more visible */
|
||||
th h1, td h1,
|
||||
th h2, td h2,
|
||||
th h3, td h3,
|
||||
th h4, td h4,
|
||||
th h5, td h5,
|
||||
th h6, td h6 {
|
||||
background: var(--lighter);
|
||||
}
|
||||
/* OCD: Change the background color of the "now in use" node in PassWall */
|
||||
.cbi-section-table > tbody > ._now_use {
|
||||
background: #5e72e473 !important;
|
||||
}
|
||||
/* language fix */
|
||||
body.lang_pl.node-main-login .cbi-value-title {
|
||||
width: 12rem;
|
||||
@ -1834,10 +1951,26 @@ div > .table > .tbody > .tr:nth-of-type(2n) {
|
||||
background-color: var(--danger) !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
/* Define the warning background-color breathe display animation */
|
||||
@keyframes warning-background-color-breathe {
|
||||
0%{
|
||||
color: #fff;
|
||||
background-color: #fb6340;
|
||||
}
|
||||
50%{
|
||||
color: #32325d;
|
||||
background-color: #fff;
|
||||
}
|
||||
100%{
|
||||
color: #fff;
|
||||
background-color: #fb6340;
|
||||
}
|
||||
}
|
||||
.warning {
|
||||
background-color: #fb6340 !important;
|
||||
background-color: var(--warning) !important;
|
||||
color: #fff !important;
|
||||
background-color: #fb6340;
|
||||
background-color: var(--warning);
|
||||
color: #fff;
|
||||
animation: warning-background-color-breathe 1.5s ease-in-out infinite !important;
|
||||
}
|
||||
.notice {
|
||||
background-color: #5e72e4 !important;
|
||||
@ -2341,6 +2474,16 @@ select[multiple="multiple"] {
|
||||
line-height: 1.6;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
.cbi-section > .cbi-section-node > .cbi-value > .cbi-value-field font {
|
||||
word-wrap: break-word;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.6;
|
||||
padding: 0.7rem;
|
||||
padding-left: 0;
|
||||
float: left;
|
||||
text-align: right;
|
||||
display: table-cell;
|
||||
}
|
||||
.cbi-value-helpicon > img {
|
||||
display: none;
|
||||
}
|
||||
@ -3099,4 +3242,4 @@ input[name="nslookup"] {
|
||||
width: 2.3rem !important;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
}
|
BIN
luci-theme-argon/htdocs/luci-static/argon/img/add.webp
Normal file
After Width: | Height: | Size: 690 B |
BIN
luci-theme-argon/htdocs/luci-static/argon/img/edit.webp
Normal file
After Width: | Height: | Size: 632 B |
BIN
luci-theme-argon/htdocs/luci-static/argon/img/fieldadd.webp
Normal file
After Width: | Height: | Size: 664 B |
BIN
luci-theme-argon/htdocs/luci-static/argon/img/file.webp
Normal file
After Width: | Height: | Size: 566 B |
BIN
luci-theme-argon/htdocs/luci-static/argon/img/find.webp
Normal file
After Width: | Height: | Size: 674 B |
BIN
luci-theme-argon/htdocs/luci-static/argon/img/folder.webp
Normal file
After Width: | Height: | Size: 252 B |
BIN
luci-theme-argon/htdocs/luci-static/argon/img/link.webp
Normal file
After Width: | Height: | Size: 480 B |
BIN
luci-theme-argon/htdocs/luci-static/argon/img/reload.webp
Normal file
After Width: | Height: | Size: 848 B |
BIN
luci-theme-argon/htdocs/luci-static/argon/img/remove.webp
Normal file
After Width: | Height: | Size: 682 B |
@ -1134,6 +1134,34 @@ form.inline+form.inline,
|
||||
min-width: 2.5rem !important;
|
||||
}
|
||||
|
||||
/* Replace LuCI's default file and folder type icons */
|
||||
img[src="/luci-static/resources/cbi/reload.gif"] {
|
||||
content: url("/luci-static/argon/img/reload.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/file.gif"] {
|
||||
content: url("/luci-static/argon/img/file.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/add.gif"] {
|
||||
content: url("/luci-static/argon/img/add.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/remove.gif"] {
|
||||
content: url("/luci-static/argon/img/remove.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/edit.gif"] {
|
||||
content: url("/luci-static/argon/img/edit.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/fieldadd.gif"] {
|
||||
content: url("/luci-static/argon/img/fieldadd.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/link.gif"] {
|
||||
content: url("/luci-static/argon/img/link.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/find.gif"] {
|
||||
content: url("/luci-static/argon/img/find.webp");
|
||||
}
|
||||
img[src="/luci-static/resources/cbi/folder.gif"] {
|
||||
content: url("/luci-static/argon/img/folder.webp");
|
||||
}
|
||||
|
||||
/* input */
|
||||
.cbi-value input[type="password"],
|
||||
@ -1495,12 +1523,47 @@ small {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.cbi-section-error {
|
||||
padding: 1.5rem;
|
||||
color: #fb6340;
|
||||
font-weight: 600;
|
||||
/* Define the error text border breathe display animation */
|
||||
@keyframes error-border-breathe {
|
||||
0%{
|
||||
border-color: #fb6340;
|
||||
}
|
||||
50%{
|
||||
border-color: transparent;
|
||||
}
|
||||
100%{
|
||||
border-color: #fb6340;
|
||||
}
|
||||
}
|
||||
|
||||
/* Center display error text box */
|
||||
.cbi-section-error > ul{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Add border for error text box, and border breathe display animation to make it more noticeable */
|
||||
.cbi-section-error > ul > li {
|
||||
font-weight: 600;
|
||||
max-width: 60%;
|
||||
color: #fb6340;
|
||||
line-height: 1rem;
|
||||
display: inline-block;
|
||||
border: 2px solid #fb6340;
|
||||
border-radius: 0.3rem;
|
||||
animation: error-border-breathe 1.5s ease-in-out infinite;
|
||||
padding-left: 4px;
|
||||
padding-right: 4px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.cbi-input-invalid,
|
||||
.cbi-value-error input {
|
||||
color: #fb6340;
|
||||
border: 1px dashed #fb6340;
|
||||
}
|
||||
|
||||
|
||||
fieldset>fieldset {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
@ -1683,6 +1746,31 @@ td>table>tbody>tr>td,
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* file selector button */
|
||||
::file-selector-button {
|
||||
color: #fff;
|
||||
border-radius: .25rem;
|
||||
border: 1px solid #2e6da4;
|
||||
padding: .4rem .5rem;
|
||||
background-color: #337ab7;
|
||||
box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
::file-selector-button:hover,
|
||||
::file-selector-button:focus,
|
||||
::file-selector-button:active {
|
||||
outline: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
::file-selector-button:hover,
|
||||
::file-selector-button:focus {
|
||||
box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
::file-selector-button:active {
|
||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
|
||||
}
|
||||
|
||||
/* table */
|
||||
|
||||
|
||||
@ -1835,6 +1923,46 @@ td>table>tbody>tr>td,
|
||||
flex-basis: 12%;
|
||||
}
|
||||
|
||||
/* Fix background color of table-titles */
|
||||
.cbi-section-node>.cbi-section-table>tbody>.cbi-section-table-titles th {
|
||||
background-color: var(--lighter);
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* Fix background color of table-descr */
|
||||
.cbi-section-node>.cbi-section-table>tbody>.cbi-section-table-descr th {
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* Fix background color not change when the H tag is in the table rowstyle-1 */
|
||||
.cbi-section-node>.cbi-section-table>tbody>.cbi-rowstyle-1 th {
|
||||
background-color: #fff;
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* Fix background color not change when the H tag is in the table rowstyle-2 */
|
||||
.cbi-section-node>.cbi-section-table>tbody>.cbi-rowstyle-2 th {
|
||||
background-color: #f9f9f9;
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* Change the color of the H label in the table to make it more visible */
|
||||
th h1, td h1,
|
||||
th h2, td h2,
|
||||
th h3, td h3,
|
||||
th h4, td h4,
|
||||
th h5, td h5,
|
||||
th h6, td h6 {
|
||||
background: var(--lighter);
|
||||
}
|
||||
|
||||
/* OCD: Change the background color of the "now in use" node in PassWall */
|
||||
.cbi-section-table>tbody>._now_use {
|
||||
background: #5e72e473 !important;
|
||||
}
|
||||
|
||||
/* language fix */
|
||||
body.lang_pl.node-main-login .cbi-value-title {
|
||||
width: 12rem;
|
||||
@ -2203,10 +2331,26 @@ div>.table>.tbody>.tr:nth-of-type(2n) {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
/* Define the warning background-color breathe display animation */
|
||||
@keyframes warning-background-color-breathe {
|
||||
0%{
|
||||
color: #fff;
|
||||
background-color: #fb6340;
|
||||
}
|
||||
50%{
|
||||
color: #32325d;
|
||||
background-color: #fff;
|
||||
}
|
||||
100%{
|
||||
color: #fff;
|
||||
background-color: #fb6340;
|
||||
}
|
||||
}
|
||||
.warning {
|
||||
background-color: #fb6340 !important;
|
||||
background-color: var(--warning) !important;
|
||||
color: #fff !important;
|
||||
background-color: #fb6340;
|
||||
background-color: var(--warning);
|
||||
color: #fff;
|
||||
animation: warning-background-color-breathe 1.5s ease-in-out infinite !important;
|
||||
}
|
||||
|
||||
.notice {
|
||||
@ -2836,6 +2980,16 @@ select[multiple="multiple"] {
|
||||
|
||||
}
|
||||
|
||||
.cbi-section>.cbi-section-node>.cbi-value>.cbi-value-field font {
|
||||
word-wrap: break-word;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.6;
|
||||
padding: 0.7rem;
|
||||
padding-left: 0;
|
||||
float: left;
|
||||
text-align: right;
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
|
||||
.cbi-value-helpicon>img {
|
||||
|
@ -287,7 +287,7 @@ table>thead>tr>th {
|
||||
}
|
||||
|
||||
.cbi-rowstyle-2 {
|
||||
background-color: #1e1e1e;
|
||||
background-color: #2c2c2c !important;
|
||||
}
|
||||
|
||||
.cbi-rowstyle-1 {
|
||||
@ -306,7 +306,12 @@ table>thead>tr>th {
|
||||
|
||||
.cbi-button {
|
||||
color: #ccc;
|
||||
background-color: #252526;
|
||||
background-color: #2c2c2c;
|
||||
}
|
||||
|
||||
.cbi-rowstyle-2 .cbi-button-up,
|
||||
.cbi-rowstyle-2 .cbi-button-down {
|
||||
background-color: #252526 !important;
|
||||
}
|
||||
|
||||
.cbi-section-node {
|
||||
@ -326,6 +331,71 @@ div>.table>.tbody>.tr:nth-of-type(2n) {
|
||||
background-color: #252526;
|
||||
}
|
||||
|
||||
/* file selector button */
|
||||
::file-selector-button {
|
||||
border: 1px solid darkseagreen !important;
|
||||
background-color: darkseagreen !important;
|
||||
}
|
||||
|
||||
/* Fix background color of table-titles */
|
||||
.cbi-section-node>.cbi-section-table>tbody>.cbi-section-table-titles th {
|
||||
background-color: #1e1e1e;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
/* Fix background color of table-descr */
|
||||
.cbi-section-node>.cbi-section-table>tbody>.cbi-section-table-descr th {
|
||||
background-color: #333333;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
/* Fix background color not change when the H tag is in the table rowstyle-1 */
|
||||
.cbi-section-node>.cbi-section-table>tbody>.cbi-rowstyle-1 th {
|
||||
background-color: #252526;
|
||||
border-top: 1px solid #252526;
|
||||
border-bottom: none !important;
|
||||
}
|
||||
|
||||
/* Fix background color not change when the H tag is in the table rowstyle-2 */
|
||||
.cbi-section-node>.cbi-section-table>tbody>.cbi-rowstyle-2 th {
|
||||
background-color: #2c2c2c;
|
||||
border-top: 1px solid #252526;
|
||||
border-bottom: none !important;
|
||||
}
|
||||
|
||||
/* Change the color of the H label in the table to make it more visible */
|
||||
th h1, td h1,
|
||||
th h2, td h2,
|
||||
th h3, td h3,
|
||||
th h4, td h4,
|
||||
th h5, td h5,
|
||||
th h6, td h6 {
|
||||
background: var(--gray-dark);
|
||||
}
|
||||
|
||||
/* Improved the background color of each itemes in "UNSAVED CHANGES" (dark mode only) */
|
||||
.uci-change-list del,
|
||||
.uci-change-legend-label del {
|
||||
background-color: #fb74008c;
|
||||
}
|
||||
.uci-change-list var,
|
||||
.uci-change-legend-label var {
|
||||
background-color: #333333;
|
||||
}
|
||||
.uci-change-list ins,
|
||||
.uci-change-legend-label ins {
|
||||
background-color: #00ff0a45 !important;
|
||||
}
|
||||
|
||||
/* OCD: Compatible the background color of the "Add the node via the link" pop-up window in PassWall (dark mode only) */
|
||||
#add_link_div {
|
||||
background-color: #333333f0 !important;
|
||||
box-shadow: #00000094 10px 10px 30px 5px !important;
|
||||
}
|
||||
#add_link_div>.cbi-value>.cbi-value-field>#nodes_link {
|
||||
background: #ccc;
|
||||
}
|
||||
|
||||
#content_syslog {
|
||||
box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35)
|
||||
}
|
||||
@ -464,7 +534,7 @@ select {
|
||||
}
|
||||
|
||||
.ifacebox {
|
||||
background-color: none;
|
||||
background-color: #1e1e1e;
|
||||
border: 1px solid #1e1e1e;
|
||||
}
|
||||
|
||||
@ -484,6 +554,30 @@ select {
|
||||
background-color: #3c3c3c;
|
||||
}
|
||||
|
||||
/* Fix firewall zone: "unspecified -or- create: " background color (dark mode only) */
|
||||
div[onclick$="._fwzone_new').checked=true"] {
|
||||
border: 1px solid #3c3c3c;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
/* Improve the background color of "Any zone" and "Device" when ADD/EDIT Rules in Firewall > Traffic Rules (dark mode only) */
|
||||
label[for$=".src_any"],
|
||||
label[for$=".dest_empty"],
|
||||
label[for$=".dest_any"] {
|
||||
background-color: #2888db !important;
|
||||
}
|
||||
|
||||
/* Fix/add background color of wireless signal strength badge for dark mode */
|
||||
td>.ifacebadge,
|
||||
.td>.ifacebadge {
|
||||
background-color: #3c3c3c;
|
||||
}
|
||||
|
||||
/* Improved loading process gif color (dark mode only) */
|
||||
img[src="/luci-static/resources/icons/loading.gif"] {
|
||||
filter: invert(1);
|
||||
}
|
||||
|
||||
div.cbi-value var,
|
||||
td.cbi-value-field var {
|
||||
color: #483d8b;
|
||||
@ -541,11 +635,36 @@ td.cbi-value-field var {
|
||||
background-color: darkolivegreen !important;
|
||||
}
|
||||
|
||||
/* Define the warning background-color breathe display animation (dark mode) */
|
||||
@keyframes warning-background-color-breathe-dark {
|
||||
0%{
|
||||
color: #fff;
|
||||
background-color: darkorange;
|
||||
}
|
||||
50%{
|
||||
color: #ccc;
|
||||
background-color: #333333;
|
||||
}
|
||||
100%{
|
||||
color: #fff;
|
||||
background-color: darkorange;
|
||||
}
|
||||
}
|
||||
.warning {
|
||||
animation: warning-background-color-breathe-dark 1.5s ease-in-out infinite !important;
|
||||
}
|
||||
|
||||
.notice {
|
||||
background-color: #483d8b !important;
|
||||
background-color: var(--dark-primary) !important;
|
||||
}
|
||||
|
||||
/* Improved the aleart-message background color during device restart (dark mode only) */
|
||||
.errorbox,
|
||||
.alert-message {
|
||||
background-color: #333333;
|
||||
}
|
||||
|
||||
.cbi-input-find,
|
||||
.cbi-input-save,
|
||||
.cbi-button-add,
|
||||
@ -587,8 +706,30 @@ fieldset[id^="cbi-apply-"] {
|
||||
background: #252525;
|
||||
}
|
||||
|
||||
.cbi-section-error {
|
||||
/* Define the error text border breathe display animation (dark mode) */
|
||||
@keyframes error-border-breathe-dark {
|
||||
0%{
|
||||
border-color: darkorange;
|
||||
}
|
||||
50%{
|
||||
border-color: transparent;
|
||||
}
|
||||
100%{
|
||||
border-color: darkorange;
|
||||
}
|
||||
}
|
||||
|
||||
/* Add border for error text box, and border breathe display animation to make it more noticeable (dark mode) */
|
||||
.cbi-section-error>ul>li {
|
||||
color: darkorange;
|
||||
border: 2px solid darkorange ;
|
||||
animation: error-border-breathe-dark 1.5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.cbi-input-invalid,
|
||||
.cbi-value-error input {
|
||||
color: darkorange;
|
||||
border: 1px dashed darkorange !important;
|
||||
}
|
||||
|
||||
.node-services-vssr .block h4 span{
|
||||
|