diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/web.go | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/lib/web.go b/lib/web.go deleted file mode 100644 index 814d016..0000000 --- a/lib/web.go +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright © 2020 rsiddharth <s@ricketyspace.net> -// SPDX-License-Identifier: ISC - -package lib - -type Profile map[string]string - -var webSessionEncryptionKey []byte -var webUidCounter int64 -var webUserProfiles map[string]Profile = make(map[string]Profile, 0) - -func init() { - var err error - - webSessionEncryptionKey, err = RandomBytes(16) - if err != nil { - panic(err) - } - webUidCounter = 10000 -} - -func WebGenUid() int64 { - uid := webUidCounter - webUidCounter += 1 - - return uid -} - -func WebParseKeyValue(encoded string) map[string]string { - m := make(map[string]string, 0) - - kvs := StrSplitAt('&', encoded) - for i := 0; i < len(kvs); i++ { - kv := StrSplitAt('=', kvs[i]) - m[StripSpaceChars(kv[0])] = kv[1] - } - return m -} - -func WebProfileFor(email string) string { - e := WebSanitizeEmail(email) - if len(e) == 0 { - panic("email invalid") - } - - if p, ok := webUserProfiles[e]; ok { - // Profile already exists. - return WebEncodeProfile(p) - } - - // Create profile. - p := make(Profile, 0) - p["email"] = e - p["uid"] = NumToStr(WebGenUid()) - p["role"] = "user" - webUserProfiles[e] = p - - return WebEncodeProfile(p) -} - -func WebEncodeProfile(p Profile) string { - ep := "email=" + p["email"] // Encoded profile. - ep += "&uid=" + p["uid"] - ep += "&role=" + p["role"] - return ep -} - -func WebDecodeProfile(encoded string) Profile { - return WebParseKeyValue(encoded) -} - -func WebEncryptProfile(encoded string) []byte { - return AESEncryptECB(StrToBytes(encoded), webSessionEncryptionKey) -} - -func WebDecryptProfile(cipher []byte) string { - return BytesToStr(AESDecryptECB(cipher, webSessionEncryptionKey)) -} - -func WebSanitizeEmail(email string) string { - if len(email) < 1 { - return "" - } - se := "" // sanitized email - - // Strip meta characters - for i := 0; i < len(email); i++ { - if email[i] == '&' || email[i] == '=' { - continue - } - se += string(email[i]) - } - return se -} |