68 lines
1.3 KiB
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"
|
|
}
|