Add a generate-registration command
This commit is contained in:
59
registration/cmd.go
Normal file
59
registration/cmd.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package registration
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
|
||||
"maunium.net/go/mautrix/appservice"
|
||||
|
||||
"gitlab.com/beeper/discord/config"
|
||||
"gitlab.com/beeper/discord/globals"
|
||||
)
|
||||
|
||||
type Cmd struct {
|
||||
Filename string `kong:"flag,help='The filename to store the registration into',name='REGISTRATION',short='r',default='registration.yaml'"`
|
||||
}
|
||||
|
||||
func (c *Cmd) Run(g *globals.Globals) error {
|
||||
cfg, err := config.FromFile(g.Config)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
registration := appservice.CreateRegistration()
|
||||
|
||||
// Load existing values from the config into the registration.
|
||||
if err := cfg.CopyToRegistration(registration); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Save the new App and Server tokens in the config.
|
||||
cfg.Appservice.ASToken = registration.AppToken
|
||||
cfg.Appservice.HSToken = registration.ServerToken
|
||||
|
||||
// Workaround for https://github.com/matrix-org/synapse/pull/5758
|
||||
registration.SenderLocalpart = appservice.RandomString(32)
|
||||
|
||||
// Register the bot's user.
|
||||
pattern := fmt.Sprintf(
|
||||
"^@%s:%s$",
|
||||
cfg.Appservice.Bot.Username,
|
||||
cfg.Homeserver.Domain,
|
||||
)
|
||||
botRegex, err := regexp.Compile(pattern)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
registration.Namespaces.RegisterUserIDs(botRegex, true)
|
||||
|
||||
// Finally save the registration and the updated config file.
|
||||
if err := registration.Save(c.Filename); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := cfg.Save(g.Config); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user