update 2023-03-12 16:22:02

This commit is contained in:
github-actions[bot] 2023-03-12 16:22:02 +08:00
parent e234558973
commit 9281cafc68
17 changed files with 163 additions and 103 deletions

View File

@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall2
PKG_VERSION:=1.10
PKG_RELEASE:=1
PKG_RELEASE:=4
PKG_CONFIG_DEPENDS:= \
CONFIG_PACKAGE_$(PKG_NAME)_Transparent_Proxy \

View File

@ -512,7 +512,13 @@ tlsflow.default = ""
tlsflow:value("", translate("Disable"))
tlsflow:value("xtls-rprx-vision")
tlsflow:value("xtls-rprx-vision-udp443")
tlsflow:depends({ type = "Xray", protocol = "vless", tls = true })
tlsflow:depends({ type = "Xray", protocol = "vless", tls = true, transport = "tcp" })
reality = s:option(Flag, "reality", translate("REALITY"), translate("Only recommend to use with VLESS-TCP-XTLS-Vision."))
reality.default = 0
reality:depends({ type = "Xray", tls = true, transport = "tcp" })
reality:depends({ type = "Xray", tls = true, transport = "h2" })
reality:depends({ type = "Xray", tls = true, transport = "grpc" })
alpn = s:option(ListValue, "alpn", translate("alpn"))
alpn.default = "default"
@ -521,7 +527,7 @@ alpn:value("h2,http/1.1")
alpn:value("h2")
alpn:value("http/1.1")
alpn:depends({ type = "V2ray", tls = true })
alpn:depends({ type = "Xray", tls = true })
alpn:depends({ type = "Xray", tls = true, reality = false })
tls_serverName = s:option(Value, "tls_serverName", translate("Domain"))
tls_serverName:depends("tls", true)
@ -529,10 +535,10 @@ tls_serverName:depends("type", "Hysteria")
tls_allowInsecure = s:option(Flag, "tls_allowInsecure", translate("allowInsecure"), translate("Whether unsafe connections are allowed. When checked, Certificate validation will be skipped."))
tls_allowInsecure.default = "0"
tls_allowInsecure:depends("tls", true)
tls_allowInsecure:depends({ tls = true, reality = false })
tls_allowInsecure:depends("type", "Hysteria")
xray_fingerprint = s:option(Value, "xray_fingerprint", translate("Finger Print"))
xray_fingerprint = s:option(Value, "xray_fingerprint", translate("Finger Print"), translate("Avoid using randomized, unless you have to."))
xray_fingerprint:value("", translate("Disable"))
xray_fingerprint:value("chrome")
xray_fingerprint:value("firefox")
@ -545,7 +551,7 @@ xray_fingerprint:value("qq")
xray_fingerprint:value("random")
xray_fingerprint:value("randomized")
xray_fingerprint.default = ""
xray_fingerprint:depends({ type = "Xray", tls = true })
xray_fingerprint:depends({ type = "Xray", tls = true, reality = false })
function xray_fingerprint.cfgvalue(self, section)
return m:get(section, "fingerprint")
end
@ -556,6 +562,38 @@ function xray_fingerprint.remove(self, section)
m:del(section, "fingerprint")
end
-- [[ REALITY部分 ]] --
reality_publicKey = s:option(Value, "reality_publicKey", translate("Public Key"))
reality_publicKey:depends({ type = "Xray", tls = true, reality = true })
reality_shortId = s:option(Value, "reality_shortId", translate("Short Id"))
reality_shortId:depends({ type = "Xray", tls = true, reality = true })
reality_spiderX = s:option(Value, "reality_spiderX", translate("Spider X"))
reality_spiderX.placeholder = "/"
reality_spiderX:depends({ type = "Xray", tls = true, reality = true })
reality_fingerprint = s:option(Value, "reality_fingerprint", translate("Finger Print"), translate("Avoid using randomized, unless you have to."))
reality_fingerprint:value("chrome")
reality_fingerprint:value("firefox")
reality_fingerprint:value("safari")
reality_fingerprint:value("ios")
reality_fingerprint:value("android")
reality_fingerprint:value("edge")
reality_fingerprint:value("360")
reality_fingerprint:value("qq")
reality_fingerprint:value("random")
reality_fingerprint:value("randomized")
reality_fingerprint.default = "chrome"
reality_fingerprint:depends({ type = "Xray", tls = true, reality = true })
function reality_fingerprint.cfgvalue(self, section)
return m:get(section, "fingerprint")
end
function reality_fingerprint.write(self, section, value)
m:set(section, "fingerprint", value)
end
transport = s:option(ListValue, "transport", translate("Transport"))
transport:value("tcp", "TCP")
transport:value("mkcp", "mKCP")
@ -618,6 +656,7 @@ tcp_guise_http_host:depends("tcp_guise", "http")
-- HTTP路径
tcp_guise_http_path = s:option(DynamicList, "tcp_guise_http_path", translate("HTTP Path"))
tcp_guise_http_path.placeholder = "/"
tcp_guise_http_path:depends("tcp_guise", "http")
-- [[ mKCP部分 ]]--
@ -662,6 +701,7 @@ ws_host:depends("transport", "ws")
ws_host:depends("ss_transport", "ws")
ws_path = s:option(Value, "ws_path", translate("WebSocket Path"))
ws_path.placeholder = "/"
ws_path:depends("transport", "ws")
ws_path:depends("ss_transport", "ws")
ws_path:depends({ type = "Brook", brook_protocol = "wsclient" })
@ -682,6 +722,7 @@ h2_host:depends("transport", "h2")
h2_host:depends("ss_transport", "h2")
h2_path = s:option(Value, "h2_path", translate("HTTP/2 Path"))
h2_path.placeholder = "/"
h2_path:depends("transport", "h2")
h2_path:depends("ss_transport", "h2")
@ -751,7 +792,7 @@ mux:depends({ type = "V2ray", protocol = "socks" })
mux:depends({ type = "V2ray", protocol = "shadowsocks" })
mux:depends({ type = "V2ray", protocol = "trojan" })
mux:depends({ type = "Xray", protocol = "vmess" })
mux:depends({ type = "Xray", protocol = "vless" })
mux:depends({ type = "Xray", protocol = "vless", tlsflow = "" })
mux:depends({ type = "Xray", protocol = "http" })
mux:depends({ type = "Xray", protocol = "socks" })
mux:depends({ type = "Xray", protocol = "shadowsocks" })

View File

@ -94,6 +94,9 @@ function gen_outbound(flag, node, tag, proxy_table)
else
if node.tls and node.tls == "1" then
node.stream_security = "tls"
if node.type == "Xray" and node.reality and node.reality == "1" then
node.stream_security = "reality"
end
end
end
@ -121,6 +124,13 @@ function gen_outbound(flag, node, tag, proxy_table)
allowInsecure = (node.tls_allowInsecure == "1") and true or false,
fingerprint = (node.type == "Xray" and node.fingerprint and node.fingerprint ~= "") and node.fingerprint or nil
} or nil,
realitySettings = (node.stream_security == "reality") and {
serverName = node.tls_serverName,
publicKey = node.reality_publicKey,
shortId = node.reality_shortId or "",
spiderX = node.reality_spiderX or "/",
fingerprint = (node.type == "Xray" and node.fingerprint and node.fingerprint ~= "") and node.fingerprint or "chrome"
} or nil,
tcpSettings = (node.transport == "tcp" and node.protocol ~= "socks") and {
header = {
type = node.tcp_guise or "none",
@ -144,14 +154,14 @@ function gen_outbound(flag, node, tag, proxy_table)
header = {type = node.mkcp_guise}
} or nil,
wsSettings = (node.transport == "ws") and {
path = node.ws_path or "",
path = node.ws_path or "/",
headers = (node.ws_host ~= nil) and
{Host = node.ws_host} or nil,
maxEarlyData = tonumber(node.ws_maxEarlyData) or nil,
earlyDataHeaderName = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil
} or nil,
httpSettings = (node.transport == "h2") and {
path = node.h2_path,
path = node.h2_path or "/",
host = node.h2_host,
read_idle_timeout = tonumber(node.h2_read_idle_timeout) or nil,
health_check_timeout = tonumber(node.h2_health_check_timeout) or nil
@ -957,20 +967,38 @@ function gen_config(var)
}
})
local direct_type_dns = {
address = direct_dns_udp_server,
port = tonumber(direct_dns_port) or 53,
network = "udp",
settings = {
address = direct_dns_udp_server,
port = tonumber(direct_dns_port) or 53,
network = "udp"
},
proxySettings = {
tag = "direct"
}
}
local remote_type_dns = {
address = remote_dns_udp_server,
port = tonumber(remote_dns_port) or 53,
network = _remote_dns_proto or "tcp",
settings = {
address = remote_dns_udp_server,
port = tonumber(remote_dns_port) or 53,
network = _remote_dns_proto or "tcp"
},
proxySettings = {
tag = "direct"
}
}
local type_dns = direct_type_dns
local custom_type_dns = {
settings = {
address = "1.1.1.1",
port = 53,
network = "tcp",
}
}
local type_dns = remote_type_dns
table.insert(outbounds, {
tag = "dns-out",
protocol = "dns",
settings = type_dns
proxySettings = type_dns.proxySettings,
settings = type_dns.settings
})
table.insert(routing.rules, 1, {
type = "field",
@ -1386,6 +1414,9 @@ function gen_dns_config(var)
table.insert(outbounds, {
tag = "dns-out",
protocol = "dns",
proxySettings = {
tag = dns_out_tag
},
settings = {
address = other_type_dns_server or "1.1.1.1",
port = other_type_dns_port or 53,

View File

@ -370,6 +370,9 @@ msgstr "证书路径"
msgid "Finger Print"
msgstr "指纹伪造"
msgid "Avoid using randomized, unless you have to."
msgstr "避免使用 randomized , 除非你必须要。"
msgid "Original"
msgstr "原版"
@ -850,8 +853,8 @@ msgstr "从文件中加载 IP: 形如'ext:file:tag'必须以ext:(小写)
msgid "Clear logs"
msgstr "清空日志"
msgid "Need node support required"
msgstr "需要节点支持"
msgid "Only recommend to use with VLESS-TCP-XTLS-Vision."
msgstr "只推荐与 VLESS-TCP-XTLS-Vision 搭配使用。"
msgid "Password"
msgstr "密码"
@ -874,9 +877,6 @@ msgstr "本地端口"
msgid "Fast Open"
msgstr "快速打开"
msgid "Need node support required"
msgstr "需要节点支持"
msgid "plugin"
msgstr "插件"

View File

@ -1,7 +1,23 @@
#!/bin/sh
[[ "$ACTION" == "ifup" && "$INTERFACE" == "wan" && $(uci get "passwall2.@global[0].enabled") == "1" ]] && {
/etc/init.d/passwall2 restart
echo "passwall2: restart when wan ifup" > /dev/kmsg
[[ "$ACTION" == "ifup" && $(uci get "passwall2.@global[0].enabled") == "1" ]] && {
default_device=$(ip route | grep default | awk -F 'dev ' '{print $2}' | awk '{print $1}')
[ "$default_device" == "$DEVICE" ] && {
LOCK_FILE_DIR=/var/lock
[ ! -d ${LOCK_FILE_DIR} ] && mkdir -p ${LOCK_FILE_DIR}
LOCK_FILE="${LOCK_FILE_DIR}/passwall2_ifup.lock"
if [ -s ${LOCK_FILE} ]; then
SPID=$(cat ${LOCK_FILE})
if [ -e /proc/${SPID}/status ]; then
exit 1
fi
cat /dev/null > ${LOCK_FILE}
fi
echo $$ > ${LOCK_FILE}
/etc/init.d/passwall2 restart
echo "passwall2: restart when $INTERFACE ifup" > /dev/kmsg
rm -rf ${LOCK_FILE}
}
}

View File

@ -33,7 +33,12 @@ unlock() {
}
boot() {
$APP_FILE boot
local delay=$(uci -q get ${CONFIG}.@global_delay[0].start_delay || echo 1)
if [ "$delay" -gt 0 ]; then
$APP_FILE echolog "执行启动延时 $delay 秒后再启动!"
sleep $delay
fi
restart
}
start() {

View File

@ -308,6 +308,7 @@ run_v2ray() {
[ -n "$dns_listen_port" ] && {
V2RAY_DNS_DIRECT_CONFIG="${TMP_PATH}/${flag}_dns_direct.json"
V2RAY_DNS_DIRECT_LOG="${TMP_PATH}/${flag}_dns_direct.log"
V2RAY_DNS_DIRECT_LOG="/dev/null"
V2RAY_DNS_DIRECT_ARGS="-dns_out_tag direct"
dns_direct_listen_port=$(get_new_port $(expr $dns_listen_port + 1) udp)
V2RAY_DNS_DIRECT_ARGS="${V2RAY_DNS_DIRECT_ARGS} -dns_listen_port ${dns_direct_listen_port}"
@ -351,6 +352,7 @@ run_v2ray() {
[ "$remote_dns_protocol" != "fakedns" ] && {
V2RAY_DNS_REMOTE_CONFIG="${TMP_PATH}/${flag}_dns_remote.json"
V2RAY_DNS_REMOTE_LOG="${TMP_PATH}/${flag}_dns_remote.log"
V2RAY_DNS_REMOTE_LOG="/dev/null"
V2RAY_DNS_REMOTE_ARGS="-dns_out_tag remote"
dns_remote_listen_port=$(get_new_port $(expr $dns_listen_port + 2) udp)
V2RAY_DNS_REMOTE_ARGS="${V2RAY_DNS_REMOTE_ARGS} -dns_listen_port ${dns_remote_listen_port}"
@ -781,16 +783,6 @@ kill_all() {
kill -9 $(pidof "$@") >/dev/null 2>&1
}
boot() {
local delay=$(config_t_get global_delay start_delay 1)
if [ "$delay" -gt 0 ]; then
echolog "执行启动延时 $delay 秒后再启动!"
sleep $delay && start >/dev/null 2>&1 &
else
start
fi
}
acl_app() {
local items=$(uci show ${CONFIG} | grep "=acl_rule" | cut -d '.' -sf 2 | cut -d '=' -sf 1)
[ -n "$items" ] && {
@ -1016,7 +1008,4 @@ stop)
start)
start
;;
boot)
boot
;;
esac

View File

@ -2,7 +2,7 @@
include $(TOPDIR)/rules.mk
PKG_VERSION:=1.0.2-20230123
PKG_VERSION:=1.0.3-20230312
PKG_RELEASE:=
LUCI_TITLE:=LuCI support for SysTools

View File

@ -1,62 +1,24 @@
#!/bin/sh
ISTORE_REPO=https://istore.linkease.com/repo/all/store
FCURL="curl --fail --show-error"
version="1.0"
APP_URL='https://istore.linkease.com/repo/all/store'
luci_store=luci-app-store_0.1.12-9_all.ipk
luci_taskd=luci-lib-taskd_1.0.17_all.ipk
xterm=luci-lib-xterm_4.18.0_all.ipk
task=taskd_1.0.3-1_all.ipk
setup_color() {
# Only use colors if connected to a terminal
if [ -t 1 ]; then
RED=$(printf '\033[31m')
GREEN=$(printf '\033[32m')
YELLOW=$(printf '\033[33m')
BLUE=$(printf '\033[34m')
BOLD=$(printf '\033[1m')
RESET=$(printf '\033[m')
else
RED=""
GREEN=""
YELLOW=""
BLUE=""
BOLD=""
RESET=""
fi
}
setup_color
command_exists() {
command -v "$@" >/dev/null 2>&1
}
error() {
echo ${RED}"Error: $@"${RESET} >&2
curl -V >/dev/null 2>&1 || {
echo "prereq: install curl"
opkg info curl | grep -Fqm1 curl || opkg update
opkg install curl
}
Download_Files(){
local URL=$1
local FileName=$2
if command_exists curl; then
curl -sSLk ${URL} -o ${FileName}
elif command_exists wget; then
wget -c --no-check-certificate ${URL} -O ${FileName}
fi
}
IPK=`$FCURL "$ISTORE_REPO/Packages.gz" | zcat | grep -m1 '^Filename: luci-app-store.*\.ipk$' | sed -n -e 's/^Filename: \(.\+\)$/\1/p'`
clean_app(){
rm -f /tmp/${luci_store} /tmp/${luci_taskd} /tmp/${xterm} /tmp/${task}
}
[ -n "$IPK" ] || exit 1
command_exists opkg || {
error "The program only supports Openwrt."
clean_app
exit 1
}
$FCURL "$ISTORE_REPO/$IPK" | tar -xzO ./data.tar.gz | tar -xzO ./bin/is-opkg > /tmp/is-opkg
( set -x; Download_Files ${APP_URL}/${luci_store} /tmp/${luci_store};
Download_Files ${APP_URL}/${luci_taskd} /tmp/${luci_taskd};
Download_Files ${APP_URL}/${task} /tmp/${task};
Download_Files ${APP_URL}/${xterm} /tmp/${xterm}; )
opkg install --force-reinstall /tmp/${task} /tmp/${xterm} /tmp/${luci_taskd} /tmp/${luci_store}
[ -s "/tmp/is-opkg" ] || exit 1
chmod 755 /tmp/is-opkg
/tmp/is-opkg update
# /tmp/is-opkg install taskd
/tmp/is-opkg opkg install --force-reinstall luci-lib-taskd luci-lib-xterm
/tmp/is-opkg opkg install --force-reinstall luci-app-store
[ -s "/etc/init.d/tasks" ] || /tmp/is-opkg opkg install --force-reinstall taskd

View File

@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Design Theme
LUCI_DEPENDS:=
PKG_VERSION:=5.4.6
PKG_VERSION:=5.4.8
PKG_RELEASE:=20230312
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -48,7 +48,7 @@
--alertBackground: rgb(230 230 230);
--scrollbarColor:#d0d0d0;
--ifaceboxBorderColor: #b8b8b8bd;
--ifaceboxFontColor: #1a1a1a;
--ifaceboxFontColor: #404040;
--liSelectedColor: #c5c5c5;
--vssrStatusColor: #525f7f;
--vssrBoxShadow: 0 0 2rem 0 rgb(136 152 170 / 30%);
@ -92,7 +92,7 @@
--alertBackground: rgb(30 30 30);
--scrollbarColor:#222;
--ifaceboxBorderColor: #636363bd;
--ifaceboxFontColor: #1a1a1a;
--ifaceboxFontColor: #404040;
--liSelectedColor: #2f2f2f;
--vssrStatusColor: rgb(204, 204, 204);
--vssrBoxShadow: 0 0 1rem 0 rgb(0 0 0 / 30%);
@ -356,7 +356,7 @@ label.zonebadge{
/* background-color: #5bdeae !important; */
display: inline-block;
cursor: pointer;
color: #fefefe;
color: #666666;
}
.zonebadge {
/* background-color: var(--tabmenubgColor) !important; */
@ -2001,7 +2001,7 @@ div > .cbi-value:nth-of-type(2n) {
align-items: center;
border-radius: 5px;
border: var(--badgeBorder);
color: rgb(132,119,116);
color: #666666
}
#content_syslog {
@ -2418,9 +2418,21 @@ header > .container > .pull-right > * {
.node-main-login > .main .cbi-input-user,
.node-main-login > .main .cbi-input-password {
appearance: none;
outline: 0;
padding: 0 0 0 35px;
background-repeat: no-repeat;
background-position: 10px 10px;
background-size: 18px 18px;
min-width: 15rem;
}
.node-main-login > .main .cbi-input-user {
background-image: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="24" height="24" viewBox="0 0 24 24"%3E%3Cpath fill="%23627386" d="M12 4a4 4 0 0 1 4 4a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4m0 10c4.42 0 8 1.79 8 4v2H4v-2c0-2.21 3.58-4 8-4Z"%2F%3E%3C%2Fsvg%3E');
}
.node-main-login > .main .cbi-input-password {
background-image: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="24" height="24" viewBox="0 0 24 24"%3E%3Cpath fill="%23627386" d="M12 17a2 2 0 0 0 2-2a2 2 0 0 0-2-2a2 2 0 0 0-2 2a2 2 0 0 0 2 2m6-9a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V10a2 2 0 0 1 2-2h1V6a5 5 0 0 1 5-5a5 5 0 0 1 5 5v2h1m-6-5a3 3 0 0 0-3 3v2h6V6a3 3 0 0 0-3-3Z"%2F%3E%3C%2Fsvg%3E');
}
.node-main-login footer {
bottom: 0;
position: absolute;
@ -3297,7 +3309,10 @@ form[action="/cgi-bin/luci/admin/network/wireless_join"] input[class="cbi-button
color: var(--ifaceboxFontColor);
padding: 5px;
}
.node-network-firewall .zonebadge strong,
.node-network-firewall label strong {
color: var(--ifaceboxFontColor);
}
/* fix new version luci-app-openclash style */
.node-services-openclash ul li.selected {
background-color: var(--liSelectedColor) !important;
@ -3327,4 +3342,5 @@ form[action="/cgi-bin/luci/admin/network/wireless_join"] input[class="cbi-button
/* adaption plug-in luci-app-watchcat-plus */
.node-services-watchcat-plus select[id*="cbi.opt.watchcat"] {
width: auto;
}
}

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 KiB

After

Width:  |  Height:  |  Size: 442 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 KiB

After

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 117 KiB