diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-07-16 16:49:30 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-07-16 16:49:30 +0200 |
commit | 31f30a6888f5834d6f299836515c6fd61f00d9a9 (patch) | |
tree | 03ea5a82a6e507b3516dd498ab17e3abe1ea476f /cmd | |
parent | 8e33177a08c0490c39c598688118b5850291d04c (diff) |
add auth backend converter
closes #65
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/mt-auth-convert/convert.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/cmd/mt-auth-convert/convert.go b/cmd/mt-auth-convert/convert.go new file mode 100644 index 0000000..588f49b --- /dev/null +++ b/cmd/mt-auth-convert/convert.go @@ -0,0 +1,71 @@ +/* +mt-auth-convert converts between authentication backends. + +Usage: + + mt-auth-convert from to + +where from is the format to convert from +and to is the format to convert to +*/ +package main + +import ( + "log" + "os" + + proxy "github.com/HimbeerserverDE/mt-multiserver-proxy" +) + +func main() { + if len(os.Args) != 3 { + log.Fatal("usage: mt-auth-convert from to") + } + + var inBackend proxy.AuthBackend + switch os.Args[1] { + case "files": + inBackend = proxy.AuthFiles{} + case "mtsqlite3": + var err error + inBackend, err = proxy.NewAuthMTSQLite3() + if err != nil { + log.Fatal(err) + } + default: + log.Fatal("invalid input auth backend") + } + + var outBackend proxy.AuthBackend + switch os.Args[2] { + case "files": + outBackend = proxy.AuthFiles{} + case "mtsqlite3": + var err error + outBackend, err = proxy.NewAuthMTSQLite3() + if err != nil { + log.Fatal(err) + } + default: + log.Fatal("invalid output auth backend") + } + + if err := convert(outBackend, inBackend); err != nil { + log.Fatal(err) + } + + log.Print("conversion successful") +} + +func convert(dst, src proxy.AuthBackend) error { + users, err := src.Export() + if err != nil { + return err + } + + if err := dst.Import(users); err != nil { + return err + } + + return nil +} |