2017-11-10 12:39:55 +01:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2018-09-22 17:27:48 +02:00
|
|
|
"flag"
|
2021-01-05 00:00:46 +01:00
|
|
|
"net"
|
2017-11-10 12:39:55 +01:00
|
|
|
"net/http"
|
|
|
|
|
2020-07-29 17:27:36 +02:00
|
|
|
web "fornaxian.tech/pixeldrain_web/init"
|
2021-11-02 16:28:02 +01:00
|
|
|
"fornaxian.tech/util"
|
2018-06-17 16:15:58 +02:00
|
|
|
"github.com/Fornaxian/log"
|
2017-11-10 12:39:55 +01:00
|
|
|
"github.com/julienschmidt/httprouter"
|
|
|
|
)
|
|
|
|
|
|
|
|
// This is just a launcher for the web server. During testing the app would
|
|
|
|
// be directly embedded by another Go project. And when deployed it will run
|
|
|
|
// independently.
|
|
|
|
func main() {
|
2021-01-05 00:00:46 +01:00
|
|
|
var err error
|
|
|
|
var sock = flag.Bool("systemd-socket", false, "Enable/disable systemd socket activation")
|
2018-09-22 17:27:48 +02:00
|
|
|
var listen = flag.String("listen", ":8081", "The address which the API server will listen on")
|
|
|
|
var prefix = flag.String("prefix", "", "Prefix that comes before the API URL")
|
|
|
|
flag.Parse()
|
|
|
|
|
2021-01-05 00:00:46 +01:00
|
|
|
var listener net.Listener
|
|
|
|
|
|
|
|
// Serve the API on a socket. If systemd-socket is enabled we'll reuse
|
|
|
|
// systemd's socket, else we'll create our own to serve on
|
|
|
|
if *sock {
|
|
|
|
// Socket activation enabled. Get the provided sockets and serve on them
|
|
|
|
if listener, err = util.SystemdSocketByName("pd-web.socket"); err != nil {
|
|
|
|
panic("Socket pd-web.socket not found")
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// Socket activation disabled, so we create our own listener to serve on
|
|
|
|
if listener, err = net.Listen("tcp", *listen); err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
2017-11-10 12:39:55 +01:00
|
|
|
|
2021-01-05 00:00:46 +01:00
|
|
|
var router = httprouter.New()
|
|
|
|
web.Init(router, *prefix, true)
|
2017-11-10 12:39:55 +01:00
|
|
|
|
2021-01-05 00:00:46 +01:00
|
|
|
if err = http.Serve(listener, router); err != nil {
|
2017-11-10 12:39:55 +01:00
|
|
|
log.Error("Can't listen and serve Pixeldrain Web: %v", err)
|
|
|
|
}
|
|
|
|
}
|