epacke / BigIPReport

Overview of your loadbalancer configuration
https://loadbalancing.se
8 stars 2 forks source link

Virtual server destination 0.0.0.0:0 parsed incorrectly #190

Closed jo-xxx closed 4 years ago

jo-xxx commented 4 years ago

On one of my LBs I recevied error

Unable to cache virtual servers from :

For virtual servers of type internal or with port lists, the destination is set to 0.0.0.0:0 or :0. In this case $ObjTempVirtualServer.ip = ($VirtualServer.destination -split "[/:]")[2] causes index out of bound exception.

Usually, destination has format destination=/Common/127.0.0.1:443 but in these special cases it looks like destination=0.0.0.0:0 or sometimes destination=:0

Instead of

$ObjTempVirtualServer.ip = ($VirtualServer.destination -split "[/:]")[2]
$ObjTempVirtualServer.port = $VirtualServer.destination.split(":")[1]

I used

if ($VirtualServer.destination -match "/.*/.*:.*") {            
    $ObjTempVirtualServer.ip = ($VirtualServer.destination -split "[/:]")[2]
    $ObjTempVirtualServer.port = $VirtualServer.destination.split(":")[1]

    if(($ObjTempVirtualServer.port) -eq 0){
        $ObjTempVirtualServer.port = "Any"
    }
} else {
    log verbose "Destination does not match pattern. Name: $($ObjTempVirtualServer.name) - Destination: $($VirtualServer.destination)"
    $ObjTempVirtualServer.ip = "N\A"
    $ObjTempVirtualServer.port = "N\A"
}

to handle both cases.