@@ -20,9 +20,10 @@ package main
2020
2121import (
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