mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-11-04 13:53:56 +08:00
update 2026-10-21 17:03:19
This commit is contained in:
1 parent
4570f1512e
commit
a9612da342
14 files changed
+182
-21
No files matched your search
+2
-2
@@ -5,13 +5,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=honk
|
PKG_NAME:=honk
|
||||||
PKG_VERSION:=2026.10.20
|
PKG_VERSION:=2026.10.21
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
# Pinned honk-core revision (Glassyiris/honk feat/native-api), cross-compiled by
|
# Pinned honk-core revision (Glassyiris/honk feat/native-api), cross-compiled by
|
||||||
# ci/build-core.sh. The per-architecture asset/hash are filled by that script;
|
# ci/build-core.sh. The per-architecture asset/hash are filled by that script;
|
||||||
# keep a committed fallback so the feed still evaluates without a staging run.
|
# keep a committed fallback so the feed still evaluates without a staging run.
|
||||||
CORE_COMMIT:=b71b6b65d4d81d4fa5795468b70ce9a37bb0e7dc
|
CORE_COMMIT:=aebc0d78d567cac1cd74ee9c56674857c5441451
|
||||||
|
|
||||||
-include $(CURDIR)/generated-stage.mk
|
-include $(CURDIR)/generated-stage.mk
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=luci-app-daede
|
PKG_NAME:=luci-app-daede
|
||||||
PKG_VERSION:=1.15
|
PKG_VERSION:=1.15
|
||||||
PKG_RELEASE:=11
|
PKG_RELEASE:=13
|
||||||
PKG_MAINTAINER:=kenzok8
|
PKG_MAINTAINER:=kenzok8
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||||
|
|
||||||
|
|||||||
@@ -425,14 +425,11 @@ return view.extend({
|
|||||||
btn.disabled = true;
|
btn.disabled = true;
|
||||||
} else if (updatable) {
|
} else if (updatable) {
|
||||||
meta = _('installed') + ': ' + entry.r.installed + ' → ' + _('latest') + ': ' + entry.r.latest;
|
meta = _('installed') + ': ' + entry.r.installed + ' → ' + _('latest') + ': ' + entry.r.latest;
|
||||||
} else if (cmp < 0) {
|
|
||||||
meta = _('installed') + ': ' + entry.r.installed + ' · ' + _('feed version older: %s').format(entry.r.latest);
|
|
||||||
btn.disabled = true;
|
|
||||||
} else {
|
} else {
|
||||||
meta = _('installed') + ': ' + entry.r.installed + ' · ' + _('up to date');
|
meta = _('installed') + ': ' + entry.r.installed + ' · ' + _('up to date');
|
||||||
btn.disabled = true;
|
btn.disabled = true;
|
||||||
}
|
}
|
||||||
const uncertain = entry.r.installed && (indexState !== 'success' || !entry.r.latest || cmp < 0);
|
const uncertain = entry.r.installed && (indexState !== 'success' || !entry.r.latest);
|
||||||
pkgBody.appendChild(mkRow(
|
pkgBody.appendChild(mkRow(
|
||||||
updatable ? '↑' : (uncertain ? '⚠' : (entry.r.installed ? '✓' : '✗')),
|
updatable ? '↑' : (uncertain ? '⚠' : (entry.r.installed ? '✓' : '✗')),
|
||||||
updatable ? 'dd-up-new' : (uncertain ? 'dd-up-warn' : (entry.r.installed ? 'dd-up-ok' : 'dd-up-err')),
|
updatable ? 'dd-up-new' : (uncertain ? 'dd-up-warn' : (entry.r.installed ? 'dd-up-ok' : 'dd-up-err')),
|
||||||
|
|||||||
@@ -329,9 +329,6 @@ msgstr "正在刷新软件源"
|
|||||||
msgid "package not found in configured feeds"
|
msgid "package not found in configured feeds"
|
||||||
msgstr "当前软件源中没有此包"
|
msgstr "当前软件源中没有此包"
|
||||||
|
|
||||||
msgid "feed version older: %s"
|
|
||||||
msgstr "软件源版本较旧:%s"
|
|
||||||
|
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "不可用"
|
msgstr "不可用"
|
||||||
|
|
||||||
|
|||||||
@@ -5,14 +5,14 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-honk
|
PKG_NAME:=luci-app-honk
|
||||||
PKG_VERSION:=2026.10.20
|
PKG_VERSION:=2026.10.21
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||||
|
|
||||||
PKG_SOURCE:=doona-bc1cfbe5-be77900778e9.tar.gz
|
PKG_SOURCE:=doona-369aee8f-f6612106faf8.tar.gz
|
||||||
PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-honk/releases/download/staging
|
PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-honk/releases/download/staging
|
||||||
PKG_SOURCE_SUBDIR:=doona
|
PKG_SOURCE_SUBDIR:=doona
|
||||||
PKG_HASH:=be77900778e980e3f396310631f20121140f6b54bd903345c515847fbed83081
|
PKG_HASH:=f6612106faf8897178f91d464e0ba5f99eb46220eba0d984518104dd87fdcf57
|
||||||
|
|
||||||
-include $(CURDIR)/generated-doona-stage.mk
|
-include $(CURDIR)/generated-doona-stage.mk
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ include $(TOPDIR)/rules.mk
|
|||||||
LUCI_TITLE:=luci-app-ssr-plus
|
LUCI_TITLE:=luci-app-ssr-plus
|
||||||
LUCI_PKGARCH:=all
|
LUCI_PKGARCH:=all
|
||||||
PKG_NAME:=luci-app-ssr-plus
|
PKG_NAME:=luci-app-ssr-plus
|
||||||
PKG_VERSION:=196
|
PKG_VERSION:=197
|
||||||
PKG_RELEASE:=24
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS:= \
|
PKG_CONFIG_DEPENDS:= \
|
||||||
CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \
|
CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \
|
||||||
@@ -114,7 +114,7 @@ endchoice
|
|||||||
|
|
||||||
config PACKAGE_$(PKG_NAME)_INCLUDE_ChinaDNS_NG
|
config PACKAGE_$(PKG_NAME)_INCLUDE_ChinaDNS_NG
|
||||||
bool "Include ChinaDNS-NG"
|
bool "Include ChinaDNS-NG"
|
||||||
default y if aarch64||arm||i386||x86_64
|
default n
|
||||||
|
|
||||||
config PACKAGE_$(PKG_NAME)_INCLUDE_MosDNS
|
config PACKAGE_$(PKG_NAME)_INCLUDE_MosDNS
|
||||||
bool "Include MosDNS"
|
bool "Include MosDNS"
|
||||||
@@ -164,7 +164,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_V2ray_Plugin
|
|||||||
|
|
||||||
config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Client
|
config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Client
|
||||||
bool "Include ShadowsocksR Libev Client"
|
bool "Include ShadowsocksR Libev Client"
|
||||||
default y
|
default n
|
||||||
|
|
||||||
config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Server
|
config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Server
|
||||||
bool "Include ShadowsocksR Libev Server"
|
bool "Include ShadowsocksR Libev Server"
|
||||||
|
|||||||
@@ -1116,6 +1116,7 @@ end
|
|||||||
o = s:option(ListValue, "transport", translate("Transport"))
|
o = s:option(ListValue, "transport", translate("Transport"))
|
||||||
o:value("raw", "RAW (TCP)")
|
o:value("raw", "RAW (TCP)")
|
||||||
o:value("kcp", "mKCP")
|
o:value("kcp", "mKCP")
|
||||||
|
o:value("kcptun", "Kcptun (Xray)")
|
||||||
o:value("ws", "WebSocket")
|
o:value("ws", "WebSocket")
|
||||||
o:value("httpupgrade", "HTTPUpgrade")
|
o:value("httpupgrade", "HTTPUpgrade")
|
||||||
o:value("xhttp", "XHTTP (SplitHTTP)")
|
o:value("xhttp", "XHTTP (SplitHTTP)")
|
||||||
@@ -1130,6 +1131,43 @@ o:depends({type = "v2ray", v2ray_protocol = "shadowsocks"})
|
|||||||
o:depends({type = "v2ray", v2ray_protocol = "socks"})
|
o:depends({type = "v2ray", v2ray_protocol = "socks"})
|
||||||
o:depends({type = "v2ray", v2ray_protocol = "http"})
|
o:depends({type = "v2ray", v2ray_protocol = "http"})
|
||||||
|
|
||||||
|
-- Native Kcptun transport (separate from mKCP and the external Kcptun client).
|
||||||
|
o = s:option(Value, "xray_kcptun_key", "Kcptun Key")
|
||||||
|
o:depends("transport", "kcptun")
|
||||||
|
o.password = true
|
||||||
|
o.rmempty = false
|
||||||
|
o = s:option(ListValue, "xray_kcptun_crypt", "Kcptun Encryption")
|
||||||
|
o:depends("transport", "kcptun")
|
||||||
|
for _, crypt in ipairs({"aes", "aes-128", "aes-192", "aes-128-gcm", "salsa20", "tea", "xor", "none", "null", "blowfish", "twofish", "cast5", "3des", "xtea"}) do o:value(crypt, crypt) end
|
||||||
|
o.default = "aes"
|
||||||
|
o = s:option(ListValue, "xray_kcptun_mode", "Kcptun Mode")
|
||||||
|
o:depends("transport", "kcptun")
|
||||||
|
for _, mode in ipairs({"normal", "fast", "fast2", "fast3", "manual"}) do o:value(mode, mode) end
|
||||||
|
o.default = "fast"
|
||||||
|
o = s:option(ListValue, "xray_kcptun_smuxver", "Kcptun smux Version")
|
||||||
|
o:depends("transport", "kcptun")
|
||||||
|
o:value("1", "v1")
|
||||||
|
o:value("2", "v2")
|
||||||
|
o.default = "1"
|
||||||
|
o = s:option(Flag, "xray_kcptun_nocomp", translate("Disable Compression"))
|
||||||
|
o:depends("transport", "kcptun")
|
||||||
|
o.default = "0"
|
||||||
|
o = s:option(Value, "xray_kcptun_conn", translate("Connections"))
|
||||||
|
o:depends("transport", "kcptun")
|
||||||
|
o.datatype = "range(1,256)"
|
||||||
|
o.default = "1"
|
||||||
|
o = s:option(TextValue, "xray_kcptun_options", "Kcptun Advanced Options (JSON)")
|
||||||
|
o:depends("transport", "kcptun")
|
||||||
|
o.rows = 4
|
||||||
|
o.rmempty = true
|
||||||
|
o.description = translate("Optional MTU, FEC, windows and expiry settings. Encryption, key, compression and smux version must match the server. This transports streams over UDP; native proxy UDP is separate.")
|
||||||
|
function o.validate(self, value, section)
|
||||||
|
if not value or value:match("^%s*$") then return "" end
|
||||||
|
local ok, parsed = pcall(luci.jsonc.parse, value)
|
||||||
|
if ok and type(parsed) == "table" and value:match("^%s*{") then return value end
|
||||||
|
return nil, translate("Must be a JSON object")
|
||||||
|
end
|
||||||
|
|
||||||
-- [[ RAW部分 ]]--
|
-- [[ RAW部分 ]]--
|
||||||
-- TCP伪装
|
-- TCP伪装
|
||||||
o = s:option(ListValue, "tcp_guise", translate("Camouflage Type"))
|
o = s:option(ListValue, "tcp_guise", translate("Camouflage Type"))
|
||||||
@@ -1493,6 +1531,39 @@ o.validate = function(self, value)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- ShadowTLS wraps the existing TCP proxy protocol in Xray.
|
||||||
|
o = s:option(Flag, "xray_shadowtls", "ShadowTLS (Xray)")
|
||||||
|
o.default = "0"
|
||||||
|
for _, proto in ipairs({"vmess", "vless", "trojan", "shadowsocks"}) do
|
||||||
|
o:depends({type = "v2ray", v2ray_protocol = proto, transport = "raw", tls = false, reality = false})
|
||||||
|
end
|
||||||
|
o.description = translate("ShadowTLS protects TCP connections. The inner proxy protocol must provide encryption.")
|
||||||
|
o = s:option(ListValue, "xray_shadowtls_version", "ShadowTLS Version")
|
||||||
|
o:depends("xray_shadowtls", "1")
|
||||||
|
o:value("3", "v3")
|
||||||
|
o:value("2", "v2")
|
||||||
|
o:value("1", "v1")
|
||||||
|
o.default = "3"
|
||||||
|
o = s:option(Value, "xray_shadowtls_password", "ShadowTLS Password")
|
||||||
|
o:depends({xray_shadowtls = "1", xray_shadowtls_version = "2"})
|
||||||
|
o:depends({xray_shadowtls = "1", xray_shadowtls_version = "3"})
|
||||||
|
o.password = true
|
||||||
|
o.rmempty = false
|
||||||
|
o = s:option(Value, "xray_shadowtls_sni", "ShadowTLS SNI")
|
||||||
|
o:depends("xray_shadowtls", "1")
|
||||||
|
o.datatype = "hostname"
|
||||||
|
o.rmempty = false
|
||||||
|
o = s:option(ListValue, "xray_shadowtls_fingerprint", translate("TLS Client Fingerprint"))
|
||||||
|
o:depends("xray_shadowtls", "1")
|
||||||
|
for _, fp in ipairs({"chrome", "firefox", "safari", "ios", "android", "edge", "none"}) do o:value(fp, fp) end
|
||||||
|
o.default = "chrome"
|
||||||
|
o = s:option(Flag, "xray_shadowtls_strict", translate("TLS 1.3 Strict mode"))
|
||||||
|
o:depends({xray_shadowtls = "1", xray_shadowtls_version = "3"})
|
||||||
|
o.default = "1"
|
||||||
|
o = s:option(Flag, "xray_shadowtls_insecure", translate("Allow Insecure"))
|
||||||
|
o:depends("xray_shadowtls", "1")
|
||||||
|
o.default = "0"
|
||||||
|
|
||||||
-- [[ TLS ]]--
|
-- [[ TLS ]]--
|
||||||
o = s:option(Flag, "tls", translate("TLS"))
|
o = s:option(Flag, "tls", translate("TLS"))
|
||||||
o.rmempty = true
|
o.rmempty = true
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ if nixio.fs.access("/usr/bin/xray") or nixio.fs.access("/usr/libexec/xray") then
|
|||||||
o:value("tuic", "TUIC (Xray)")
|
o:value("tuic", "TUIC (Xray)")
|
||||||
o:value("snell", "Snell (Xray)")
|
o:value("snell", "Snell (Xray)")
|
||||||
o:value("anytls", "AnyTLS (Xray)")
|
o:value("anytls", "AnyTLS (Xray)")
|
||||||
|
o:value("ssr-xray", "ShadowsocksR (Xray)")
|
||||||
end
|
end
|
||||||
o.default = "socks5"
|
o.default = "socks5"
|
||||||
|
|
||||||
@@ -108,6 +109,7 @@ o:depends("type", "ss")
|
|||||||
o:depends("type", "ssr")
|
o:depends("type", "ssr")
|
||||||
o:depends("type", "trojan")
|
o:depends("type", "trojan")
|
||||||
o:depends("type", "shadowsocks")
|
o:depends("type", "shadowsocks")
|
||||||
|
o:depends("type", "ssr-xray")
|
||||||
|
|
||||||
-- ========== SS/SSR 协议特有 ==========
|
-- ========== SS/SSR 协议特有 ==========
|
||||||
o = s:option(ListValue, "encrypt_method", translate("Encrypt Method"))
|
o = s:option(ListValue, "encrypt_method", translate("Encrypt Method"))
|
||||||
@@ -451,4 +453,28 @@ o.rows = 5
|
|||||||
o.rmempty = true
|
o.rmempty = true
|
||||||
o:depends("type", "anytls")
|
o:depends("type", "anytls")
|
||||||
|
|
||||||
|
-- Xray SSR has its own validated registry; keep legacy libev choices intact.
|
||||||
|
o = s:option(ListValue, "ssr_method", translate("Encrypt Method"))
|
||||||
|
for _, v in ipairs({"aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "rc4-md5", "chacha20", "chacha20-ietf", "xchacha20", "none"}) do o:value(v) end
|
||||||
|
o.default = "aes-128-cfb"
|
||||||
|
o.rmempty = false
|
||||||
|
o:depends("type", "ssr-xray")
|
||||||
|
o = s:option(ListValue, "ssr_protocol", translate("Protocol"))
|
||||||
|
for _, v in ipairs({"origin", "auth_sha1_v4", "auth_aes128_md5", "auth_aes128_sha1", "auth_chain_a", "auth_chain_b"}) do o:value(v) end
|
||||||
|
o.default = "auth_aes128_sha1"
|
||||||
|
o.rmempty = false
|
||||||
|
o:depends("type", "ssr-xray")
|
||||||
|
o = s:option(Value, "ssr_protocol_param", "SSR Protocol Param")
|
||||||
|
o.description = "1001:password1,1002:password2"
|
||||||
|
o:depends("type", "ssr-xray")
|
||||||
|
o = s:option(ListValue, "ssr_obfs", translate("Obfs"))
|
||||||
|
for _, v in ipairs({"plain", "http_simple", "http_post", "random_head", "tls1.2_ticket_auth", "tls1.2_ticket_fastauth"}) do o:value(v) end
|
||||||
|
o.default = "plain"
|
||||||
|
o.rmempty = false
|
||||||
|
o:depends("type", "ssr-xray")
|
||||||
|
o = s:option(Value, "ssr_obfs_param", translate("Obfs param (optional)"))
|
||||||
|
o.description = "HTTP Host: example.com,example.org"
|
||||||
|
o:depends({type = "ssr-xray", ssr_obfs = "http_simple"})
|
||||||
|
o:depends({type = "ssr-xray", ssr_obfs = "http_post"})
|
||||||
|
|
||||||
return m
|
return m
|
||||||
@@ -111,6 +111,7 @@ function o.cfgvalue(self, section)
|
|||||||
elseif val == "vless" then return "VLESS (Xray)"
|
elseif val == "vless" then return "VLESS (Xray)"
|
||||||
elseif val == "trojan" then return "Trojan (Xray)"
|
elseif val == "trojan" then return "Trojan (Xray)"
|
||||||
elseif val == "shadowsocks" then return "Shadowsocks (Xray)"
|
elseif val == "shadowsocks" then return "Shadowsocks (Xray)"
|
||||||
|
elseif val == "ssr-xray" then return "ShadowsocksR (Xray)"
|
||||||
else return val end
|
else return val end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -126,6 +127,7 @@ end
|
|||||||
|
|
||||||
o = sec:option(DummyValue, "encrypt_method", translate("Encrypt Method"))
|
o = sec:option(DummyValue, "encrypt_method", translate("Encrypt Method"))
|
||||||
function o.cfgvalue(self, section)
|
function o.cfgvalue(self, section)
|
||||||
|
if self.map:get(section, "type") == "ssr-xray" then return (self.map:get(section, "ssr_method") or "-"):upper() end
|
||||||
local method = self.map:get(section, "encrypt_method") or self.map:get(section, "encrypt_method_ss")
|
local method = self.map:get(section, "encrypt_method") or self.map:get(section, "encrypt_method_ss")
|
||||||
return method and method:upper() or "-"
|
return method and method:upper() or "-"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -992,6 +992,8 @@ use_mihomo_for_ss_rust_server() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
start_v2ray_with_mihomo() {
|
start_v2ray_with_mihomo() {
|
||||||
|
[ "$(uci_get_by_name "$1" transport)" = "kcptun" ] && return 1
|
||||||
|
[ "$(uci_get_by_name "$1" xray_shadowtls 0)" = "1" ] && return 1
|
||||||
# These nodes use Xray-specific settings.
|
# These nodes use Xray-specific settings.
|
||||||
case "$(uci_get_by_name "$1" v2ray_protocol)" in naive|shadowsocksr|tuic) return 1 ;; esac
|
case "$(uci_get_by_name "$1" v2ray_protocol)" in naive|shadowsocksr|tuic) return 1 ;; esac
|
||||||
local sid="$1"
|
local sid="$1"
|
||||||
@@ -2247,6 +2249,10 @@ get_udp_relay_mode() {
|
|||||||
;;
|
;;
|
||||||
v2ray)
|
v2ray)
|
||||||
proto=$(uci_get_by_name "$node" v2ray_protocol)
|
proto=$(uci_get_by_name "$node" v2ray_protocol)
|
||||||
|
if [ "$(uci_get_by_name "$node" transport)" = "kcptun" ]; then
|
||||||
|
case "$proto" in vmess|vless|trojan) echo "native" ;; *) echo "disabled" ;; esac
|
||||||
|
return
|
||||||
|
fi
|
||||||
case "$proto" in
|
case "$proto" in
|
||||||
snell)
|
snell)
|
||||||
case "$(uci_get_by_name "$node" snell_version 4)" in 1|2) echo "disabled" ;; *) echo "native" ;; esac
|
case "$(uci_get_by_name "$node" snell_version 4)" in 1|2) echo "disabled" ;; *) echo "native" ;; esac
|
||||||
@@ -2749,6 +2755,16 @@ start_server() {
|
|||||||
echolog "Server: Xray NaiveProxy Server$server_count Started!"
|
echolog "Server: Xray NaiveProxy Server$server_count Started!"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
ssr-xray)
|
||||||
|
xray_bin="$(first_type xray)"
|
||||||
|
[ -x "$xray_bin" ] || return 1
|
||||||
|
config_file="$TMP_PATH/xray-server-$server_count.json"
|
||||||
|
lua /usr/share/shadowsocksr/gen_ssr_server.lua "$1" > "$config_file" || return 1
|
||||||
|
"$xray_bin" run -test -c "$config_file" >> /var/ssrplus.log 2>&1 || return 1
|
||||||
|
ln_start_bin "$xray_bin" xray-server-$server_count run -c "$config_file"
|
||||||
|
echolog "Server: Xray ShadowsocksR Server$server_count Started!"
|
||||||
|
;;
|
||||||
|
|
||||||
anytls)
|
anytls)
|
||||||
xray_bin="$(first_type xray)"
|
xray_bin="$(first_type xray)"
|
||||||
[ -x "$xray_bin" ] || return 1
|
[ -x "$xray_bin" ] || return 1
|
||||||
|
|||||||
@@ -935,6 +935,45 @@ if server.v2ray_protocol == "naive" or server.v2ray_protocol == "shadowsocksr" o
|
|||||||
ob.mux = nil
|
ob.mux = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if server.type == "v2ray" and server.transport == "kcptun" then
|
||||||
|
local supported = {vmess = true, vless = true, trojan = true, shadowsocks = true, socks = true, http = true}
|
||||||
|
assert(supported[server.v2ray_protocol], "Kcptun requires a supported stream proxy protocol")
|
||||||
|
assert(server.tls ~= "1" and server.reality ~= "1" and server.xtls ~= "1", "Kcptun cannot be combined with stream TLS or REALITY")
|
||||||
|
assert(server.kcp_enable ~= "1", "Native Kcptun cannot be combined with the external Kcptun client")
|
||||||
|
assert(not server.tls_flow or server.tls_flow == "", "Kcptun cannot be combined with XTLS flow")
|
||||||
|
local options = {}
|
||||||
|
if server.xray_kcptun_options and server.xray_kcptun_options:match("%S") then
|
||||||
|
assert(server.xray_kcptun_options:match("^%s*{"), "Kcptun options must be a JSON object")
|
||||||
|
options = json.parse(server.xray_kcptun_options)
|
||||||
|
assert(type(options) == "table", "Kcptun options must be a JSON object")
|
||||||
|
end
|
||||||
|
options.key = server.xray_kcptun_key
|
||||||
|
options.crypt = server.xray_kcptun_crypt or "aes"
|
||||||
|
options.mode = server.xray_kcptun_mode or "fast"
|
||||||
|
options.smuxver = tonumber(server.xray_kcptun_smuxver) or 1
|
||||||
|
options.nocomp = server.xray_kcptun_nocomp == "1"
|
||||||
|
options.conn = tonumber(server.xray_kcptun_conn) or 1
|
||||||
|
Xray.outbounds[1].streamSettings.kcptunSettings = options
|
||||||
|
end
|
||||||
|
|
||||||
|
if server.type == "v2ray" and server.xray_shadowtls == "1" then
|
||||||
|
local supported = {vmess = true, vless = true, trojan = true, shadowsocks = true}
|
||||||
|
assert(supported[server.v2ray_protocol], "ShadowTLS requires a supported TCP proxy protocol")
|
||||||
|
assert((server.transport or "raw") == "raw" or server.transport == "tcp", "ShadowTLS requires RAW/TCP")
|
||||||
|
assert(server.tls ~= "1" and server.reality ~= "1", "ShadowTLS cannot be combined with TLS or REALITY")
|
||||||
|
assert(not server.tls_flow or server.tls_flow == "", "ShadowTLS cannot be combined with XTLS flow")
|
||||||
|
local stream = Xray.outbounds[1].streamSettings
|
||||||
|
stream.security = "shadowtls"
|
||||||
|
stream.shadowtlsSettings = {
|
||||||
|
version = tonumber(server.xray_shadowtls_version) or 3,
|
||||||
|
password = server.xray_shadowtls_password,
|
||||||
|
serverName = server.xray_shadowtls_sni,
|
||||||
|
fingerprint = server.xray_shadowtls_fingerprint or "chrome",
|
||||||
|
strictMode = server.xray_shadowtls_strict ~= "0",
|
||||||
|
allowInsecure = server.xray_shadowtls_insecure == "1"
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
if xray_builtin_dns then
|
if xray_builtin_dns then
|
||||||
table.insert(Xray.outbounds, {
|
table.insert(Xray.outbounds, {
|
||||||
protocol = "dns",
|
protocol = "dns",
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/lua
|
||||||
|
local uci = require("luci.model.uci").cursor()
|
||||||
|
local json = require "luci.jsonc"
|
||||||
|
local s = assert(uci:get_all("shadowsocksr", arg[1]), "missing server section")
|
||||||
|
print(json.stringify({
|
||||||
|
log = {loglevel = "warning"},
|
||||||
|
inbounds = {{listen = "::", port = assert(tonumber(s.server_port)), protocol = "shadowsocksr",
|
||||||
|
settings = {password = assert(s.password), method = s.ssr_method or "aes-128-cfb",
|
||||||
|
protocol = s.ssr_protocol or "auth_aes128_sha1", protocolParam = s.ssr_protocol_param or "",
|
||||||
|
obfs = s.ssr_obfs or "plain", obfsParam = s.ssr_obfs_param or "", network = "tcp,udp"}
|
||||||
|
}},
|
||||||
|
outbounds = {{protocol = "freedom", settings = {}}}
|
||||||
|
}, 1))
|
||||||
+2
-2
@@ -5,12 +5,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=v2ray-core
|
PKG_NAME:=v2ray-core
|
||||||
PKG_VERSION:=5.54.2
|
PKG_VERSION:=5.55.0
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://codeload.github.com/v2fly/v2ray-core/tar.gz/v$(PKG_VERSION)?
|
PKG_SOURCE_URL:=https://codeload.github.com/v2fly/v2ray-core/tar.gz/v$(PKG_VERSION)?
|
||||||
PKG_HASH:=fd171b094376701aa07f1bb4ab9bf4dc67bd4df014673ec545ad362360341364
|
PKG_HASH:=3ca056dbfffeed536d92b4a76f9984bc95aa13f4ded61cb85e43d9c283de0b5b
|
||||||
|
|
||||||
PKG_LICENSE:=MIT
|
PKG_LICENSE:=MIT
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|||||||
@@ -21,13 +21,13 @@ define Download/geoip
|
|||||||
HASH:=4ff4b2ec242a9e87b296ba27ddb85f8311e8d3e071eaebac5be9231c60e408dd
|
HASH:=4ff4b2ec242a9e87b296ba27ddb85f8311e8d3e071eaebac5be9231c60e408dd
|
||||||
endef
|
endef
|
||||||
|
|
||||||
GEOSITE_VER:=20261020135944
|
GEOSITE_VER:=20261021011254
|
||||||
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
||||||
define Download/geosite
|
define Download/geosite
|
||||||
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
||||||
URL_FILE:=dlc.dat
|
URL_FILE:=dlc.dat
|
||||||
FILE:=$(GEOSITE_FILE)
|
FILE:=$(GEOSITE_FILE)
|
||||||
HASH:=bddbeb5f0980a7c852a79e5ae403757199157bb61d7f3b6640cce8a4c83b8e7b
|
HASH:=ef725a08ba804effd5b5b6e747c8c28eabc54ed068d786d7366d067d2e1a3849
|
||||||
endef
|
endef
|
||||||
|
|
||||||
GEOSITE_IRAN_VER:=202610120242
|
GEOSITE_IRAN_VER:=202610120242
|
||||||
|
|||||||
Reference in new issue
Block a user