allow reserved mailboxes, closes #43

This commit is contained in:
Aine
2022-11-20 20:55:41 +02:00
parent 117736dcf3
commit 6ddb894577
7 changed files with 31 additions and 8 deletions

View File

@@ -73,6 +73,15 @@ func (b *Bot) allowSend(actorID id.UserID, targetRoomID id.RoomID) bool {
return !cfg.NoSend()
}
func (b *Bot) isReserved(mailbox string) bool {
for _, reserved := range b.reservedMailboxes {
if mailbox == reserved {
return true
}
}
return false
}
// IsGreylisted checks if host is in greylist
func (b *Bot) IsGreylisted(addr net.Addr) bool {
if b.getBotSettings().Greylist() == 0 {

View File

@@ -20,6 +20,7 @@ type Bot struct {
domains []string
allowedUsers []*regexp.Regexp
allowedAdmins []*regexp.Regexp
reservedMailboxes []string
commands commandList
banlist bglist
rooms sync.Map
@@ -36,15 +37,17 @@ func New(
log *logger.Logger,
prefix string,
domains []string,
reserved []string,
admins []string,
) (*Bot, error) {
b := &Bot{
prefix: prefix,
domains: domains,
rooms: sync.Map{},
log: log,
lp: lp,
mu: map[string]*sync.Mutex{},
reservedMailboxes: reserved,
domains: domains,
prefix: prefix,
rooms: sync.Map{},
log: log,
lp: lp,
mu: map[string]*sync.Mutex{},
}
users, err := b.initBotUsers()
if err != nil {

View File

@@ -86,7 +86,7 @@ func (b *Bot) setOption(ctx context.Context, name, value string) {
evt := eventFromContext(ctx)
if name == roomOptionMailbox {
existingID, ok := b.getMapping(value)
if ok && existingID != "" && existingID != evt.RoomID {
if (ok && existingID != "" && existingID != evt.RoomID) || b.isReserved(value) {
b.SendNotice(ctx, evt.RoomID, fmt.Sprintf("Mailbox `%s` (%s) already taken, kupo", value, utils.EmailsList(value, "")))
return
}