Fixed fail to ping IPv6 #879 (#880)

Fixes #879.
This commit is contained in:
Flávio Gomes da Silva Lisboa 2020-04-19 09:41:29 -03:00 committed by GitHub
parent 1358929958
commit b346cd9c4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 3 deletions

2
.gitignore vendored
View File

@ -10,3 +10,5 @@
*.bak
__MACOSX/
.DS_Store
.buildpath
.settings/

View File

@ -180,7 +180,12 @@ class StatusUpdater
}
$result = null;
// Execute ping
$txt = exec("ping -c " . $max_runs . " " . $this->server['ip'] . " 2>&1", $output);
$pingCommand = 'ping6';
$serverIp = $this->server['ip'];
if (filter_var($serverIp,FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false){
$pingCommand = 'ping';
}
$txt = exec($pingCommand . " -c " . $max_runs . " " . $serverIp . " 2>&1", $output);
// Non-greedy match on filler
$re1 = '.*?';
// Uninteresting: float
@ -192,7 +197,9 @@ class StatusUpdater
if (preg_match_all("/" . $re1 . $re2 . $re3 . $re4 . "/is", $txt, $matches)) {
$result = $matches[1][0];
}
if (substr($output[0],0,4) == 'PING' && strpos($output[count($output)-2],'packets transmitted')){
$result = 0;
}
if (!is_null($result)) {
$this->header = $output[0];
$status = true;
@ -225,7 +232,11 @@ class StatusUpdater
// save response time
$starttime = microtime(true);
$fp = @fsockopen($this->server['ip'], $this->server['port'], $errno, $this->error, $timeout);
$serverIp = $this->server['ip'];
if (filter_var($serverIp,FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false){
$serverIp = "[$serverIp]";
}
$fp = @fsockopen($serverIp, $this->server['port'], $errno, $this->error, $timeout);
$status = ($fp === false) ? false : true;
$this->rtime = (microtime(true) - $starttime);