Skip to content

Commit

Permalink
command argument to disable teleportation
Browse files Browse the repository at this point in the history
#27

also validate user input on websocket packets a bit more.
  • Loading branch information
lian committed Sep 5, 2020
1 parent c3b842b commit ec7708e
Showing 1 changed file with 32 additions and 7 deletions.
39 changes: 32 additions & 7 deletions vfrmap/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,15 @@ func (r *TeleportRequest) SetData(s *simconnect.SimConnect) {

var buildVersion string
var buildTime string
var disableTeleport bool

var verbose bool
var httpListen string

func main() {
flag.BoolVar(&verbose, "verbose", false, "verbose output")
flag.StringVar(&httpListen, "listen", "0.0.0.0:9000", "http listen")
flag.BoolVar(&disableTeleport, "disable-teleport", false, "disable teleport")
flag.Parse()

fmt.Printf("\nmsfs2020-go/vfrmap\n readme: https://github.com/lian/msfs2020-go/blob/master/vfrmap/README.md\n issues: https://github.com/lian/msfs2020-go/issues\n version: %s (%s)\n\n", buildVersion, buildTime)
Expand Down Expand Up @@ -288,16 +290,39 @@ func main() {
func handleClientMessage(m websockets.ReceiveMessage, s *simconnect.SimConnect) {
var pkt map[string]interface{}
if err := json.Unmarshal(m.Message, &pkt); err != nil {
fmt.Println(err)
fmt.Println("invalid websocket packet", err)
} else {
switch pkt["type"].(string) {
pktType, ok := pkt["type"].(string)
if !ok {
fmt.Println("invalid websocket packet", pkt)
return
}
switch pktType {
case "teleport":
//fmt.Println("teleport request", pkt)
r := &TeleportRequest{
Latitude: pkt["lat"].(float64),
Longitude: pkt["lng"].(float64),
Altitude: pkt["altitude"].(float64),
if disableTeleport {
fmt.Println("teleport disabled", pkt)
return
}

// validate user input
lat, ok := pkt["lat"].(float64)
if !ok {
fmt.Println("invalid websocket packet", pkt)
return
}
lng, ok := pkt["lng"].(float64)
if !ok {
fmt.Println("invalid websocket packet", pkt)
return
}
altitude, ok := pkt["altitude"].(float64)
if !ok {
fmt.Println("invalid websocket packet", pkt)
return
}

// teleport
r := &TeleportRequest{Latitude: lat, Longitude: lng, Altitude: altitude}
r.SetData(s)
}
}
Expand Down

0 comments on commit ec7708e

Please sign in to comment.