feat: Add dynamic domain blacklisting for unsupported_email errors

This commit is contained in:
verssache
2026-03-11 00:24:15 +07:00
parent cd2890fb21
commit 22ebda8acb
2 changed files with 28 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ import (
"net/http"
"regexp"
"strings"
"sync"
"time"
"github.com/brianvoe/gofakeit/v7"
@@ -18,6 +19,13 @@ import (
"github.com/verssache/chatgpt-creator/internal/util"
)
var blacklistedDomains sync.Map
// AddBlacklistDomain adds a domain to the global blacklist.
func AddBlacklistDomain(domain string) {
blacklistedDomains.Store(domain, true)
}
// CreateTempEmail fetches a new temp email using a random profile and gofakeit names.
func CreateTempEmail(defaultDomain string) (string, error) {
// If defaultDomain is set, skip fetching from generator.email
@@ -61,10 +69,16 @@ func CreateTempEmail(defaultDomain string) (string, error) {
doc.Find(".e7m.tt-suggestions div > p").Each(func(i int, s *goquery.Selection) {
domain := strings.TrimSpace(s.Text())
if domain != "" {
domains = append(domains, domain)
if _, blacklisted := blacklistedDomains.Load(domain); !blacklisted {
domains = append(domains, domain)
}
}
})
if len(domains) == 0 {
return "", fmt.Errorf("all available domains are blacklisted")
}
r := rand.New(rand.NewSource(time.Now().UnixNano()))
randomDomain := domains[r.Intn(len(domains))]