From 825c06c3bb6a9e44138ff68aabe59c8d1bf96950 Mon Sep 17 00:00:00 2001 From: lash Date: Fri, 17 Jan 2025 10:36:02 +0000 Subject: [PATCH 1/6] Rehabilitate dump tool --- debug/db.go | 26 +++++++++++++------------- debug/db_debug.go | 3 +++ devtools/store/dump/main.go | 18 ++++++++++-------- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/debug/db.go b/debug/db.go index ba01abe..11dd48f 100644 --- a/debug/db.go +++ b/debug/db.go @@ -32,18 +32,17 @@ func (k KeyInfo) String() string { func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { o := KeyInfo{} - b := []byte(sessionId) + //b := []byte(sessionId) - if len(k) <= len(b) { - return o, fmt.Errorf("storage key missing") - } +// if len(k) <= len(b) { +// return o, fmt.Errorf("storage key missing") +// } o.SessionId = sessionId - o.Typ = uint8(k[0]) k = k[1:] - o.SessionId = string(k[:len(b)]) - k = k[len(b):] + //o.SessionId = string(k[:len(b)]) + //k = k[len(b):] if o.Typ == visedb.DATATYPE_USERDATA { if len(k) == 0 { @@ -53,22 +52,23 @@ func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { o.SubTyp = storedb.DataTyp(v) o.Label = subTypToString(o.SubTyp) k = k[2:] + if len(k) != 0 { + return o, fmt.Errorf("excess key information: %x", k) + } } else { o.Label = typToString(o.Typ) + k = k[2:] } - if len(k) != 0 { - return o, fmt.Errorf("excess key information") - } - + return o, nil } func FromKey(k []byte) (KeyInfo, error) { o := KeyInfo{} - if len(k) < 4 { - return o, fmt.Errorf("insufficient key length") + if len(k) < 3 { + return o, fmt.Errorf("insufficient key length: %d", len(k)) } sessionIdBytes := k[1:len(k)-2] diff --git a/debug/db_debug.go b/debug/db_debug.go index 13de8ac..03be181 100644 --- a/debug/db_debug.go +++ b/debug/db_debug.go @@ -29,6 +29,9 @@ func init() { dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_PUBLIC_KEY_REVERSE] = "public_key_reverse" dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_ACTIVE_DECIMAL] = "active decimal" dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_ACTIVE_ADDRESS] = "active address" + dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_INCORRECT_PIN_ATTEMPTS] = "incorrect pin attempts" + dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_SELECTED_LANGUAGE_CODE] = "selected language" + dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_INITIAL_LANGUAGE_CODE] = "initial language" dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_SYMBOLS] = "voucher symbols" dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_BALANCES] = "voucher balances" dbTypStr[db.DATATYPE_USERDATA + 1 + storedb.DATA_VOUCHER_DECIMALS] = "voucher decimals" diff --git a/devtools/store/dump/main.go b/devtools/store/dump/main.go index d896da8..cd9304d 100644 --- a/devtools/store/dump/main.go +++ b/devtools/store/dump/main.go @@ -19,8 +19,9 @@ var ( scriptDir = path.Join("services", "registration") ) -func formatItem(k []byte, v []byte) (string, error) { - o, err := debug.FromKey(k) +func formatItem(k []byte, v []byte, sessionId string) (string, error) { + //o, err := debug.FromKey(k) + o, err := debug.ToKeyInfo(k, sessionId) if err != nil { return "", err } @@ -38,16 +39,16 @@ func main() { var err error flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&connStr, "c", ".state", "connection string") + flag.StringVar(&connStr, "c", "", "connection string") flag.BoolVar(&engineDebug, "d", false, "use engine debug output") flag.Parse() - if connStr != "" { + if connStr == "" { connStr = config.DbConn() } connData, err := storage.ToConnData(connStr) if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v", err) + fmt.Fprintf(os.Stderr, "connstr err: %v\n", err) os.Exit(1) } @@ -65,9 +66,10 @@ func main() { fmt.Fprintf(os.Stderr, "get userdata db: %v\n", err.Error()) os.Exit(1) } + store.SetSession(sessionId) store.SetPrefix(db.DATATYPE_USERDATA) - d, err := store.Dump(ctx, []byte(sessionId)) + d, err := store.Dump(ctx, []byte("")) if err != nil { fmt.Fprintf(os.Stderr, "store dump fail: %v\n", err.Error()) os.Exit(1) @@ -78,9 +80,9 @@ func main() { if k == nil { break } - r, err := formatItem(k, v) + r, err := formatItem(append([]byte{db.DATATYPE_USERDATA}, k...), v, sessionId) if err != nil { - fmt.Fprintf(os.Stderr, "format db item error: %v", err) + fmt.Fprintf(os.Stderr, "format db item error: %v\n", err) os.Exit(1) } fmt.Printf(r) -- 2.45.2 From 9b66146ef121286357046bf56d11df68a7ee51cd Mon Sep 17 00:00:00 2001 From: lash Date: Fri, 17 Jan 2025 10:36:29 +0000 Subject: [PATCH 2/6] Remove generate tool (use devapi main instead) --- devtools/store/generate/main.go | 86 --------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 devtools/store/generate/main.go diff --git a/devtools/store/generate/main.go b/devtools/store/generate/main.go deleted file mode 100644 index bfcc483..0000000 --- a/devtools/store/generate/main.go +++ /dev/null @@ -1,86 +0,0 @@ -package main - -import ( - "context" - "crypto/sha1" - "flag" - "fmt" - "os" - "path" - - testdataloader "github.com/peteole/testdata-loader" - "git.defalsify.org/vise.git/logging" - "git.grassecon.net/grassrootseconomics/sarafu-vise/config" - "git.grassecon.net/grassrootseconomics/visedriver/storage" - "git.grassecon.net/grassrootseconomics/sarafu-vise/store" - storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db" -) - -var ( - logg = logging.NewVanilla() - baseDir = testdataloader.GetBasePath() - scriptDir = path.Join("services", "registration") -) - -func main() { - config.LoadConfig() - - var connStr string - var sessionId string - var database string - var engineDebug bool - var err error - - flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") - flag.StringVar(&connStr, "c", "", "connection string") - flag.BoolVar(&engineDebug, "d", false, "use engine debug output") - flag.Parse() - - if connStr != "" { - connStr = config.DbConn() - } - connData, err := storage.ToConnData(connStr) - if err != nil { - fmt.Fprintf(os.Stderr, "connstr err: %v", err) - os.Exit(1) - } - - logg.Infof("start command", "conn", connData) - - ctx := context.Background() - ctx = context.WithValue(ctx, "SessionId", sessionId) - ctx = context.WithValue(ctx, "Database", database) - - resourceDir := scriptDir - menuStorageService := storage.NewMenuStorageService(connData, resourceDir) - - userDb, err := menuStorageService.GetUserdataDb(ctx) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - userStore := store.UserDataStore{userDb} - - h := sha1.New() - h.Write([]byte(sessionId)) - address := h.Sum(nil) - addressString := fmt.Sprintf("%x", address) - - err = userStore.WriteEntry(ctx, sessionId, storedb.DATA_PUBLIC_KEY, []byte(addressString)) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - - err = userStore.WriteEntry(ctx, addressString, storedb.DATA_PUBLIC_KEY_REVERSE, []byte(sessionId)) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } - - err = userDb.Close() - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - os.Exit(1) - } -} -- 2.45.2 From ab03e6d529a6e31151fb1bd5b097497dcaf5c46d Mon Sep 17 00:00:00 2001 From: lash Date: Fri, 17 Jan 2025 11:09:30 +0000 Subject: [PATCH 3/6] Rehabilitate debug db tets, improve dump format --- debug/db.go | 20 +------------------- debug/db_test.go | 2 -- devtools/store/dump/main.go | 9 +++++++-- 3 files changed, 8 insertions(+), 23 deletions(-) diff --git a/debug/db.go b/debug/db.go index 11dd48f..d241a40 100644 --- a/debug/db.go +++ b/debug/db.go @@ -32,17 +32,10 @@ func (k KeyInfo) String() string { func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { o := KeyInfo{} - //b := []byte(sessionId) - -// if len(k) <= len(b) { -// return o, fmt.Errorf("storage key missing") -// } - + o.SessionId = sessionId o.Typ = uint8(k[0]) k = k[1:] - //o.SessionId = string(k[:len(b)]) - //k = k[len(b):] if o.Typ == visedb.DATATYPE_USERDATA { if len(k) == 0 { @@ -64,17 +57,6 @@ func ToKeyInfo(k []byte, sessionId string) (KeyInfo, error) { return o, nil } -func FromKey(k []byte) (KeyInfo, error) { - o := KeyInfo{} - - if len(k) < 3 { - return o, fmt.Errorf("insufficient key length: %d", len(k)) - } - - sessionIdBytes := k[1:len(k)-2] - return ToKeyInfo(k, string(sessionIdBytes)) -} - func subTypToString(v storedb.DataTyp) string { return dbTypStr[v + visedb.DATATYPE_USERDATA + 1] } diff --git a/debug/db_test.go b/debug/db_test.go index c8c4d30..4c89fa9 100644 --- a/debug/db_test.go +++ b/debug/db_test.go @@ -10,7 +10,6 @@ import ( func TestDebugDbSubKeyInfo(t *testing.T) { s := "foo" b := []byte{0x20} - b = append(b, []byte(s)...) b = append(b, []byte{0x00, 0x02}...) r, err := ToKeyInfo(b, s) if err != nil { @@ -56,7 +55,6 @@ func TestDebugDbKeyInfo(t *testing.T) { func TestDebugDbKeyInfoRestore(t *testing.T) { s := "bar" b := []byte{visedb.DATATYPE_USERDATA} - b = append(b, []byte(s)...) k := storedb.ToBytes(storedb.DATA_ACTIVE_SYM) b = append(b, k...) diff --git a/devtools/store/dump/main.go b/devtools/store/dump/main.go index cd9304d..c1879bf 100644 --- a/devtools/store/dump/main.go +++ b/devtools/store/dump/main.go @@ -20,12 +20,12 @@ var ( ) func formatItem(k []byte, v []byte, sessionId string) (string, error) { - //o, err := debug.FromKey(k) o, err := debug.ToKeyInfo(k, sessionId) if err != nil { return "", err } - s := fmt.Sprintf("%vValue: %v\n\n", o, string(v)) + s := fmt.Sprintf("%v\t%v\n", o.Label, string(v)) + return s, nil } @@ -37,6 +37,7 @@ func main() { var database string var engineDebug bool var err error + var first bool flag.StringVar(&sessionId, "session-id", "075xx2123", "session id") flag.StringVar(&connStr, "c", "", "connection string") @@ -80,6 +81,10 @@ func main() { if k == nil { break } + if !first { + fmt.Printf("Session ID: %s\n---\n", sessionId) + first = true + } r, err := formatItem(append([]byte{db.DATATYPE_USERDATA}, k...), v, sessionId) if err != nil { fmt.Fprintf(os.Stderr, "format db item error: %v\n", err) -- 2.45.2 From bc2abc2464b3d3db83161436270228c72e10a193 Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 18 Jan 2025 08:23:40 +0000 Subject: [PATCH 4/6] Update govise dep, dump keys fix --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9148b5f..733e4d4 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250115000535-e2d329b3f739 + git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3 git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250115003256-c0534ede1b63 diff --git a/go.sum b/go.sum index c450543..f9de0e5 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.defalsify.org/vise.git v0.2.3-0.20250115000535-e2d329b3f739 h1:w7pj1oh7jXrfajahVYU7m7AfHst4C6jNVzDVoaqJ7e8= -git.defalsify.org/vise.git v0.2.3-0.20250115000535-e2d329b3f739/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3 h1:jaSdMI6WAikIA26LIUxelECIS89qEAFyGugyEyNYPPw= +git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 h1:BenzGx6aDHKDwE23/mWIFD2InYIXyzHroZWV3MF5WUk= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f h1:FgccQi8vipX6dUt+GRiRDYHMR3UqC+plz73vw7y3fyU= -- 2.45.2 From 16cb2846b712794a9bf8f818b23fa4fad3f9b421 Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 18 Jan 2025 09:00:30 +0000 Subject: [PATCH 5/6] Update govise dep; removes hardcoded datatype --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 733e4d4..56f9718 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3 + git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250115003256-c0534ede1b63 diff --git a/go.sum b/go.sum index f9de0e5..5580d44 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3 h1:jaSdMI6WAikIA26LIUxelECIS89qEAFyGugyEyNYPPw= -git.defalsify.org/vise.git v0.2.3-0.20250115150139-d9e2356e47f3/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a h1:8gYSGdjDBxqdb4XRIGWmkP7wz1w6WsoRuyce+K0kREM= +git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 h1:BenzGx6aDHKDwE23/mWIFD2InYIXyzHroZWV3MF5WUk= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f h1:FgccQi8vipX6dUt+GRiRDYHMR3UqC+plz73vw7y3fyU= -- 2.45.2 From c719db8b920cbb4acd48bb1715aca078ba9d5d3a Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 18 Jan 2025 19:35:48 +0000 Subject: [PATCH 6/6] Update dep --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 56f9718..187953f 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a + git.defalsify.org/vise.git v0.2.3-0.20250118155735-c1256156ed8b git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250115003256-c0534ede1b63 diff --git a/go.sum b/go.sum index 5580d44..f45e963 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a h1:8gYSGdjDBxqdb4XRIGWmkP7wz1w6WsoRuyce+K0kREM= -git.defalsify.org/vise.git v0.2.3-0.20250118085844-93b0c2db1e5a/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250118155735-c1256156ed8b h1:ac6OThj6nqQb3TUyXHqv/vQOQUQZ98XKpYTBHZFbxUI= +git.defalsify.org/vise.git v0.2.3-0.20250118155735-c1256156ed8b/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05 h1:BenzGx6aDHKDwE23/mWIFD2InYIXyzHroZWV3MF5WUk= git.grassecon.net/grassrootseconomics/common v0.0.0-20250113174703-6afccefd1f05/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250115072214-bca7c5de969f h1:FgccQi8vipX6dUt+GRiRDYHMR3UqC+plz73vw7y3fyU= -- 2.45.2