step 1 adding statuscake
parent
91336605db
commit
d6c4336124
|
@ -469,6 +469,18 @@ function psm_build_mail($from_name = null, $from_email = null) {
|
|||
return $phpmailer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare a new StatusCake util.
|
||||
*
|
||||
* @return \Pushover
|
||||
*/
|
||||
function psm_build_statuscake() {
|
||||
$statuscake = new \StatusCake();
|
||||
$statuscake->setAccountToken(psm_get_conf('statuscake_account_token'));
|
||||
|
||||
return $statuscake;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare a new Pushover util.
|
||||
*
|
||||
|
@ -697,7 +709,7 @@ function psm_password_decrypt($key, $encryptedString)
|
|||
|
||||
if (empty($key))
|
||||
throw new \InvalidArgumentException('invalid_encryption_key');
|
||||
|
||||
|
||||
$data = base64_decode($encryptedString);
|
||||
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
|
||||
|
||||
|
@ -713,4 +725,4 @@ function psm_password_decrypt($key, $encryptedString)
|
|||
);
|
||||
|
||||
return $decrypted;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -146,6 +146,8 @@ $sm_lang = array(
|
|||
'sms' => 'SMS',
|
||||
'send_sms' => 'Send SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'statuscake' => 'StatusCake',
|
||||
'statuscake_test_id' => 'StatusCake test id',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Delete server',
|
||||
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||
|
@ -220,8 +222,11 @@ $sm_lang = array(
|
|||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'statuscake_app' => 'Click here to create your StatusCake account',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'statuscake_account_token' => 'StatusCake Account Token',
|
||||
'statuscake_account_token_description' => 'For using push test you need to add your account key.',
|
||||
'alert_type' => 'Select when you\'d like to be notified.',
|
||||
'alert_type_description' => '<b>Status change:</b> '.
|
||||
'You will receive a notifcation when a server has a change in status. So from online -> offline or offline -> online.<br/>'.
|
||||
|
@ -243,9 +248,11 @@ $sm_lang = array(
|
|||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_statuscake' => 'StatusCake',
|
||||
'settings_email' => 'Email settings',
|
||||
'settings_sms' => 'Text message settings',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_statuscake' => 'StatusCake settings',
|
||||
'settings_notification' => 'Notification settings',
|
||||
'settings_log' => 'Log settings',
|
||||
'auto_refresh' => 'Auto-refresh',
|
||||
|
|
|
@ -288,9 +288,11 @@ class ConfigController extends AbstractController {
|
|||
'label_tab_email' => psm_get_lang('config', 'tab_email'),
|
||||
'label_tab_sms' => psm_get_lang('config', 'tab_sms'),
|
||||
'label_tab_pushover' => psm_get_lang('config', 'tab_pushover'),
|
||||
'label_tab_statuscake' => psm_get_lang('config', 'tab_statuscake'),
|
||||
'label_settings_email' => psm_get_lang('config', 'settings_email'),
|
||||
'label_settings_sms' => psm_get_lang('config', 'settings_sms'),
|
||||
'label_settings_pushover' => psm_get_lang('config', 'settings_pushover'),
|
||||
'label_settings_statuscake' => psm_get_lang('config', 'settings_statuscake'),
|
||||
'label_settings_notification' => psm_get_lang('config', 'settings_notification'),
|
||||
'label_settings_log' => psm_get_lang('config', 'settings_log'),
|
||||
'label_general' => psm_get_lang('config', 'general'),
|
||||
|
@ -331,11 +333,15 @@ class ConfigController extends AbstractController {
|
|||
'label_pushover_status' => psm_get_lang('config', 'pushover_status'),
|
||||
'label_pushover_clone_app' => psm_get_lang('config', 'pushover_clone_app'),
|
||||
'pushover_clone_url' => PSM_PUSHOVER_CLONE_URL,
|
||||
'label_statuscake_app' => psm_get_lang('config', 'statuscake_app'),
|
||||
'statuscake_url' => 'https://www.statuscake.com/',
|
||||
'label_pushover_api_token' => psm_get_lang('config', 'pushover_api_token'),
|
||||
'label_pushover_api_token_description' => sprintf(
|
||||
psm_get_lang('config', 'pushover_api_token_description'),
|
||||
PSM_PUSHOVER_CLONE_URL
|
||||
),
|
||||
'label_statuscake_account_token' => psm_get_lang('config', 'statuscake_account_token'),
|
||||
'label_statuscake_account_token_description' => psm_get_lang('config', 'statuscake_account_token_description'),
|
||||
'label_alert_type' => psm_get_lang('config', 'alert_type'),
|
||||
'label_alert_type_description' => psm_get_lang('config', 'alert_type_description'),
|
||||
'label_alert_type_status' => psm_get_lang('config', 'alert_type_status'),
|
||||
|
|
|
@ -457,6 +457,8 @@ class ServerController extends AbstractServerController {
|
|||
'label_sms' => psm_get_lang('servers', 'sms'),
|
||||
'label_send_sms' => psm_get_lang('servers', 'send_sms'),
|
||||
'label_pushover' => psm_get_lang('servers', 'pushover'),
|
||||
'label_statuscake' => psm_get_lang('servers', 'statuscake'),
|
||||
'label_statuscake_test_id' => psm_get_lang('servers', 'statuscake_test_id'),
|
||||
'label_users' => psm_get_lang('servers', 'users'),
|
||||
'label_warning_threshold' => psm_get_lang('servers', 'warning_threshold'),
|
||||
'label_warning_threshold_description' => psm_get_lang('servers', 'warning_threshold_description'),
|
||||
|
|
|
@ -60,6 +60,18 @@ class StatusNotifier {
|
|||
*/
|
||||
protected $send_pushover = false;
|
||||
|
||||
/**
|
||||
* Account for sending StatusCake Notification
|
||||
* @var string send_statuscake_account_id
|
||||
*/
|
||||
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
|
||||
|
@ -96,6 +108,8 @@ 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->save_logs = psm_get_conf('log_status');
|
||||
}
|
||||
|
||||
|
@ -188,6 +202,12 @@ 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;
|
||||
}
|
||||
|
||||
|
@ -224,6 +244,18 @@ class StatusNotifier {
|
|||
}
|
||||
}
|
||||
|
||||
protected function notifyByStatusCake($users, $send_statuscake_test_id) {
|
||||
|
||||
$statuscake = psm_build_statuscake();
|
||||
$statuscake->setTestId($send_statuscake_test_id)
|
||||
|
||||
// Log
|
||||
if(psm_get_conf('log_pushover')) {
|
||||
$log_id = psm_add_log($this->server_id, 'statuscake', $message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This functions performs the pushover notifications
|
||||
*
|
||||
|
@ -330,4 +362,4 @@ class StatusNotifier {
|
|||
");
|
||||
return $users;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<li class="{{ email_active }}"><a href="#config-email" data-toggle="tab">{{ label_tab_email }}</a></li>
|
||||
<li class="{{ sms_active }}"><a href="#config-sms" data-toggle="tab">{{ label_tab_sms }}</a></li>
|
||||
<li class="{{ pushover_active }}"><a href="#config-pushover" data-toggle="tab">{{ label_tab_pushover }}</a></li>
|
||||
<li class="{{ statuscake_active }}"><a href="#config-statuscake" data-toggle="tab">{{ label_tab_statuscake }}</a></li>
|
||||
</ul>
|
||||
<div class="tab-content well">
|
||||
<div id="config-general" class="tab-pane {{ general_active }}">
|
||||
|
@ -238,6 +239,40 @@
|
|||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<!-- Start Statuscake -->
|
||||
<div id="config-statuscake" class="tab-pane {{ statuscake_active }}">
|
||||
<fieldset>
|
||||
<legend>{{ label_settings_statuscake }}</legend>
|
||||
<!--
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label class="checkbox" for="pushover_status"><input type="checkbox" id="pushover_status" name="pushover_status[]" {{ pushover_status_checked|raw }} /> {{ label_pushover_status }}</label>
|
||||
<p class="help-block">{{ label_pushover_description|raw }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label class="checkbox"><input type="checkbox" id="log_pushover" name="log_pushover[]" {{ log_pushover_checked|raw }} /> {{ label_log_pushover }}</label>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="statuscake_api_token">{{ label_statuscake_account_token }}</label>
|
||||
<div class="controls">
|
||||
<p><button class="btn btn-primary" onclick="window.open('{{ statuscake_url }}');return false;">{{ label_statuscake_app }}</button></p>
|
||||
<input type="text" id="statuscake_account_token" name="statuscake_account_token" value="{{ statuscake_account_token }}" maxlength="255" />
|
||||
<p class="help-block">{{ label_statuscake_account_token_description|raw }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button class="btn btn-success" type="submit" name="statuscake_submit">{{ label_save }}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<!-- End Statuscake -->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
{{ macro.csrf_input() }}
|
||||
</form>
|
||||
</form>
|
||||
|
|
|
@ -137,6 +137,23 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- -->
|
||||
<div class="control-group {{ control_class_statuscake }}">
|
||||
<label class="control-label" for="statuscake_test_id">{{ label_statuscake }}</label>
|
||||
{% if warning_statuscake %} <p class="help-inline"><i class="icon-warning-sign" data-toggle="tooltip" title="{{ label_warning_statuscake }}"></i></p> {% endif %}
|
||||
<div class="controls">
|
||||
<select id="statuscake" name="statuscake">
|
||||
<option value="yes" {{ edit_statuscake_selected_yes|raw }}>{{ label_yes }}</option>
|
||||
<option value="no" {{ edit_statuscake_selected_no|raw }}>{{ label_no }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<br />
|
||||
<label class="control-label" for="statuscake_test_id">{{ label_statuscake_test_id }}</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="statuscake_test_id" name="statuscake_test_id" value="{{ edit_value_statuscake_test_id }}" maxlength="10" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- -->
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
|
|
Loading…
Reference in New Issue