ソースを参照

Generate tls secrets

tags/1.0^2
9seconds 6年前
コミット
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},

読み込み中…
キャンセル
保存