Issue #212 Setting Defaults for Pushover

- installation and change the updater - table structure servers
- edit language CZ + EN
- modification methods for modifying and adding servers
pull/304/head
Pavel Dvořák 2016-05-22 21:51:38 +02:00
parent e03625902a
commit 7f76d7f5a8
6 changed files with 182 additions and 6 deletions

View File

@ -129,6 +129,15 @@ $sm_lang = array(
'website_password_description' => 'Heslo pro přístup na stránku. Heslo je v databázi šifrované a NENÍ uloženo v čistém textu.',
'fieldset_monitoring' => 'Monitoring',
'fieldset_permissions' => 'Oprávnění',
'fieldset_pushover' => 'Nastavení Pushover upozornění (volitelné)',
'pushover_priority_online' => 'Priorita pro Online',
'pushover_priority_offline' => 'Priorita pro Offline',
'pushover_sound' => 'Zvuk',
'pushover_retry' => 'Opakování',
'pushover_retry_description' => 'Pokud chcete vypnout toto nastavení vymažte hodnoty z pole. Pokud je nastavena Nouzová priorita (2), toto nastavení je vyžadováno, pokud není nastaveno uplatní se hodnota 300 sekund.',
'pushover_expire' => 'Expirace',
'pushover_expire_description' => 'Pokud chcete vypnout toto nastavení vymažte hodnoty z pole. Pokud je nastavena Nouzová priorita (2), toto nastavení je vyžadováno, pokud není nastaveno uplatní se hodnota 3600 sekund.',
'pushover_default' => 'Výchozí nastavení (%s)',
'port' => 'Port',
'custom_port' => 'Uživatelský Port',
'popular_ports' => 'Populární Porty',
@ -226,9 +235,9 @@ $sm_lang = array(
'pushover_default_sound' => 'Výchozí zvuk',
'pushover_default_sound_device' => 'Výchozí zvuk zařízení',
'pushover_default_retry' => 'Výchozí opakování',
'pushover_default_retry_description' => 'Toto nastavení se uplatní v oznámení pouze pokud je zvolena Nouzová priorita (2)',
'pushover_default_retry_description' => 'Pokud chcete vypnout toto nastavení vymažte hodnoty z pole. Pokud je nastavena Nouzová priorita (2), toto nastavení je vyžadováno, pokud není nastaveno uplatní se hodnota 300 sekund.',
'pushover_default_expire' => 'Výchozí expirace',
'pushover_default_expire_description' => 'Toto nastavení se uplatní v oznámení pouze pokud je zvolena Nouzová priorita (2)',
'pushover_default_expire_description' => 'Pokud chcete vypnout toto nastavení vymažte hodnoty z pole. Pokud je nastavena Nouzová priorita (2), toto nastavení je vyžadováno, pokud není nastaveno uplatní se hodnota 3600 sekund.',
'pushover_priority_-2' => 'Nejnižší priorita (-2)',
'pushover_priority_-1' => 'Nízká priorita (-1)',
'pushover_priority_0' => 'Normální priorita (0)',

View File

@ -128,6 +128,15 @@ $sm_lang = array(
'website_password_description' => 'Password to access the site. The password is encrypted in the database and is not stored in plain text.',
'fieldset_monitoring' => 'Monitoring',
'fieldset_permissions' => 'Permissions',
'fieldset_pushover' => 'Pushover notice Settings (Optional)',
'pushover_priority_online' => 'Priority for Online',
'pushover_priority_offline' => 'Priority for Offline',
'pushover_sound' => 'Sound',
'pushover_retry' => 'Retry',
'pushover_retry_description' => 'If you want to disable this setting clears the value of the field. When set Emergency priority (2), this setting is required when no applicable value is 300 seconds.',
'pushover_expire' => 'Expirace',
'pushover_expire_description' => 'If you want to disable this setting clears the value of the field. When set Emergency priority (2), this setting is required when no applicable value is 3600 seconds.',
'pushover_default' => 'Default settings (%s)',
'port' => 'Port',
'custom_port' => 'Custom Port',
'popular_ports' => 'Popular Ports',
@ -225,9 +234,9 @@ $sm_lang = array(
'pushover_default_sound' => 'Default Sound',
'pushover_default_sound_device' => 'Device default sound',
'pushover_default_retry' => 'Default Retry',
'pushover_default_retry_description' => 'This setting will apply to notification only if the selected Emergency Priority (2).',
'pushover_default_retry_description' => 'If you want to disable this setting erases the value of the field. When set Emergency priority (2), this setting is required When no applicable value is 300 seconds.',
'pushover_default_expire' => 'Default Expire',
'pushover_default_expire_description' => 'This setting will apply to notification only if the selected Emergency Priority (2).',
'pushover_default_expire_description' => 'If you want to disable this setting erases the value of the field. When set Emergency priority (2), this setting is required When no applicable value is 3600 seconds.',
'pushover_priority_-2' => 'Lowest Priority (-2)',
'pushover_priority_-1' => 'Low Priority (-1)',
'pushover_priority_0' => 'Normal Priority (0)',

View File

@ -77,7 +77,12 @@ abstract class AbstractServerController extends AbstractController {
`s`.`warning_threshold_counter`,
`s`.`timeout`,
`s`.`website_username`,
`s`.`website_password`
`s`.`website_password`,
`s`.`pushover_priority_online`,
`s`.`pushover_priority_offline`,
`s`.`pushover_sound`,
`s`.`pushover_retry`,
`s`.`pushover_expire`
FROM `".PSM_DB_PREFIX."servers` AS `s`
{$sql_join}
{$sql_where}

View File

@ -157,6 +157,9 @@ class ServerController extends AbstractServerController {
$tpl_data['users'] = $this->db->select(PSM_DB_PREFIX.'users', null, array('user_id', 'name'), '', 'name');
$tpl_data['default_pushover_retry'] = psm_get_conf('pushover_default_retry');
$tpl_data['default_pushover_expire'] = psm_get_conf('pushover_default_expire');
switch($this->server_id) {
case 0:
// insert mode
@ -206,6 +209,8 @@ 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_pushover_retry' => $edit_server['pushover_retry'],
'edit_pushover_expire' => $edit_server['pushover_expire'],
));
}
@ -222,6 +227,84 @@ class ServerController extends AbstractServerController {
}
}
// pushover settings
$pushoverPriority = [
'' => [
'value' => '',
'label' => psm_get_lang('servers', 'pushover_default'),
'selected' => '',
],
'-2' => [
'value' => '-2',
'label' => psm_get_lang('config', 'pushover_priority_-2'),
'selected' => '',
],
'-1' => [
'value' => '-1',
'label' => psm_get_lang('config', 'pushover_priority_-1'),
'selected' => '',
],
'0' => [
'value' => '0',
'label' => psm_get_lang('config', 'pushover_priority_0'),
'selected' => '',
],
'1' => [
'value' => '1',
'label' => psm_get_lang('config', 'pushover_priority_1'),
'selected' => '',
],
'2' => [
'value' => '2',
'label' => psm_get_lang('config', 'pushover_priority_2'),
'selected' => '',
],
];
$tpl_data['pushover_priority_online'] = $pushoverPriority;
$tpl_data['pushover_priority_online']['']['label'] = sprintf($tpl_data['pushover_priority_online']['']['label'], psm_get_conf('pushover_default_priority_online'));
if (
isset($edit_server['pushover_priority_online']) &&
isset($tpl_data['pushover_priority_online'][$edit_server['pushover_priority_online']])
) {
$tpl_data['pushover_priority_online'][$edit_server['pushover_priority_online']]['selected'] = ' selected="selected"';
}
$tpl_data['pushover_priority_offline'] = $pushoverPriority;
$tpl_data['pushover_priority_offline']['']['label'] = sprintf($tpl_data['pushover_priority_offline']['']['label'], psm_get_conf('pushover_default_priority_offline'));
if (
isset($edit_server['pushover_priority_offline']) &&
isset($tpl_data['pushover_priority_offline'][$edit_server['pushover_priority_offline']])
) {
$tpl_data['pushover_priority_offline'][$edit_server['pushover_priority_offline']]['selected'] = ' selected="selected"';
}
$pushover = psm_build_pushover();
$pushoverSound = $pushover->getSoundsList();
$tpl_data['pushover_sound'][''] = [
'value' => '',
'label' => psm_get_lang('servers', 'pushover_default'),
'selected' => (isset($edit_server['pushover_sound']) && $edit_server['pushover_sound'] == psm_get_conf('pushover_default_sound')) ? ' selected="selected"' : '',
];
if ($pushoverSound !== false) {
foreach ($pushoverSound as $key => $name) {
$tpl_data['pushover_sound'][$key] = [
'value' => $key,
'label' => $name,
'selected' => (isset($edit_server['pushover_sound']) && $edit_server['pushover_sound'] == $key) ? ' selected="selected"' : '',
];
}
$tpl_data['pushover_sound']['']['label'] = sprintf(
$tpl_data['pushover_sound']['']['label'],
(isset($pushoverSound[psm_get_conf('pushover_default_sound')]) ? $pushoverSound[psm_get_conf('pushover_default_sound')] : psm_get_conf('pushover_default_sound'))
);
} else {
$tpl_data['pushover_sound']['']['label'] = sprintf($tpl_data['pushover_sound']['']['label'], psm_get_conf('pushover_default_sound'));
}
return $this->twig->render('module/server/server/update.tpl.html', $tpl_data);
}
@ -247,6 +330,11 @@ 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',
'pushover_priority_online' => psm_POST('pushover_priority_online', ''),
'pushover_priority_offline' => psm_POST('pushover_priority_offline', ''),
'pushover_sound' => psm_POST('pushover_sound', ''),
'pushover_retry' => psm_POST('pushover_retry', ''),
'pushover_expire' => psm_POST('pushover_expire', ''),
);
// make sure websites start with http://
if($clean['type'] == 'website' && substr($clean['ip'], 0, 4) != 'http') {
@ -401,6 +489,15 @@ class ServerController extends AbstractServerController {
'label_website_password_description' => psm_get_lang('servers', 'website_password_description'),
'label_fieldset_monitoring' => psm_get_lang('servers', 'fieldset_monitoring'),
'label_fieldset_permissions' => psm_get_lang('servers', 'fieldset_permissions'),
'label_fieldset_pushover' => psm_get_lang('servers', 'fieldset_pushover'),
'label_seconds' => psm_get_lang('config', 'seconds'),
'label_pushover_priority_online' => psm_get_lang('servers', 'pushover_priority_online'),
'label_pushover_priority_offline' => psm_get_lang('servers', 'pushover_priority_offline'),
'label_pushover_sound' => psm_get_lang('servers', 'pushover_sound'),
'label_pushover_retry' => psm_get_lang('servers', 'pushover_retry'),
'label_pushover_retry_description' => psm_get_lang('servers', 'pushover_retry_description'),
'label_pushover_expire' => psm_get_lang('servers', 'pushover_expire'),
'label_pushover_expire_description' => psm_get_lang('servers', 'pushover_expire_description'),
'label_port' => psm_get_lang('servers', 'port'),
'label_custom_port' => psm_get_lang('servers', 'custom_port'),
'label_please_select' => psm_get_lang('servers', 'please_select'),

View File

@ -235,6 +235,11 @@ class Installer {
`timeout` smallint(1) unsigned NULL DEFAULT NULL,
`website_username` varchar(255) DEFAULT NULL,
`website_password` varchar(255) DEFAULT NULL,
`pushover_priority_online` varchar(255) DEFAULT NULL,
`pushover_priority_offline` varchar(255) DEFAULT NULL,
`pushover_sound` varchar(255) DEFAULT NULL,
`pushover_retry` varchar(255) DEFAULT NULL,
`pushover_expire` varchar(255) DEFAULT NULL,
PRIMARY KEY (`server_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'servers_uptime' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "servers_uptime` (
@ -448,6 +453,11 @@ class Installer {
psm_update_conf('pushover_default_expire', '3600');
$queries[] = "ALTER TABLE `" . PSM_DB_PREFIX . "servers` CHANGE `ip` `ip` VARCHAR(500) NOT NULL;";
$queries[] = "ALTER TABLE `" . PSM_DB_PREFIX . "servers` ADD `website_username` varchar(255) NULL, ADD `website_password` varchar(255) NULL AFTER `website_username`;";
$queries[] = "ALTER TABLE `" . PSM_DB_PREFIX . "servers` ADD `pushover_priority_online` varchar(255) COLLATE 'utf8_general_ci' NULL,
ADD `pushover_priority_offline` varchar(255) COLLATE 'utf8_general_ci' NULL AFTER `pushover_priority_online`,
ADD `pushover_sound` varchar(255) COLLATE 'utf8_general_ci' NULL AFTER `pushover_priority_offline`,
ADD `pushover_retry` varchar(255) COLLATE 'utf8_general_ci' NULL AFTER `pushover_sound`,
ADD `pushover_expire` varchar(255) COLLATE 'utf8_general_ci' NULL AFTER `pushover_retry`;";
$this->execSQL($queries);
}

View File

@ -139,6 +139,52 @@
</div>
</fieldset>
<fieldset>
<legend>{{ label_fieldset_pushover }}</legend>
<div class="control-group {{ control_class_pushover }}">
<label class="control-label" for="pushover_priority_online">{{ label_pushover_priority_online }}</label>
<div class="controls">
<select id="pushover_priority_online" name="pushover_priority_online">
{% for value in pushover_priority_online %}
<option value="{{ value.value }}"{{ value.selected }}>{{ value.label }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="control-group {{ control_class_pushover }}">
<label class="control-label" for="pushover_priority_offline">{{ label_pushover_priority_offline }}</label>
<div class="controls">
<select id="pushover_priority_offline" name="pushover_priority_offline">
{% for value in pushover_priority_offline %}
<option value="{{ value.value }}"{{ value.selected }}>{{ value.label }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="control-group {{ control_class_pushover }}">
<label class="control-label" for="pushover_sound">{{ label_pushover_sound }}</label>
<div class="controls">
<select class="span3" id="pushover_sound" name="pushover_sound">
{% for value in pushover_sound %}
<option value="{{ value.value }}"{{ value.selected }}>{{ value.label }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="control-group {{ control_class_pushover }}">
<label class="control-label" for="pushover_retry">{{ label_pushover_retry }}</label>
<div class="controls">
<input class="input-mini" type="text" id="pushover_retry" name="pushover_retry" value="{{ edit_pushover_retry }}" placeholder="{{ default_pushover_retry }}" maxlength="10" data-toggle="tooltip" title="{{ label_pushover_retry_description }}" /> {{ label_seconds }}
</div>
</div>
<div class="control-group {{ control_class_pushover }}">
<label class="control-label" for="pushover_expire">{{ label_pushover_expire }}</label>
<div class="controls">
<input class="input-mini" type="text" id="pushover_expire" name="pushover_expire" value="{{ edit_pushover_expire }}" placeholder="{{ default_pushover_expire }}" maxlength="10" data-toggle="tooltip" title="{{ label_pushover_expire_description }}" /> {{ label_seconds }}
</div>
</div>
</fieldset>
<fieldset>
<legend>{{ label_fieldset_permissions }}</legend>
<div class="control-group">