inou/tools/fix-lang/main.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)
}