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
diff options
context:
space:
mode:
authorMHSanaei <ho3ein.sanaei@gmail.com>2026-04-20 17:05:27 +0300
committerMHSanaei <ho3ein.sanaei@gmail.com>2026-04-20 17:05:27 +0300
commitae5ad505d04fa347eb96a0d2bfb54ff541c3b709 (patch)
tree54a8088e98e15868238be54b063bb051ab84fcb0 /sub/subJsonService.go
parentc188056f64be268dda8f7c16e23f7ef9c90d014f (diff)
add hysteria inbound
Co-Authored-By: Alireza Ahmadi <alireza7@gmail.com>
Diffstat (limited to 'sub/subJsonService.go')
-rw-r--r--sub/subJsonService.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/sub/subJsonService.go b/sub/subJsonService.go
index 05552fe8..7ce93e22 100644
--- a/sub/subJsonService.go
+++ b/sub/subJsonService.go
@@ -194,6 +194,8 @@ func (s *SubJsonService) getConfig(inbound *model.Inbound, client model.Client,
newOutbounds = append(newOutbounds, s.genVless(inbound, streamSettings, client))
case "trojan", "shadowsocks":
newOutbounds = append(newOutbounds, s.genServer(inbound, streamSettings, client))
+ case "hysteria":
+ newOutbounds = append(newOutbounds, s.genHy(inbound, newStream, client))
}
newOutbounds = append(newOutbounds, s.defaultOutbounds...)
@@ -389,6 +391,49 @@ func (s *SubJsonService) genServer(inbound *model.Inbound, streamSettings json_u
return result
}
+func (s *SubJsonService) genHy(inbound *model.Inbound, newStream map[string]any, client model.Client) json_util.RawMessage {
+ outbound := Outbound{}
+
+ outbound.Protocol = string(inbound.Protocol)
+ outbound.Tag = "proxy"
+
+ if s.mux != "" {
+ outbound.Mux = json_util.RawMessage(s.mux)
+ }
+
+ var settings, stream map[string]any
+ json.Unmarshal([]byte(inbound.Settings), &settings)
+ version, _ := settings["version"].(float64)
+ outbound.Settings = map[string]any{
+ "version": int(version),
+ "address": inbound.Listen,
+ "port": inbound.Port,
+ }
+
+ json.Unmarshal([]byte(inbound.StreamSettings), &stream)
+ hyStream := stream["hysteriaSettings"].(map[string]any)
+ outHyStream := map[string]any{
+ "version": int(version),
+ "auth": client.Auth,
+ }
+ if udpIdleTimeout, ok := hyStream["udpIdleTimeout"].(float64); ok {
+ outHyStream["udpIdleTimeout"] = int(udpIdleTimeout)
+ }
+ newStream["hysteriaSettings"] = outHyStream
+
+ if finalmask, ok := hyStream["finalmask"].(map[string]any); ok {
+ newStream["finalmask"] = finalmask
+ }
+
+ newStream["network"] = "hysteria"
+ newStream["security"] = "tls"
+
+ outbound.StreamSettings, _ = json.MarshalIndent(newStream, "", " ")
+
+ result, _ := json.MarshalIndent(outbound, "", " ")
+ return result
+}
+
type Outbound struct {
Protocol string `json:"protocol"`
Tag string `json:"tag"`