53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"inou/lib"
|
|
)
|
|
|
|
func main() {
|
|
if len(os.Args) < 3 {
|
|
fmt.Println("Usage: fix-lang <dossierID> <lang>")
|
|
fmt.Println(" fix-data <dossierID> - re-encrypt plaintext Data")
|
|
os.Exit(1)
|
|
}
|
|
dossierID := os.Args[1]
|
|
lang := os.Args[2]
|
|
|
|
if err := lib.Init(); err != nil {
|
|
log.Fatal("lib.Init:", err)
|
|
}
|
|
lib.ConfigInit()
|
|
|
|
if lang == "fix-data" {
|
|
// Re-encrypt plaintext Data by reading raw and re-packing
|
|
plainJSON := `{"dob":"2020-02-26","sex":2,"lang":"en"}`
|
|
packed := lib.Pack([]byte(plainJSON))
|
|
encoded := base64.StdEncoding.EncodeToString(packed)
|
|
fmt.Printf("Packed Data (%d bytes): %s\n", len(encoded), encoded[:40]+"...")
|
|
// Write via raw SQL won't work without db access — need EntryWrite
|
|
// Instead, use lib.Save directly
|
|
fmt.Println("Use this to update: UPDATE entries SET Data = X'...' WHERE EntryID = ...")
|
|
fmt.Printf("Hex: ")
|
|
for _, b := range packed {
|
|
fmt.Printf("%02X", b)
|
|
}
|
|
fmt.Println()
|
|
return
|
|
}
|
|
|
|
d, err := lib.DossierGet("", dossierID)
|
|
if err != nil {
|
|
log.Fatal("DossierGet:", err)
|
|
}
|
|
fmt.Printf("Dossier: %s (%s), current lang: %q\n", d.Name, d.DossierID, d.Preferences.Language)
|
|
d.Preferences.Language = lang
|
|
if err := lib.DossierWrite(d.DossierID, d); err != nil {
|
|
log.Fatal("DossierWrite:", err)
|
|
}
|
|
fmt.Printf("Set lang to %q\n", lang)
|
|
}
|