mirror of
				https://github.com/MHSanaei/3x-ui.git
				synced 2025-11-04 14:22:51 +00:00 
			
		
		
		
	quic removed
This commit is contained in:
		
							parent
							
								
									b4baf35ed8
								
							
						
					
					
						commit
						58c721e7d2
					
				
					 18 changed files with 5 additions and 228 deletions
				
			
		| 
						 | 
				
			
			@ -268,13 +268,13 @@ func (s *SubJsonService) realityData(rData map[string]interface{}) map[string]in
 | 
			
		|||
	rltyData["spiderX"] = "/" + random.Seq(15)
 | 
			
		||||
	shortIds, ok := rData["shortIds"].([]interface{})
 | 
			
		||||
	if ok && len(shortIds) > 0 {
 | 
			
		||||
		rltyData["shortId"] = shortIds
 | 
			
		||||
		rltyData["shortId"] = shortIds[random.Num(len(shortIds))].(string)
 | 
			
		||||
	} else {
 | 
			
		||||
		rltyData["shortId"] = ""
 | 
			
		||||
	}
 | 
			
		||||
	serverNames, ok := rData["serverNames"].([]interface{})
 | 
			
		||||
	if ok && len(serverNames) > 0 {
 | 
			
		||||
		rltyData["serverName"] = serverNames
 | 
			
		||||
		rltyData["serverName"] = serverNames[random.Num(len(serverNames))].(string)
 | 
			
		||||
	} else {
 | 
			
		||||
		rltyData["serverName"] = ""
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -213,12 +213,6 @@ func (s *SubService) genVmessLink(inbound *model.Inbound, email string) string {
 | 
			
		|||
		http, _ := stream["httpSettings"].(map[string]interface{})
 | 
			
		||||
		obj["path"], _ = http["path"].(string)
 | 
			
		||||
		obj["host"] = searchHost(http)
 | 
			
		||||
	case "quic":
 | 
			
		||||
		quic, _ := stream["quicSettings"].(map[string]interface{})
 | 
			
		||||
		header := quic["header"].(map[string]interface{})
 | 
			
		||||
		obj["type"], _ = header["type"].(string)
 | 
			
		||||
		obj["host"], _ = quic["security"].(string)
 | 
			
		||||
		obj["path"], _ = quic["key"].(string)
 | 
			
		||||
	case "grpc":
 | 
			
		||||
		grpc, _ := stream["grpcSettings"].(map[string]interface{})
 | 
			
		||||
		obj["path"] = grpc["serviceName"].(string)
 | 
			
		||||
| 
						 | 
				
			
			@ -370,12 +364,6 @@ func (s *SubService) genVlessLink(inbound *model.Inbound, email string) string {
 | 
			
		|||
		http, _ := stream["httpSettings"].(map[string]interface{})
 | 
			
		||||
		params["path"] = http["path"].(string)
 | 
			
		||||
		params["host"] = searchHost(http)
 | 
			
		||||
	case "quic":
 | 
			
		||||
		quic, _ := stream["quicSettings"].(map[string]interface{})
 | 
			
		||||
		params["quicSecurity"] = quic["security"].(string)
 | 
			
		||||
		params["key"] = quic["key"].(string)
 | 
			
		||||
		header := quic["header"].(map[string]interface{})
 | 
			
		||||
		params["headerType"] = header["type"].(string)
 | 
			
		||||
	case "grpc":
 | 
			
		||||
		grpc, _ := stream["grpcSettings"].(map[string]interface{})
 | 
			
		||||
		params["serviceName"] = grpc["serviceName"].(string)
 | 
			
		||||
| 
						 | 
				
			
			@ -604,12 +592,6 @@ func (s *SubService) genTrojanLink(inbound *model.Inbound, email string) string
 | 
			
		|||
		http, _ := stream["httpSettings"].(map[string]interface{})
 | 
			
		||||
		params["path"] = http["path"].(string)
 | 
			
		||||
		params["host"] = searchHost(http)
 | 
			
		||||
	case "quic":
 | 
			
		||||
		quic, _ := stream["quicSettings"].(map[string]interface{})
 | 
			
		||||
		params["quicSecurity"] = quic["security"].(string)
 | 
			
		||||
		params["key"] = quic["key"].(string)
 | 
			
		||||
		header := quic["header"].(map[string]interface{})
 | 
			
		||||
		params["headerType"] = header["type"].(string)
 | 
			
		||||
	case "grpc":
 | 
			
		||||
		grpc, _ := stream["grpcSettings"].(map[string]interface{})
 | 
			
		||||
		params["serviceName"] = grpc["serviceName"].(string)
 | 
			
		||||
| 
						 | 
				
			
			@ -839,12 +821,6 @@ func (s *SubService) genShadowsocksLink(inbound *model.Inbound, email string) st
 | 
			
		|||
		http, _ := stream["httpSettings"].(map[string]interface{})
 | 
			
		||||
		params["path"] = http["path"].(string)
 | 
			
		||||
		params["host"] = searchHost(http)
 | 
			
		||||
	case "quic":
 | 
			
		||||
		quic, _ := stream["quicSettings"].(map[string]interface{})
 | 
			
		||||
		params["quicSecurity"] = quic["security"].(string)
 | 
			
		||||
		params["key"] = quic["key"].(string)
 | 
			
		||||
		header := quic["header"].(map[string]interface{})
 | 
			
		||||
		params["headerType"] = header["type"].(string)
 | 
			
		||||
	case "grpc":
 | 
			
		||||
		grpc, _ := stream["grpcSettings"].(map[string]interface{})
 | 
			
		||||
		params["serviceName"] = grpc["serviceName"].(string)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -471,7 +471,6 @@ class StreamSettings extends CommonClass {
 | 
			
		|||
        this.kcp = kcpSettings;
 | 
			
		||||
        this.ws = wsSettings;
 | 
			
		||||
        this.http = httpSettings;
 | 
			
		||||
        this.quic = quicSettings;
 | 
			
		||||
        this.grpc = grpcSettings;
 | 
			
		||||
        this.httpupgrade = httpupgradeSettings;
 | 
			
		||||
        this.splithttp = splithttpSettings;
 | 
			
		||||
| 
						 | 
				
			
			@ -523,7 +522,6 @@ class StreamSettings extends CommonClass {
 | 
			
		|||
            kcpSettings: network === 'kcp' ? this.kcp.toJson() : undefined,
 | 
			
		||||
            wsSettings: network === 'ws' ? this.ws.toJson() : undefined,
 | 
			
		||||
            httpSettings: network === 'http' ? this.http.toJson() : undefined,
 | 
			
		||||
            quicSettings: network === 'quic' ? this.quic.toJson() : undefined,
 | 
			
		||||
            grpcSettings: network === 'grpc' ? this.grpc.toJson() : undefined,
 | 
			
		||||
            httpupgradeSettings: network === 'httpupgrade' ? this.httpupgrade.toJson() : undefined,
 | 
			
		||||
            splithttpSettings: network === 'splithttp' ? this.splithttp.toJson() : undefined,
 | 
			
		||||
| 
						 | 
				
			
			@ -591,7 +589,7 @@ class Outbound extends CommonClass {
 | 
			
		|||
 | 
			
		||||
    canEnableTls() {
 | 
			
		||||
        if (![Protocols.VMess, Protocols.VLESS, Protocols.Trojan, Protocols.Shadowsocks].includes(this.protocol)) return false;
 | 
			
		||||
        return ["tcp", "ws", "http", "quic", "grpc", "httpupgrade", "splithttp"].includes(this.stream.network);
 | 
			
		||||
        return ["tcp", "ws", "http", "grpc", "httpupgrade", "splithttp"].includes(this.stream.network);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //this is used for xtls-rprx-vision
 | 
			
		||||
| 
						 | 
				
			
			@ -707,11 +705,6 @@ class Outbound extends CommonClass {
 | 
			
		|||
            stream.http = new HttpStreamSettings(
 | 
			
		||||
                json.path,
 | 
			
		||||
                json.host);
 | 
			
		||||
        } else if (network === 'quic') {
 | 
			
		||||
            stream.quic = new QuicStreamSettings(
 | 
			
		||||
                json.host ? json.host : 'none',
 | 
			
		||||
                json.path,
 | 
			
		||||
                json.type ? json.type : 'none');
 | 
			
		||||
        } else if (network === 'grpc') {
 | 
			
		||||
            stream.grpc = new GrpcStreamSettings(json.path, json.authority, json.type == 'multi');
 | 
			
		||||
        } else if (network === 'httpupgrade') {
 | 
			
		||||
| 
						 | 
				
			
			@ -753,11 +746,6 @@ class Outbound extends CommonClass {
 | 
			
		|||
            stream.ws = new WsStreamSettings(path, host);
 | 
			
		||||
        } else if (type === 'http' || type == 'h2') {
 | 
			
		||||
            stream.http = new HttpStreamSettings(path, host);
 | 
			
		||||
        } else if (type === 'quic') {
 | 
			
		||||
            stream.quic = new QuicStreamSettings(
 | 
			
		||||
                url.searchParams.get('quicSecurity') ?? 'none',
 | 
			
		||||
                url.searchParams.get('key') ?? '',
 | 
			
		||||
                headerType ?? 'none');
 | 
			
		||||
        } else if (type === 'grpc') {
 | 
			
		||||
            stream.grpc = new GrpcStreamSettings(
 | 
			
		||||
                url.searchParams.get('serviceName') ?? '',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -449,37 +449,6 @@ class HttpStreamSettings extends XrayCommonClass {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class QuicStreamSettings extends XrayCommonClass {
 | 
			
		||||
    constructor(
 | 
			
		||||
        security = 'none',
 | 
			
		||||
        key = RandomUtil.randomSeq(10),
 | 
			
		||||
        type = 'none'
 | 
			
		||||
    ) {
 | 
			
		||||
        super();
 | 
			
		||||
        this.security = security;
 | 
			
		||||
        this.key = key;
 | 
			
		||||
        this.type = type;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static fromJson(json = {}) {
 | 
			
		||||
        return new QuicStreamSettings(
 | 
			
		||||
            json.security,
 | 
			
		||||
            json.key,
 | 
			
		||||
            json.header ? json.header.type : 'none',
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    toJson() {
 | 
			
		||||
        return {
 | 
			
		||||
            security: this.security,
 | 
			
		||||
            key: this.key,
 | 
			
		||||
            header: {
 | 
			
		||||
                type: this.type,
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class GrpcStreamSettings extends XrayCommonClass {
 | 
			
		||||
    constructor(
 | 
			
		||||
        serviceName = "",
 | 
			
		||||
| 
						 | 
				
			
			@ -1092,7 +1061,6 @@ class StreamSettings extends XrayCommonClass {
 | 
			
		|||
        kcpSettings = new KcpStreamSettings(),
 | 
			
		||||
        wsSettings = new WsStreamSettings(),
 | 
			
		||||
        httpSettings = new HttpStreamSettings(),
 | 
			
		||||
        quicSettings = new QuicStreamSettings(),
 | 
			
		||||
        grpcSettings = new GrpcStreamSettings(),
 | 
			
		||||
        httpupgradeSettings = new HTTPUpgradeStreamSettings(),
 | 
			
		||||
        splithttpSettings = new SplitHTTPStreamSettings(),
 | 
			
		||||
| 
						 | 
				
			
			@ -1109,7 +1077,6 @@ class StreamSettings extends XrayCommonClass {
 | 
			
		|||
        this.kcp = kcpSettings;
 | 
			
		||||
        this.ws = wsSettings;
 | 
			
		||||
        this.http = httpSettings;
 | 
			
		||||
        this.quic = quicSettings;
 | 
			
		||||
        this.grpc = grpcSettings;
 | 
			
		||||
        this.httpupgrade = httpupgradeSettings;
 | 
			
		||||
        this.splithttp = splithttpSettings;
 | 
			
		||||
| 
						 | 
				
			
			@ -1173,7 +1140,6 @@ class StreamSettings extends XrayCommonClass {
 | 
			
		|||
            KcpStreamSettings.fromJson(json.kcpSettings),
 | 
			
		||||
            WsStreamSettings.fromJson(json.wsSettings),
 | 
			
		||||
            HttpStreamSettings.fromJson(json.httpSettings),
 | 
			
		||||
            QuicStreamSettings.fromJson(json.quicSettings),
 | 
			
		||||
            GrpcStreamSettings.fromJson(json.grpcSettings),
 | 
			
		||||
            HTTPUpgradeStreamSettings.fromJson(json.httpupgradeSettings),
 | 
			
		||||
            SplitHTTPStreamSettings.fromJson(json.splithttpSettings),
 | 
			
		||||
| 
						 | 
				
			
			@ -1194,7 +1160,6 @@ class StreamSettings extends XrayCommonClass {
 | 
			
		|||
            kcpSettings: network === 'kcp' ? this.kcp.toJson() : undefined,
 | 
			
		||||
            wsSettings: network === 'ws' ? this.ws.toJson() : undefined,
 | 
			
		||||
            httpSettings: network === 'http' ? this.http.toJson() : undefined,
 | 
			
		||||
            quicSettings: network === 'quic' ? this.quic.toJson() : undefined,
 | 
			
		||||
            grpcSettings: network === 'grpc' ? this.grpc.toJson() : undefined,
 | 
			
		||||
            httpupgradeSettings: network === 'httpupgrade' ? this.httpupgrade.toJson() : undefined,
 | 
			
		||||
            splithttpSettings: network === 'splithttp' ? this.splithttp.toJson() : undefined,
 | 
			
		||||
| 
						 | 
				
			
			@ -1311,10 +1276,6 @@ class Inbound extends XrayCommonClass {
 | 
			
		|||
        return this.network === "kcp";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    get isQuic() {
 | 
			
		||||
        return this.network === "quic"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    get isGrpc() {
 | 
			
		||||
        return this.network === "grpc";
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -1393,18 +1354,6 @@ class Inbound extends XrayCommonClass {
 | 
			
		|||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    get quicSecurity() {
 | 
			
		||||
        return this.stream.quic.security;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    get quicKey() {
 | 
			
		||||
        return this.stream.quic.key;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    get quicType() {
 | 
			
		||||
        return this.stream.quic.type;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    get kcpType() {
 | 
			
		||||
        return this.stream.kcp.type;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -1424,7 +1373,7 @@ class Inbound extends XrayCommonClass {
 | 
			
		|||
 | 
			
		||||
    canEnableTls() {
 | 
			
		||||
        if (![Protocols.VMESS, Protocols.VLESS, Protocols.TROJAN, Protocols.SHADOWSOCKS].includes(this.protocol)) return false;
 | 
			
		||||
        return ["tcp", "ws", "http", "quic", "grpc", "httpupgrade", "splithttp"].includes(this.network);
 | 
			
		||||
        return ["tcp", "ws", "http", "grpc", "httpupgrade", "splithttp"].includes(this.network);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //this is used for xtls-rprx-vision
 | 
			
		||||
| 
						 | 
				
			
			@ -1497,10 +1446,6 @@ class Inbound extends XrayCommonClass {
 | 
			
		|||
            obj.net = 'h2';
 | 
			
		||||
            obj.path = this.stream.http.path;
 | 
			
		||||
            obj.host = this.stream.http.host.join(',');
 | 
			
		||||
        } else if (network === 'quic') {
 | 
			
		||||
            obj.type = this.stream.quic.type;
 | 
			
		||||
            obj.host = this.stream.quic.security;
 | 
			
		||||
            obj.path = this.stream.quic.key;
 | 
			
		||||
        } else if (network === 'grpc') {
 | 
			
		||||
            obj.path = this.stream.grpc.serviceName;
 | 
			
		||||
            obj.authority = this.stream.grpc.authority;
 | 
			
		||||
| 
						 | 
				
			
			@ -1570,12 +1515,6 @@ class Inbound extends XrayCommonClass {
 | 
			
		|||
                params.set("path", http.path);
 | 
			
		||||
                params.set("host", http.host);
 | 
			
		||||
                break;
 | 
			
		||||
            case "quic":
 | 
			
		||||
                const quic = this.stream.quic;
 | 
			
		||||
                params.set("quicSecurity", quic.security);
 | 
			
		||||
                params.set("key", quic.key);
 | 
			
		||||
                params.set("headerType", quic.type);
 | 
			
		||||
                break;
 | 
			
		||||
            case "grpc":
 | 
			
		||||
                const grpc = this.stream.grpc;
 | 
			
		||||
                params.set("serviceName", grpc.serviceName);
 | 
			
		||||
| 
						 | 
				
			
			@ -1691,12 +1630,6 @@ class Inbound extends XrayCommonClass {
 | 
			
		|||
                params.set("path", http.path);
 | 
			
		||||
                params.set("host", http.host);
 | 
			
		||||
                break;
 | 
			
		||||
            case "quic":
 | 
			
		||||
                const quic = this.stream.quic;
 | 
			
		||||
                params.set("quicSecurity", quic.security);
 | 
			
		||||
                params.set("key", quic.key);
 | 
			
		||||
                params.set("headerType", quic.type);
 | 
			
		||||
                break;
 | 
			
		||||
            case "grpc":
 | 
			
		||||
                const grpc = this.stream.grpc;
 | 
			
		||||
                params.set("serviceName", grpc.serviceName);
 | 
			
		||||
| 
						 | 
				
			
			@ -1779,12 +1712,6 @@ class Inbound extends XrayCommonClass {
 | 
			
		|||
                params.set("path", http.path);
 | 
			
		||||
                params.set("host", http.host);
 | 
			
		||||
                break;
 | 
			
		||||
            case "quic":
 | 
			
		||||
                const quic = this.stream.quic;
 | 
			
		||||
                params.set("quicSecurity", quic.security);
 | 
			
		||||
                params.set("key", quic.key);
 | 
			
		||||
                params.set("headerType", quic.type);
 | 
			
		||||
                break;
 | 
			
		||||
            case "grpc":
 | 
			
		||||
                const grpc = this.stream.grpc;
 | 
			
		||||
                params.set("serviceName", grpc.serviceName);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -239,7 +239,6 @@
 | 
			
		|||
            <a-select-option value="kcp">mKCP</a-select-option>
 | 
			
		||||
            <a-select-option value="ws">WebSocket</a-select-option>
 | 
			
		||||
            <a-select-option value="http">H2</a-select-option>
 | 
			
		||||
            <a-select-option value="quic">QUIC</a-select-option>
 | 
			
		||||
            <a-select-option value="grpc">gRPC</a-select-option>
 | 
			
		||||
            <a-select-option value="httpupgrade">HTTPUpgrade</a-select-option>
 | 
			
		||||
            <a-select-option value="splithttp">SplitHTTP</a-select-option>
 | 
			
		||||
| 
						 | 
				
			
			@ -317,31 +316,7 @@
 | 
			
		|||
            <a-input v-model.trim="outbound.stream.http.path"></a-input>
 | 
			
		||||
          </a-form-item>
 | 
			
		||||
        </template>
 | 
			
		||||
 | 
			
		||||
        <!-- quic -->
 | 
			
		||||
        <template v-if="outbound.stream.network === 'quic'">
 | 
			
		||||
          <a-form-item label='{{ i18n "pages.inbounds.stream.quic.encryption" }}'>
 | 
			
		||||
            <a-select v-model="outbound.stream.quic.security" :dropdown-class-name="themeSwitcher.currentTheme">
 | 
			
		||||
              <a-select-option value="none">None</a-select-option>
 | 
			
		||||
              <a-select-option value="aes-128-gcm">AES-128-GCM</a-select-option>
 | 
			
		||||
              <a-select-option value="chacha20-poly1305">CHACHA20-POLY1305</a-select-option>
 | 
			
		||||
            </a-select>
 | 
			
		||||
          </a-form-item>
 | 
			
		||||
          <a-form-item label='{{ i18n "password" }}'>
 | 
			
		||||
            <a-input v-model.trim="outbound.stream.quic.key"></a-input>
 | 
			
		||||
          </a-form-item>
 | 
			
		||||
          <a-form-item label='{{ i18n "camouflage" }}'>
 | 
			
		||||
            <a-select v-model="outbound.stream.quic.type" :dropdown-class-name="themeSwitcher.currentTheme">
 | 
			
		||||
              <a-select-option value="none">None</a-select-option>
 | 
			
		||||
              <a-select-option value="srtp">SRTP</a-select-option>
 | 
			
		||||
              <a-select-option value="utp">uTP</a-select-option>
 | 
			
		||||
              <a-select-option value="wechat-video">WeChat</a-select-option>
 | 
			
		||||
              <a-select-option value="dtls">DTLS 1.2</a-select-option>
 | 
			
		||||
              <a-select-option value="wireguard">WireGuard</a-select-option>
 | 
			
		||||
            </a-select>
 | 
			
		||||
          </a-form-item>
 | 
			
		||||
        </template>
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        <!-- grpc -->
 | 
			
		||||
        <template v-if="outbound.stream.network === 'grpc'">
 | 
			
		||||
          <a-form-item label='Service Name'>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,33 +0,0 @@
 | 
			
		|||
{{define "form/streamQUIC"}}
 | 
			
		||||
<a-form :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }">
 | 
			
		||||
    <a-form-item label='{{ i18n "pages.inbounds.stream.quic.encryption" }}'>
 | 
			
		||||
        <a-select v-model="inbound.stream.quic.security" :dropdown-class-name="themeSwitcher.currentTheme">
 | 
			
		||||
            <a-select-option value="none">None</a-select-option>
 | 
			
		||||
            <a-select-option value="aes-128-gcm">AES-128-GCM</a-select-option>
 | 
			
		||||
            <a-select-option value="chacha20-poly1305">CHACHA20-POLY1305</a-select-option>
 | 
			
		||||
        </a-select>
 | 
			
		||||
    </a-form-item>
 | 
			
		||||
    <a-form-item>
 | 
			
		||||
        <template slot="label">
 | 
			
		||||
            <a-tooltip>
 | 
			
		||||
                <template slot="title">
 | 
			
		||||
                    <span>{{ i18n "reset" }}</span>
 | 
			
		||||
                </template>
 | 
			
		||||
                {{ i18n "password" }}
 | 
			
		||||
                <a-icon @click="inbound.stream.quic.key = RandomUtil.randomSeq(10)"type="sync"> </a-icon>
 | 
			
		||||
            </a-tooltip>
 | 
			
		||||
        </template>
 | 
			
		||||
        <a-input v-model.trim="inbound.stream.quic.key"></a-input>
 | 
			
		||||
    </a-form-item>
 | 
			
		||||
    <a-form-item label='{{ i18n "camouflage" }}'>
 | 
			
		||||
        <a-select v-model="inbound.stream.quic.type" style="width: 50%" :dropdown-class-name="themeSwitcher.currentTheme">
 | 
			
		||||
            <a-select-option value="none">None</a-select-option>
 | 
			
		||||
            <a-select-option value="srtp">SRTP</a-select-option>
 | 
			
		||||
            <a-select-option value="utp">uTP</a-select-option>
 | 
			
		||||
            <a-select-option value="wechat-video">WeChat</a-select-option>
 | 
			
		||||
            <a-select-option value="dtls">DTLS 1.2</a-select-option>
 | 
			
		||||
            <a-select-option value="wireguard">WireGuard</a-select-option>
 | 
			
		||||
        </a-select>
 | 
			
		||||
    </a-form-item>
 | 
			
		||||
</a-form>
 | 
			
		||||
{{end}}
 | 
			
		||||
| 
						 | 
				
			
			@ -8,7 +8,6 @@
 | 
			
		|||
            <a-select-option value="kcp">mKCP</a-select-option>
 | 
			
		||||
            <a-select-option value="ws">WebSocket</a-select-option>
 | 
			
		||||
            <a-select-option value="http">H2</a-select-option>
 | 
			
		||||
            <a-select-option value="quic">QUIC</a-select-option>
 | 
			
		||||
            <a-select-option value="grpc">gRPC</a-select-option>
 | 
			
		||||
            <a-select-option value="httpupgrade">HTTPUpgrade</a-select-option>
 | 
			
		||||
            <a-select-option value="splithttp">SplitHTTP</a-select-option>
 | 
			
		||||
| 
						 | 
				
			
			@ -36,11 +35,6 @@
 | 
			
		|||
    {{template "form/streamHTTP"}}
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<!-- quic -->
 | 
			
		||||
<template v-if="inbound.stream.network === 'quic'">
 | 
			
		||||
    {{template "form/streamQUIC"}}
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<!-- grpc -->
 | 
			
		||||
<template v-if="inbound.stream.network === 'grpc'">
 | 
			
		||||
    {{template "form/streamGRPC"}}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,26 +58,6 @@
 | 
			
		|||
              </td>
 | 
			
		||||
            </tr>
 | 
			
		||||
          </template>
 | 
			
		||||
          <template v-if="inbound.isQuic">
 | 
			
		||||
            <tr>
 | 
			
		||||
              <td>quic {{ i18n "encryption" }}</td>
 | 
			
		||||
              <td>
 | 
			
		||||
                <a-tag>[[ inbound.quicSecurity ]]</a-tag>
 | 
			
		||||
              </td>
 | 
			
		||||
            </tr>
 | 
			
		||||
            <tr>
 | 
			
		||||
              <td>quic {{ i18n "password" }}</td>
 | 
			
		||||
              <td>
 | 
			
		||||
                <a-tag>[[ inbound.quicKey ]]</a-tag>
 | 
			
		||||
              </td>
 | 
			
		||||
            </tr>
 | 
			
		||||
            <tr>
 | 
			
		||||
              <td>quic {{ i18n "camouflage" }}</td>
 | 
			
		||||
              <td>
 | 
			
		||||
                <a-tag>[[ inbound.quicType ]]</a-tag>
 | 
			
		||||
              </td>
 | 
			
		||||
            </tr>
 | 
			
		||||
          </template>
 | 
			
		||||
          <template v-if="inbound.isKcp">
 | 
			
		||||
            <tr>
 | 
			
		||||
              <td>kcp {{ i18n "encryption" }}</td>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,9 +225,6 @@
 | 
			
		|||
"requestHeader" = "Request Header"
 | 
			
		||||
"responseHeader" = "Response Header"
 | 
			
		||||
 | 
			
		||||
[pages.inbounds.stream.quic]
 | 
			
		||||
"encryption" = "Encryption"
 | 
			
		||||
 | 
			
		||||
[pages.settings]
 | 
			
		||||
"title" = "Panel Settings"
 | 
			
		||||
"save" = "Save"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,9 +225,6 @@
 | 
			
		|||
"requestHeader" = "Encabezado de solicitud"
 | 
			
		||||
"responseHeader" = "Encabezado de respuesta"
 | 
			
		||||
 | 
			
		||||
[pages.inbounds.stream.quic]
 | 
			
		||||
"encryption" = "Cifrado"
 | 
			
		||||
 | 
			
		||||
[pages.settings]
 | 
			
		||||
"title" = "Configuraciones"
 | 
			
		||||
"save" = "Guardar"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,9 +225,6 @@
 | 
			
		|||
"requestHeader" = "سربرگ درخواست"
 | 
			
		||||
"responseHeader" = "سربرگ پاسخ"
 | 
			
		||||
 | 
			
		||||
[pages.inbounds.stream.quic]
 | 
			
		||||
"encryption" = "رمزنگاری"
 | 
			
		||||
 | 
			
		||||
[pages.settings]
 | 
			
		||||
"title" = "تنظیمات پنل"
 | 
			
		||||
"save" = "ذخیره"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,9 +225,6 @@
 | 
			
		|||
"requestHeader" = "Header Permintaan"
 | 
			
		||||
"responseHeader" = "Header Respons"
 | 
			
		||||
 | 
			
		||||
[pages.inbounds.stream.quic]
 | 
			
		||||
"encryption" = "Enkripsi"
 | 
			
		||||
 | 
			
		||||
[pages.settings]
 | 
			
		||||
"title" = "Pengaturan Panel"
 | 
			
		||||
"save" = "Simpan"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,9 +225,6 @@
 | 
			
		|||
"requestHeader" = "Cabeçalho da Requisição"
 | 
			
		||||
"responseHeader" = "Cabeçalho da Resposta"
 | 
			
		||||
 | 
			
		||||
[pages.inbounds.stream.quic]
 | 
			
		||||
"encryption" = "Criptografia"
 | 
			
		||||
 | 
			
		||||
[pages.settings]
 | 
			
		||||
"title" = "Configurações do Painel"
 | 
			
		||||
"save" = "Salvar"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,9 +225,6 @@
 | 
			
		|||
"requestHeader" = "Заголовок запроса"
 | 
			
		||||
"responseHeader" = "Заголовок ответа"
 | 
			
		||||
 | 
			
		||||
[pages.inbounds.stream.quic]
 | 
			
		||||
"encryption" = "Шифрование"
 | 
			
		||||
 | 
			
		||||
[pages.settings]
 | 
			
		||||
"title" = "Настройки"
 | 
			
		||||
"save" = "Сохранить"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,9 +225,6 @@
 | 
			
		|||
"requestHeader" = "İstek Başlığı"
 | 
			
		||||
"responseHeader" = "Yanıt Başlığı"
 | 
			
		||||
 | 
			
		||||
[pages.inbounds.stream.quic]
 | 
			
		||||
"encryption" = "Şifreleme"
 | 
			
		||||
 | 
			
		||||
[pages.settings]
 | 
			
		||||
"title" = "Panel Ayarları"
 | 
			
		||||
"save" = "Kaydet"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,9 +225,6 @@
 | 
			
		|||
"requestHeader" = "Заголовок запиту"
 | 
			
		||||
"responseHeader" = "Заголовок відповіді"
 | 
			
		||||
 | 
			
		||||
[pages.inbounds.stream.quic]
 | 
			
		||||
"encryption" = "Шифрування"
 | 
			
		||||
 | 
			
		||||
[pages.settings]
 | 
			
		||||
"title" = "Параметри панелі"
 | 
			
		||||
"save" = "Зберегти"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,9 +225,6 @@
 | 
			
		|||
"requestHeader" = "Header yêu cầu"
 | 
			
		||||
"responseHeader" = "Header phản hồi"
 | 
			
		||||
 | 
			
		||||
[pages.inbounds.stream.quic]
 | 
			
		||||
"encryption" = "Mã hóa"
 | 
			
		||||
 | 
			
		||||
[pages.settings]
 | 
			
		||||
"title" = "Cài đặt"
 | 
			
		||||
"save" = "Lưu"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -225,9 +225,6 @@
 | 
			
		|||
"requestHeader" = "请求头"
 | 
			
		||||
"responseHeader" = "响应头"
 | 
			
		||||
 | 
			
		||||
[pages.inbounds.stream.quic]
 | 
			
		||||
"encryption" = "加密"
 | 
			
		||||
 | 
			
		||||
[pages.settings]
 | 
			
		||||
"title" = "面板设置"
 | 
			
		||||
"save" = "保存"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue