vncproxy/player/cmd/main.go
Yoan Blanc 11b1d45ce9
global: make the whole package go mod ready
Signed-off-by: Yoan Blanc <yoan.blanc@exoscale.ch>
2018-11-30 09:40:45 +01:00

101 lines
3.0 KiB
Go

package main
import (
"flag"
"fmt"
"os"
"github.com/amitbet/vncproxy/common"
"github.com/amitbet/vncproxy/encodings"
"github.com/amitbet/vncproxy/logger"
"github.com/amitbet/vncproxy/player"
"github.com/amitbet/vncproxy/server"
)
func main() {
wsPort := flag.String("wsPort", "", "websocket port for player to listen to client connections")
tcpPort := flag.String("tcpPort", "", "tcp port for player to listen to client connections")
fbsFile := flag.String("fbsFile", "", "fbs file to serve to all connecting clients")
logLevel := flag.String("logLevel", "info", "change logging level")
flag.Parse()
logger.SetLogLevel(*logLevel)
fmt.Println("**************************************************************************")
fmt.Println("*** This is a toy server that replays a single FBS file to all clients ***")
fmt.Println("**************************************************************************")
if *fbsFile == "" {
logger.Error("there is no FBS file to replay to incoming clients")
flag.Usage()
os.Exit(1)
}
if *tcpPort == "" && *wsPort == "" {
logger.Error("no listening port defined")
flag.Usage()
os.Exit(1)
}
//chServer := make(chan common.ClientMessage)
//chClient := make(chan common.ServerMessage)
encs := []common.IEncoding{
&encodings.RawEncoding{},
&encodings.TightEncoding{},
&encodings.EncCursorPseudo{},
&encodings.TightPngEncoding{},
&encodings.RREEncoding{},
&encodings.ZLibEncoding{},
&encodings.ZRLEEncoding{},
&encodings.CopyRectEncoding{},
&encodings.CoRREEncoding{},
&encodings.HextileEncoding{},
}
cfg := &server.ServerConfig{
//SecurityHandlers: []SecurityHandler{&ServerAuthNone{}, &ServerAuthVNC{}},
SecurityHandlers: []server.SecurityHandler{&server.ServerAuthNone{}},
Encodings: encs,
PixelFormat: common.NewPixelFormat(32),
ClientMessages: server.DefaultClientMessages,
DesktopName: []byte("workDesk"),
Height: uint16(768),
Width: uint16(1024),
}
cfg.NewConnHandler = func(cfg *server.ServerConfig, conn *server.ServerConn) error {
//fbs, err := loadFbsFile("/Users/amitbet/Dropbox/recording.rbs", conn)
//fbs, err := loadFbsFile("/Users/amitbet/vncRec/recording.rbs", conn)
fbs, err := player.ConnectFbsFile(*fbsFile, conn)
if err != nil {
logger.Error("TestServer.NewConnHandler: Error in loading FBS: ", err)
return err
}
conn.Listeners.AddListener(player.NewFBSPlayListener(conn, fbs))
return nil
}
if *tcpPort == "" && *wsPort == "" {
logger.Error("no listening port defined")
flag.Usage()
os.Exit(1)
}
url := "http://0.0.0.0:" + *wsPort + "/"
if *tcpPort != "" && *wsPort != "" {
logger.Infof("running two listeners: tcp port: %s, ws url: %s", *tcpPort, url)
go server.WsServe(url, cfg)
server.TcpServe(":"+*tcpPort, cfg)
}
if *tcpPort == "" && *wsPort != "" {
logger.Infof("running ws listener url: %s", url)
server.WsServe(url, cfg)
}
logger.Infof("running tcp listener on port: %s", *tcpPort)
server.TcpServe(":"+*tcpPort, cfg)
}