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

Generate tls secrets

tags/1.0^2
9seconds 6 лет назад
Родитель
Сommit
559a1a666b
3 измененных файлов: 14 добавлений и 9 удалений
  1. 2
    2
      cli/generate.go
  2. 6
    6
      config/config.go
  3. 6
    1
      main.go

+ 2
- 2
cli/generate.go Просмотреть файл

7
 	"github.com/9seconds/mtg/config"
7
 	"github.com/9seconds/mtg/config"
8
 )
8
 )
9
 
9
 
10
-func Generate(secretType string) {
10
+func Generate(secretType, hostname string) {
11
 	data := make([]byte, config.SimpleSecretLength)
11
 	data := make([]byte, config.SimpleSecretLength)
12
 	if _, err := rand.Read(data); err != nil {
12
 	if _, err := rand.Read(data); err != nil {
13
 		panic(err)
13
 		panic(err)
21
 	case "secured":
21
 	case "secured":
22
 		PrintStdout("dd" + secret)
22
 		PrintStdout("dd" + secret)
23
 	default:
23
 	default:
24
-		Fatal("Unknown secret type " + secret)
24
+		PrintStdout("ee" + secret + hex.EncodeToString([]byte(hostname)))
25
 	}
25
 	}
26
 }
26
 }

+ 6
- 6
config/config.go Просмотреть файл

169
 		C.Secret = bytes.TrimPrefix(C.Secret, []byte{0xdd})
169
 		C.Secret = bytes.TrimPrefix(C.Secret, []byte{0xdd})
170
 	case len(C.Secret) == SimpleSecretLength:
170
 	case len(C.Secret) == SimpleSecretLength:
171
 		C.SecretMode = SecretModeSimple
171
 		C.SecretMode = SecretModeSimple
172
+	case bytes.HasPrefix(C.Secret, []byte{0xee}):
173
+		C.SecretMode = SecretModeTLS
174
+		secret := bytes.TrimPrefix(C.Secret, []byte{0xee})
175
+		C.Secret = secret[:SimpleSecretLength]
176
+		C.CloakHost = string(secret[SimpleSecretLength:])
172
 	default:
177
 	default:
173
 		return errors.New("incorrect secret")
178
 		return errors.New("incorrect secret")
174
 	}
179
 	}
225
 		panic(err)
230
 		panic(err)
226
 	}
231
 	}
227
 
232
 
228
-	rrv, err := json.Marshal(rv)
229
-	if err != nil {
230
-		panic(err)
231
-	}
232
-
233
-	return rrv
233
+	return rv
234
 }
234
 }

+ 6
- 1
main.go Просмотреть файл

19
 
19
 
20
 	generateSecretCommand = app.Command("generate-secret",
20
 	generateSecretCommand = app.Command("generate-secret",
21
 		"Generate new secret")
21
 		"Generate new secret")
22
+	generateCloakHost = generateSecretCommand.Flag("cloak-host",
23
+		"A host to use for TLS cloaking.").
24
+		Short('c').
25
+		Default("storage.googleapis.com").
26
+		String()
22
 	generateSecretType = generateSecretCommand.Arg("type",
27
 	generateSecretType = generateSecretCommand.Arg("type",
23
 		"A type of secret to generate. Valid options are 'simple', 'secured' and 'tls'").
28
 		"A type of secret to generate. Valid options are 'simple', 'secured' and 'tls'").
24
 		Required().
29
 		Required().
123
 
128
 
124
 	switch kingpin.MustParse(app.Parse(os.Args[1:])) {
129
 	switch kingpin.MustParse(app.Parse(os.Args[1:])) {
125
 	case generateSecretCommand.FullCommand():
130
 	case generateSecretCommand.FullCommand():
126
-		cli.Generate(*generateSecretType)
131
+		cli.Generate(*generateSecretType, *generateCloakHost)
127
 	case proxyCommand.FullCommand():
132
 	case proxyCommand.FullCommand():
128
 		err := config.Init(
133
 		err := config.Init(
129
 			config.Opt{Option: config.OptionTypeDebug, Value: *proxyDebug},
134
 			config.Opt{Option: config.OptionTypeDebug, Value: *proxyDebug},

Загрузка…
Отмена
Сохранить