Author: Adam Evyčędo <git@apiote.xyz>
treat knownAddresses as regexes
db.go | 16 ++++++++++++++-- tyr.go | 1 -
diff --git a/db.go b/db.go index 6434483dfd08745128726949c6d3d4de57e48c3c..d75b934a9556cbae410a462c63f0d7796fc54799 100644 --- a/db.go +++ b/db.go @@ -5,11 +5,13 @@ "database/sql" "fmt" "os" "path/filepath" + "regexp" "strings" "time" "github.com/emersion/go-imap" + "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3" ) @@ -66,6 +68,16 @@ } } func migrate(dbPath string) (*sql.DB, error) { + sql.Register("sqlite3_extended", + &sqlite3.SQLiteDriver{ + ConnectHook: func(conn *sqlite3.SQLiteConn) error { + return conn.RegisterFunc("regexp", func(re, s string) (bool, error) { + return regexp.MatchString(re, s) + }, true) + }, + }, + ) + home, err := os.UserHomeDir() if err != nil { return nil, fmt.Errorf("while getting user home dir: %w", err) @@ -122,7 +134,7 @@ path, err := filepath.Abs(dbPath) if err != nil { return nil, err } - db, err := sql.Open("sqlite3", path) + db, err := sql.Open("sqlite3_extended", path) if err != nil { return nil, err } @@ -193,7 +205,7 @@ func getKnownAddress(db *sql.DB, address string) ([]KnownAddress, error) { knownAddresses := []KnownAddress{} - rows, err := db.Query(`select address_from, address_to, ban from tyr_knownAddresses where address_from = ?`, address) + rows, err := db.Query(`select address_from, address_to, ban from tyr_knownAddresses where ? REGEXP address_from`, address) if err != nil { return []KnownAddress{}, err } diff --git a/tyr.go b/tyr.go index f2f2e67f28cdf1c678645f1d0ed2be734018b043..b046607a818514d8c44007c732170f5a3716b66b 100644 --- a/tyr.go +++ b/tyr.go @@ -108,7 +108,6 @@ return inboxes, nil } func checkInbox(db *sql.DB, config Config, c *client.Client, mbox *imap.MailboxStatus) error { - rand.Seed(time.Now().UnixNano()) from := uint32(1) to := mbox.Messages seqset := new(imap.SeqSet)