all repos — felt @ b7888158b870cd74837ec8aa0a716b1834afd969

virtual tabletop for dungeons and dragons (and similar) using Go, MongoDB, and websockets

encode registration key on command line
Iris Lightshard nilix@nilfm.cc
commit

b7888158b870cd74837ec8aa0a716b1834afd969

parent

952f80dbc25de7d35aa59625ae75fc24e681b74e

4 files changed, 27 insertions(+), 9 deletions(-)

jump to
M cmd/cmd.gocmd/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.goconfig/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.gomain.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 := &register.SymmetricCrypt{Secret: cfg.RegistrationSecret} + if cmd.ProcessCmd(os.Args, udb, crypto) { os.Exit(0) }
M register/register.goregister/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) }