diff options
| author | ilotterytea <iltsu@alright.party> | 2025-08-03 00:12:39 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-08-03 00:12:39 +0500 |
| commit | 4f87786bb46a230c7c54af1d85093ce2c92d6781 (patch) | |
| tree | 5ecbbb6376b8c3e23e1b56028ff8dcd173b3289e | |
| parent | 42c76613dc906fa9a956a218f81f9f1a7b4b85fc (diff) | |
feat: join servers
| -rw-r--r-- | cmd/irclogs/main.go | 59 | ||||
| -rw-r--r-- | cmd/logs/main.go | 7 | ||||
| -rw-r--r-- | go.mod | 5 | ||||
| -rw-r--r-- | go.sum | 4 |
4 files changed, 68 insertions, 7 deletions
diff --git a/cmd/irclogs/main.go b/cmd/irclogs/main.go new file mode 100644 index 0000000..509447f --- /dev/null +++ b/cmd/irclogs/main.go @@ -0,0 +1,59 @@ +package main + +import ( + "database/sql" + "slices" + "strings" + "time" + + irclogs "ilotterytea/irclogs/internal" + "log" + + _ "github.com/go-sql-driver/mysql" +) + +func main() { + db, err := sql.Open("mysql", "kochan:kochan@/irclogs") + if err != nil { + log.Panicf("Failed to establish a database connection: %v\n", err) + } + defer db.Close() + + clients := []irclogs.IRCClient{} + + for { + rows, err := db.Query("SELECT host, port, nick, pass, capabilities FROM servers") + if err != nil { + log.Fatalf("Failed to get servers: %v\n", err) + continue + } + + for rows.Next() { + var host, nick, pass, caps string + var port int + if err = rows.Scan(&host, &port, &nick, &pass, &caps); err != nil { + log.Fatalf("Failed to scan rows: %v\n", err) + continue + } + + if !slices.ContainsFunc(clients, func(c irclogs.IRCClient) bool { + return c.Host == host + }) { + log.Printf("Connecting to %s:%d...\n", host, port) + c := irclogs.NewIRCClient(host, port, nick, pass, strings.Split(caps, "\n")) + + go func() { + if err = c.Connect(); err != nil { + log.Panicf("Failed to connect %s: %v\n", host, err) + } + }() + + clients = append(clients, c) + } + } + + rows.Close() + + time.Sleep(5 * time.Second) + } +} diff --git a/cmd/logs/main.go b/cmd/logs/main.go deleted file mode 100644 index eb6a1b5..0000000 --- a/cmd/logs/main.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -import "fmt" - -func main() { - fmt.Println("hello, world!") -} @@ -1,3 +1,8 @@ module ilotterytea/irclogs go 1.22.2 + +require ( + filippo.io/edwards25519 v1.1.0 // indirect + github.com/go-sql-driver/mysql v1.9.3 +) @@ -0,0 +1,4 @@ +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo= +github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= |
