From 8fbf1c681c7d4440806b401c7589354ff0b57220 Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Fri, 8 Apr 2022 03:18:05 +0800 Subject: [PATCH] luci-app-ssr-plus: add v2ray wireguard outbound Signed-off-by: Tianling Shen --- .../model/cbi/shadowsocksr/client-config.lua | 47 +++++++++++++++++-- luci-app-ssr-plus/po/zh-cn/ssr-plus.po | 15 ++++-- .../usr/share/shadowsocksr/gen_config.lua | 14 ++++++ 3 files changed, 68 insertions(+), 8 deletions(-) diff --git a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua index f81a7c193..8ceb48ceb 100644 --- a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua +++ b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua @@ -182,6 +182,9 @@ o:value("vless", translate("VLESS")) o:value("vmess", translate("VMess")) o:value("trojan", translate("Trojan")) o:value("shadowsocks", translate("Shadowsocks")) +if is_installed("sagernet-core") then + o:value("wireguard", translate("WireGuard")) +end o:value("socks", translate("Socks")) o:value("http", translate("HTTP")) o:depends("type", "v2ray") @@ -330,7 +333,12 @@ o:value("h2", "HTTP/2") o:value("quic", "QUIC") o:value("grpc", "gRPC") o.rmempty = true -o:depends("type", "v2ray") +o:depends({type = "v2ray", v2ray_protocol = "vless"}) +o:depends({type = "v2ray", v2ray_protocol = "vmess"}) +o:depends({type = "v2ray", v2ray_protocol = "trojan"}) +o:depends({type = "v2ray", v2ray_protocol = "shadowsocks"}) +o:depends({type = "v2ray", v2ray_protocol = "socks"}) +o:depends({type = "v2ray", v2ray_protocol = "http"}) -- [[ TCP部分 ]]-- -- TCP伪装 @@ -450,7 +458,8 @@ o.rmempty = true o = s:option(Value, "mtu", translate("MTU")) o.datatype = "uinteger" o:depends("transport", "kcp") -o.default = 1350 +o:depends({type = "v2ray", v2ray_protocol = "wireguard"}) +-- o.default = 1350 o.rmempty = true o = s:option(Value, "tti", translate("TTI")) @@ -491,12 +500,35 @@ o = s:option(Flag, "congestion", translate("Congestion")) o:depends("transport", "kcp") o.rmempty = true +-- [[ WireGuard 部分 ]]-- +o = s:option(DynamicList, "local_addresses", translate("Local addresses")) +o:depends({type = "v2ray", v2ray_protocol = "wireguard"}) +o.rmempty = true + +o = s:option(Value, "private_key", translate("Private key")) +o:depends({type = "v2ray", v2ray_protocol = "wireguard"}) +o.password = true +o.rmempty = true + +o = s:option(Value, "peer_pubkey", translate("Peer public key")) +o:depends({type = "v2ray", v2ray_protocol = "wireguard"}) +o.rmempty = true + +o = s:option(Value, "preshared_key", translate("Pre-shared key")) +o:depends({type = "v2ray", v2ray_protocol = "wireguard"}) +o.password = true +o.rmempty = true + -- [[ TLS ]]-- o = s:option(Flag, "tls", translate("TLS")) o.rmempty = true o.default = "0" -o:depends({type = "v2ray", xtls = false}) --- o:depends({type = "v2ray", v2ray_protocol = "vless", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "vless", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "vmess", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "trojan", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "shadowsocks", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "socks", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "http", xtls = false}) o:depends("type", "trojan") -- XTLS @@ -550,7 +582,12 @@ o.description = translate("If true, allowss insecure connection at TLS client, e -- [[ Mux ]]-- o = s:option(Flag, "mux", translate("Mux")) o.rmempty = false -o:depends({type = "v2ray", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "vless", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "vmess", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "trojan", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "shadowsocks", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "socks", xtls = false}) +o:depends({type = "v2ray", v2ray_protocol = "http", xtls = false}) o = s:option(Value, "concurrency", translate("Concurrency")) o.datatype = "uinteger" diff --git a/luci-app-ssr-plus/po/zh-cn/ssr-plus.po b/luci-app-ssr-plus/po/zh-cn/ssr-plus.po index 9750e59da..a6e3a5f2e 100644 --- a/luci-app-ssr-plus/po/zh-cn/ssr-plus.po +++ b/luci-app-ssr-plus/po/zh-cn/ssr-plus.po @@ -712,9 +712,6 @@ msgstr "微信视频通话" msgid "DTLS 1.2" msgstr "DTLS 1.2 数据包" -msgid "WireGuard" -msgstr "WireGuard 数据包" - msgid "MTU" msgstr "最大传输单元" @@ -736,6 +733,18 @@ msgstr "写入缓冲区大小" msgid "Congestion" msgstr "拥塞控制" +msgid "Local addresses" +msgstr "本地地址" + +msgid "Private key" +msgstr "私钥" + +msgid "Peer public key" +msgstr "节点公钥" + +msgid "Pre-shared key" +msgstr "预共享密钥" + msgid "Packet Encoding" msgstr "数据包编码" diff --git a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua index 9881d0059..172fe58a8 100755 --- a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua +++ b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua @@ -63,6 +63,17 @@ function socks_http() } } end +function wireguard() + outbound_settings = { + address = server.server, + port = tonumber(server.server_port), + localAddresses = server.local_addresses, + privateKey = server.private_key, + peerPublicKey = server.peer_pubkey, + preSharedKey = server.preshared_key or nil, + mtu = tonumber(server.mtu) or 1500 + } +end local outbound = {} function outbound:new(o) o = o or {} @@ -89,6 +100,9 @@ function outbound:handleIndex(index) end, http = function() socks_http() + end, + wireguard = function() + wireguard() end } if switch[index] then