From dd62f237b0c12e8a1a90e862122373b7f4e6bf49 Mon Sep 17 00:00:00 2001 From: Balakrishnan Balasubramanian Date: Thu, 20 Apr 2023 17:59:40 -0400 Subject: [PATCH] Replace unix socket logic with go.balki.me/anyhttp Now also support systemd socket activation --- go.mod | 2 ++ go.sum | 2 ++ main.go | 50 ++++++++------------------------------------------ 3 files changed, 12 insertions(+), 42 deletions(-) create mode 100644 go.sum diff --git a/go.mod b/go.mod index 5b95802..0bb00ea 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module go.balki.me/tglistbot go 1.20 + +require go.balki.me/anyhttp v0.1.0 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..9c00891 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +go.balki.me/anyhttp v0.1.0 h1:ULzLWS1pRWMEduHHJxXCbvxoTmxNaWSNANV9gQ0Pigw= +go.balki.me/anyhttp v0.1.0/go.mod h1:JhfekOIjgVODoVqUCficjpIgmB3wwlB7jhN0eN2EZ/s= diff --git a/main.go b/main.go index cabf71f..49cfe30 100644 --- a/main.go +++ b/main.go @@ -4,21 +4,18 @@ package main import ( "bytes" "encoding/json" - "errors" "fmt" "io" - "io/fs" "log" - "net" "net/http" "os" "path" "runtime/debug" - "strconv" "strings" "sync" "time" + "go.balki.me/anyhttp" "go.balki.me/tglistbot/glist" ) @@ -42,19 +39,12 @@ func main() { log.Panicln("TGLB_API_TOKEN is empty") } - port, unixSocketPath := func() (int, string) { - portStr := os.Getenv("TGLB_PORT") - - defaultPort := 28923 - - if strings.HasPrefix(portStr, "unix/") { - return defaultPort, strings.TrimPrefix(portStr, "unix/") + addr := func() string { + addr := os.Getenv("TGLB_PORT") + if addr == "" { + return "28923" } - - if port, err := strconv.Atoi(portStr); err == nil { - return port, "" - } - return defaultPort, "" + return addr }() dataPath := func() string { @@ -85,14 +75,7 @@ func main() { return "unknown" }() - listeningOn := func() string { - if unixSocketPath != "" { - return fmt.Sprintf("socket: %q", unixSocketPath) - } - return fmt.Sprintf("port: %v", port) - }() - - log.Printf("List bot (%s) starting with datapath: %q, %s\n", version, dataPath, listeningOn) + log.Printf("List bot (%s) starting with datapath: %q, %s\n", version, dataPath, addr) var chats sync.Map if err := loadData(dataPath, &chats); err != nil { @@ -160,24 +143,7 @@ func main() { } }) - if unixSocketPath != "" { - // Remove old one - if err := os.Remove(unixSocketPath); err != nil && !errors.Is(err, fs.ErrNotExist) { - log.Panicf("Failed to remove unix socket : %q err: %v\n", unixSocketPath, err) - } - - l, err := net.Listen("unix", unixSocketPath) - if err != nil { - log.Panicf("Unable to listen to unix socket : %q err: %v\n", unixSocketPath, err) - } - - if err = os.Chmod(unixSocketPath, 0666); err != nil { - log.Panicf("Failed to set permission of unix socket %q err: %v\n", unixSocketPath, err) - } - - log.Panicln(http.Serve(l, nil)) - } - log.Panicln(http.ListenAndServe(fmt.Sprintf(":%v", port), nil)) + log.Panicln(anyhttp.ListenAndServe(addr, nil)) } func handleTextAdded(gl *glist.GList, text string) {