Fixed ipv6 and website plus you can now test web server on different ports (:8080, :8443)

This commit is contained in:
michael@ilovecode.dk 2014-04-27 22:45:11 +02:00
parent 11907c7047
commit bb459adf8a
1 changed files with 23 additions and 12 deletions

View File

@ -82,7 +82,7 @@ class StatusUpdater {
$this->server = $this->db->selectRow(PSM_DB_PREFIX . 'servers', array(
'server_id' => $server_id,
), array(
'server_id', 'ip', 'port', 'label', 'type', 'pattern', 'status','rtime', 'active', 'warning_threshold', 'warning_threshold_counter',
'server_id', 'ip', 'port', 'label', 'type', 'pattern', 'status', 'rtime', 'active', 'warning_threshold', 'warning_threshold_counter',
));
if(empty($this->server)) {
return false;
@ -169,24 +169,34 @@ class StatusUpdater {
* @return boolean
*/
protected function updateWebsite($max_runs, $run = 1) {
$starttime = microtime(true);
// Removes http(s) from ip address so we can test if its an ipv6 adress
$clean['ip'] = preg_replace('#^http(s)?://#i', '', rtrim($this->server['ip'],'/')); // removes http(s) from ip address
// Parse a URL and return its components
$url = parse_url($this->server['ip']);
// Test if ip is ipv6 or ipv4
if (psm_validate_ipv6($clean['ip'])) {
$clean['ip'] = '['. $clean['ip'] .']';
}
// Build url
$this->server['ip'] = $url['scheme'] . '://' . (psm_validate_ipv6($url['host']) ? '['. $url['host'] .']' : $url['host']) . ':'.$this->server['port'] . (isset($url['path']) ? $url['path'] : '') . (isset($url['query']) ? '?'.$url['query'] : '');
// Add http(s) again
$this->server['ip'] = ($this->server['port'] == 443 ? 'https' : 'http') . '://' . $clean['ip'];
/**
*
* Need php_http.dll extensions but might be a better tool for the job
* http://stackoverflow.com/questions/14056977/function-http-build-url
$this->server['ip'] = http_build_url($this->server['ip'],
array(
"scheme" => $url['scheme'],
"host" => (psm_validate_ipv6($url['host']) ? '['. $url['host'] .']' : $url['host']),
"port" => $this->server['port'],
"path" => (isset($url['path']) ? $url['path'] : ''),
"query" => (isset($url['query']) ? '?'.$url['query'] : '')
), HTTP_URL_STRIP_AUTH | HTTP_URL_JOIN_PATH | HTTP_URL_JOIN_QUERY | HTTP_URL_STRIP_FRAGMENT);
*/
// We're only interested in the header, because that should tell us plenty!
// unless we have a pattern to search for!
$curl_result = psm_curl_get(
$this->server['ip'].':'.$this->server['port'],
$this->server['ip'],
true,
($this->server['pattern'] == '' ? false : true)
);
@ -203,7 +213,7 @@ class StatusUpdater {
if(empty($code_matches[0])) {
// somehow we dont have a proper response.
$this->error = 'no response from server';
$this->error = 'No response from server.';
$result = false;
} else {
$code = $code_matches[1][0];
@ -284,6 +294,7 @@ class StatusUpdater {
} elseif ($this->server['status'] == 'on') {
// need to set rtime to the value from last update, if not the latency will be 0
$this->rtime = $this->server['rtime'];
$this->error = 'Update skipped, must run from cron script.';
return true;
} else {
return false;