diff options
Diffstat (limited to 'roseh.moe.go')
| -rw-r--r-- | roseh.moe.go | 69 |
1 files changed, 30 insertions, 39 deletions
diff --git a/roseh.moe.go b/roseh.moe.go index 481da6b..7f5056c 100644 --- a/roseh.moe.go +++ b/roseh.moe.go @@ -20,7 +20,7 @@ import ( "sync" "time" - "roseh.moe/pkg/roseh.moe/internal/ini" + "roseh.moe/pkg/asspb" "roseh.moe/pkg/roseh.moe/internal/pwhash" "roseh.moe/pkg/wordlist" ) @@ -37,37 +37,31 @@ var ( var notepadPassword, secretKey []byte func loadSecrets() error { - f, err := os.Open(*secretsFile) + fileBytes, err := os.ReadFile(*secretsFile) if err != nil { return err } - defer f.Close() - p := new(ini.Parser) - for keyVal, err := range p.Parse(f) { - if err != nil { - return fmt.Errorf("%s:%d %s", *secretsFile, p.LineNumber, err) - } - switch keyVal.Key { - case "notepad-password": - notepadPassword, err = hex.AppendDecode(nil, []byte(keyVal.Val)) - if err != nil { - return fmt.Errorf("%s:%d %s", *secretsFile, p.LineNumber, err) - } - case "secret-key": - secretKey, err = hex.AppendDecode(nil, []byte(keyVal.Val)) - if err != nil { - return fmt.Errorf("%s:%d %s", *secretsFile, p.LineNumber, err) - } - default: - return fmt.Errorf("%s:%d unknown key", *secretsFile, p.LineNumber) - } + var secretsConfig struct { + NotepadPassword string + SecretKey string } - if len(notepadPassword) == 0 { + if err := asspb.Unmarshal(fileBytes, &secretsConfig); err != nil { + return fmt.Errorf("%s: %s", *secretsFile, err) + } + if secretsConfig.NotepadPassword == "" { return fmt.Errorf("%s: missing notepad-password", *secretsFile) } - if len(secretKey) == 0 { + if secretsConfig.SecretKey == "" { return fmt.Errorf("%s: missing secret-key", *secretsFile) } + notepadPassword, err = hex.AppendDecode(nil, []byte(secretsConfig.NotepadPassword)) + if err != nil { + return fmt.Errorf("bad notepad password: %s", err) + } + secretKey, err = hex.AppendDecode(nil, []byte(secretsConfig.SecretKey)) + if err != nil { + return fmt.Errorf("bad secret key: %s", err) + } return nil } @@ -96,28 +90,25 @@ func loadConfig() (*serviceConfiguration, error) { return oldConfig, nil } log.Printf("Reloading config file...") - f, err := os.Open(*configFile) + fileBytes, err := os.ReadFile(*configFile) if err != nil { return nil, err } - defer f.Close() + var fileConfig struct { + Redirect []struct{ Package, Command, Redirect string } + } + if err := asspb.Unmarshal(fileBytes, &fileConfig); err != nil { + return nil, err + } config := &serviceConfiguration{ packageRedirects: make(map[string]string), commandRedirects: make(map[string]string), } - p := new(ini.Parser) - for keyVal, err := range p.Parse(f) { - if err != nil { - log.Printf("Warning: %s:%d %s", *configFile, p.LineNumber, err) - continue - } - switch p.Section { - case "package-redirects": - config.packageRedirects[keyVal.Key] = keyVal.Val - case "command-redirects": - config.commandRedirects[keyVal.Key] = keyVal.Val - default: - log.Printf("Warning: %s:%d unknown section", *configFile, p.LineNumber) + for _, redirect := range fileConfig.Redirect { + if redirect.Package != "" { + config.packageRedirects[redirect.Package] = redirect.Redirect + } else { + config.commandRedirects[redirect.Command] = redirect.Command } } serviceConfigMu.Lock() |
