Skip to content

Commit 4a7d085

Browse files
committed
Allow unix socket listener for web server
1 parent fc8059b commit 4a7d085

1 file changed

Lines changed: 25 additions & 4 deletions

File tree

cloudbox.go

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ package main
2020

2121
import (
2222
"flag"
23-
"fmt"
2423
"log"
24+
"net"
2525
"net/http"
26+
"os"
2627

2728
"github.com/flatgrassdotnet/cloudbox/api/auth"
2829
"github.com/flatgrassdotnet/cloudbox/api/content"
@@ -44,7 +45,8 @@ func main() {
4445
apikey := flag.String("apikey", "", "steam web api key")
4546
statswebhook := flag.String("statswebhook", "", "discord stats webhook url")
4647
savewebhook := flag.String("savewebhook", "", "discord save webhook url")
47-
port := flag.Int("port", 80, "web server listen port")
48+
proto := flag.String("proto", "tcp", "proto for web server")
49+
addr := flag.String("addr", "127.0.0.1:80", "address for web server")
4850
flag.Parse()
4951

5052
err := db.Init(*dbuser, *dbpass, *dbproto, *dbaddr, *dbname)
@@ -99,8 +101,27 @@ func main() {
99101
http.HandleFunc("POST toyboxapi.garrysmod.com/publishsave_001/", publishsave.Publish) // v106 - v108
100102
http.HandleFunc("POST toyboxapi.garrysmod.com/publishsave_002/", publishsave.Publish) // v109 - v142
101103

102-
err = http.ListenAndServe(fmt.Sprintf(":%d", *port), nil)
104+
// http stuff
105+
if *proto == "unix" {
106+
err = os.Remove(*addr)
107+
if err != nil && !os.IsNotExist(err) {
108+
log.Fatalf("failed to delete unix socket: %s", err)
109+
}
110+
}
111+
112+
l, err := net.Listen(*proto, *addr)
103113
if err != nil {
104-
log.Fatalf("error while serving: %s", err)
114+
log.Fatalf("failed to create web server listener: %s", err)
115+
}
116+
117+
defer l.Close()
118+
119+
if *proto == "unix" {
120+
err = os.Chmod(*addr, 0777)
121+
if err != nil {
122+
log.Fatalf("failed to set unix socket permissions: %s", err)
123+
}
105124
}
125+
126+
http.Serve(l, nil)
106127
}

0 commit comments

Comments
 (0)