2016-01-18 23:19:51 +01:00
|
|
|
package cmd // code.bitsetter.de/fun/gosl/cmd
|
|
|
|
|
|
|
|
import (
|
2016-02-05 16:19:43 +01:00
|
|
|
"encoding/gob"
|
2016-01-18 23:19:51 +01:00
|
|
|
"fmt"
|
2016-01-19 16:51:50 +01:00
|
|
|
"log"
|
|
|
|
"net"
|
2016-01-18 23:19:51 +01:00
|
|
|
|
|
|
|
"github.com/spf13/cobra"
|
2016-01-19 16:38:15 +01:00
|
|
|
|
|
|
|
"code.bitsetter.de/fun/gosl/data"
|
2016-01-18 23:19:51 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
var cmdServer = &cobra.Command{
|
|
|
|
Use: "server",
|
|
|
|
Short: "Runs Gosl as a server",
|
2016-02-05 16:19:43 +01:00
|
|
|
Long: `Runs Gosl as a server
|
|
|
|
|
|
|
|
[TODO:]
|
|
|
|
gosl.json for configuration (Port/Adress, Level)
|
|
|
|
`,
|
2016-01-18 23:19:51 +01:00
|
|
|
// Run:
|
|
|
|
}
|
|
|
|
|
2016-01-19 16:51:50 +01:00
|
|
|
func handleConn(conn *net.TCPConn) {
|
2016-02-05 16:19:43 +01:00
|
|
|
log.Println("Got a connection from: ", conn.RemoteAddr().String())
|
2016-01-19 16:51:50 +01:00
|
|
|
|
2016-02-05 16:19:43 +01:00
|
|
|
gobd := gob.NewDecoder(conn)
|
|
|
|
var h data.Handshake
|
|
|
|
gobd.Decode(&h)
|
|
|
|
log.Println(h)
|
|
|
|
conn.Close()
|
2016-01-19 16:51:50 +01:00
|
|
|
}
|
|
|
|
|
2016-01-18 23:19:51 +01:00
|
|
|
func runServer(cmd *cobra.Command, args []string) {
|
|
|
|
fmt.Println("running server ...")
|
2016-01-19 16:51:50 +01:00
|
|
|
|
|
|
|
listener, err := net.ListenTCP("tcp", &net.TCPAddr{Port: 8989})
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
panic("Could not open Listener")
|
|
|
|
}
|
|
|
|
defer listener.Close()
|
|
|
|
for {
|
|
|
|
conn, err := listener.AcceptTCP()
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
panic("Listener could not accept connection!")
|
|
|
|
}
|
|
|
|
|
|
|
|
go handleConn(conn)
|
|
|
|
}
|
|
|
|
|
2016-01-19 16:38:15 +01:00
|
|
|
data.TestNC()
|
2016-01-18 23:19:51 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
cmdServer.Run = runServer
|
|
|
|
}
|