aboutsummaryrefslogtreecommitdiffstats
path: root/main.go
diff options
context:
space:
mode:
authorterminaldweller <devi@terminaldweller.com>2023-12-31 04:25:17 +0000
committerterminaldweller <devi@terminaldweller.com>2023-12-31 04:25:17 +0000
commit553d9f5136c3bd255eeee5e4be28ffe518bdf309 (patch)
tree87a5e9bded207af7964a1f700fc3c3d5d1ba471e /main.go
parentwip (diff)
downloadsms-webhook-553d9f5136c3bd255eeee5e4be28ffe518bdf309.tar.gz
sms-webhook-553d9f5136c3bd255eeee5e4be28ffe518bdf309.zip
WIP
Diffstat (limited to 'main.go')
-rw-r--r--main.go63
1 files changed, 62 insertions, 1 deletions
diff --git a/main.go b/main.go
index 41e6bfe..55bf29c 100644
--- a/main.go
+++ b/main.go
@@ -1,6 +1,7 @@
package main
import (
+ "crypto/tls"
"flag"
"fmt"
"log"
@@ -8,6 +9,7 @@ import (
"github.com/go-redis/redis/v8"
"github.com/labstack/echo/v5"
+ "github.com/lrstanley/girc"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/core"
)
@@ -28,6 +30,15 @@ type SMSInfo struct {
Sim string `json:"sim"`
}
+type IRCInfo struct {
+ ircServer string
+ ircPort int
+ ircNick string
+ ircSaslUser string
+ ircSaslPass string
+ ircChannel string
+}
+
func postHandler(context echo.Context) error {
smsInfo := new(SMSInfo)
if err := context.Bind(smsInfo); err != nil {
@@ -47,7 +58,55 @@ func postHandler(context echo.Context) error {
return context.JSON(http.StatusOK, smsInfo)
}
+func runIRC(ircInfo IRCInfo) *girc.Client {
+ irc := girc.New(girc.Config{
+ Server: ircInfo.ircServer,
+ Port: ircInfo.ircPort,
+ Nick: ircInfo.ircNick,
+ User: "soulshack",
+ Name: "soulshack",
+ SSL: true,
+ TLSConfig: &tls.Config{InsecureSkipVerify: false},
+ })
+
+ saslUser := ircInfo.ircSaslUser
+ saslPass := ircInfo.ircSaslPass
+ if saslUser != "" && saslPass != "" {
+ irc.Config.SASL = &girc.SASLPlain{
+ User: ircInfo.ircSaslUser,
+ Pass: ircInfo.ircSaslPass,
+ }
+ }
+
+ irc.Handlers.AddBg(girc.PRIVMSG, func(c *girc.Client, e girc.Event) {
+ })
+
+ if err := irc.Connect(); err != nil {
+ log.Fatal(err)
+ return nil
+ }
+ return irc
+}
+
func main() {
+ ircServer := flag.String("ircserver", "irc.terminaldweller.com", "the address of the irc server to connect to")
+ ircPort := flag.Int("ircport", 6697, "the port of the irc server to connect to")
+ ircNick := flag.String("ircnick", "soulhack", "the nick to use on the irc server")
+ ircSaslUser := flag.String("ircsasluser", "soulhack", "the sasl user to use on the irc server")
+ ircSaslPass := flag.String("ircsaslpass", "", "the sasl password to use on the irc server")
+ ircChannel := flag.String("ircchannel", "#soulhack", "the channel to join on the irc server")
+
+ ircInfo := IRCInfo{
+ ircServer: *ircServer,
+ ircPort: *ircPort,
+ ircNick: *ircNick,
+ ircSaslUser: *ircSaslUser,
+ ircSaslPass: *ircSaslPass,
+ ircChannel: *ircChannel,
+ }
+
+ ircClient := runIRC(ircInfo)
+
redisAddress := flag.String("redisaddress", "redis:6379", "determines the address of the redis instance")
redisPassword := flag.String("redispassword", "", "determines the password of the redis db")
redisDB := flag.Int64("redisdb", 0, "determines the db number")
@@ -66,7 +125,9 @@ func main() {
app := pocketbase.New()
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
- e.Router.POST("/sms/*", postHandler)
+ e.Router.POST("/sms", postHandler)
+
+ ircClient.Handlers.AddBg(girc.PRIVMSG, func(c *girc.Client, e girc.Event) {})
return nil
})