Просмотр исходного кода

Fixes

- Resolve !PSIPHON_ENABLE_REFRACTION_NETWORKING compile error
- Explicitly log IPv4/IPv6 network type
- Log new stats in psiphond
- Add missing hash field names in Config.makeConfigParameters
Rod Hynes 2 лет назад
Родитель
Сommit
14bcfa346c

+ 5 - 0
psiphon/common/refraction/config.go

@@ -20,6 +20,8 @@
 package refraction
 package refraction
 
 
 import (
 import (
+	"context"
+	"net"
 	"net/http"
 	"net/http"
 	"time"
 	"time"
 
 
@@ -111,3 +113,6 @@ type ConjureConfig struct {
 	// Logger is used for logging diagnostics.
 	// Logger is used for logging diagnostics.
 	Logger common.Logger
 	Logger common.Logger
 }
 }
+
+// Dialer is the dialer function type expected by gotapdance.
+type Dialer func(ctx context.Context, network, laddr, raddr string) (net.Conn, error)

+ 6 - 6
psiphon/common/refraction/refraction.go

@@ -179,9 +179,6 @@ func (c *stationConn) GetMetrics() common.LogFields {
 	return logFields
 	return logFields
 }
 }
 
 
-// Dialer is the dialer function type expected by gotapdance.
-type Dialer func(ctx context.Context, network, laddr, raddr string) (net.Conn, error)
-
 // DialTapDance establishes a new TapDance connection to a TapDance station
 // DialTapDance establishes a new TapDance connection to a TapDance station
 // specified in the config assets and forwarding through to the Psiphon server
 // specified in the config assets and forwarding through to the Psiphon server
 // specified by address.
 // specified by address.
@@ -1025,10 +1022,13 @@ func (conn *refractionConn) GetMetrics() common.LogFields {
 			logFields["conjure_stun"] = conn.conjureMetricSTUNServerAddress
 			logFields["conjure_stun"] = conn.conjureMetricSTUNServerAddress
 		}
 		}
 
 
-		logFields["conjure_network"] = conn.RemoteAddr().Network()
-
-		_, port, err := net.SplitHostPort(conn.RemoteAddr().String())
+		host, port, err := net.SplitHostPort(conn.RemoteAddr().String())
 		if err == nil {
 		if err == nil {
+			network := "IPv4"
+			if IP := net.ParseIP(host); IP != nil && IP.To4() == nil {
+				network = "IPv6"
+			}
+			logFields["conjure_network"] = network
 			logFields["conjure_port_number"] = port
 			logFields["conjure_port_number"] = port
 		}
 		}
 	}
 	}

+ 3 - 3
psiphon/common/refraction/refraction_disabled.go

@@ -1,3 +1,4 @@
+//go:build !PSIPHON_ENABLE_REFRACTION_NETWORKING
 // +build !PSIPHON_ENABLE_REFRACTION_NETWORKING
 // +build !PSIPHON_ENABLE_REFRACTION_NETWORKING
 
 
 /*
 /*
@@ -25,7 +26,6 @@ import (
 	"context"
 	"context"
 	"net"
 	"net"
 
 
-	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common"
 	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/errors"
 	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/errors"
 )
 )
 
 
@@ -45,12 +45,12 @@ func Listen(_ string) (net.Listener, error) {
 }
 }
 
 
 // DialTapDance establishes a new Tapdance connection to a Tapdance station.
 // DialTapDance establishes a new Tapdance connection to a Tapdance station.
-func DialTapDance(_ context.Context, _ bool, _ string, _ common.NetDialer, _ string) (net.Conn, error) {
+func DialTapDance(_ context.Context, _ bool, _ string, _ Dialer, _ string) (net.Conn, error) {
 	return nil, errors.TraceNew("operation is not enabled")
 	return nil, errors.TraceNew("operation is not enabled")
 }
 }
 
 
 // DialConjure establishes a new Conjure connection to a Conjure station.
 // DialConjure establishes a new Conjure connection to a Conjure station.
-func DialConjure(_ context.Context, _ bool, _ string, _ common.NetDialer, _ string, _ *ConjureConfig) (net.Conn, error) {
+func DialConjure(_ context.Context, _ bool, _ string, _ Dialer, _ string, _ *ConjureConfig) (net.Conn, error) {
 	return nil, errors.TraceNew("operation is not enabled")
 	return nil, errors.TraceNew("operation is not enabled")
 }
 }
 
 

+ 6 - 6
psiphon/config.go

@@ -2472,7 +2472,7 @@ func (config *Config) setDialParametersHash() {
 	}
 	}
 
 
 	if config.DNSResolverProtocolTransformScopedSpecNames != nil {
 	if config.DNSResolverProtocolTransformScopedSpecNames != nil {
-		hash.Write([]byte(""))
+		hash.Write([]byte("DNSResolverProtocolTransformScopedSpecNames"))
 		encodedDNSResolverProtocolTransformScopedSpecNames, _ :=
 		encodedDNSResolverProtocolTransformScopedSpecNames, _ :=
 			json.Marshal(config.DNSResolverProtocolTransformScopedSpecNames)
 			json.Marshal(config.DNSResolverProtocolTransformScopedSpecNames)
 		hash.Write(encodedDNSResolverProtocolTransformScopedSpecNames)
 		hash.Write(encodedDNSResolverProtocolTransformScopedSpecNames)
@@ -2506,7 +2506,7 @@ func (config *Config) setDialParametersHash() {
 	}
 	}
 
 
 	if config.DirectHTTPProtocolTransformScopedSpecNames != nil {
 	if config.DirectHTTPProtocolTransformScopedSpecNames != nil {
-		hash.Write([]byte(""))
+		hash.Write([]byte("DirectHTTPProtocolTransformScopedSpecNames"))
 		encodedDirectHTTPProtocolTransformScopedSpecNames, _ :=
 		encodedDirectHTTPProtocolTransformScopedSpecNames, _ :=
 			json.Marshal(config.DirectHTTPProtocolTransformScopedSpecNames)
 			json.Marshal(config.DirectHTTPProtocolTransformScopedSpecNames)
 		hash.Write(encodedDirectHTTPProtocolTransformScopedSpecNames)
 		hash.Write(encodedDirectHTTPProtocolTransformScopedSpecNames)
@@ -2525,7 +2525,7 @@ func (config *Config) setDialParametersHash() {
 	}
 	}
 
 
 	if config.FrontedHTTPProtocolTransformScopedSpecNames != nil {
 	if config.FrontedHTTPProtocolTransformScopedSpecNames != nil {
-		hash.Write([]byte(""))
+		hash.Write([]byte("FrontedHTTPProtocolTransformScopedSpecNames"))
 		encodedFrontedHTTPProtocolTransformScopedSpecNames, _ :=
 		encodedFrontedHTTPProtocolTransformScopedSpecNames, _ :=
 			json.Marshal(config.FrontedHTTPProtocolTransformScopedSpecNames)
 			json.Marshal(config.FrontedHTTPProtocolTransformScopedSpecNames)
 		hash.Write(encodedFrontedHTTPProtocolTransformScopedSpecNames)
 		hash.Write(encodedFrontedHTTPProtocolTransformScopedSpecNames)
@@ -2544,7 +2544,7 @@ func (config *Config) setDialParametersHash() {
 	}
 	}
 
 
 	if config.OSSHObfuscatorSeedTransformScopedSpecNames != nil {
 	if config.OSSHObfuscatorSeedTransformScopedSpecNames != nil {
-		hash.Write([]byte(""))
+		hash.Write([]byte("OSSHObfuscatorSeedTransformScopedSpecNames"))
 		encodedOSSHObfuscatorSeedTransformScopedSpecNames, _ :=
 		encodedOSSHObfuscatorSeedTransformScopedSpecNames, _ :=
 			json.Marshal(config.OSSHObfuscatorSeedTransformScopedSpecNames)
 			json.Marshal(config.OSSHObfuscatorSeedTransformScopedSpecNames)
 		hash.Write(encodedOSSHObfuscatorSeedTransformScopedSpecNames)
 		hash.Write(encodedOSSHObfuscatorSeedTransformScopedSpecNames)
@@ -2563,7 +2563,7 @@ func (config *Config) setDialParametersHash() {
 	}
 	}
 
 
 	if config.ObfuscatedQUICNonceTransformScopedSpecNames != nil {
 	if config.ObfuscatedQUICNonceTransformScopedSpecNames != nil {
-		hash.Write([]byte(""))
+		hash.Write([]byte("ObfuscatedQUICNonceTransformScopedSpecNames"))
 		encodedObfuscatedQUICNonceTransformScopedSpecNames, _ :=
 		encodedObfuscatedQUICNonceTransformScopedSpecNames, _ :=
 			json.Marshal(config.ObfuscatedQUICNonceTransformScopedSpecNames)
 			json.Marshal(config.ObfuscatedQUICNonceTransformScopedSpecNames)
 		hash.Write(encodedObfuscatedQUICNonceTransformScopedSpecNames)
 		hash.Write(encodedObfuscatedQUICNonceTransformScopedSpecNames)
@@ -2581,7 +2581,7 @@ func (config *Config) setDialParametersHash() {
 	}
 	}
 
 
 	if config.OSSHPrefixScopedSpecNames != nil {
 	if config.OSSHPrefixScopedSpecNames != nil {
-		hash.Write([]byte(""))
+		hash.Write([]byte("OSSHPrefixScopedSpecNames"))
 		encodedOSSHPrefixScopedSpecNames, _ := json.Marshal(config.OSSHPrefixScopedSpecNames)
 		encodedOSSHPrefixScopedSpecNames, _ := json.Marshal(config.OSSHPrefixScopedSpecNames)
 		hash.Write(encodedOSSHPrefixScopedSpecNames)
 		hash.Write(encodedOSSHPrefixScopedSpecNames)
 	}
 	}

+ 4 - 0
psiphon/server/api.go

@@ -939,6 +939,10 @@ var baseDialParams = []requestParamSpec{
 	{"conjure_cached", isBooleanFlag, requestParamOptional | requestParamLogFlagAsBool},
 	{"conjure_cached", isBooleanFlag, requestParamOptional | requestParamLogFlagAsBool},
 	{"conjure_delay", isIntString, requestParamOptional | requestParamLogStringAsInt},
 	{"conjure_delay", isIntString, requestParamOptional | requestParamLogStringAsInt},
 	{"conjure_transport", isAnyString, requestParamOptional},
 	{"conjure_transport", isAnyString, requestParamOptional},
+	{"conjure_prefix", isAnyString, requestParamOptional},
+	{"conjure_stun", isAnyString, requestParamOptional},
+	{"conjure_network", isAnyString, requestParamOptional},
+	{"conjure_port_number", isAnyString, requestParamOptional},
 	{"split_tunnel", isBooleanFlag, requestParamOptional | requestParamLogFlagAsBool},
 	{"split_tunnel", isBooleanFlag, requestParamOptional | requestParamLogFlagAsBool},
 	{"split_tunnel_regions", isRegionCode, requestParamOptional | requestParamArray},
 	{"split_tunnel_regions", isRegionCode, requestParamOptional | requestParamArray},
 	{"dns_preresolved", isAnyString, requestParamOptional},
 	{"dns_preresolved", isAnyString, requestParamOptional},