From a4edf006482cd83bebd3d4d5972577d6cb81d029 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 24 Jan 2024 21:50:54 +0800
Subject: [PATCH] update 2024-01-24 21:50:54
---
.../luci-static/resources/view/xray/core.js | 69 ++++++++++++++-----
upx/Makefile | 2 +-
2 files changed, 54 insertions(+), 17 deletions(-)
diff --git a/luci-app-xray/core/root/www/luci-static/resources/view/xray/core.js b/luci-app-xray/core/root/www/luci-static/resources/view/xray/core.js
index 8511fa1f0..94e2fb540 100644
--- a/luci-app-xray/core/root/www/luci-static/resources/view/xray/core.js
+++ b/luci-app-xray/core/root/www/luci-static/resources/view/xray/core.js
@@ -9,6 +9,10 @@
'require view.xray.shared as shared';
'require view.xray.transport as transport';
+function server_alias(v) {
+ return v.alias || v.server + ":" + v.server_port;
+}
+
function list_folded_format(config_data, k, noun, max_chars, mapping, empty) {
return function (s) {
const null_mapping = v => v;
@@ -38,20 +42,38 @@ function list_folded_format(config_data, k, noun, max_chars, mapping, empty) {
};
}
-function destination_format(config_data, k, max_chars) {
- return list_folded_format(config_data, k, "outbounds", max_chars, v => uci.get(config_data, v, "alias"), "direct");
+function destination_format(config_data, k, max_chars, null_itatic) {
+ const null_placeholder = function () {
+ if (null_itatic) {
+ return `${_("direct")}`;
+ }
+ return _("direct");
+ }();
+ return list_folded_format(config_data, k, "outbounds", max_chars, v => uci.get(config_data, v, "alias"), null_placeholder);
}
-function extra_outbound_format(config_data, s, with_desc) {
+function extra_outbound_format(config_data, s, select_item) {
const inbound_addr = uci.get(config_data, s, "inbound_addr") || "";
const inbound_port = uci.get(config_data, s, "inbound_port") || "";
if (inbound_addr == "" && inbound_port == "") {
return "-";
}
- if (with_desc) {
- return `${inbound_addr}:${inbound_port} (${destination_format(config_data, "destination", 60)(s)})`;
+ const destination = (uci.get(config_data, s, "destination") || []).map(x => server_alias(uci.get(config_data, x)));
+ if (select_item) {
+ if (destination.length == 0) {
+ return `${inbound_addr}:${inbound_port} [direct]`;
+ }
+ return `${inbound_addr}:${inbound_port} (${destination.join(", ")})`;
}
- return `${inbound_addr}:${inbound_port}`;
+ return E([], [
+ `${inbound_addr}:${inbound_port} `,
+ function () {
+ if (destination.length == 0) {
+ return shared.badge("...", "direct");
+ }
+ return shared.badge("...", `${destination.length} outbounds\n${destination.join("\n")}`);
+ }()
+ ]);
}
function access_control_format(config_data, s, t) {
@@ -64,7 +86,7 @@ function access_control_format(config_data, s, t) {
return _("Disable tproxy");
}
}
- return extra_outbound_format(config_data, uci.get(config_data, v, t));
+ return extra_outbound_format(config_data, uci.get(config_data, v, t), false);
};
}
@@ -207,7 +229,7 @@ return view.extend({
o.datatype = "uciname";
o.value("disabled", _("Disabled"));
for (const v of uci.sections(config_data, "servers")) {
- o.value(v[".name"], v.alias || v.server + ":" + v.server_port);
+ o.value(v[".name"], server_alias(v));
}
o.modalonly = true;
@@ -276,7 +298,7 @@ return view.extend({
let destination = extra_inbounds.option(form.MultiValue, 'destination', _('Destination'), _("Select multiple outbounds for load balancing. If none selected, requests will be sent via direct outbound."));
destination.depends("specify_outbound", "1");
destination.datatype = "uciname";
- destination.textvalue = destination_format(config_data, "destination", 60);
+ destination.textvalue = destination_format(config_data, "destination", 60, true);
let balancer_strategy = extra_inbounds.option(form.Value, 'balancer_strategy', _('Balancer Strategy'), _('Strategy leastPing
requires observatory (see "Extra Options" tab) to be enabled.'));
balancer_strategy.value("random");
@@ -313,9 +335,24 @@ return view.extend({
lan_hosts.anonymous = true;
lan_hosts.addremove = true;
+ let title = lan_hosts.option(form.DummyValue, "title", _("Alias / MAC Address"));
+ title.modalonly = false;
+ title.textvalue = function (s) {
+ const item = uci.get(config_data, s);
+ if (item.alias) {
+ return E([], [item.alias, " ", shared.badge("...", item.macaddr)]);
+ }
+ return item.macaddr;
+ };
+
+ let alias = lan_hosts.option(form.Value, "alias", _("Alias (optional)"));
+ alias.optional = true;
+ alias.modalonly = true;
+
let macaddr = lan_hosts.option(form.Value, "macaddr", _("MAC Address"));
macaddr.datatype = "macaddr";
macaddr.rmempty = false;
+ macaddr.modalonly = true;
L.sortedKeys(hosts).forEach(function (mac) {
macaddr.value(mac, E([], [mac, ' (', E('strong', [hosts[mac].name || L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4)[0] || L.toArray(hosts[mac].ip6addrs || hosts[mac].ipv6)[0] || '?']), ')']));
});
@@ -460,11 +497,11 @@ return view.extend({
let fake_dns_forward_server_tcp = fs.option(form.MultiValue, 'fake_dns_forward_server_tcp', _('Force Forward server (TCP)'));
fake_dns_forward_server_tcp.datatype = "uciname";
- fake_dns_forward_server_tcp.textvalue = destination_format(config_data, "fake_dns_forward_server_tcp", 40);
+ fake_dns_forward_server_tcp.textvalue = destination_format(config_data, "fake_dns_forward_server_tcp", 40, true);
let fake_dns_forward_server_udp = fs.option(form.MultiValue, 'fake_dns_forward_server_udp', _('Force Forward server (UDP)'));
fake_dns_forward_server_udp.datatype = "uciname";
- fake_dns_forward_server_udp.textvalue = destination_format(config_data, "fake_dns_forward_server_udp", 40);
+ fake_dns_forward_server_udp.textvalue = destination_format(config_data, "fake_dns_forward_server_udp", 40, true);
let fake_dns_balancer_strategy = fs.option(form.Value, 'fake_dns_balancer_strategy', _('Balancer Strategy'), _('Strategy leastPing
requires observatory (see "Extra Options" tab) to be enabled.'));
fake_dns_balancer_strategy.value("random");
@@ -558,7 +595,7 @@ return view.extend({
o.depends("force_forward_tcp", "1");
o.datatype = "uciname";
for (const v of uci.sections(config_data, "servers")) {
- o.value(v[".name"], v.alias || v.server + ":" + v.server_port);
+ o.value(v[".name"], server_alias(v));
}
o.modalonly = true;
@@ -569,7 +606,7 @@ return view.extend({
o.depends("force_forward_udp", "1");
o.datatype = "uciname";
for (const v of uci.sections(config_data, "servers")) {
- o.value(v[".name"], v.alias || v.server + ":" + v.server_port);
+ o.value(v[".name"], server_alias(v));
}
o.modalonly = true;
@@ -687,7 +724,7 @@ return view.extend({
o = ss.option(form.ListValue, "upstream", _("Upstream"));
o.datatype = "uciname";
for (const v of uci.sections(config_data, "servers")) {
- o.value(v[".name"], v.alias || v.server + ":" + v.server_port);
+ o.value(v[".name"], server_alias(v));
}
o = ss.option(form.Value, "domain", _("Domain"));
@@ -708,10 +745,10 @@ return view.extend({
if (servers.length == 0) {
selection.value("direct", _("No server configured"));
selection.readonly = true;
- continue
+ continue;
}
for (const v of servers) {
- selection.value(v[".name"], v.alias || v.server + ":" + v.server_port);
+ selection.value(v[".name"], server_alias(v));
}
}
return m.render();
diff --git a/upx/Makefile b/upx/Makefile
index da2bdec1e..66e685b41 100644
--- a/upx/Makefile
+++ b/upx/Makefile
@@ -12,7 +12,7 @@ PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-src.tar.xz
PKG_SOURCE_URL:=https://github.com/upx/upx/releases/download/v$(PKG_VERSION)/$(PKG_SOURCE)
-PKG_HASH:=f2a44f555ffa3cb8c0cbc8a99a62f4f5d439ada1d3455f70b828880181f7a366
+PKG_HASH:=42ee0455eea610ef7ee732aa1f657b34a351ebcfa64a24c1e2a7aaec74c1e038
PKG_MAINTAINER:=Xingwang Liao
PKG_LICENSE:=GPL-2.0-only