|
|
@@ -719,6 +719,7 @@ type GenerateConfigParams struct {
|
|
|
Passthrough bool
|
|
|
LegacyPassthrough bool
|
|
|
LimitQUICVersions protocol.QUICVersions
|
|
|
+ EnableGQUIC bool
|
|
|
}
|
|
|
|
|
|
// GenerateConfig creates a new Psiphon server config. It returns JSON encoded
|
|
|
@@ -916,6 +917,7 @@ func GenerateConfig(params *GenerateConfigParams) ([]byte, []byte, []byte, []byt
|
|
|
OSLConfigFilename: params.OSLConfigFilename,
|
|
|
TacticsConfigFilename: params.TacticsConfigFilename,
|
|
|
LegacyPassthrough: params.LegacyPassthrough,
|
|
|
+ EnableGQUIC: params.EnableGQUIC,
|
|
|
}
|
|
|
|
|
|
encodedConfig, err := json.MarshalIndent(config, "\n", " ")
|
|
|
@@ -1011,6 +1013,7 @@ func GenerateConfig(params *GenerateConfigParams) ([]byte, []byte, []byte, []byt
|
|
|
for tunnelProtocol := range params.TunnelProtocolPorts {
|
|
|
|
|
|
capability := protocol.GetCapability(tunnelProtocol)
|
|
|
+
|
|
|
if params.Passthrough && protocol.TunnelProtocolSupportsPassthrough(tunnelProtocol) {
|
|
|
if !params.LegacyPassthrough {
|
|
|
capability += "-PASSTHROUGH-v2"
|
|
|
@@ -1018,6 +1021,11 @@ func GenerateConfig(params *GenerateConfigParams) ([]byte, []byte, []byte, []byt
|
|
|
capability += "-PASSTHROUGH"
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if tunnelProtocol == protocol.TUNNEL_PROTOCOL_QUIC_OBFUSCATED_SSH && !params.EnableGQUIC {
|
|
|
+ capability += "v1"
|
|
|
+ }
|
|
|
+
|
|
|
capabilities = append(capabilities, capability)
|
|
|
|
|
|
if params.TacticsRequestPublicKey != "" && params.TacticsRequestObfuscatedKey != "" &&
|
|
|
@@ -1027,19 +1035,19 @@ func GenerateConfig(params *GenerateConfigParams) ([]byte, []byte, []byte, []byt
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- sshPort := params.TunnelProtocolPorts["SSH"]
|
|
|
- obfuscatedSSHPort := params.TunnelProtocolPorts["OSSH"]
|
|
|
- obfuscatedSSHQUICPort := params.TunnelProtocolPorts["QUIC-OSSH"]
|
|
|
+ sshPort := params.TunnelProtocolPorts[protocol.TUNNEL_PROTOCOL_SSH]
|
|
|
+ obfuscatedSSHPort := params.TunnelProtocolPorts[protocol.TUNNEL_PROTOCOL_OBFUSCATED_SSH]
|
|
|
+ obfuscatedSSHQUICPort := params.TunnelProtocolPorts[protocol.TUNNEL_PROTOCOL_QUIC_OBFUSCATED_SSH]
|
|
|
|
|
|
// Meek port limitations
|
|
|
// - fronted meek protocols are hard-wired in the client to be port 443 or 80.
|
|
|
// - only one other meek port may be specified.
|
|
|
- meekPort := params.TunnelProtocolPorts["UNFRONTED-MEEK-OSSH"]
|
|
|
+ meekPort := params.TunnelProtocolPorts[protocol.TUNNEL_PROTOCOL_UNFRONTED_MEEK]
|
|
|
if meekPort == 0 {
|
|
|
- meekPort = params.TunnelProtocolPorts["UNFRONTED-MEEK-HTTPS-OSSH"]
|
|
|
+ meekPort = params.TunnelProtocolPorts[protocol.TUNNEL_PROTOCOL_UNFRONTED_MEEK_HTTPS]
|
|
|
}
|
|
|
if meekPort == 0 {
|
|
|
- meekPort = params.TunnelProtocolPorts["UNFRONTED-MEEK-SESSION-TICKET-OSSH"]
|
|
|
+ meekPort = params.TunnelProtocolPorts[protocol.TUNNEL_PROTOCOL_UNFRONTED_MEEK_SESSION_TICKET]
|
|
|
}
|
|
|
|
|
|
// Note: fronting params are a stub; this server entry will exercise
|