update 2022-11-01 23:46:22

This commit is contained in:
github-actions[bot] 2022-11-01 23:46:22 +08:00
parent 176027eeb1
commit d9226ef9a5
5 changed files with 85 additions and 24 deletions

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-xray
PKG_VERSION:=1.22.1
PKG_VERSION:=1.23.0
PKG_RELEASE:=1
PKG_LICENSE:=MPLv2

View File

@ -37,20 +37,20 @@ Focus on making the most of Xray (HTTP/HTTPS/Socks/TProxy inbounds, multiple pro
* 2022-03-25 feat: remove web and add metrics configurations (recommended to use with [metrics support](https://github.com/XTLS/Xray-core/pull/1000))
* 2022-04-24 feat: metrics is now out of optional features; add basic ubus wrapper for xray apis
* 2022-05-13 feat: shadowsocks-2022 protocols support
* 2022-06-04 feat: nftables support (experimental)
* 2022-06-04 `[OpenWrt 22.03 or above only]` feat: nftables support (experimental)
* 2022-06-05 feat: shadowsocks-2022 UDP over TCP support
* 2022-06-14 feat: multiple geoip direct code
* 2022-06-19 feat: skip proxy for specific uids / gids (nftables support only)
* 2022-06-19 `[OpenWrt 22.03 or above only]` feat: skip proxy for specific uids / gids
* 2022-08-07 fix: avoid duplicated items in generated nftables ruleset
* 2022-08-08 fix: make sure forwarded IPs are always forwarded to Xray even for reserved addresses. Xray may not forward those requests so that manner may be changed later.
* 2022-08-13 fix: apply 2022-08-08 fix to iptables as well
* 2022-08-13 fix: make sure forwarded IPs are always forwarded to Xray even for reserved addresses. Xray may not forward those requests so that manner may be changed later.
* 2022-09-01 feat: specify outbound for manual transparent proxy
* 2022-09-26 feat: show process running status
* 2022-10-02 feat: detect xray binary path; allow changing default HTTPS server port
* 2022-10-03 feat: switch to disable TCP / UDP transparent proxy
* 2022-10-05 feat: dialer proxy
* 2022-10-06 feat: use goto instead of jump in nftables rules
* 2022-10-29 feat: rewrite gen_config in ucode
* 2022-10-06 `[OpenWrt 22.03 or above only]` feat: use goto instead of jump in nftables rules
* 2022-10-29 `[OpenWrt 22.03 or above only]` feat: rewrite gen_config in ucode
* 2022-11-01 feat: support xtls-rprx-vision
## Changelog 2021

View File

@ -313,8 +313,13 @@ local function vmess_outbound(server, tag)
end
local function vless_outbound(server, tag)
local flow = server.vless_flow
if server.vless_flow == "none" then
local flow = nil
if server.vless_tls == "xtls" then
flow = server.vless_flow
elseif server.vless_tls == "tls" then
flow = server.vless_flow_tls
end
if flow == "none" then
flow = nil
end
local streamSettings, dialerProxy = stream_settings(server, "vless", true, tag)
@ -341,8 +346,11 @@ local function vless_outbound(server, tag)
end
local function trojan_outbound(server, tag)
local flow = server.trojan_flow
if server.trojan_flow == "none" then
local flow = nil
if server.trojan_tls == "xtls" then
flow = server.trojan_flow
end
if flow == "none" then
flow = nil
end
local streamSettings, dialerProxy = stream_settings(server, "trojan", true, tag)
@ -496,6 +504,13 @@ local function tls_inbound_settings()
end
local function https_trojan_inbound()
local flow = nil
if proxy.trojan_tls == "xtls" then
flow = proxy.trojan_flow
end
if flow == "none" then
flow = nil
end
return {
port = proxy.web_server_port or 443,
protocol = "trojan",
@ -504,7 +519,7 @@ local function https_trojan_inbound()
clients = {
{
password = proxy.web_server_password,
flow = proxy.trojan_tls == "xtls" and proxy.trojan_flow or nil
flow = flow
}
},
fallbacks = fallbacks()
@ -519,6 +534,15 @@ local function https_trojan_inbound()
end
local function https_vless_inbound()
local flow = nil
if proxy.vless_tls == "xtls" then
flow = proxy.vless_flow
elseif proxy.vless_tls == "tls" then
flow = proxy.vless_flow_tls
end
if flow == "none" then
flow = nil
end
return {
port = proxy.web_server_port or 443,
protocol = "vless",
@ -527,7 +551,7 @@ local function https_vless_inbound()
clients = {
{
id = proxy.web_server_password,
flow = proxy.vless_tls == "xtls" and proxy.vless_flow or nil
flow = flow
}
},
decryption = "none",

View File

@ -300,7 +300,10 @@ function vmess_outbound(server, tag) {
function vless_outbound(server, tag) {
let flow = server["vless_flow"];
if (server["vless_flow"] == "none") {
if (server["vless_tls"] == "tls") {
flow = server["vless_flow_tls"]
}
if (flow == "none") {
flow = null;
}
const stream_settings_object = stream_settings(server, "vless", true, tag);
@ -333,7 +336,7 @@ function vless_outbound(server, tag) {
function trojan_outbound(server, tag) {
let flow = server["trojan_flow"];
if (server["trojan_flow"] == "none") {
if (flow == "none") {
flow = null;
}
const stream_settings_object = stream_settings(server, "trojan", true, tag);
@ -491,6 +494,13 @@ function tls_inbound_settings() {
}
function https_trojan_inbound() {
let flow = null;
if (proxy["trojan_tls"] == "xtls") {
flow = proxy["trojan_flow"]
}
if (flow == "none") {
flow = null;
}
return {
port: proxy["web_server_port"] || 443,
protocol: "trojan",
@ -499,7 +509,7 @@ function https_trojan_inbound() {
clients: [
{
password: proxy["web_server_password"],
flow: proxy["trojan_tls"] == "xtls" ? proxy["trojan_flow"] : null
flow: flow
}
],
fallbacks: fallbacks()
@ -514,6 +524,15 @@ function https_trojan_inbound() {
}
function https_vless_inbound() {
let flow = null;
if (proxy["vless_tls"] == "xtls") {
flow = proxy["vless_flow"]
} else if (proxy["vless_tls"] == "tls") {
flow = proxy["vless_flow_tls"]
}
if (flow == "none") {
flow = null;
}
return {
port: proxy["web_server_port"] || 443,
protocol: "vless",
@ -522,7 +541,7 @@ function https_vless_inbound() {
clients: [
{
id: proxy["web_server_password"],
flow: proxy["vless_tls"] == "xtls" ? proxy["vless_flow"] : null
flow: flow
}
],
decryption: "none",

View File

@ -6,7 +6,7 @@
'require network';
'require tools.widgets as widgets';
function add_flow_and_stream_security_conf(s, tab_name, depends_field_name, protocol_name, have_xtls, client_side) {
function add_flow_and_stream_security_conf(s, tab_name, depends_field_name, protocol_name, have_xtls, have_tls_flow, client_side) {
let o = s.taboption(tab_name, form.ListValue, `${protocol_name}_tls`, _(`[${protocol_name}] Stream Security`))
let odep = {}
odep[depends_field_name] = protocol_name
@ -45,6 +45,24 @@ function add_flow_and_stream_security_conf(s, tab_name, depends_field_name, prot
o.modalonly = true
}
if (have_tls_flow) {
o = s.taboption(tab_name, form.ListValue, `${protocol_name}_flow_tls`, _(`[${protocol_name}][tls] Flow`))
let odep = {}
odep[depends_field_name] = protocol_name
odep[`${protocol_name}_tls`] = "tls"
o.value("none", "none")
o.value("xtls-rprx-vision", "xtls-rprx-vision")
o.value("xtls-rprx-vision-udp443", "xtls-rprx-origin-udp443")
if (client_side) {
// wait for some other things
} else {
odep["web_server_enable"] = "1"
}
o.depends(odep)
o.rmempty = false
o.modalonly = true
}
if (client_side) {
o = s.taboption(tab_name, form.Value, `${protocol_name}_tls_host`, _(`[${protocol_name}][tls] Server Name`))
o.depends(`${protocol_name}_tls`, "tls")
@ -234,7 +252,7 @@ return view.extend({
o.value("shadowsocks", "Shadowsocks")
o.rmempty = false
add_flow_and_stream_security_conf(ss, "protocol", "protocol", "trojan", true, true)
add_flow_and_stream_security_conf(ss, "protocol", "protocol", "trojan", true, false, true)
o = ss.taboption('protocol', form.ListValue, "shadowsocks_security", _("[shadowsocks] Encrypt Method"))
o.depends("protocol", "shadowsocks")
@ -253,7 +271,7 @@ return view.extend({
o.rmempty = false
o.modalonly = true
add_flow_and_stream_security_conf(ss, "protocol", "protocol", "shadowsocks", false, true)
add_flow_and_stream_security_conf(ss, "protocol", "protocol", "shadowsocks", false, false, true)
o = ss.taboption('protocol', form.ListValue, "vmess_security", _("[vmess] Encrypt Method"))
o.depends("protocol", "vmess")
@ -275,7 +293,7 @@ return view.extend({
o.rmempty = false
o.modalonly = true
add_flow_and_stream_security_conf(ss, "protocol", "protocol", "vmess", false, true)
add_flow_and_stream_security_conf(ss, "protocol", "protocol", "vmess", false, false, true)
o = ss.taboption('protocol', form.ListValue, "vless_encryption", _("[vless] Encrypt Method"))
o.depends("protocol", "vless")
@ -283,7 +301,7 @@ return view.extend({
o.rmempty = false
o.modalonly = true
add_flow_and_stream_security_conf(ss, "protocol", "protocol", "vless", true, true)
add_flow_and_stream_security_conf(ss, "protocol", "protocol", "vless", true, true, true)
ss.tab('transport', _('Transport Settings'));
@ -674,9 +692,9 @@ return view.extend({
o.rmempty = false
o.depends("web_server_enable", "1")
add_flow_and_stream_security_conf(s, "xray_server", "web_server_protocol", "vless", true, false)
add_flow_and_stream_security_conf(s, "xray_server", "web_server_protocol", "vless", true, true, false)
add_flow_and_stream_security_conf(s, "xray_server", "web_server_protocol", "trojan", true, false)
add_flow_and_stream_security_conf(s, "xray_server", "web_server_protocol", "trojan", true, false, false)
o = s.taboption('xray_server', form.Value, 'web_server_password', _('UserId / Password'), _('Fill user_id for vmess / VLESS, or password for shadowsocks / trojan (also supports <a href="https://github.com/XTLS/Xray-core/issues/158">Xray UUID Mapping</a>)'))
o.depends("web_server_enable", "1")