summaryrefslogtreecommitdiffstats
path: root/roseh.moe.go
diff options
context:
space:
mode:
Diffstat (limited to 'roseh.moe.go')
-rw-r--r--roseh.moe.go55
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