provisioning.go 773 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package config
  2. import (
  3. "strings"
  4. as "maunium.net/go/mautrix/appservice"
  5. )
  6. type provisioning struct {
  7. Prefix string `yaml:"prefix"`
  8. SharedSecret string `yaml:"shared_secret"`
  9. }
  10. func (p *provisioning) validate() error {
  11. if p.Prefix == "" {
  12. p.Prefix = "/_matrix/provision/v1"
  13. }
  14. if strings.ToLower(p.SharedSecret) == "generate" {
  15. p.SharedSecret = as.RandomString(64)
  16. configUpdated = true
  17. }
  18. return nil
  19. }
  20. func (p *provisioning) UnmarshalYAML(unmarshal func(interface{}) error) error {
  21. type rawProvisioning provisioning
  22. raw := rawProvisioning{}
  23. if err := unmarshal(&raw); err != nil {
  24. return err
  25. }
  26. *p = provisioning(raw)
  27. return p.validate()
  28. }
  29. func (p *provisioning) Enabled() bool {
  30. return strings.ToLower(p.SharedSecret) != "disable"
  31. }