|
@@ -934,6 +934,17 @@ func MakeDialParameters(
|
|
|
if protocol.TunnelProtocolUsesMeek(dialParams.TunnelProtocol) ||
|
|
if protocol.TunnelProtocolUsesMeek(dialParams.TunnelProtocol) ||
|
|
|
dialParams.ConjureAPIRegistration {
|
|
dialParams.ConjureAPIRegistration {
|
|
|
|
|
|
|
|
|
|
+ // For tactics requests, AddPsiphonFrontingHeader is set when set for
|
|
|
|
|
+ // the related tunnel protocol. E.g., FRONTED-OSSH-MEEK for
|
|
|
|
|
+ // FRONTED-MEEK-TACTICS. AddPsiphonFrontingHeader is not replayed.
|
|
|
|
|
+ addPsiphonFrontingHeader := false
|
|
|
|
|
+ if dialParams.FrontingProviderID != "" {
|
|
|
|
|
+ addPsiphonFrontingHeader = common.Contains(
|
|
|
|
|
+ p.LabeledTunnelProtocols(
|
|
|
|
|
+ parameters.AddFrontingProviderPsiphonFrontingHeader, dialParams.FrontingProviderID),
|
|
|
|
|
+ dialParams.TunnelProtocol)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
dialParams.meekConfig = &MeekConfig{
|
|
dialParams.meekConfig = &MeekConfig{
|
|
|
DiagnosticID: serverEntry.GetDiagnosticID(),
|
|
DiagnosticID: serverEntry.GetDiagnosticID(),
|
|
|
Parameters: config.GetParameters(),
|
|
Parameters: config.GetParameters(),
|
|
@@ -949,6 +960,7 @@ func MakeDialParameters(
|
|
|
RandomizedTLSProfileSeed: dialParams.RandomizedTLSProfileSeed,
|
|
RandomizedTLSProfileSeed: dialParams.RandomizedTLSProfileSeed,
|
|
|
UseObfuscatedSessionTickets: dialParams.TunnelProtocol == protocol.TUNNEL_PROTOCOL_UNFRONTED_MEEK_SESSION_TICKET,
|
|
UseObfuscatedSessionTickets: dialParams.TunnelProtocol == protocol.TUNNEL_PROTOCOL_UNFRONTED_MEEK_SESSION_TICKET,
|
|
|
SNIServerName: dialParams.MeekSNIServerName,
|
|
SNIServerName: dialParams.MeekSNIServerName,
|
|
|
|
|
+ AddPsiphonFrontingHeader: addPsiphonFrontingHeader,
|
|
|
VerifyServerName: dialParams.MeekVerifyServerName,
|
|
VerifyServerName: dialParams.MeekVerifyServerName,
|
|
|
VerifyPins: dialParams.MeekVerifyPins,
|
|
VerifyPins: dialParams.MeekVerifyPins,
|
|
|
HostHeader: dialParams.MeekHostHeader,
|
|
HostHeader: dialParams.MeekHostHeader,
|
|
@@ -1066,11 +1078,11 @@ func (dialParams *DialParameters) GetTLSVersionForMetrics() string {
|
|
|
// There are two concerns regarding which dial parameter fields are safe to
|
|
// There are two concerns regarding which dial parameter fields are safe to
|
|
|
// exchange:
|
|
// exchange:
|
|
|
//
|
|
//
|
|
|
-// - Unlike signed server entries, there's no independent trust anchor
|
|
|
|
|
-// that can certify that the exchange data is valid.
|
|
|
|
|
|
|
+// - Unlike signed server entries, there's no independent trust anchor
|
|
|
|
|
+// that can certify that the exchange data is valid.
|
|
|
//
|
|
//
|
|
|
-// - While users should only perform the exchange with trusted peers,
|
|
|
|
|
-// the user's trust in their peer may be misplaced.
|
|
|
|
|
|
|
+// - While users should only perform the exchange with trusted peers,
|
|
|
|
|
+// the user's trust in their peer may be misplaced.
|
|
|
//
|
|
//
|
|
|
// This presents the possibility of attack such as the peer sending dial
|
|
// This presents the possibility of attack such as the peer sending dial
|
|
|
// parameters that could be used to trace/monitor/flag the importer; or
|
|
// parameters that could be used to trace/monitor/flag the importer; or
|