Browse Source

MeekFrontingDisableSNI and MeekTransformedHostName adjustments

- Apply MeekFrontingDisableSNI to FRONTED-MEEK-QUIC-OSSH

- Don't report meek_transformed_host_name:true when not
  sending SNI or when using FRONTED HTTP.
Rod Hynes 6 years ago
parent
commit
e24d82cc30
1 changed files with 10 additions and 1 deletions
  1. 10 1
      psiphon/dialParameters.go

+ 10 - 1
psiphon/dialParameters.go

@@ -520,9 +520,14 @@ func MakeDialParameters(
 	case protocol.TUNNEL_PROTOCOL_FRONTED_MEEK_QUIC_OBFUSCATED_SSH:
 		dialParams.MeekDialAddress = fmt.Sprintf("%s:443", dialParams.MeekFrontingDialAddress)
 		dialParams.MeekHostHeader = dialParams.MeekFrontingHost
-		if !dialParams.MeekTransformedHostName {
+		if serverEntry.MeekFrontingDisableSNI {
+			dialParams.MeekSNIServerName = ""
+			// When SNI is omitted, the transformed host name is not used.
+			dialParams.MeekTransformedHostName = false
+		} else if !dialParams.MeekTransformedHostName {
 			dialParams.MeekSNIServerName = dialParams.MeekFrontingDialAddress
 		}
+
 	case protocol.TUNNEL_PROTOCOL_MARIONETTE_OBFUSCATED_SSH:
 		// Note: port comes from marionnete "format"
 		dialParams.DirectDialAddress = serverEntry.IpAddress
@@ -532,6 +537,8 @@ func MakeDialParameters(
 		dialParams.MeekHostHeader = dialParams.MeekFrontingHost
 		if serverEntry.MeekFrontingDisableSNI {
 			dialParams.MeekSNIServerName = ""
+			// When SNI is omitted, the transformed host name is not used.
+			dialParams.MeekTransformedHostName = false
 		} else if !dialParams.MeekTransformedHostName {
 			dialParams.MeekSNIServerName = dialParams.MeekFrontingDialAddress
 		}
@@ -539,6 +546,8 @@ func MakeDialParameters(
 	case protocol.TUNNEL_PROTOCOL_FRONTED_MEEK_HTTP:
 		dialParams.MeekDialAddress = fmt.Sprintf("%s:80", dialParams.MeekFrontingDialAddress)
 		dialParams.MeekHostHeader = dialParams.MeekFrontingHost
+		// For FRONTED HTTP, the Host header cannot be transformed.
+		dialParams.MeekTransformedHostName = false
 
 	case protocol.TUNNEL_PROTOCOL_UNFRONTED_MEEK:
 		dialParams.MeekDialAddress = fmt.Sprintf("%s:%d", serverEntry.IpAddress, serverEntry.MeekServerPort)