Merge branch 'develop' into develop

This commit is contained in:
invartam 2017-01-07 03:14:33 +01:00 committed by GitHub
commit 5a7e0e0bc4
17 changed files with 98 additions and 7 deletions

View File

@ -1 +1,20 @@
Options -Indexes Options -Indexes
<IfModule mod_expires.c>
<FilesMatch "\.(js|jpg|jpeg|gif|png|css)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
</FilesMatch>
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

View File

@ -75,6 +75,7 @@ Requirements
* PHP 5.3.7+ * PHP 5.3.7+
* PHP cURL package * PHP cURL package
* PHP PDO mysql driver * PHP PDO mysql driver
* PHP-XML
Install Install

View File

@ -4,4 +4,5 @@ define('PSM_DB_USER', 'db_user');
define('PSM_DB_PASS', 'db_pass'); define('PSM_DB_PASS', 'db_pass');
define('PSM_DB_NAME', 'db_name'); define('PSM_DB_NAME', 'db_name');
define('PSM_DB_HOST', 'localhost'); define('PSM_DB_HOST', 'localhost');
define('PSM_DB_PORT', '3306');
define('PSM_BASE_URL', ''); define('PSM_BASE_URL', '');

View File

@ -27,6 +27,7 @@ To change these values correctly, only update the second parameter of the functi
define('PSM_DB_NAME', 'db_name'); define('PSM_DB_NAME', 'db_name');
define('PSM_DB_USER', 'db_user'); define('PSM_DB_USER', 'db_user');
define('PSM_DB_PASS', 'db_user_password'); define('PSM_DB_PASS', 'db_user_password');
define('PSM_DB_PORT', '3306');
For example: to change your username you should ONLY change the 'db\_user' part. For example: to change your username you should ONLY change the 'db\_user' part.
Do NOT remove the quotes around your username as that will result in an error. Do NOT remove the quotes around your username as that will result in an error.

View File

@ -6,8 +6,9 @@ define('PSM_DB_USER', 'psm'); \
define('PSM_DB_PASS', 'psm'); \ define('PSM_DB_PASS', 'psm'); \
define('PSM_DB_NAME', 'psm'); \ define('PSM_DB_NAME', 'psm'); \
define('PSM_DB_HOST', 'localhost'); \ define('PSM_DB_HOST', 'localhost'); \
define('PSM_DB_PORT', '3306'); \
?>" > /var/www/default/psm/config.php ?>" > /var/www/default/psm/config.php
echo "<?php \ echo "<?php \
header('Location: /psm/index.php'); \ header('Location: /psm/index.php'); \
?>" > /var/www/default/index.php ?>" > /var/www/default/index.php

View File

@ -18,6 +18,7 @@ xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/sc
<parameter key="path.templates">%path.src%templates</parameter> <parameter key="path.templates">%path.src%templates</parameter>
<parameter key="db.host" type="constant">PSM_DB_HOST</parameter> <parameter key="db.host" type="constant">PSM_DB_HOST</parameter>
<parameter key="db.port" type="constant">PSM_DB_PORT</parameter>
<parameter key="db.user" type="constant">PSM_DB_USER</parameter> <parameter key="db.user" type="constant">PSM_DB_USER</parameter>
<parameter key="db.pass" type="constant">PSM_DB_PASS</parameter> <parameter key="db.pass" type="constant">PSM_DB_PASS</parameter>
<parameter key="db.name" type="constant">PSM_DB_NAME</parameter> <parameter key="db.name" type="constant">PSM_DB_NAME</parameter>
@ -38,6 +39,7 @@ xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/sc
<argument>%db.user%</argument> <argument>%db.user%</argument>
<argument>%db.pass%</argument> <argument>%db.pass%</argument>
<argument>%db.name%</argument> <argument>%db.name%</argument>
<argument>%db.port%</argument>
</service> </service>
<service id="event" class="Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher"> <service id="event" class="Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher">

View File

@ -125,6 +125,7 @@ $sm_lang = array(
'type' => 'Typ', 'type' => 'Typ',
'type_website' => 'Webseite', 'type_website' => 'Webseite',
'type_service' => 'Service', 'type_service' => 'Service',
'type_ping' => 'Ping',
'pattern' => 'Suchstring/-muster', 'pattern' => 'Suchstring/-muster',
'pattern_description' => 'Wenn das gesuchte Muster nicht in der Webseite ist, wird die Seite als offline markiert. Reguläre Ausdrücke sind erlaubt.', 'pattern_description' => 'Wenn das gesuchte Muster nicht in der Webseite ist, wird die Seite als offline markiert. Reguläre Ausdrücke sind erlaubt.',
'last_check' => 'Letzter Check', 'last_check' => 'Letzter Check',

View File

@ -135,6 +135,7 @@ $sm_lang = array(
'type' => 'Type', 'type' => 'Type',
'type_website' => 'Website', 'type_website' => 'Website',
'type_service' => 'Service', 'type_service' => 'Service',
'type_ping' => 'Ping',
'pattern' => 'Search string/pattern', 'pattern' => 'Search string/pattern',
'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.', 'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.',
'last_check' => 'Last check', 'last_check' => 'Last check',
@ -316,4 +317,4 @@ $sm_lang = array(
'401_unauthorized' => 'Unauthorized', '401_unauthorized' => 'Unauthorized',
'401_unauthorized_description' => 'You do not have the privileges to view this page.', '401_unauthorized_description' => 'You do not have the privileges to view this page.',
), ),
); );

View File

@ -121,6 +121,7 @@ class InstallController extends AbstractController {
$config = array( $config = array(
'db_host' => 'localhost', 'db_host' => 'localhost',
'db_port' => '3306'
'db_name' => '', 'db_name' => '',
'db_user' => '', 'db_user' => '',
'db_pass' => '', 'db_pass' => '',
@ -142,6 +143,7 @@ class InstallController extends AbstractController {
// test db connection // test db connection
$this->db = new \psm\Service\Database( $this->db = new \psm\Service\Database(
$config['db_host'], $config['db_host'],
$config['db_port'],
$config['db_user'], $config['db_user'],
$config['db_pass'], $config['db_pass'],
$config['db_name'] $config['db_name']
@ -308,6 +310,7 @@ class InstallController extends AbstractController {
'pass' => '', 'pass' => '',
'name' => '', 'name' => '',
'host' => '', 'host' => '',
'port' => '3306'
); );
$pattern = "/define\('SM_{key}', '(.*?)'/u"; $pattern = "/define\('SM_{key}', '(.*?)'/u";

View File

@ -286,6 +286,8 @@ class ServerController extends AbstractServerController {
$clean["port"] = 443; $clean["port"] = 443;
} elseif ($tmp["scheme"] === "http") { } elseif ($tmp["scheme"] === "http") {
$clean["port"] = 80; $clean["port"] = 80;
} elseif ($tmp["scheme"] === "rdp") {
$clean["port"] = 3389;
} }
} }
@ -458,6 +460,7 @@ class ServerController extends AbstractServerController {
'label_type' => psm_get_lang('servers', 'type'), 'label_type' => psm_get_lang('servers', 'type'),
'label_website' => psm_get_lang('servers', 'type_website'), 'label_website' => psm_get_lang('servers', 'type_website'),
'label_service' => psm_get_lang('servers', 'type_service'), 'label_service' => psm_get_lang('servers', 'type_service'),
'label_ping' => psm_get_lang('servers', 'type_ping'),
'label_pattern' => psm_get_lang('servers', 'pattern'), 'label_pattern' => psm_get_lang('servers', 'pattern'),
'label_pattern_description' => psm_get_lang('servers', 'pattern_description'), 'label_pattern_description' => psm_get_lang('servers', 'pattern_description'),
'label_last_check' => psm_get_lang('servers', 'last_check'), 'label_last_check' => psm_get_lang('servers', 'last_check'),

View File

@ -35,6 +35,12 @@ class Database {
*/ */
protected $db_host; protected $db_host;
/**
* DB port
* @var string $db_port
*/
protected $db_port = 3306;
/** /**
* DB name * DB name
* @var string $db_name * @var string $db_name
@ -81,9 +87,10 @@ class Database {
* @param string $pass * @param string $pass
* @param string $db * @param string $db
*/ */
function __construct($host = null, $user = null, $pass = null, $db = null) { function __construct($host = null, $user = null, $pass = null, $db = null, $port = null) {
if($host != null && $user != null && $pass !== null && $db != null) { if($host != null && $user != null && $pass !== null && $db != null) {
$this->db_host = $host; $this->db_host = $host;
$this->db_port = $port || 3306;
$this->db_name = $db; $this->db_name = $db;
$this->db_user = $user; $this->db_user = $user;
$this->db_pass = $pass; $this->db_pass = $pass;
@ -498,7 +505,7 @@ class Database {
// Initizale connection // Initizale connection
try { try {
$this->pdo = new \PDO( $this->pdo = new \PDO(
'mysql:host='.$this->db_host.';dbname='.$this->db_name.';charset=utf8', 'mysql:host='.$this->db_host.';port='.$this->db_port.';dbname='.$this->db_name.';charset=utf8',
$this->db_user, $this->db_user,
$this->db_pass $this->db_pass
); );

View File

@ -218,7 +218,7 @@ class Installer {
`ip` varchar(500) NOT NULL, `ip` varchar(500) NOT NULL,
`port` int(5) unsigned NOT NULL, `port` int(5) unsigned NOT NULL,
`label` varchar(255) NOT NULL, `label` varchar(255) NOT NULL,
`type` enum('service','website') NOT NULL default 'service', `type` enum('ping','service','website') NOT NULL default 'service',
`pattern` varchar(255) NOT NULL, `pattern` varchar(255) NOT NULL,
`status` enum('on','off') NOT NULL default 'on', `status` enum('on','off') NOT NULL default 'on',
`error` varchar(255) NULL, `error` varchar(255) NULL,

View File

@ -101,6 +101,11 @@ class ServerValidator {
throw new \InvalidArgumentException('server_ip_bad_service'); throw new \InvalidArgumentException('server_ip_bad_service');
} }
break; break;
case 'ping':
if(!filter_var($value, FILTER_VALIDATE_IP)) {
throw new \InvalidArgumentException('server_ip_bad_service');
}
break;
} }
return true; return true;
@ -113,7 +118,7 @@ class ServerValidator {
* @throws \InvalidArgumentException * @throws \InvalidArgumentException
*/ */
public function type($type) { public function type($type) {
if(!in_array($type, array('service', 'website'))) { if(!in_array($type, array('ping', 'service', 'website'))) {
throw new \InvalidArgumentException('server_type_invalid'); throw new \InvalidArgumentException('server_type_invalid');
} }
return true; return true;

View File

@ -90,6 +90,9 @@ class StatusUpdater {
} }
switch($this->server['type']) { switch($this->server['type']) {
case 'ping':
$this->status_new = $this->updatePing($max_runs);
break;
case 'service': case 'service':
$this->status_new = $this->updateService($max_runs); $this->status_new = $this->updateService($max_runs);
break; break;
@ -134,6 +137,41 @@ class StatusUpdater {
} }
/**
* Check the current servers ping status - Code from http://stackoverflow.com/a/20467492
* @param int $max_runs
* @param int $run
* @return boolean
*/
protected function updatePing($max_runs, $run = 1) {
$errno = 0;
// save response time
$starttime = microtime(true);
// set ping payload
$package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
$fp = @fsockopen ($this->server['ip'], $this->server['port'], $errno, $this->error, 10);
$socket = socket_create(AF_INET, SOCK_RAW, 1);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 10, 'usec' => 0));
socket_connect($socket, $this->server['ip'], null);
socket_send($socket, $package, strLen($package), 0);
if (socket_read($socket, 255)) {
$this->rtime = microtime(true) - $starttime;
$status = true;
} else {
$status = false;
}
socket_close($socket);
// check if server is available and rerun if asked.
if(!$status && $run < $max_runs) {
return $this->updatePing($max_runs, $run + 1);
}
return $status;
}
/** /**
* Check the current server as a service * Check the current server as a service
* @param int $max_runs * @param int $max_runs

View File

@ -6,7 +6,7 @@
<title>{{ title }}</title> <title>{{ title }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, minimum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, minimum-scale=1">
<meta name="description" content=""> <meta name="description" content="">
<meta name="author" content=""> <meta name="robots" content="noindex" />
<meta name="theme-color" content="#424242"> <meta name="theme-color" content="#424242">
<link rel="icon" type="image/x-icon" href="favicon.ico" /> <link rel="icon" type="image/x-icon" href="favicon.ico" />
<link rel="icon" type="image/png" href="favicon.png" /> <link rel="icon" type="image/png" href="favicon.png" />

View File

@ -24,6 +24,12 @@
<input type="text" id="host" name="db_host" value="{{ db_host }}" /> <input type="text" id="host" name="db_host" value="{{ db_host }}" />
</div> </div>
</div> </div>
<div class="control-group">
<label class="control-label" for="host">Database port</label>
<div class="controls">
<input type="text" id="port" name="port" value="{{ port }}" />
</div>
</div>
<div class="control-group"> <div class="control-group">
<label class="control-label" for="name">Database name</label> <label class="control-label" for="name">Database name</label>
<div class="controls"> <div class="controls">

View File

@ -20,6 +20,7 @@
<div class="controls"> <div class="controls">
<select id="type" name="type"> <select id="type" name="type">
<option value="">{{ label_please_select }}</option> <option value="">{{ label_please_select }}</option>
<option value="ping" {{ edit_type_selected_ping|raw }}>{{ label_ping }}</option>
<option value="service" {{ edit_type_selected_service|raw }}>{{ label_service }}</option> <option value="service" {{ edit_type_selected_service|raw }}>{{ label_service }}</option>
<option value="website" {{ edit_type_selected_website|raw }}>{{ label_website }}</option> <option value="website" {{ edit_type_selected_website|raw }}>{{ label_website }}</option>
</select> </select>
@ -47,6 +48,7 @@
<option value="115">SFTP (115)</option> <option value="115">SFTP (115)</option>
<option value="43">WHOIS (43)</option> <option value="43">WHOIS (43)</option>
<option value="53">BIND (53)</option> <option value="53">BIND (53)</option>
<option value="3389">RDP (3389)</option>
</optgroup> </optgroup>
</select> </select>
</div> </div>