NextWks/tools/fix-zoraxy-sso/main.go

68 lines
1.3 KiB
Go

package main
import (
"encoding/json"
"fmt"
"log"
"os"
"go.etcd.io/bbolt"
)
func main() {
if len(os.Args) < 2 {
fmt.Fprintf(os.Stderr, "Usage: fix-zoraxy-sso <db-path>\n")
os.Exit(1)
}
dbPath := os.Args[1]
bucket := "zorxauth"
key := "options"
db, err := bbolt.Open(dbPath, 0600, nil)
if err != nil {
log.Fatalf("Failed to open DB %s: %v", dbPath, err)
}
defer db.Close()
err = db.Update(func(tx *bbolt.Tx) error {
b := tx.Bucket([]byte(bucket))
if b == nil {
return fmt.Errorf("bucket %q not found", bucket)
}
val := b.Get([]byte(key))
if val == nil {
return fmt.Errorf("key %q not found in bucket %q", key, bucket)
}
var opts map[string]interface{}
if err := json.Unmarshal(val, &opts); err != nil {
return fmt.Errorf("failed to parse JSON: %v", err)
}
// Update the critical SSO fields
opts["sso_redirect_url"] = fmt.Sprintf("https://app.%s/", getDomain())
opts["enable_auth_gateway"] = true
updated, err := json.Marshal(opts)
if err != nil {
return fmt.Errorf("failed to marshal JSON: %v", err)
}
return b.Put([]byte(key), updated)
})
if err != nil {
log.Fatalf("Update failed: %v", err)
}
fmt.Println("[OK] ZorxAuth SSO config updated in BoltDB")
}
func getDomain() string {
if d := os.Getenv("DOMAIN"); d != "" {
return d
}
return "nextwks.eu"
}