Răsfoiți Sursa

Fix: select and log user agent only when used

Rod Hynes 9 ani în urmă
părinte
comite
242be32ed8
1 a modificat fișierele cu 19 adăugiri și 11 ștergeri
  1. 19 11
      psiphon/tunnel.go

+ 19 - 11
psiphon/tunnel.go

@@ -605,10 +605,8 @@ func dialSsh(
 	var selectedSSHClientVersion bool
 	var selectedSSHClientVersion bool
 	SSHClientVersion := ""
 	SSHClientVersion := ""
 	useObfuscatedSsh := false
 	useObfuscatedSsh := false
-	dialCustomHeaders := config.CustomHeaders
 	var directTCPDialAddress string
 	var directTCPDialAddress string
 	var meekConfig *MeekConfig
 	var meekConfig *MeekConfig
-	var selectedUserAgent bool
 	var err error
 	var err error
 
 
 	switch selectedProtocol {
 	switch selectedProtocol {
@@ -629,7 +627,23 @@ func dialSsh(
 		}
 		}
 	}
 	}
 
 
-	dialCustomHeaders, selectedUserAgent = UserAgentIfUnset(config.CustomHeaders)
+	// Set User Agent when using meek or an upstream HTTP proxy
+
+	var selectedUserAgent bool
+	dialCustomHeaders := config.CustomHeaders
+	var upstreamProxyType string
+
+	if config.UpstreamProxyUrl != "" {
+		// Note: UpstreamProxyUrl will be validated in the dial
+		proxyURL, err := url.Parse(config.UpstreamProxyUrl)
+		if err == nil {
+			upstreamProxyType = proxyURL.Scheme
+		}
+	}
+
+	if meekConfig != nil || upstreamProxyType == "http" {
+		dialCustomHeaders, selectedUserAgent = UserAgentIfUnset(config.CustomHeaders)
+	}
 
 
 	// Use an asynchronous callback to record the resolved IP address when
 	// Use an asynchronous callback to record the resolved IP address when
 	// dialing a domain name. Note that DialMeek doesn't immediately
 	// dialing a domain name. Note that DialMeek doesn't immediately
@@ -671,14 +685,8 @@ func dialSsh(
 		dialStats.UserAgent = dialConfig.CustomHeaders.Get("User-Agent")
 		dialStats.UserAgent = dialConfig.CustomHeaders.Get("User-Agent")
 	}
 	}
 
 
-	if dialConfig.UpstreamProxyUrl != "" {
-
-		// Note: UpstreamProxyUrl will be validated in the dial
-		proxyURL, err := url.Parse(dialConfig.UpstreamProxyUrl)
-		if err == nil {
-			dialStats.UpstreamProxyType = proxyURL.Scheme
-		}
-
+	if upstreamProxyType != "" {
+		dialStats.UpstreamProxyType = upstreamProxyType
 		dialStats.UpstreamProxyCustomHeaderNames = make([]string, 0)
 		dialStats.UpstreamProxyCustomHeaderNames = make([]string, 0)
 		for name, _ := range dialConfig.CustomHeaders {
 		for name, _ := range dialConfig.CustomHeaders {
 			if selectedUserAgent && name == "User-Agent" {
 			if selectedUserAgent && name == "User-Agent" {