58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"math/rand"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
var (
|
|
cribPath string
|
|
serverAddress string
|
|
serverPath string
|
|
telnetAddress string
|
|
sshAddress string
|
|
)
|
|
flag.StringVar(&cribPath, "crib", "", "path to crib application (terminal-based client)")
|
|
flag.StringVar(&serverAddress, "server", "", "host websocket server on provided address")
|
|
flag.StringVar(&serverPath, "path", "/crib", "host websocket server on provided path")
|
|
flag.StringVar(&telnetAddress, "telnet", "", "host telnet server on provided address")
|
|
flag.StringVar(&sshAddress, "ssh", "", "host SSH server on provided address")
|
|
flag.Parse()
|
|
|
|
if serverAddress == "" {
|
|
log.Fatal("failed to start: server listen +address must be specified with --server")
|
|
}
|
|
|
|
rand.Seed(time.Now().UTC().UnixNano())
|
|
|
|
// TODO debug
|
|
go func() {
|
|
log.Fatal(http.ListenAndServe(":8880", nil))
|
|
}()
|
|
|
|
if sshAddress != "" {
|
|
if cribPath == "" {
|
|
cribPath = "crib"
|
|
}
|
|
listenSSH(sshAddress, cribPath, serverAddress, serverPath)
|
|
}
|
|
|
|
log.Println("CribServer initialized")
|
|
|
|
cs := CribServer{}
|
|
cs.clientqueuealert = make(chan bool)
|
|
|
|
go cs.matchPlayers()
|
|
|
|
go cs.listenWebSocket(serverAddress, serverPath)
|
|
if telnetAddress != "" {
|
|
go cs.listenTelnet(telnetAddress)
|
|
}
|
|
|
|
// TODO
|
|
select {}
|
|
}
|