Rehabilitate dump tool

This commit is contained in:
lash 2025-01-17 10:36:02 +00:00
parent ca7dc6779a
commit 825c06c3bb
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
3 changed files with 26 additions and 21 deletions

View File

@ -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]

View File

@ -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"

View File

@ -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)