|
|
|
|
@ -151,6 +151,8 @@ func (d *ESX5Driver) VNCAddress(portMin, portMax uint) (string, uint, error) {
|
|
|
|
|
var vncPort uint
|
|
|
|
|
|
|
|
|
|
//Process ports ESXi is listening on to determine which are available
|
|
|
|
|
//This process does best effort to detect ports that are unavailable,
|
|
|
|
|
//it will ignore any ports listened to by only localhost
|
|
|
|
|
r, err := d.esxcli("network", "ip", "connection", "list")
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("Could not retrieve network information for ESXi: %v", err)
|
|
|
|
|
@ -161,10 +163,11 @@ func (d *ESX5Driver) VNCAddress(portMin, portMax uint) (string, uint, error) {
|
|
|
|
|
for record, err := r.read(); record != nil && err == nil; record, err = r.read() {
|
|
|
|
|
if record["State"] == "LISTEN" {
|
|
|
|
|
splitAddress := strings.Split(record["LocalAddress"], ":")
|
|
|
|
|
log.Print(splitAddress)
|
|
|
|
|
port := splitAddress[len(splitAddress)-1]
|
|
|
|
|
log.Printf("ESXi Listening on: %s", port)
|
|
|
|
|
listenPorts[port] = true
|
|
|
|
|
if splitAddress[0] != "127.0.0.1" {
|
|
|
|
|
port := splitAddress[len(splitAddress)-1]
|
|
|
|
|
log.Printf("ESXi listening on address %s, port %s unavailable for VNC", record["LocalAddress"], port)
|
|
|
|
|
listenPorts[port] = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|