Generate tls secrets

This commit is contained in:
9seconds
2019-11-05 11:01:29 +03:00
parent 4c5f1a5636
commit 559a1a666b
3 changed files with 14 additions and 9 deletions
+2 -2
View File
@@ -7,7 +7,7 @@ import (
"github.com/9seconds/mtg/config" "github.com/9seconds/mtg/config"
) )
func Generate(secretType string) { func Generate(secretType, hostname string) {
data := make([]byte, config.SimpleSecretLength) data := make([]byte, config.SimpleSecretLength)
if _, err := rand.Read(data); err != nil { if _, err := rand.Read(data); err != nil {
panic(err) panic(err)
@@ -21,6 +21,6 @@ func Generate(secretType string) {
case "secured": case "secured":
PrintStdout("dd" + secret) PrintStdout("dd" + secret)
default: default:
Fatal("Unknown secret type " + secret) PrintStdout("ee" + secret + hex.EncodeToString([]byte(hostname)))
} }
} }
+6 -6
View File
@@ -169,6 +169,11 @@ func Init(options ...Opt) error { // nolint: gocyclo, funlen
C.Secret = bytes.TrimPrefix(C.Secret, []byte{0xdd}) C.Secret = bytes.TrimPrefix(C.Secret, []byte{0xdd})
case len(C.Secret) == SimpleSecretLength: case len(C.Secret) == SimpleSecretLength:
C.SecretMode = SecretModeSimple C.SecretMode = SecretModeSimple
case bytes.HasPrefix(C.Secret, []byte{0xee}):
C.SecretMode = SecretModeTLS
secret := bytes.TrimPrefix(C.Secret, []byte{0xee})
C.Secret = secret[:SimpleSecretLength]
C.CloakHost = string(secret[SimpleSecretLength:])
default: default:
return errors.New("incorrect secret") return errors.New("incorrect secret")
} }
@@ -225,10 +230,5 @@ func Printable() interface{} {
panic(err) panic(err)
} }
rrv, err := json.Marshal(rv) return rv
if err != nil {
panic(err)
}
return rrv
} }
+6 -1
View File
@@ -19,6 +19,11 @@ var (
generateSecretCommand = app.Command("generate-secret", generateSecretCommand = app.Command("generate-secret",
"Generate new secret") "Generate new secret")
generateCloakHost = generateSecretCommand.Flag("cloak-host",
"A host to use for TLS cloaking.").
Short('c').
Default("storage.googleapis.com").
String()
generateSecretType = generateSecretCommand.Arg("type", generateSecretType = generateSecretCommand.Arg("type",
"A type of secret to generate. Valid options are 'simple', 'secured' and 'tls'"). "A type of secret to generate. Valid options are 'simple', 'secured' and 'tls'").
Required(). Required().
@@ -123,7 +128,7 @@ func main() {
switch kingpin.MustParse(app.Parse(os.Args[1:])) { switch kingpin.MustParse(app.Parse(os.Args[1:])) {
case generateSecretCommand.FullCommand(): case generateSecretCommand.FullCommand():
cli.Generate(*generateSecretType) cli.Generate(*generateSecretType, *generateCloakHost)
case proxyCommand.FullCommand(): case proxyCommand.FullCommand():
err := config.Init( err := config.Init(
config.Opt{Option: config.OptionTypeDebug, Value: *proxyDebug}, config.Opt{Option: config.OptionTypeDebug, Value: *proxyDebug},