encode registration key on command line
Iris Lightshard nilix@nilfm.cc
4 files changed,
27 insertions(+),
9 deletions(-)
M
cmd/cmd.go
→
cmd/cmd.go
@@ -1,16 +1,28 @@
package cmd import ( - _ "fmt" + "fmt" + "hacklab.nilfm.cc/felt/register" "hacklab.nilfm.cc/quartzgun/auth" - _ "strings" + "strconv" + "time" ) -func ProcessCmd(args []string, userStore auth.UserStore) bool { +func ProcessCmd(args []string, userStore auth.UserStore, crypto register.SymmetricCrypto) bool { if len(args) == 1 { return false } switch args[1] { + case "register": + now := time.Now().UnixMicro() + strNow := strconv.FormatInt(now, 10) + self, err := crypto.Encrypt(strNow) + if err == nil { + fmt.Print("This is the registration key: ") + fmt.Println(self) + } else { + fmt.Printf("%v\n", err) + } case "adduser": if len(args) < 4 { return help()
M
config/config.go
→
config/config.go
@@ -174,6 +174,8 @@ kvp := strings.Split(l, "=")
k := strings.TrimSpace(kvp[0]) v := strings.TrimSpace(kvp[1]) switch k { + case "registrationSecret": + cfg.RegistrationSecret = v case "mongoURI": cfg.MongoURI = v case "uploads":
M
main.go
→
main.go
@@ -6,6 +6,7 @@ "hacklab.nilfm.cc/felt/cmd"
"hacklab.nilfm.cc/felt/config" "hacklab.nilfm.cc/felt/gametable" "hacklab.nilfm.cc/felt/mongodb" + "hacklab.nilfm.cc/felt/register" "hacklab.nilfm.cc/quartzgun/indentalUserDB" "log" "net"@@ -33,7 +34,8 @@
udb := indentalUserDB.CreateIndentalUserDB( filepath.Join(config.GetConfigLocation(), "user.db")) - if cmd.ProcessCmd(os.Args, udb) { + crypto := ®ister.SymmetricCrypt{Secret: cfg.RegistrationSecret} + if cmd.ProcessCmd(os.Args, udb, crypto) { os.Exit(0) }
M
register/register.go
→
register/register.go
@@ -4,7 +4,7 @@ import (
"context" "crypto/aes" "crypto/cipher" - "encoding/base64" + "encoding/hex" "html/template" "net/http"@@ -13,7 +13,7 @@ "hacklab.nilfm.cc/quartzgun/renderer"
"hacklab.nilfm.cc/quartzgun/router" ) -var bytes = []byte{99, 207, 33, 57, 28, 01, 50, 76, 01} +var bytes = []byte{99, 207, 33, 57, 28, 01, 50, 76, 01, 92, 33, 10, 48, 07, 00, 250} type SymmetricCrypto interface { Encode(b []byte) string@@ -27,11 +27,11 @@ Secret string
} func (self *SymmetricCrypt) Encode(b []byte) string { - return base64.StdEncoding.EncodeToString(b) + return hex.EncodeToString(b) } func (self *SymmetricCrypt) Decode(s string) []byte { - data, err := base64.StdEncoding.DecodeString(s) + data, err := hex.DecodeString(s) if err != nil { panic(err) }@@ -64,7 +64,9 @@ }
func WithCrypto(next http.Handler, crypto SymmetricCrypto) http.Handler { handlerFunc := func(w http.ResponseWriter, req *http.Request) { - *req = *req.WithContext(context.WithValue(req.Context(), "crypto", crypto)) + //urlParams := req.Context().Value("params").(map[string]string) + //cipher := urlParams["cipher"] + next.ServeHTTP(w, req) }