|
|
@@ -167,17 +167,28 @@ func Init(options ...Opt) error { // nolint: gocyclo, funlen
|
|
167
|
167
|
case len(C.Secret) == 1+SimpleSecretLength && bytes.HasPrefix(C.Secret, []byte{0xdd}):
|
|
168
|
168
|
C.SecretMode = SecretModeSecured
|
|
169
|
169
|
C.Secret = bytes.TrimPrefix(C.Secret, []byte{0xdd})
|
|
170
|
|
- case len(C.Secret) == SimpleSecretLength:
|
|
171
|
|
- C.SecretMode = SecretModeSimple
|
|
172
|
|
- case bytes.HasPrefix(C.Secret, []byte{0xee}):
|
|
|
170
|
+ case len(C.Secret) > SimpleSecretLength && bytes.HasPrefix(C.Secret, []byte{0xee}):
|
|
173
|
171
|
C.SecretMode = SecretModeTLS
|
|
174
|
172
|
secret := bytes.TrimPrefix(C.Secret, []byte{0xee})
|
|
175
|
173
|
C.Secret = secret[:SimpleSecretLength]
|
|
176
|
174
|
C.CloakHost = string(secret[SimpleSecretLength:])
|
|
|
175
|
+ case len(C.Secret) == SimpleSecretLength:
|
|
|
176
|
+ C.SecretMode = SecretModeSimple
|
|
177
|
177
|
default:
|
|
178
|
178
|
return errors.New("incorrect secret")
|
|
179
|
179
|
}
|
|
180
|
180
|
|
|
|
181
|
+ if C.CloakHost != "" {
|
|
|
182
|
+ addrs, err := net.LookupHost(C.CloakHost)
|
|
|
183
|
+ if err != nil {
|
|
|
184
|
+ return fmt.Errorf("cannot resolve address of %s host: %w", C.CloakHost, err)
|
|
|
185
|
+ }
|
|
|
186
|
+
|
|
|
187
|
+ if len(addrs) == 0 {
|
|
|
188
|
+ return fmt.Errorf("no known ip addresses for the host %s", C.CloakHost)
|
|
|
189
|
+ }
|
|
|
190
|
+ }
|
|
|
191
|
+
|
|
181
|
192
|
return nil
|
|
182
|
193
|
}
|
|
183
|
194
|
|