Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorMHSanaei <ho3ein.sanaei@gmail.com>2026-04-21 15:13:55 +0300
committerMHSanaei <ho3ein.sanaei@gmail.com>2026-04-21 15:13:55 +0300
commit2a9ba2badce25d16648a385134e3b33f1e906581 (patch)
treea37001b87bb64e9470db721ef4084cb21050c144 /web
parent53fb4fe8f9a7c744f3bb1482e0216f8eab4d8155 (diff)
salamander obfs and remove auth field
Diffstat (limited to 'web')
-rw-r--r--web/assets/js/model/inbound.js10
-rw-r--r--web/html/form/stream/stream_hysteria.html15
2 files changed, 10 insertions, 15 deletions
diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js
index 5d167ead..4eeb1964 100644
--- a/web/assets/js/model/inbound.js
+++ b/web/assets/js/model/inbound.js
@@ -1830,6 +1830,16 @@ class Inbound extends XrayCommonClass {
if (this.stream.tls.settings.echConfigList?.length > 0) params.set("ech", this.stream.tls.settings.echConfigList.join(','));
if (this.stream.tls.sni?.length > 0) params.set("sni", this.stream.tls.sni);
+ const udpMasks = this.stream?.finalmask?.udp;
+ if (Array.isArray(udpMasks)) {
+ const salamanderMask = udpMasks.find(mask => mask?.type === 'salamander');
+ const obfsPassword = salamanderMask?.settings?.password;
+ if (typeof obfsPassword === 'string' && obfsPassword.length > 0) {
+ params.set("obfs", "salamander");
+ params.set("obfs-password", obfsPassword);
+ }
+ }
+
const url = new URL(link);
for (const [key, value] of params) {
url.searchParams.set(key, value);
diff --git a/web/html/form/stream/stream_hysteria.html b/web/html/form/stream/stream_hysteria.html
index 4a424fd1..960239bd 100644
--- a/web/html/form/stream/stream_hysteria.html
+++ b/web/html/form/stream/stream_hysteria.html
@@ -4,21 +4,6 @@
:label-col="{ md: {span:8} }"
:wrapper-col="{ md: {span:14} }"
>
- <a-form-item>
- <template slot="label">
- <a-tooltip>
- <template slot="title">
- <span>{{ i18n "reset" }}</span>
- </template>
- Auth Password
- <a-icon
- @click="inbound.stream.hysteria.auth = RandomUtil.randomSeq(10)"
- type="sync"
- ></a-icon>
- </a-tooltip>
- </template>
- <a-input v-model.trim="inbound.stream.hysteria.auth"></a-input>
- </a-form-item>
<a-form-item label="UDP Idle Timeout">
<a-input-number
v-model.number="inbound.stream.hysteria.udpIdleTimeout"