package main import ( "encoding/base64" "fmt" "log" "os" "inou/lib" ) func main() { if len(os.Args) < 3 { fmt.Println("Usage: fix-lang ") fmt.Println(" fix-data - 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) }