diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2026-01-21 19:05:36 -0800 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2026-01-21 19:05:36 -0800 |
| commit | 4368b7cd6ab81e6f98e167dfd86d0574d0eade7b (patch) | |
| tree | ea64ff84c3ba9aa6c6095be7265803ae1e3f88c9 /roseh.moe.go | |
| parent | 96253cbcb61569aafb59d592150dfb47e7cb43ff (diff) | |
| download | roseh.moe-4368b7cd6ab81e6f98e167dfd86d0574d0eade7b.tar.zst | |
XML!!!
Diffstat (limited to 'roseh.moe.go')
| -rw-r--r-- | roseh.moe.go | 55 |
1 files changed, 35 insertions, 20 deletions
diff --git a/roseh.moe.go b/roseh.moe.go index b134de0..a1a6d18 100644 --- a/roseh.moe.go +++ b/roseh.moe.go @@ -10,6 +10,7 @@ import ( "embed" "encoding/base64" "encoding/binary" + "encoding/xml" "errors" "flag" "fmt" @@ -28,9 +29,7 @@ import ( "time" "github.com/skip2/go-qrcode" - "roseh.moe/pkg/ccl" "roseh.moe/pkg/oae2" - "roseh.moe/pkg/roseh.moe/internal/config" "roseh.moe/pkg/roseh.moe/internal/pwhash" "roseh.moe/pkg/wordlist" ) @@ -39,8 +38,8 @@ var ( port = flag.Int("port", 42069, "port to listen on") selfURL = flag.String("self-url", "http://localhost:42069", "base URL of the server") domain = flag.String("domain", "", "domain for auth cookie") - secretsFile = flag.String("secrets", "secrets.ccl", "secrets file") - configFile = flag.String("config", "config.ccl", "configuration file (ccl format https://pkg.go.dev/roseh.moe/pkg/ccl)") + secretsFile = flag.String("secrets", "secrets.xml", "secrets file") + configFile = flag.String("config", "config.xml", "configuration file (XML, baby!!)") https = flag.String("https", "", "directory containing cert.pem and key.pem, or empty string to use unencrypted http") holeTempDir = flag.String("hole-temp-dir", "hole", "directory to store temporary files for the wormhole") @@ -54,22 +53,32 @@ func loadSecrets() error { if err != nil { return err } - var secretsConfig config.SecretsConfig - if err := ccl.Unmarshal(fileBytes, &secretsConfig); err != nil { + var secretsConfig struct { + NotepadPassword string `xml:",attr"` + SecretKey string `xml:",attr"` + AuthKey string `xml:",attr"` + } + if err := xml.Unmarshal(fileBytes, &secretsConfig); err != nil { return fmt.Errorf("%s: %s", *secretsFile, err) } - if len(secretsConfig.NotepadPassword) == 0 { + if secretsConfig.NotepadPassword == "" { return fmt.Errorf("%s: missing NotepadPassword", *secretsFile) } - if len(secretsConfig.SecretKey) == 0 { + if secretsConfig.SecretKey == "" { return fmt.Errorf("%s: missing SecretKey", *secretsFile) } - if len(secretsConfig.AuthKey) == 0 { + if secretsConfig.AuthKey == "" { return fmt.Errorf("%s: missing AuthKey", *secretsFile) } - notepadPassword = secretsConfig.NotepadPassword - secretKey = secretsConfig.SecretKey - authenticatorKey = secretsConfig.AuthKey + if notepadPassword, err = base64.StdEncoding.DecodeString(secretsConfig.NotepadPassword); err != nil { + return fmt.Errorf("%s: bad NotepadPassword (try base64)", *secretsFile) + } + if secretKey, err = base64.StdEncoding.DecodeString(secretsConfig.SecretKey); err != nil { + return fmt.Errorf("%s: bad SecretKey (try base64)", *secretsFile) + } + if authenticatorKey, err = base64.StdEncoding.DecodeString(secretsConfig.AuthKey); err != nil { + return fmt.Errorf("%s: bad AuthKey (try base64)", *secretsFile) + } return nil } @@ -103,21 +112,27 @@ func loadConfig() (*serviceConfiguration, error) { return nil, err } var fileConfig struct { - Redirect []struct{ Package, Command, To string } + Package []struct { + Name string `xml:",attr"` + URL string `xml:",attr"` + } `xml:"Redirects>Package"` + Command []struct { + Name string `xml:",attr"` + URL string `xml:",attr"` + } `xml:"Redirects>Command"` } - if err := ccl.Unmarshal(fileBytes, &fileConfig); err != nil { + if err := xml.Unmarshal(fileBytes, &fileConfig); err != nil { return nil, err } config := &serviceConfiguration{ packageRedirects: make(map[string]string), commandRedirects: make(map[string]string), } - for _, redirect := range fileConfig.Redirect { - if redirect.Package != "" { - config.packageRedirects[redirect.Package] = redirect.To - } else { - config.commandRedirects[redirect.Command] = redirect.To - } + for _, pkg := range fileConfig.Package { + config.packageRedirects[pkg.Name] = pkg.URL + } + for _, cmd := range fileConfig.Command { + config.commandRedirects[cmd.Name] = cmd.URL } serviceConfigMu.Lock() serviceConfig = config |
