enable statuscake

pull/352/head^2
easylo 2016-09-07 08:22:49 +02:00
parent d6c4336124
commit 62b081db57
9 changed files with 83 additions and 26 deletions

View File

@ -18,7 +18,8 @@
"php-pushover/php-pushover": "dev-master",
"twig/twig": "1.*",
"paragonie/random_compat" : "1.1.6",
"indigophp/hash-compat" : "1.1.0"
"indigophp/hash-compat" : "1.1.0",
"php-statuscake/php-statuscake": "0.2"
},
"autoload": {
"files": [

34
composer.lock generated
View File

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "8f27400edd82e99aa35998a3e01fc23e",
"content-hash": "3d1c36ee7e11634bc149bfc9a250e4ae",
"hash": "ee6fcd5efd7619a347226c9ea90caf32",
"content-hash": "96a691d2bd6f2b93d99df6599cd6c24e",
"packages": [
{
"name": "indigophp/hash-compat",
@ -174,6 +174,36 @@
},
"time": "2014-07-30 13:55:53"
},
{
"name": "php-statuscake/php-statuscake",
"version": "0.2",
"source": {
"type": "git",
"url": "https://github.com/easylo/php-statuscake.git",
"reference": "567e734404b77178527c510623431df7753bdb5e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/easylo/php-statuscake/zipball/567e734404b77178527c510623431df7753bdb5e",
"reference": "567e734404b77178527c510623431df7753bdb5e",
"shasum": ""
},
"type": "library",
"autoload": {
"files": [
"Statuscake.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"authors": [
{
"name": "Laurent RICHARD",
"email": "easylo@gmail.com"
}
],
"description": "PHP class for the statuscake.com project",
"time": "2016-09-06 22:55:34"
},
{
"name": "phpmailer/phpmailer",
"version": "v5.2.6",

View File

@ -472,7 +472,7 @@ function psm_build_mail($from_name = null, $from_email = null) {
/**
* Prepare a new StatusCake util.
*
* @return \Pushover
* @return \Statuscake
*/
function psm_build_statuscake() {
$statuscake = new \StatusCake();

View File

@ -29,7 +29,7 @@
/**
* Current PSM version
*/
define('PSM_VERSION', '3.2.0');
define('PSM_VERSION', '3.2.1');
/**
* URL to check for updates. Will not be checked if turned off on config page.

View File

@ -62,6 +62,7 @@ class ConfigController extends AbstractController {
'sms_gateway_password',
'sms_from',
'pushover_api_token',
'statuscake_account_token',
);
private $default_tab = 'general';

View File

@ -73,6 +73,8 @@ abstract class AbstractServerController extends AbstractController {
`s`.`email`,
`s`.`sms`,
`s`.`pushover`,
`s`.`statuscake`,
`s`.`statuscake_test_id`,
`s`.`warning_threshold`,
`s`.`warning_threshold_counter`,
`s`.`timeout`,

View File

@ -206,10 +206,12 @@ class ServerController extends AbstractServerController {
'edit_email_selected_' . $edit_server['email'] => 'selected="selected"',
'edit_sms_selected_' . $edit_server['sms'] => 'selected="selected"',
'edit_pushover_selected_' . $edit_server['pushover'] => 'selected="selected"',
'edit_statuscake_selected_' . $edit_server['statuscake'] => 'selected="selected"',
'edit_value_statuscake_test_id' => $edit_server['statuscake_test_id'],
));
}
$notifications = array('email', 'sms', 'pushover');
$notifications = array('email', 'sms', 'pushover','statuscake');
foreach($notifications as $notification) {
if(psm_get_conf($notification . '_status') == 0) {
$tpl_data['warning_' . $notification] = true;
@ -268,6 +270,8 @@ class ServerController extends AbstractServerController {
'email' => in_array($_POST['email'], array('yes', 'no')) ? $_POST['email'] : 'no',
'sms' => in_array($_POST['sms'], array('yes', 'no')) ? $_POST['sms'] : 'no',
'pushover' => in_array($_POST['pushover'], array('yes', 'no')) ? $_POST['pushover'] : 'no',
'statuscake' => in_array($_POST['statuscake'], array('yes', 'no')) ? $_POST['statuscake'] : 'no',
'statuscake_test_id' => trim(strip_tags(psm_POST('statuscake_test_id', ''))),
);
// make sure websites start with http://
if($clean['type'] == 'website' && substr($clean['ip'], 0, 4) != 'http') {

View File

@ -146,6 +146,7 @@ class Installer {
('sms_from', '1234567890'),
('pushover_status', '0'),
('pushover_api_token', ''),
('statuscake_account_token', ''),
('password_encrypt_key', '" . sha1(microtime()) . "'),
('alert_type', 'status'),
('log_status', '1'),
@ -229,6 +230,8 @@ class Installer {
`email` enum('yes','no') NOT NULL default 'yes',
`sms` enum('yes','no') NOT NULL default 'no',
`pushover` enum('yes','no') NOT NULL default 'yes',
`statuscake` enum('yes','no') NOT NULL default 'yes',
`statuscake_test_id` varchar(50) NULL,
`warning_threshold` mediumint(1) unsigned NOT NULL DEFAULT '1',
`warning_threshold_counter` mediumint(1) unsigned NOT NULL DEFAULT '0',
`timeout` smallint(1) unsigned NULL DEFAULT NULL,
@ -290,6 +293,9 @@ class Installer {
if(version_compare($version_from, '3.2.0', '<')) {
$this->upgrade320();
}
if(version_compare($version_from, '3.2.1', '<')) {
$this->upgrade321();
}
psm_update_conf('version', $version_to);
}
@ -469,4 +475,17 @@ class Installer {
// Drop old user_id('s) column
$this->execSQL("ALTER TABLE `" . PSM_DB_PREFIX . "log` DROP COLUMN `user_id`;");
}
/**
* Upgrade for v3.2.1 release
*/
protected function upgrade321() {
$queries = array();
psm_update_conf('statuscake_account_token', '');
$queries[] = "ALTER TABLE `" . PSM_DB_PREFIX . "servers` ADD `statuscake` enum('yes','no') NOT NULL default 'yes', ADD `statuscake_test_id` varchar(50) NULL AFTER `pushover`;";
$this->execSQL($queries);
}
}

View File

@ -66,12 +66,6 @@ class StatusNotifier {
*/
protected $send_statuscake_account_id = null;
/**
* Test for sending StatusCake Notification
* @var string send_statuscake_test_id
*/
protected $send_statuscake_test_id = null;
/**
* Save log records?
* @var boolean $save_log
@ -108,8 +102,7 @@ class StatusNotifier {
$this->send_emails = psm_get_conf('email_status');
$this->send_sms = psm_get_conf('sms_status');
$this->send_pushover = psm_get_conf('pushover_status');
$this->send_statuscake_account_id = psm_get_conf('statuscake_account_id');
$this->send_statuscake_test_id = psm_get_conf('statuscake_test_id');
$this->send_statuscake_account_token = psm_get_conf('statuscake_account_token');
$this->save_logs = psm_get_conf('log_status');
}
@ -122,6 +115,7 @@ class StatusNotifier {
* @return boolean
*/
public function notify($server_id, $status_old, $status_new) {
if(!$this->send_emails && !$this->send_sms && !$this->save_logs) {
// seems like we have nothing to do. skip the rest
return false;
@ -135,7 +129,7 @@ class StatusNotifier {
$this->server = $this->db->selectRow(PSM_DB_PREFIX . 'servers', array(
'server_id' => $server_id,
), array(
'server_id', 'ip', 'port', 'label', 'type', 'pattern', 'status', 'error', 'active', 'email', 'sms', 'pushover',
'server_id', 'ip', 'port', 'label', 'type', 'pattern', 'status', 'error', 'active', 'email', 'sms', 'pushover', 'statuscake','statuscake_test_id',
));
if(empty($this->server)) {
return false;
@ -165,6 +159,15 @@ class StatusNotifier {
break;
}
// check if statuscake is enabled for this server
if( !is_null($this->send_statuscake_account_token) && !empty($this->send_statuscake_account_token)
&& $this->server['statuscake'] == 'yes'
&& !is_null($this->server['statuscake_test_id']) && !empty($this->server['statuscake_test_id'])
) {
// yay lets wake those nerds up!
$this->notifyByStatusCake($users, $this->server['statuscake_test_id']);
}
if(!$notify) {
return false;
}
@ -202,12 +205,6 @@ class StatusNotifier {
$this->notifyByPushover($users);
}
// check if statuscake is enabled for this server
if( !is_null($this->send_statuscake_account_id) && !is_null($this->send_statuscake_test_id) && $this->server['send_statuscake'] == 'yes') {
// yay lets wake those nerds up!
$this->notifyByStatusCake($users, $this->send_statuscake_test_id);
}
return $notify;
}
@ -244,16 +241,19 @@ class StatusNotifier {
}
}
protected function notifyByStatusCake($users, $send_statuscake_test_id) {
protected function notifyByStatusCake($users, $statuscake_test_id) {
$statuscake = psm_build_statuscake();
$statuscake->setTestId($send_statuscake_test_id)
$statuscake->setTestId($statuscake_test_id);
$statuscake->setTime(11);
$statuscake->setStatusCode(200);
// Log
if(psm_get_conf('log_pushover')) {
$log_id = psm_add_log($this->server_id, 'statuscake', $message);
}
//if(psm_get_conf('log_statuscake')) {
// $log_id = psm_add_log($this->server_id, 'statuscake', $message);
//}
$statuscake->send();
}
/**