asgard.git

commit d20b1911754e711a38aee511a5a3bbf95ee75da0

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)