Added foundation
Not ready for use! - Added translation - Added fields to GUI - Updated install script - Added last_offline - Display last_error ToDo: - Collect Raw output - Collect Error raw output - Save output to databasepull/627/head
parent
46311d569e
commit
9c8b7e4842
|
@ -29,7 +29,7 @@
|
|||
/**
|
||||
* Current PSM version
|
||||
*/
|
||||
define('PSM_VERSION', '3.2.2');
|
||||
define('PSM_VERSION', '3.3.0');
|
||||
|
||||
/**
|
||||
* URL to check for updates. Will not be checked if turned off on config page.
|
||||
|
|
|
@ -49,6 +49,7 @@ $sm_lang = array(
|
|||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
'activate' => 'Activate',
|
||||
'advanced' => 'Advanced',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
|
@ -158,6 +159,10 @@ $sm_lang = array(
|
|||
'header_value_description' => 'Header value. Regular expressions are allowed.',
|
||||
'last_check' => 'Last check',
|
||||
'last_online' => 'Last online',
|
||||
'last_offline' => 'Last offline',
|
||||
'last_raw' => 'Last positive raw output',
|
||||
'last_error' => 'Last error',
|
||||
'last_error_raw' => 'Last error raw output',
|
||||
'monitoring' => 'Monitoring',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'email' => 'Email',
|
||||
|
|
|
@ -71,6 +71,7 @@ abstract class AbstractServerController extends AbstractController {
|
|||
`s`.`rtime`,
|
||||
`s`.`last_check`,
|
||||
`s`.`last_online`,
|
||||
`s`.`last_offline`,
|
||||
`s`.`active`,
|
||||
`s`.`email`,
|
||||
`s`.`sms`,
|
||||
|
@ -80,7 +81,10 @@ abstract class AbstractServerController extends AbstractController {
|
|||
`s`.`warning_threshold_counter`,
|
||||
`s`.`timeout`,
|
||||
`s`.`website_username`,
|
||||
`s`.`website_password`
|
||||
`s`.`website_password`,
|
||||
`s`.`last_offline`,
|
||||
`s`.`last_error_raw`,
|
||||
`s`.`last_raw`
|
||||
FROM `".PSM_DB_PREFIX."servers` AS `s`
|
||||
{$sql_join}
|
||||
{$sql_where}
|
||||
|
@ -102,6 +106,7 @@ abstract class AbstractServerController extends AbstractController {
|
|||
protected function formatServer($server) {
|
||||
$server['rtime'] = round((float) $server['rtime'], 4);
|
||||
$server['last_online'] = psm_timespan($server['last_online']);
|
||||
$server['last_offline'] = psm_timespan($server['last_offline']);
|
||||
$server['last_check'] = psm_timespan($server['last_check']);
|
||||
$server['active'] = psm_get_lang('system', $server['active']);
|
||||
$server['email'] = psm_get_lang('system', $server['email']);
|
||||
|
@ -117,6 +122,9 @@ abstract class AbstractServerController extends AbstractController {
|
|||
$server['type'] = psm_get_lang('servers', 'type_' . $server['type']);
|
||||
$server['timeout'] = ($server['timeout'] > 0) ? $server['timeout'] : PSM_CURL_TIMEOUT;
|
||||
|
||||
$server['last_error_raw'] = htmlentities($server['last_error_raw']);
|
||||
$server['last_raw'] = htmlentities($server['last_raw']);
|
||||
|
||||
$url_actions = array('delete', 'edit', 'view');
|
||||
foreach($url_actions as $action) {
|
||||
$server['url_' . $action] = psm_build_url(array(
|
||||
|
|
|
@ -477,6 +477,10 @@ class ServerController extends AbstractServerController {
|
|||
'label_last_check' => psm_get_lang('servers', 'last_check'),
|
||||
'label_rtime' => psm_get_lang('servers', 'latency'),
|
||||
'label_last_online' => psm_get_lang('servers', 'last_online'),
|
||||
'label_last_offline' => psm_get_lang('servers', 'last_offline'),
|
||||
'label_last_raw' => psm_get_lang('servers', 'last_raw'),
|
||||
'label_last_error' => psm_get_lang('servers', 'last_error'),
|
||||
'label_last_error_raw' => psm_get_lang('servers', 'last_error_raw'),
|
||||
'label_monitoring' => psm_get_lang('servers', 'monitoring'),
|
||||
'label_email' => psm_get_lang('servers', 'email'),
|
||||
'label_send_email' => psm_get_lang('servers', 'send_email'),
|
||||
|
@ -495,6 +499,7 @@ class ServerController extends AbstractServerController {
|
|||
'label_yes' => psm_get_lang('system', 'yes'),
|
||||
'label_no' => psm_get_lang('system', 'no'),
|
||||
'label_add_new' => psm_get_lang('system', 'add_new'),
|
||||
'label_advanced' => psm_get_lang('system', 'advanced'),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -516,4 +521,3 @@ class ServerController extends AbstractServerController {
|
|||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -307,6 +307,9 @@ class Installer {
|
|||
if(version_compare($version_from, '3.2.2', '<')) {
|
||||
$this->upgrade322();
|
||||
}
|
||||
if(version_compare($version_from, '3.3.0', '<')) {
|
||||
$this->upgrade330();
|
||||
}
|
||||
psm_update_conf('version', $version_to);
|
||||
}
|
||||
|
||||
|
@ -515,4 +518,16 @@ class Installer {
|
|||
('telegram_api_token', '');";
|
||||
$this->execSQL($queries);
|
||||
}
|
||||
|
||||
/**
|
||||
* Upgrade for v3.3.0 release
|
||||
*/
|
||||
protected function upgrade330() {
|
||||
$queries = array();
|
||||
$queries[] = "ALTER TABLE `" . PSM_DB_PREFIX . "servers`
|
||||
ADD COLUMN VARCHAR(255) `last_offline` AFTER `last_online`,
|
||||
ADD COLUMN VARCHAR(255) `last_error_raw` AFTER `website_password`,
|
||||
ADD COLUMN VARCHAR(255) `last_raw` AFTER `last_error_raw`;";
|
||||
$this->execSQL($queries);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -118,8 +118,9 @@ class StatusUpdater {
|
|||
$save['last_online'] = date('Y-m-d H:i:s');
|
||||
$save['warning_threshold_counter'] = 0;
|
||||
} else {
|
||||
// server is offline, increase the error counter
|
||||
// server is offline, increase the error counter and set last offline
|
||||
$save['warning_threshold_counter'] = $this->server['warning_threshold_counter'] + 1;
|
||||
$save['last_offline'] = date('Y-m-d H:i:s');
|
||||
|
||||
if($save['warning_threshold_counter'] < $this->server['warning_threshold']) {
|
||||
// the server is offline but the error threshold has not been met yet.
|
||||
|
|
|
@ -89,6 +89,26 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="advanced">{{ label_advanced }} <i class="icon-expand-arrow"></i></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr class="advanced">
|
||||
<td>{{ label_last_offline }}:</td>
|
||||
<td>{{ last_offline }}</td>
|
||||
</tr>
|
||||
<tr class="advanced">
|
||||
<td>{{ label_last_error }}:</td>
|
||||
<td>{{ error }}</td>
|
||||
</tr>
|
||||
<tr class="advanced">
|
||||
<td>{{ label_last_error_raw }}:</td>
|
||||
<td>{{ last_error_raw }}</td>
|
||||
</tr>
|
||||
<tr class="advanced">
|
||||
<td>{{ label_last_raw }}:</td>
|
||||
<td>{{ last_raw }}</td>
|
||||
</tr>
|
||||
{% if has_admin_actions %}
|
||||
<tr>
|
||||
<td class="hidden-small"> </td>
|
||||
|
|
|
@ -676,3 +676,6 @@ legend{
|
|||
.icon-telegram {
|
||||
background-position: -96px -168px;
|
||||
}
|
||||
.icon-expand-arrow {
|
||||
background-position: -312px -120px;
|
||||
}
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
$().ready(function() {
|
||||
$('.show-modal').click(function (e) {
|
||||
$(".show-modal").click(function (e) {
|
||||
var $this = $(this);
|
||||
if ($this.is('a')) {
|
||||
if ($this.is("a")) {
|
||||
e.preventDefault();
|
||||
}
|
||||
var $modal_id = $this.attr('data-modal-id') || 'main';
|
||||
var $modal = $('#' + $modal_id + 'Modal');
|
||||
var $modal_id = $this.attr("data-modal-id") || "main";
|
||||
var $modal = $("#" + $modal_id + "Modal");
|
||||
if($modal.length) {
|
||||
$modal.find('.modalOKButton').data('modal-origin', $this);
|
||||
$modal.find(".modalOKButton").data("modal-origin", $this);
|
||||
|
||||
var param = $this.attr('data-modal-param');
|
||||
var param = $this.attr("data-modal-param");
|
||||
if(param) {
|
||||
var ary = param.split(',');
|
||||
var ary = param.split(",");
|
||||
for (var index = 0; index < ary.length && index < 9; ++index) {
|
||||
var value = ary[index];
|
||||
$($modal).find('span.modalP' + (index+1)).text(value);
|
||||
$($modal).find("span.modalP" + (index+1)).text(value);
|
||||
}
|
||||
}
|
||||
scroll(0, 0);
|
||||
$modal.modal('show');
|
||||
$modal.modal("show");
|
||||
} else {
|
||||
// Just in case we forgot the dialog box
|
||||
var conf = confirm("Are you sure?");
|
||||
|
@ -29,18 +29,19 @@ $().ready(function() {
|
|||
return false;
|
||||
});
|
||||
|
||||
$('.modalOKButton').click(function(e) {
|
||||
$(".modalOKButton").click(function(e) {
|
||||
var $this = $(this);
|
||||
var $origin = $this.data('modal-origin');
|
||||
if ($origin.is('a')) {
|
||||
window.location = $origin.attr('href');
|
||||
var $origin = $this.data("modal-origin");
|
||||
if ($origin.is("a")) {
|
||||
window.location = $origin.attr("href");
|
||||
} else {
|
||||
$origin.next('input[type=hidden]').attr('value', 1);
|
||||
$origin.closest('form').submit();
|
||||
$origin.next("input[type=hidden]").attr("value", 1);
|
||||
$origin.closest("form").submit();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
$('select.multiselect').multiselect({
|
||||
|
||||
$("select.multiselect").multiselect({
|
||||
includeSelectAllOption: true,
|
||||
maxHeight: 400,
|
||||
enableCaseInsensitiveFiltering: true
|
||||
|
@ -51,71 +52,94 @@ $().ready(function() {
|
|||
|
||||
// popularPorts
|
||||
// initial
|
||||
$('.portGroup').hide();
|
||||
var portInput = $('#port').val();
|
||||
$(".portGroup").hide();
|
||||
var portInput = $("#port").val();
|
||||
|
||||
if (portInput != '') {
|
||||
var findPopularPorts = $('#popularPorts').find('option[value=' + portInput + ']');
|
||||
if (portInput !== "") {
|
||||
var findPopularPorts = $("#popularPorts").find('option[value=" + portInput + "]');
|
||||
if(findPopularPorts.length) {
|
||||
$(findPopularPorts).attr("selected", "selected");
|
||||
} else {
|
||||
$('#popularPorts').find('option[value=custom]').attr("selected", "selected");
|
||||
$('.portGroup').slideDown();
|
||||
$("#popularPorts").find('option[value=custom]').attr("selected", "selected");
|
||||
$(".portGroup").slideDown();
|
||||
}
|
||||
}
|
||||
|
||||
$('#popularPorts').change(function () {
|
||||
changePopularPorts($(this).val(), false, $('#type').val());
|
||||
$("#popularPorts").change(function () {
|
||||
changePopularPorts($(this).val(), false, $("#type").val());
|
||||
});
|
||||
|
||||
// server type
|
||||
$('.types').hide();
|
||||
changeTypeSwitch($('#type').val());
|
||||
$(".types").hide();
|
||||
changeTypeSwitch($("#type").val());
|
||||
|
||||
$('#type').change(function () {
|
||||
changeTypeSwitch($('#type').val());
|
||||
changePopularPorts($('#popularPorts').val(), true, $('#type').val());
|
||||
$("#type").change(function () {
|
||||
changeTypeSwitch($("#type").val());
|
||||
changePopularPorts($("#popularPorts").val(), true, $("#type").val());
|
||||
});
|
||||
|
||||
// advanced information
|
||||
$(".advanced").hide();
|
||||
var advancedopen = 0;
|
||||
$("#advanced").click(
|
||||
function() {
|
||||
advancedSwitch((advancedopen += 1) % 2);
|
||||
});
|
||||
});
|
||||
|
||||
function changeTypeSwitch(typeInput) {
|
||||
switch (typeInput) {
|
||||
case 'service':
|
||||
$('.types').slideUp();
|
||||
$('.typeService').slideDown();
|
||||
function advancedSwitch(statusInput) {
|
||||
switch (statusInput) {
|
||||
case 0:
|
||||
$(".advanced").slideUp();
|
||||
break;
|
||||
|
||||
case 'website':
|
||||
$('.types').slideUp();
|
||||
$('.typeWebsite').slideDown();
|
||||
case 1:
|
||||
$(".advanced").slideDown();
|
||||
break;
|
||||
|
||||
default:
|
||||
$('.types').hide();
|
||||
$(".advanced").hide();
|
||||
}
|
||||
}
|
||||
|
||||
function changeTypeSwitch(typeInput) {
|
||||
switch (typeInput) {
|
||||
case "service":
|
||||
$(".types").slideUp();
|
||||
$(".typeService").slideDown();
|
||||
break;
|
||||
|
||||
case "website":
|
||||
$(".types").slideUp();
|
||||
$(".typeWebsite").slideDown();
|
||||
break;
|
||||
|
||||
default:
|
||||
$(".types").hide();
|
||||
}
|
||||
}
|
||||
|
||||
function changePopularPorts(popularPorts, changeType, typeInput) {
|
||||
if (changeType === true) {
|
||||
if (typeInput == 'service') {
|
||||
if (popularPorts == 'custom') {
|
||||
$('.portGroup').slideDown();
|
||||
if (typeInput == "service") {
|
||||
if (popularPorts == "custom") {
|
||||
$(".portGroup").slideDown();
|
||||
} else {
|
||||
$('.portGroup').hide();
|
||||
$(".portGroup").hide();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (popularPorts == 'custom') {
|
||||
$('.portGroup').slideDown();
|
||||
if (popularPorts == "custom") {
|
||||
$(".portGroup").slideDown();
|
||||
} else {
|
||||
$('#port').val(popularPorts);
|
||||
$('.portGroup').slideUp();
|
||||
$("#port").val(popularPorts);
|
||||
$(".portGroup").slideUp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function psm_xhr(mod, params, method, on_complete, options) {
|
||||
method = (typeof method == 'undefined') ? 'GET' : method;
|
||||
method = (typeof method == "undefined") ? "GET" : method;
|
||||
|
||||
var xhr_options = {
|
||||
data: params,
|
||||
|
@ -127,29 +151,29 @@ function psm_xhr(mod, params, method, on_complete, options) {
|
|||
};
|
||||
$.extend(xhr_options, options);
|
||||
|
||||
var result = $.ajax('index.php?xhr=1&mod=' + mod, xhr_options);
|
||||
var result = $.ajax("index.php?xhr=1&mod=" + mod, xhr_options);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function psm_saveLayout(layout) {
|
||||
var params = {
|
||||
action: 'saveLayout',
|
||||
action: "saveLayout",
|
||||
csrf: $("input[name=saveLayout_csrf]").val(),
|
||||
layout: layout
|
||||
};
|
||||
psm_xhr('server_status', params, 'POST');
|
||||
psm_xhr("server_status", params, "POST");
|
||||
}
|
||||
|
||||
function psm_tooltips() {
|
||||
$('input[data-toggle="tooltip"]').tooltip({
|
||||
'trigger':'hover',
|
||||
'placement': 'right',
|
||||
'container': 'body'
|
||||
"trigger":"hover",
|
||||
"placement": "right",
|
||||
"container": "body"
|
||||
});
|
||||
$('i[data-toggle="tooltip"]').tooltip({
|
||||
'trigger':'hover',
|
||||
'placement': 'bottom'
|
||||
"trigger":"hover",
|
||||
"placement": "bottom"
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -172,16 +196,16 @@ function rtrim(str) {
|
|||
}
|
||||
|
||||
function psm_flash_message(message) {
|
||||
var flashmessage = $('#flashmessage');
|
||||
var flashmessage = $("#flashmessage");
|
||||
if(flashmessage.length){
|
||||
if(typeof message != 'undefined') {
|
||||
if(typeof message != "undefined") {
|
||||
flashmessage.html(message);
|
||||
}
|
||||
var t = flashmessage.html();
|
||||
var c = trim(t);
|
||||
var t = c.replace(' ', '');
|
||||
var t = c.replace(" ", "");
|
||||
if(t){
|
||||
flashmessage.slideDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue