updated webclient setttings
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
package webui
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"mailgoserver/internal/db"
|
||||
)
|
||||
|
||||
// webmailListTypes are the only list_types a mailbox owner may self-manage — "block"
|
||||
// (admin's hard-reject-at-RCPT list) is deliberately excluded, see
|
||||
// esrv_mailbox_allowblock's schema comment.
|
||||
var webmailListTypes = map[string]bool{"allow": true, "junk": true}
|
||||
|
||||
// webmailBlocklistPage shows a mailbox owner's own Blocklist ("junk" entries — mail
|
||||
// from these addresses/domains is always quarantined straight to Junk, bypassing
|
||||
// spam scoring) and Whitelist ("allow" entries — never scored as spam, always lands
|
||||
// in INBOX; the escape hatch for a trusted sender rspamd or the built-in heuristic
|
||||
// keeps flagging).
|
||||
func (a *App) webmailBlocklistPage(w http.ResponseWriter, r *http.Request) {
|
||||
mbox := mailboxFromContext(r)
|
||||
entries, err := a.DB.ListAllowBlock(mbox.ID)
|
||||
if err != nil {
|
||||
setFlash(w, "error", "Error loading lists")
|
||||
}
|
||||
var blocked, allowed []db.MailboxAllowBlockEntry
|
||||
for _, e := range entries {
|
||||
switch e.ListType {
|
||||
case "junk":
|
||||
blocked = append(blocked, e)
|
||||
case "allow":
|
||||
allowed = append(allowed, e)
|
||||
}
|
||||
}
|
||||
a.render(w, r, "webmail_blocklist.html", M{
|
||||
"mailbox": mbox, "blocked": blocked, "allowed": allowed,
|
||||
"flashes": popFlashes(w, r), "active_section": "blocklist",
|
||||
})
|
||||
}
|
||||
|
||||
func (a *App) webmailBlocklistAdd(w http.ResponseWriter, r *http.Request) {
|
||||
mbox := mailboxFromContext(r)
|
||||
pattern := strings.ToLower(strings.TrimSpace(r.FormValue("pattern")))
|
||||
listType := r.FormValue("list_type")
|
||||
if pattern == "" || !webmailListTypes[listType] {
|
||||
setFlash(w, "error", "Enter an address (or @domain.com) and choose a list")
|
||||
http.Redirect(w, r, MailboxPrefix+"/blocklist", http.StatusFound)
|
||||
return
|
||||
}
|
||||
if _, err := a.DB.AddAllowBlockEntry(mbox.ID, listType, pattern); err != nil {
|
||||
setFlash(w, "error", "Error adding entry")
|
||||
} else {
|
||||
setFlash(w, "success", "Added")
|
||||
}
|
||||
http.Redirect(w, r, MailboxPrefix+"/blocklist", http.StatusFound)
|
||||
}
|
||||
|
||||
func (a *App) webmailBlocklistRemove(w http.ResponseWriter, r *http.Request) {
|
||||
mbox := mailboxFromContext(r)
|
||||
id := int64(atoi(r.PathValue("id")))
|
||||
if err := a.DB.RemoveAllowBlockEntry(id, mbox.ID); err != nil {
|
||||
setFlash(w, "error", "Error removing entry")
|
||||
} else {
|
||||
setFlash(w, "success", "Removed")
|
||||
}
|
||||
http.Redirect(w, r, MailboxPrefix+"/blocklist", http.StatusFound)
|
||||
}
|
||||
Reference in New Issue
Block a user