Procházet zdrojové kódy

Generate tls secrets

tags/1.0^2
9seconds před 6 roky
rodič
revize
559a1a666b
3 změnil soubory, kde provedl 14 přidání a 9 odebrání
  1. 2
    2
      cli/generate.go
  2. 6
    6
      config/config.go
  3. 6
    1
      main.go

+ 2
- 2
cli/generate.go Zobrazit soubor

@@ -7,7 +7,7 @@ import (
7 7
 	"github.com/9seconds/mtg/config"
8 8
 )
9 9
 
10
-func Generate(secretType string) {
10
+func Generate(secretType, hostname string) {
11 11
 	data := make([]byte, config.SimpleSecretLength)
12 12
 	if _, err := rand.Read(data); err != nil {
13 13
 		panic(err)
@@ -21,6 +21,6 @@ func Generate(secretType string) {
21 21
 	case "secured":
22 22
 		PrintStdout("dd" + secret)
23 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 Zobrazit soubor

@@ -169,6 +169,11 @@ func Init(options ...Opt) error { // nolint: gocyclo, funlen
169 169
 		C.Secret = bytes.TrimPrefix(C.Secret, []byte{0xdd})
170 170
 	case len(C.Secret) == SimpleSecretLength:
171 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 177
 	default:
173 178
 		return errors.New("incorrect secret")
174 179
 	}
@@ -225,10 +230,5 @@ func Printable() interface{} {
225 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 Zobrazit soubor

@@ -19,6 +19,11 @@ var (
19 19
 
20 20
 	generateSecretCommand = app.Command("generate-secret",
21 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 27
 	generateSecretType = generateSecretCommand.Arg("type",
23 28
 		"A type of secret to generate. Valid options are 'simple', 'secured' and 'tls'").
24 29
 		Required().
@@ -123,7 +128,7 @@ func main() {
123 128
 
124 129
 	switch kingpin.MustParse(app.Parse(os.Args[1:])) {
125 130
 	case generateSecretCommand.FullCommand():
126
-		cli.Generate(*generateSecretType)
131
+		cli.Generate(*generateSecretType, *generateCloakHost)
127 132
 	case proxyCommand.FullCommand():
128 133
 		err := config.Init(
129 134
 			config.Opt{Option: config.OptionTypeDebug, Value: *proxyDebug},

Načítá se…
Zrušit
Uložit