Add puppet and portal stuff and fix config stuff

This commit is contained in:
Tulir Asokan
2018-08-16 15:59:18 +03:00
parent fd3c1fb77c
commit 9c48eeb534
12 changed files with 474 additions and 30 deletions

View File

@ -22,24 +22,26 @@ import (
)
type BridgeConfig struct {
RawUsernameTemplate string `yaml:"username_template"`
RawDisplaynameTemplate string `yaml:"displayname_template"`
UsernameTemplate *template.Template `yaml:"-"`
DisplaynameTemplate *template.Template `yaml:"-"`
UsernameTemplate string `yaml:"username_template"`
DisplaynameTemplate string `yaml:"displayname_template"`
usernameTemplate *template.Template `yaml:"-"`
displaynameTemplate *template.Template `yaml:"-"`
}
func (bc BridgeConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
err := unmarshal(bc)
type umBridgeConfig BridgeConfig
func (bc *BridgeConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
err := unmarshal((*umBridgeConfig)(bc))
if err != nil {
return err
}
bc.UsernameTemplate, err = template.New("username").Parse(bc.RawUsernameTemplate)
bc.usernameTemplate, err = template.New("username").Parse(bc.UsernameTemplate)
if err != nil {
return err
}
bc.DisplaynameTemplate, err = template.New("displayname").Parse(bc.RawDisplaynameTemplate)
bc.displaynameTemplate, err = template.New("displayname").Parse(bc.DisplaynameTemplate)
return err
}
@ -54,7 +56,7 @@ type UsernameTemplateArgs struct {
func (bc BridgeConfig) FormatDisplayname(displayname string) string {
var buf bytes.Buffer
bc.DisplaynameTemplate.Execute(&buf, DisplaynameTemplateArgs{
bc.displaynameTemplate.Execute(&buf, DisplaynameTemplateArgs{
Displayname: displayname,
})
return buf.String()
@ -62,7 +64,7 @@ func (bc BridgeConfig) FormatDisplayname(displayname string) string {
func (bc BridgeConfig) FormatUsername(receiver, userID string) string {
var buf bytes.Buffer
bc.UsernameTemplate.Execute(&buf, UsernameTemplateArgs{
bc.usernameTemplate.Execute(&buf, UsernameTemplateArgs{
Receiver: receiver,
UserID: userID,
})
@ -70,7 +72,7 @@ func (bc BridgeConfig) FormatUsername(receiver, userID string) string {
}
func (bc BridgeConfig) MarshalYAML() (interface{}, error) {
bc.RawDisplaynameTemplate = bc.FormatDisplayname("{{.Displayname}}")
bc.RawUsernameTemplate = bc.FormatUsername("{{.Receiver}}", "{{.UserID}}")
bc.DisplaynameTemplate = bc.FormatDisplayname("{{.Displayname}}")
bc.UsernameTemplate = bc.FormatUsername("{{.Receiver}}", "{{.UserID}}")
return bc, nil
}

View File

@ -19,6 +19,7 @@ package config
import (
"maunium.net/go/mautrix-appservice"
"regexp"
"fmt"
)
func (config *Config) NewRegistration() (*appservice.Registration, error) {
@ -53,7 +54,9 @@ func (config *Config) copyToRegistration(registration *appservice.Registration)
registration.RateLimited = false
registration.SenderLocalpart = config.AppService.Bot.Username
userIDRegex, err := regexp.Compile(config.Bridge.FormatUsername("[0-9]+", "[0-9]+"))
userIDRegex, err := regexp.Compile(fmt.Sprintf("@%s:%s",
config.Bridge.FormatUsername("[0-9]+", "[0-9]+"),
config.Homeserver.Domain))
if err != nil {
return err
}