1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-06-28 15:27:43 +00:00
FrankerFaceZ/socketserver/cmd/socketserver/socketserver.go

74 lines
2.1 KiB
Go
Raw Normal View History

2015-10-24 19:59:34 -07:00
package main // import "bitbucket.org/stendec/frankerfacez/socketserver/cmd/socketserver"
import (
"flag"
"log"
"net/http"
2015-10-25 12:40:07 -07:00
"../../internal/server"
2015-10-24 19:59:34 -07:00
)
var origin *string = flag.String("origin", "localhost:8001", "Client-visible origin of the socket server")
var bindAddress *string = flag.String("listen", "", "Address to bind to, if different from origin")
2015-10-25 03:21:50 -07:00
var usessl *bool = flag.Bool("ssl", false, "Enable the use of SSL for connecting clients and backend connections")
var certificateFile *string = flag.String("crt", "ssl.crt", "CA-signed SSL certificate file")
var privateKeyFile *string = flag.String("key", "ssl.key", "SSL private key file")
2015-10-25 12:40:07 -07:00
var naclKeysFile *string = flag.String("naclkey", "naclkeys.json", "Keypairs for the NaCl crypto library, for communicating with the backend.")
var generateKeys *bool = flag.Bool("genkeys", false, "Generate NaCl keys instead of serving requests.\nArguments: [int serverId] [base64 backendPublic]\nThe backend public key can either be specified in base64 on the command line, or put in the json file later.")
2015-10-24 19:59:34 -07:00
func main() {
flag.Parse()
2015-10-25 12:40:07 -07:00
if *generateKeys {
GenerateKeys(*naclKeysFile)
return
}
2015-10-24 19:59:34 -07:00
if *origin == "" {
log.Fatalln("--origin argument required")
}
if *bindAddress == "" {
bindAddress = origin
}
if (*certificateFile == "") != (*privateKeyFile == "") {
log.Fatalln("Either both --crt and --key can be provided, or neither.")
}
conf := &server.Config {
2015-10-24 19:59:34 -07:00
SSLKeyFile: *privateKeyFile,
SSLCertificateFile: *certificateFile,
2015-10-25 12:40:07 -07:00
UseSSL: *usessl,
NaclKeysFile: *naclKeysFile,
2015-10-24 19:59:34 -07:00
SocketOrigin: *origin,
2015-10-24 19:59:34 -07:00
}
2015-10-25 03:21:50 -07:00
httpServer := &http.Server{
2015-10-25 12:40:07 -07:00
Addr: *bindAddress,
2015-10-25 03:21:50 -07:00
}
server.SetupServerAndHandle(conf, httpServer.TLSConfig, nil)
2015-10-24 19:59:34 -07:00
var err error
if conf.UseSSL {
2015-10-25 12:40:07 -07:00
err = httpServer.ListenAndServeTLS(*certificateFile, *privateKeyFile)
2015-10-24 19:59:34 -07:00
} else {
2015-10-25 03:21:50 -07:00
err = httpServer.ListenAndServe()
2015-10-24 19:59:34 -07:00
}
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
2015-10-25 12:40:07 -07:00
func GenerateKeys(outputFile string) {
if flag.NArg() < 1 {
log.Fatal("The server ID must be specified")
}
if flag.NArg() >= 2 {
server.GenerateKeys(outputFile, flag.Arg(0), flag.Arg(1))
} else {
server.GenerateKeys(outputFile, flag.Arg(0), "")
}
}