52 lines
974 B
Go

package main
import (
"flag"
"fmt"
"os"
"os/signal"
"syscall"
"time"
)
var (
//Global variables
stopchan chan bool
//Runtime flags
benchmarkWebserverListeningPort int
)
func init() {
flag.IntVar(&benchmarkWebserverListeningPort, "port", 8123, "Port to listen on")
flag.Parse()
}
/* SIGTERM handler, do shutdown sequences before closing */
func SetupCloseHandler() {
c := make(chan os.Signal, 2)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
go func() {
<-c
//Stop all request loops
fmt.Println("Stopping request generators")
if stopchan != nil {
stopchan <- true
}
// Wait for all goroutines to finish
time.Sleep(1 * time.Second)
os.Exit(0)
}()
}
func main() {
//Setup the SIGTERM handler
SetupCloseHandler()
//Start the web server
fmt.Println("Starting web server on port", benchmarkWebserverListeningPort)
fmt.Println("In Zoraxy, point your test proxy rule to this server at the given port")
startWebServer()
select {}
}