diff --git a/.htaccess b/.htaccess
index 5a928f6d..1014e510 100644
--- a/.htaccess
+++ b/.htaccess
@@ -1 +1,20 @@
Options -Indexes
+
+
+
+ ExpiresActive on
+ ExpiresDefault "access plus 1 month"
+
+
+
+
+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
+
diff --git a/README.rst b/README.rst
index 942cb0c3..e76cdaab 100755
--- a/README.rst
+++ b/README.rst
@@ -75,6 +75,7 @@ Requirements
* PHP 5.3.7+
* PHP cURL package
* PHP PDO mysql driver
+* PHP-XML
Install
@@ -116,3 +117,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with PHP Server Monitor. If not, see http://www.gnu.org/licenses/.
+
+Docker
+-------
+
+PHPServerMonitor is now available on Docker : https://github.com/phpservermon/docker-phpservermonitor
diff --git a/composer.json b/composer.json
index 4243789d..885fe4db 100755
--- a/composer.json
+++ b/composer.json
@@ -3,10 +3,7 @@
"description": "PHP Server Monitor",
"homepage": "http://www.phpservermonitor.org",
"repositories": [
- {
- "type": "vcs",
- "url": "https://github.com/phpservermon/php-pushover"
- }
+
],
"require": {
"php": ">=5.3.7",
diff --git a/config.php.sample b/config.php.sample
index 667afe2e..a90981a3 100755
--- a/config.php.sample
+++ b/config.php.sample
@@ -4,4 +4,5 @@ define('PSM_DB_USER', 'db_user');
define('PSM_DB_PASS', 'db_pass');
define('PSM_DB_NAME', 'db_name');
define('PSM_DB_HOST', 'localhost');
-
+define('PSM_DB_PORT', '3306');
+define('PSM_BASE_URL', '');
diff --git a/cron/status.cron.php b/cron/status.cron.php
index 0905d8da..9e533a1a 100644
--- a/cron/status.cron.php
+++ b/cron/status.cron.php
@@ -29,7 +29,12 @@
require_once __DIR__ . '/../src/bootstrap.php';
if(!psm_is_cli()) {
- die('This script can only be run from the command line.');
+ // check if it's an allowed host
+ $allow = PSM_CRON_ALLOW;
+ if(!in_array($_SERVER['REMOTE_ADDR'], $allow) && !in_array($_SERVER["HTTP_X_FORWARDED_FOR"], $allow)) {
+ header('HTTP/1.0 404 Not Found');
+ die('
404 Not Found Not Found The requested URL /cron/status.cron.php was not found on this server.
');
+ }
}
$cron_timeout = PSM_CRON_TIMEOUT;
diff --git a/docs/install.rst b/docs/install.rst
index f8e0efa2..627704fb 100644
--- a/docs/install.rst
+++ b/docs/install.rst
@@ -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_USER', 'db_user');
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.
Do NOT remove the quotes around your username as that will result in an error.
diff --git a/puphpet/files/exec-once/psminstall.sh b/puphpet/files/exec-once/psminstall.sh
index 2ebd8b54..b115800f 100644
--- a/puphpet/files/exec-once/psminstall.sh
+++ b/puphpet/files/exec-once/psminstall.sh
@@ -6,8 +6,9 @@ define('PSM_DB_USER', 'psm'); \
define('PSM_DB_PASS', 'psm'); \
define('PSM_DB_NAME', 'psm'); \
define('PSM_DB_HOST', 'localhost'); \
+define('PSM_DB_PORT', '3306'); \
?>" > /var/www/default/psm/config.php
echo "" > /var/www/default/index.php
\ No newline at end of file
+?>" > /var/www/default/index.php
diff --git a/src/config/services.xml b/src/config/services.xml
index 5d3fbd1b..43446dcd 100644
--- a/src/config/services.xml
+++ b/src/config/services.xml
@@ -18,6 +18,7 @@ xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/sc
%path.src%templates
PSM_DB_HOST
+ PSM_DB_PORT
PSM_DB_USER
PSM_DB_PASS
PSM_DB_NAME
@@ -38,6 +39,7 @@ xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/sc
%db.user%
%db.pass%
%db.name%
+ %db.port%
diff --git a/src/includes/functions.inc.php b/src/includes/functions.inc.php
index 08d0c512..d2fde786 100755
--- a/src/includes/functions.inc.php
+++ b/src/includes/functions.inc.php
@@ -335,6 +335,16 @@ function psm_curl_get($href, $header = false, $body = true, $timeout = null, $ad
curl_setopt($ch, CURLOPT_URL, $href);
+ $proxy_url = psm_get_conf('proxy_url','');
+ if (psm_get_conf('proxy','0') === '1') {
+ curl_setopt($ch, CURLOPT_PROXY, $proxy_url);
+ $proxy_user = psm_get_conf('proxy_user','');
+ $proxy_password = psm_get_conf('proxy_password','');
+ if (!empty($proxy_user) && !empty($proxy_password)) {
+ curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_user . ':' . $proxy_password);
+ }
+ }
+
if($add_agent) {
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; phpservermon/'.PSM_VERSION.'; +http://www.phpservermonitor.org)');
}
@@ -542,7 +552,11 @@ function psm_build_sms() {
break;
case 'octopush':
$sms = new \psm\Txtmsg\Octopush();
- break; }
+ break;
+ case 'smsgw':
+ $sms = new \psm\Txtmsg\Smsgw();
+ break;
+ }
// copy login information from the config file
if($sms) {
diff --git a/src/lang/cs_CZ.lang.php b/src/lang/cs_CZ.lang.php
index 09049038..f816f172 100644
--- a/src/lang/cs_CZ.lang.php
+++ b/src/lang/cs_CZ.lang.php
@@ -54,7 +54,7 @@ $sm_lang = array(
'long_day_format' => '%B %e, %Y',
'yesterday_format' => 'Včera v %k:%M',
'other_day_format' => '%A v %k:%M',
- 'never' => 'Never',
+ 'never' => 'Nikdy',
'hours_ago' => 'před %d hodinami',
'an_hour_ago' => 'cca před hodinou',
'minutes_ago' => 'před %d minutami',
@@ -177,7 +177,7 @@ $sm_lang = array(
'warning_notifications_disabled_pushover' => 'Pushover upozornění jsou vypnuta.',
'error_server_no_match' => 'Server nenalezen.',
'error_server_label_bad_length' => 'Popisek musí obsahovat 1 až 255 znaků.',
- 'error_server_ip_bad_length' => 'Doména/IP adresa musí obsahovat 1 ař 255 znaků.',
+ 'error_server_ip_bad_length' => 'Doména/IP adresa musí obsahovat 1 až 255 znaků.',
'error_server_ip_bad_service' => 'IP adresa není platná.',
'error_server_ip_bad_website' => 'URL webu není platná.',
'error_server_type_invalid' => 'Zvolený typ serveru není platný',
@@ -209,14 +209,16 @@ $sm_lang = array(
'sms_gateway_clickatell' => 'Clickatell',
'sms_gateway_textmarketer' => 'Textmarketer',
'sms_gateway_smsglobal' => 'SMSGlobal',
- 'sms_gateway_nexmo' => 'Nexmo',
'sms_gateway_octopush' => 'Octopush',
'sms_gateway_smsit' => 'Smsit',
'sms_gateway_freevoipdeal' => 'FreeVoipDeal',
+ 'sms_gateway_freemobilesms' => 'FreeMobileSMS',
+ 'sms_gateway_clicksend' => 'ClickSend',
+ 'sms_gateway_nexmo' => 'Nexmo',
'sms_gateway_username' => 'Uživatelské jméno brány',
'sms_gateway_password' => 'Heslo brány',
'sms_from' => 'Telefonní číslo odesilatele',
- 'pushover_status' => 'Povolit zsílání Pushover zpráv',
+ 'pushover_status' => 'Povolit zasílání Pushover zpráv',
'pushover_description' => 'Pushover je služba umožňující jednoduše zasílat real-time upozornění. Více na webu Pushover ',
'pushover_clone_app' => 'Klikněte pro vytvoření Pushover aplikace',
'pushover_api_token' => 'Pushover App API Token',
@@ -225,7 +227,7 @@ $sm_lang = array(
'alert_type_description' => 'Změna stavu: '.
'Obdržíte upozornění při změně stavu, tedy:online -> offline nebo offline -> online. '.
'Offline: '.
- 'Obdržíte upozornění, kdy server přejde poprvé do offline stavu. Například, pokud je cron nastaven na 15 minut a sledovaný server bude offline mezi 01:00 a 06:00. '.
+ 'Obdržíte upozornění, kdy server přejde poprvé do offline stavu. Například, pokud je cron nastaven na 15 minut a sledovaný server bude offline mezi 01:00 a 06:00. Obdržíte upozornění pouze v 01:00. '.
'Vždy: '.
'Obdržíte upozornění při každém spuštění kontroly, tedy i pokud bude server offline několik hodin.',
'alert_type_status' => 'Změna stavu',
@@ -277,7 +279,7 @@ $sm_lang = array(
'off_sms' => 'Server \'%LABEL%\' je offline: ip=%IP%, port=%PORT%. Chyba=%ERROR%',
'off_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je offline',
'off_email_body' => 'Nebylo možné spojit se se serverem: Server: %LABEL% IP: %IP% Port: %PORT% Chyba: %ERROR% Datum: %DATE%',
- 'off_pushover_title' => 'Server \'%LABEL%\'je offline',
+ 'off_pushover_title' => 'Server \'%LABEL%\' je offline',
'off_pushover_message' => 'Nebylo možné spojit se se serverem: Server: %LABEL% IP: %IP% Port: %PORT% Chyba: %ERROR% Datum: %DATE%',
'on_sms' => 'Server \'%LABEL%\' je online: ip=%IP%, port=%PORT%',
'on_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je online',
diff --git a/src/lang/de_DE.lang.php b/src/lang/de_DE.lang.php
index fd8aee95..885d6199 100644
--- a/src/lang/de_DE.lang.php
+++ b/src/lang/de_DE.lang.php
@@ -125,6 +125,7 @@ $sm_lang = array(
'type' => 'Typ',
'type_website' => 'Webseite',
'type_service' => 'Service',
+ 'type_ping' => 'Ping',
'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.',
'last_check' => 'Letzter Check',
diff --git a/src/lang/en_US.lang.php b/src/lang/en_US.lang.php
index 2a5cd6e9..a9b537da 100755
--- a/src/lang/en_US.lang.php
+++ b/src/lang/en_US.lang.php
@@ -141,6 +141,7 @@ $sm_lang = array(
'type' => 'Type',
'type_website' => 'Website',
'type_service' => 'Service',
+ 'type_ping' => 'Ping',
'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.',
'last_check' => 'Last check',
@@ -196,6 +197,10 @@ $sm_lang = array(
'show_update' => 'Check for updates?',
'password_encrypt_key' => 'The encryption key password',
'password_encrypt_key_note' => 'This key is used to encrypt passwords that are stored on servers for access to websites. If the key will change the stored password is invalid!',
+ 'proxy' => 'Enable proxy',
+ 'proxy_url' => 'Proxy URL',
+ 'proxy_user' => 'Proxy username',
+ 'proxy_password' => 'Proxy password',
'email_status' => 'Allow sending email',
'email_from_email' => 'Email from address',
'email_from_name' => 'Email from name',
@@ -222,6 +227,7 @@ $sm_lang = array(
'sms_gateway_freemobilesms' => 'FreeMobileSMS',
'sms_gateway_clicksend' => 'ClickSend',
'sms_gateway_nexmo' => 'Nexmo',
+ 'sms_gateway_smsgw' => 'SMSgw',
'sms_gateway_username' => 'Gateway username',
'sms_gateway_password' => 'Gateway password',
'sms_from' => 'Sender\'s phone number',
@@ -246,6 +252,8 @@ $sm_lang = array(
'alert_type_status' => 'Status change',
'alert_type_offline' => 'Offline',
'alert_type_always' => 'Always',
+ 'alert_proxy' => 'Even if enabled, proxy is never used for services',
+ 'alert_proxy_url' => 'Format: Host:Port',
'log_status' => 'Log status',
'log_status_description' => 'If log status is set to TRUE, the monitor will log the event whenever the Notification settings are passed.',
'log_email' => 'Log emails sent by the script',
@@ -263,6 +271,7 @@ $sm_lang = array(
'settings_pushbullet' => 'Pushbullet settings',
'settings_notification' => 'Notification settings',
'settings_log' => 'Log settings',
+ 'settings_proxy' => 'Proxy settings',
'auto_refresh' => 'Auto-refresh',
'auto_refresh_servers' =>
'Auto-refresh servers page. '.
diff --git a/src/lang/sk_SK.lang.php b/src/lang/sk_SK.lang.php
new file mode 100644
index 00000000..4d720371
--- /dev/null
+++ b/src/lang/sk_SK.lang.php
@@ -0,0 +1,318 @@
+.
+ *
+ * @package phpservermon
+ * @author Peter Misura
+ * @copyright Copyright (c) 2008-2015 Pepijn Over
+ * @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
+ * @version Release: @package_version@
+ * @link http://www.phpservermonitor.org/
+ **/
+
+$sm_lang = array(
+ 'name' => 'Slovensky - Slovak',
+ 'locale' => array('sk_SK.UTF-8', 'sk_SK', 'slovak', 'slovak'),
+ 'locale_tag' => 'sk',
+ 'locale_dir' => 'ltr',
+ 'system' => array(
+ 'title' => 'Server Monitor',
+ 'install' => 'Inštalácia',
+ 'action' => 'Akcia',
+ 'save' => 'Uložiť',
+ 'edit' => 'Upraviť',
+ 'delete' => 'Zmazať',
+ 'date' => 'Dátum',
+ 'message' => 'Správa',
+ 'yes' => 'Áno',
+ 'no' => 'Nie',
+ 'insert' => 'Vložiť',
+ 'add_new' => 'Pridať',
+ 'update_available' => 'Nová verzia - ({version}) je dostupná na http://www.phpservermonitor.org .',
+ 'back_to_top' => 'Späť na začiatok',
+ 'go_back' => 'Späť',
+ 'ok' => 'OK',
+ 'cancel' => 'Zrušiť',
+ // 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',
+ 'yesterday_format' => 'Včera v %k:%M',
+ 'other_day_format' => '%A v %k:%M',
+ 'never' => 'Nikdy',
+ 'hours_ago' => 'pred %d hodinami',
+ 'an_hour_ago' => 'cca pred hodinou',
+ 'minutes_ago' => 'pred %d minútami',
+ 'a_minute_ago' => 'cca pred minútou',
+ 'seconds_ago' => 'pred %d sekundami',
+ 'a_second_ago' => 'pred chvíľou',
+ ),
+ 'menu' => array(
+ 'config' => 'Konfigurácia',
+ 'server' => 'Servery',
+ 'server_log' => 'Log',
+ 'server_status' => 'Stav',
+ 'server_update' => 'Aktualizácia',
+ 'user' => 'Užívateľ',
+ 'help' => 'Nápoveda',
+ ),
+ 'users' => array(
+ 'user' => 'Užívateľ',
+ 'name' => 'Meno',
+ 'user_name' => 'Užívateľské meno',
+ 'password' => 'Heslo',
+ 'password_repeat' => 'Rovnaké heslo (pre kontrolu)',
+ 'password_leave_blank' => 'Nevyplňujte ak nechcete zmeniť.',
+ 'level' => 'Oprávnenie',
+ 'level_10' => 'Administrátor',
+ 'level_20' => 'Užívateľ',
+ 'level_description' => 'Administrátor má plný prístup: môže spravovať servery, užívateľov a upraviť globálnu konfiguráciu.Uživatel má práva len na čítanie a spustiť aktualizáciu serverov, ktoré má priradené.',
+ 'mobile' => 'Mobil',
+ 'email' => 'E-mail',
+ 'pushover' => 'Pushover',
+ 'pushover_description' => 'Pushover je služba umožňujúca jednoducho zasielať real-time upozornenia. Viac na webe Pushover ',
+ 'pushover_key' => 'Pushover Token',
+ 'pushover_device' => 'Pushover Zariadenie',
+ 'pushover_device_description' => 'Název zariadenia, na ktoré má byť správa odoslaná. Ponechajte prázdne pre odoslanie na všetky zariadenia.',
+ 'delete_title' => 'Zmazať užívateľa',
+ 'delete_message' => 'Naozaj zmazať užívateľa \'%1\'?',
+ 'deleted' => 'Užívateľ zmazaný.',
+ 'updated' => 'Užívateľ aktualizovaný.',
+ 'inserted' => 'Užívateľ pridaný.',
+ 'profile' => 'Profil',
+ 'profile_updated' => 'Váš užívateľský profil bol upravený.',
+ 'error_user_name_bad_length' => 'Užívateľské meno musí obsahovať 2 až 64 znakov.',
+ 'error_user_name_invalid' => 'Užívateľské meno môže obsahovať iba písmena (a-z, A-Z), čísla (0-9) a podtržítka (_).',
+ 'error_user_name_exists' => 'Zadané uživatelské jméno již existuje v databázi.',
+ 'error_user_email_bad_length' => 'E-mailová adresa musí obsahovat 5 až 255 znaků .',
+ 'error_user_email_invalid' => 'E-mailová adresa je neplatná',
+ 'error_user_level_invalid' => 'Zadané oprávnenie je neplatné.',
+ 'error_user_no_match' => 'Užívateľ nebol najdený.',
+ 'error_user_password_invalid' => 'Zadané heslo je neplatné.',
+ 'error_user_password_no_match' => 'Zadaná heslá sa nezhodujú.',
+ ),
+ 'log' => array(
+ 'title' => 'Záznamy logu',
+ 'type' => 'Typ',
+ 'status' => 'Stav',
+ 'email' => 'E-mail',
+ 'sms' => 'SMS',
+ 'pushover' => 'Pushover',
+ 'no_logs' => 'Žiadne záznamy',
+ ),
+ 'servers' => array(
+ 'server' => 'Server',
+ 'status' => 'Stav',
+ 'label' => 'Popis',
+ 'domain' => 'Doména/IP',
+ 'timeout' => 'Časový limit',
+ 'timeout_description' => 'Počet sekúnd čakania na odpoveď serveru.',
+ 'authentication_settings' => 'Nastavenie autentizacie (voliteľný)',
+ 'website_username' => 'Užívateľské meno',
+ 'website_username_description' => 'Užívateľské meno pre prístup na stránku. (Len Apache autorizácia je podporovaná.)',
+ 'website_password' => 'Heslo',
+ 'website_password_description' => 'Heslo pre prístup na stránku. Heslo je v databázi šifrované.',
+ 'fieldset_monitoring' => 'Monitoring',
+ 'fieldset_permissions' => 'Oprávnenie',
+ 'port' => 'Port',
+ 'custom_port' => 'Užívateľský Port',
+ 'popular_ports' => 'Populárne Porty',
+ 'please_select' => 'Prosím vyberte',
+ 'type' => 'Typ',
+ 'type_website' => 'Web',
+ 'type_service' => 'Služba',
+ 'pattern' => 'Vyhledat reťazec/vzor',
+ 'pattern_description' => 'Pokiaľ reťazec nebude na webe nájdený, bude server označený ako offline. Regulárne výrazy sú povolené.',
+ 'last_check' => 'Posledná kontrola',
+ 'last_online' => 'Naposledy online',
+ 'monitoring' => 'Monitoring',
+ 'no_monitoring' => 'Žiadne monitorované služby',
+ 'email' => 'E-mail',
+ 'send_email' => 'Odoslať e-mail',
+ 'sms' => 'SMS',
+ 'send_sms' => 'Odoslať SMS',
+ 'pushover' => 'Pushover',
+ 'users' => 'Užívatelia',
+ 'delete_title' => 'Zmazať server',
+ 'delete_message' => 'Naozaj si prajete zmazať \'%1\'?',
+ 'deleted' => 'Server zmazaný.',
+ 'updated' => 'Server aktualizovaný.',
+ 'inserted' => 'Server pridaný.',
+ 'latency' => 'Latencia',
+ 'latency_max' => 'Latencia (maximum)',
+ 'latency_min' => 'Latencia (minimum)',
+ 'latency_avg' => 'Latencia (priemer)',
+ 'uptime' => 'Uptime',
+ 'year' => 'Rok',
+ 'month' => 'Mesiac',
+ 'week' => 'Týždeň',
+ 'day' => 'Deň',
+ 'hour' => 'Hodina',
+ 'warning_threshold' => 'Stropná hranica varovania',
+ 'warning_threshold_description' => 'Počet neúspešných pokusov pred označením serveru ako offline.',
+ 'chart_last_week' => 'Minulý týždeň',
+ 'chart_history' => 'História',
+ // Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
+ 'chart_day_format' => '%Y-%m-%d',
+ 'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
+ 'chart_short_date_format' => '%m/%d %H:%M',
+ 'chart_short_time_format' => '%H:%M',
+ 'warning_notifications_disabled_sms' => 'SMS upozornenia sú vypnuté.',
+ 'warning_notifications_disabled_email' => 'E-mailové upozornenia sú vypnuté.',
+ 'warning_notifications_disabled_pushover' => 'Pushover upozornenia sú vypnuté.',
+ 'error_server_no_match' => 'Server nenájdený.',
+ 'error_server_label_bad_length' => 'Popisok musí obsahovať 1 až 255 znakov.',
+ 'error_server_ip_bad_length' => 'Doména/IP adresa musí obsahovať 1 až 255 znakov.',
+ 'error_server_ip_bad_service' => 'IP adresa nie je platná.',
+ 'error_server_ip_bad_website' => 'URL webu nie je platná.',
+ 'error_server_type_invalid' => 'Zvolený typ serveru nie je platný',
+ 'error_server_warning_threshold_invalid' => 'Hranica varovania musí byť číslo väčšie ako 0.',
+ ),
+ 'config' => array(
+ 'general' => 'Všeobecné',
+ 'language' => 'Jazyk',
+ 'show_update' => 'Kontrolovať aktualizácie?',
+ 'password_encrypt_key' => 'Šifrovací kľúč pre heslá',
+ 'password_encrypt_key_note' => 'Týmto klúčom sa šifrujú heslá, ktoré sa ukladajú na serveroch pre prístup na webové stránky. Ak kľúč zmeníte, budú uložené heslá neplatné!',
+ 'email_status' => 'Povoliť odosielanie e-mailu',
+ 'email_from_email' => 'E-mailová adresa odosielateľa',
+ 'email_from_name' => 'Jméno odosielateľa',
+ 'email_smtp' => 'Zapnúť SMTP',
+ 'email_smtp_host' => 'SMTP adresa',
+ 'email_smtp_port' => 'SMTP port',
+ 'email_smtp_security' => 'SMTP zabezpečenie',
+ 'email_smtp_security_none' => 'žiadne',
+ 'email_smtp_username' => 'SMTP užívateľské meno',
+ 'email_smtp_password' => 'SMTP heslo',
+ 'email_smtp_noauth' => 'Nechajte prázdne pre použitie SMTP bez hesla',
+ 'sms_status' => 'Povoliť odosielanie textových správ',
+ 'sms_gateway' => 'Brána použitá pro odosielanie správ',
+ 'sms_gateway_mosms' => 'Mosms',
+ 'sms_gateway_mollie' => 'Mollie',
+ 'sms_gateway_spryng' => 'Spryng',
+ 'sms_gateway_inetworx' => 'Inetworx',
+ 'sms_gateway_clickatell' => 'Clickatell',
+ 'sms_gateway_textmarketer' => 'Textmarketer',
+ 'sms_gateway_smsglobal' => 'SMSGlobal',
+ 'sms_gateway_octopush' => 'Octopush',
+ 'sms_gateway_smsit' => 'Smsit',
+ 'sms_gateway_freevoipdeal' => 'FreeVoipDeal',
+ 'sms_gateway_freemobilesms' => 'FreeMobileSMS',
+ 'sms_gateway_clicksend' => 'ClickSend',
+ 'sms_gateway_nexmo' => 'Nexmo',
+ 'sms_gateway_username' => 'Užívateľské meno brány',
+ 'sms_gateway_password' => 'Heslo brány',
+ 'sms_from' => 'Telefónne číslo odosielateľa',
+ 'pushover_status' => 'Povoliť zasielanie Pushover správ',
+ 'pushover_description' => 'Pushover je služba umožňujúca jednoducho zasielať real-time upozornenia. Viac na webe Pushover ',
+ 'pushover_clone_app' => 'Kliknite pre vytvorenie Pushover aplikácie',
+ 'pushover_api_token' => 'Pushover App API Token',
+ 'pushover_api_token_description' => 'Pred použitím Pushoveru sa musíte registrovať a získať API Token.',
+ 'alert_type' => 'Zvoľte kedy si prajete byť upozornení.',
+ 'alert_type_description' => 'Zmena stavu: '.
+ 'Obdržíte upozornenie pri zmene stavu, teda: online -> offline alebo offline -> online. '.
+ 'Offline: '.
+ 'Obdržíte upozornenie, keď server prejde *PO PRVÝ KRÁT* do offline stavu. Napríklad, '.
+ 'pokiaľ je cron nastavený na 15 minút a sledovaný server bude offline mezi 01:00 a 06:00, '.
+ 'tak obdržíte upozornenie iba o 01:00. '.
+ 'Vždy: '.
+ 'Obdržíte upozornenie pri každom spustení kontroly, teda aj pokiaľ bude server offline niekoľko hodín.',
+ 'alert_type_status' => 'Zmena stavu',
+ 'alert_type_offline' => 'Offline',
+ 'alert_type_always' => 'Vždy',
+ 'log_status' => 'Log',
+ 'log_status_description' => 'Pokiaľ je Log nastavený na hodnotu TRUE, systém do neho zapíše všetky upozornenia.',
+ 'log_email' => 'Logovať odoslané e-maily',
+ 'log_sms' => 'Logovať odoslané textové správy',
+ 'log_pushover' => 'Logovať odoslané Pushover správy',
+ 'updated' => 'Nastavenie bolo aktualizované.',
+ 'tab_email' => 'E-mail',
+ 'tab_sms' => 'SMS',
+ 'tab_pushover' => 'Pushover',
+ 'settings_email' => 'Nastavenie e-mailov',
+ 'settings_sms' => 'Nastavenie textových správ',
+ 'settings_pushover' => 'Nastavenie Pushover',
+ 'settings_notification' => 'Nastavenie upozornení',
+ 'settings_log' => 'Nastavenie logu',
+ 'auto_refresh' => 'Automaticky obnoviť',
+ 'auto_refresh_servers' =>
+ 'Automaticky obnoviť stránku Servery. '.
+ ''.
+ 'Čas v sekundách, 0 pre vypnutie automatického obnovenia.'.
+ ' ',
+ 'seconds' => 'sekúnd',
+ 'test' => 'Test',
+ 'test_email' => 'E-mail bude odoslaný na adresu uvedenú v užívateľskom profile.',
+ 'test_sms' => 'SMS bude odoslaná na telefónne číslo uvedené v užívateľskom profile.',
+ 'test_pushover' => 'Pushover upozornenie bude odoslané užívateľovi/zariadeniu podľa nastavení v užívateľskom profile.',
+ 'send' => 'Odoslať',
+ 'test_subject' => 'Test',
+ 'test_message' => 'Testovacia správa',
+ 'email_sent' => 'E-mail odoslaný',
+ 'email_error' => 'Chyba pri odosielaní e-mailu',
+ 'sms_sent' => 'SMS odoslaná',
+ 'sms_error' => 'Chyba pri odosielaní SMS',
+ 'sms_error_nomobile' => 'Nebolo možné odoslať SMS: v užívateľskom profile nebylo nájdené platné telefónne číslo.',
+ 'pushover_sent' => 'Pushover upozornenie odoslané.',
+ 'pushover_error' => 'Nastala chyba pri odosielaní Pushover upozornenia: %s',
+ 'pushover_error_noapp' => 'Nebolo možné odoslať testovacie upozornenie: v globálnom nastavení nebol nájdený žiaden API token.',
+ 'pushover_error_nokey' => 'Nebylo možné odoslať testovacie upozornenie: ve vašom profile nie je definovaný Pushover key.',
+ 'log_retention_period' => 'Rotácia logu',
+ 'log_retention_period_description' => 'Počet dní po které budú uchované logy upozornení. Vložte 0 pre vypnutie autorotáce.',
+ 'log_retention_days' => 'dní',
+ ),
+ // for newlines in the email messages use
+ 'notifications' => array(
+ 'off_sms' => 'Server \'%LABEL%\' je offline: ip=%IP%, port=%PORT%. Chyba=%ERROR%',
+ 'off_email_subject' => 'DÔLEŽITÉ: Server \'%LABEL%\' je offline',
+ 'off_email_body' => 'Nebolo možné spojiť sa so serverom: Server: %LABEL% IP: %IP% Port: %PORT% Chyba: %ERROR% Dátum: %DATE%',
+ 'off_pushover_title' => 'Server \'%LABEL%\' je offline',
+ 'off_pushover_message' => 'Nebolo možné spojiť sa so serverom: Server: %LABEL% IP: %IP% Port: %PORT% Chyba: %ERROR% Dátum: %DATE%',
+ 'on_sms' => 'Server \'%LABEL%\' je online: ip=%IP%, port=%PORT%',
+ 'on_email_subject' => 'DÔLEŽITÉ: Server \'%LABEL%\' je online',
+ 'on_email_body' => "Server '%LABEL%' je opäť online Server: %LABEL% IP: %IP% Port: %PORT% Dátum: %DATE%",
+ 'on_pushover_title' => 'Server \'%LABEL%\' je online',
+ 'on_pushover_message' => 'Server \'%LABEL%\' je znovu online: Server: %LABEL% IP: %IP% Port: %PORT% Dátum: %DATE%',
+ ),
+ 'login' => array(
+ 'welcome_usermenu' => 'Vitajte, %user_name%',
+ 'title_sign_in' => 'Prosím prihláste sa',
+ 'title_forgot' => 'Zabudnuté heslo?',
+ 'title_reset' => 'Obnova hesla',
+ 'submit' => 'Odoslať',
+ 'remember_me' => 'Zapamätať údaje',
+ 'login' => 'Prihlásiť',
+ 'logout' => 'Odhlásiť',
+ 'username' => 'Užívateľské meno',
+ 'password' => 'Heslo',
+ 'password_repeat' => 'Opakujte heslo',
+ 'password_forgot' => 'Zabudnuté heslo?',
+ 'password_reset' => 'Obnoviť heslo',
+ 'password_reset_email_subject' => 'Obnoviť heslo pre PHP Server Monitor',
+ 'password_reset_email_body' => 'Použite následujúci odkaz pre obnovenie hesla. Odkaz je platný jednu hodinu. %link%',
+ 'error_user_incorrect' => 'Zadané užívateľské meno nebolo nájdené.',
+ 'error_login_incorrect' => 'Prihlásenie nebolo úspešné.',
+ 'error_login_passwords_nomatch' => 'Zadané heslá sa nezhodujú.',
+ 'error_reset_invalid_link' => 'Odkaz je neplatný.',
+ 'success_password_forgot' => 'Na vašu e-mailovú adresu bol zaslaný e-mail s informáciami pre obnovu hesla.',
+ 'success_password_reset' => 'Vaše heslo bolo úspešne obnovené. Prosím prihláste sa.',
+ ),
+ 'error' => array(
+ '401_unauthorized' => 'Nedostatočné oprávnenia',
+ '401_unauthorized_description' => 'Nemáte oprávnenie zobraziť túto stránku.',
+ ),
+);
diff --git a/src/lang/zh_CN.lang.php b/src/lang/zh_CN.lang.php
index 864b3b01..f82ada0d 100644
--- a/src/lang/zh_CN.lang.php
+++ b/src/lang/zh_CN.lang.php
@@ -40,8 +40,8 @@ $sm_lang = array(
'date' => '日期',
'message' => '消息',
'yes' => '是',
- 'no' => '否o',
- 'insert' => '插入',
+ 'no' => '否',
+ 'insert' => '新增',
'add_new' => '添加',
'update_available' => '发现新版本({version}) http://www.phpservermonitor.org .',
'back_to_top' => '返回顶部',
@@ -84,13 +84,13 @@ $sm_lang = array(
'mobile' => '手机',
'email' => '邮件',
'pushover' => 'Pushover',
- 'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See their website for more info.',
+ 'pushover_description' => 'Pushover 是第三方用于实时通知的服务(收费). 详情见 Pushover 官网 .',
'pushover_key' => 'Pushover Key',
'pushover_device' => 'Pushover Device',
- 'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
- 'delete_title' => 'Delete User',
- 'delete_message' => 'Are you sure you want to delete user \'%1\'?',
- 'deleted' => 'User deleted.',
+ 'pushover_device_description' => '要发送信息的设备名. 留空则发送到所有设备.',
+ 'delete_title' => '删除用户',
+ 'delete_message' => '确认删除用户 \'%1\'?',
+ 'deleted' => '用户已删除.',
'updated' => '用户已更新.',
'inserted' => '用户已添加.',
'profile' => '个人资料',
@@ -112,16 +112,26 @@ $sm_lang = array(
'email' => '邮件',
'sms' => '短信',
'pushover' => 'Pushover',
- 'no_logs' => 'No logs',
+ 'no_logs' => '没有日志',
),
'servers' => array(
'server' => '服务器',
'status' => '状态',
'label' => '标签',
'domain' => '域名/IP',
- 'timeout' => 'Timeout',
- 'timeout_description' => 'Number of seconds to wait for the server to respond.',
+ 'timeout' => '超时时间',
+ 'timeout_description' => '等待服务器响应的时间.',
+ 'authentication_settings' => '访问权限设置 (可选)',
+ 'website_username' => '用户名',
+ 'website_username_description' => '网站分配的用户名.',
+ 'website_password' => '密码',
+ 'website_password_description' => '网站分配的密码,密码将会加密存放',
+ 'fieldset_monitoring' => '通知',
+ 'fieldset_permissions' => '权限',
'port' => '端口',
+ 'custom_port' => '指定端口',
+ 'popular_ports' => '默认端口',
+ 'please_select' => '请选择',
'type' => '类型',
'type_website' => '网站',
'type_service' => '服务',
@@ -130,16 +140,16 @@ $sm_lang = array(
'last_check' => '最后检查',
'last_online' => '最后在线',
'monitoring' => '监控中',
- 'no_monitoring' => 'No monitoring',
+ 'no_monitoring' => '未监控',
'email' => '邮件',
'send_email' => '发送邮件',
'sms' => '短信',
'send_sms' => '发送短信',
'pushover' => 'Pushover',
- 'users' => 'Users',
- 'delete_title' => 'Delete Server',
- 'delete_message' => 'Are you sure you want to delete server \'%1\'?',
- 'deleted' => 'Server deleted.',
+ 'users' => '用户',
+ 'delete_title' => '删除服务器',
+ 'delete_message' => '确认删除服务器 \'%1\'?',
+ 'deleted' => '服务器已删除.',
'updated' => '服务器已更新.',
'inserted' => '服务器已添加.',
'latency' => '延迟',
@@ -161,16 +171,16 @@ $sm_lang = array(
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
'chart_short_date_format' => '%m/%d %H:%M',
'chart_short_time_format' => '%H:%M',
- 'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
- 'warning_notifications_disabled_email' => 'Email notifications are disabled.',
- 'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
- 'error_server_no_match' => 'Server not found.',
- 'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
- 'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
- 'error_server_ip_bad_service' => 'The IP address is not valid.',
- 'error_server_ip_bad_website' => 'The website URL is not valid.',
- 'error_server_type_invalid' => 'The selected server type is invalid.',
- 'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
+ 'warning_notifications_disabled_sms' => 'SMS 通知不可用.',
+ 'warning_notifications_disabled_email' => 'Email 通知不可用.',
+ 'warning_notifications_disabled_pushover' => 'Pushover 通知不可用.',
+ 'error_server_no_match' => '服务器不存在.',
+ 'error_server_label_bad_length' => '标签 长度要求 1 ~ 255 字符.',
+ 'error_server_ip_bad_length' => 'domain / IP 长度要求 1 ~ 255 字符.',
+ 'error_server_ip_bad_service' => '非法 IP.',
+ 'error_server_ip_bad_website' => '非法 URL.',
+ 'error_server_type_invalid' => '非法选项.',
+ 'error_server_warning_threshold_invalid' => '报警阈值为大于 0 的数字.',
),
'config' => array(
'general' => '通用',
@@ -182,8 +192,8 @@ $sm_lang = array(
'email_smtp' => '使用SMTP发送',
'email_smtp_host' => 'SMTP主机',
'email_smtp_port' => 'SMTP端口',
- 'email_smtp_security' => 'SMTP security',
- 'email_smtp_security_none' => 'None',
+ 'email_smtp_security' => 'SMTP 设置',
+ 'email_smtp_security_none' => '空',
'email_smtp_username' => 'SMTP用户名',
'email_smtp_password' => 'SMTP密码',
'email_smtp_noauth' => '留空为无验证',
@@ -194,7 +204,7 @@ $sm_lang = array(
'sms_gateway_spryng' => 'Spryng',
'sms_gateway_inetworx' => 'Inetworx',
'sms_gateway_clickatell' => 'Clickatell',
- 'sms_gateway_textmarketer' => 'Textmarketer',
+ 'sms_gateway_textmarketer' => 'Textmarketer',
'sms_gateway_smsglobal' => 'SMSGlobal',
'sms_gateway_octopush' => 'Octopush',
'sms_gateway_smsit' => 'Smsit',
@@ -203,11 +213,11 @@ $sm_lang = array(
'sms_gateway_username' => 'SMS网关用户名',
'sms_gateway_password' => 'SMS网关密码',
'sms_from' => '发信人电话号',
- 'pushover_status' => 'Allow sending Pushover messages',
- 'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See their website for more info.',
- 'pushover_clone_app' => 'Click here to create your Pushover app',
- 'pushover_api_token' => 'Pushover App API Token',
- 'pushover_api_token_description' => 'Before you can use Pushover, you need to register an App at their website and enter the App API Token here.',
+ 'pushover_status' => '允许 Pushover 通知',
+ 'pushover_description' => 'Pushover 是第三方用于实时通知的服务(收费). 详情见 Pushover 官网 .',
+ 'pushover_clone_app' => '点此创建 Pushover App',
+ 'pushover_api_token' => 'Pushover API Token',
+ 'pushover_api_token_description' => '请先 注册Pushover 并获取 Api Token.',
'alert_type' => '如果想要收到提醒请选中此项.',
'alert_type_description' => '状态变化: '.
'服务器 online -> offline 或 offline -> online 的状态变化将会收到提醒. '.
@@ -224,17 +234,18 @@ $sm_lang = array(
'log_status_description' => '如果状态记录设置为开, 提醒发送时均会保存记录.',
'log_email' => '记录脚本所发邮件?',
'log_sms' => '记录脚本所发短信SMS?',
- 'log_pushover' => 'Log pushover messages sent by the script',
+ 'log_pushover' => '记录脚本所发pushover消息?',
'updated' => '设置已更新.',
'tab_email' => '邮件发送设置',
'tab_sms' => '短信发送设置',
'tab_pushover' => 'Pushover',
'settings_email' => '邮件发送设置',
'settings_sms' => '短信发送设置',
- 'settings_pushover' => 'Pushover settings',
+ 'settings_pushover' => 'Pushover 设置',
'settings_notification' => '提醒设置',
'settings_log' => '日志设置',
- 'auto_refresh' => 'Auto-refresh',
+ 'auto_refresh' => '自动刷新',
+ 'password_encrypt_key' => '加密密钥',
'auto_refresh_servers' =>
'自动刷新服务器页. '.
''.
@@ -242,24 +253,24 @@ $sm_lang = array(
' ',
'seconds' => 'seconds',
'test' => 'Test',
- 'test_email' => 'An email will be sent to the address specified in your user profile.',
- 'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
- 'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
- 'send' => 'Send',
- 'test_subject' => 'Test',
- 'test_message' => 'Test message',
- 'email_sent' => 'Email sent',
- 'email_error' => 'Error in email sending',
- 'sms_sent' => 'Sms sent',
- 'sms_error' => 'Error in sms sending',
- 'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
- 'pushover_sent' => 'Pushover notification sent',
- 'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
- 'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
- 'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
- 'log_retention_period' => 'Log retention period',
- 'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
- 'log_retention_days' => 'days',
+ 'test_email' => '将发送一封邮件到您账户设置的邮件地址.',
+ 'test_sms' => '将发送一封短信到您账户设置的手机号码.',
+ 'test_pushover' => '将发送一条 Pushover 通知到您账户设置的 key/device 设备上.',
+ 'send' => '发送',
+ 'test_subject' => '测试',
+ 'test_message' => '测试信息',
+ 'email_sent' => '发送Email',
+ 'email_error' => 'Error 发送出错',
+ 'sms_sent' => '发送Sms',
+ 'sms_error' => '短信发送出错',
+ 'sms_error_nomobile' => '无法发送短信: 您的账号未设置有效手机号码.',
+ 'pushover_sent' => '发送Pushover通知',
+ 'pushover_error' => 'Pushover通知发送出错: %s',
+ 'pushover_error_noapp' => 'Pushover通知发送出错: no Pushover App API token found in the global configuration.',
+ 'pushover_error_nokey' => 'Pushover通知无法发送: no Pushover key found in your profile.',
+ 'log_retention_period' => '日志保留时长',
+ 'log_retention_period_description' => '日志存档保留时间,0为禁用日志清理',
+ 'log_retention_days' => '天',
),
// for newlines in the email messages use
'notifications' => array(
@@ -298,7 +309,7 @@ $sm_lang = array(
'success_password_reset' => '密码重设成功.请登录.',
),
'error' => array(
- '401_unauthorized' => 'Unauthorized',
- '401_unauthorized_description' => 'You do not have the privileges to view this page.',
+ '401_unauthorized' => '未授权的请求',
+ '401_unauthorized_description' => '未授权的请求.',
),
);
diff --git a/src/psm/Module/Config/Controller/ConfigController.php b/src/psm/Module/Config/Controller/ConfigController.php
index bdac4eb4..f733c60d 100644
--- a/src/psm/Module/Config/Controller/ConfigController.php
+++ b/src/psm/Module/Config/Controller/ConfigController.php
@@ -36,6 +36,7 @@ class ConfigController extends AbstractController {
* @var array $checkboxes
*/
protected $checkboxes = array(
+ 'proxy',
'email_status',
'email_smtp',
'sms_status',
@@ -54,6 +55,9 @@ class ConfigController extends AbstractController {
* @var array $fields
*/
protected $fields = array(
+ 'proxy_url',
+ 'proxy_user',
+ 'proxy_password',
'email_from_name',
'email_from_email',
'email_smtp_host',
@@ -298,11 +302,16 @@ class ConfigController extends AbstractController {
'label_settings_pushover' => psm_get_lang('config', 'settings_pushover'),
'label_settings_notification' => psm_get_lang('config', 'settings_notification'),
'label_settings_log' => psm_get_lang('config', 'settings_log'),
+ 'label_settings_proxy' => psm_get_lang('config', 'settings_proxy'),
'label_general' => psm_get_lang('config', 'general'),
'label_language' => psm_get_lang('config', 'language'),
'label_show_update' => psm_get_lang('config', 'show_update'),
'label_password_encrypt_key' => psm_get_lang('config', 'password_encrypt_key'),
'label_password_encrypt_key_note' => psm_get_lang('config', 'password_encrypt_key_note'),
+ 'label_proxy' => psm_get_lang('config', 'proxy'),
+ 'label_proxy_url' => psm_get_lang('config', 'proxy_url'),
+ 'label_proxy_user' => psm_get_lang('config', 'proxy_user'),
+ 'label_proxy_password' => psm_get_lang('config', 'proxy_password'),
'label_email_status' => psm_get_lang('config', 'email_status'),
'label_email_from_email' => psm_get_lang('config', 'email_from_email'),
'label_email_from_name' => psm_get_lang('config', 'email_from_name'),
@@ -326,6 +335,7 @@ class ConfigController extends AbstractController {
'label_sms_gateway_freevoipdeal' => psm_get_lang('config', 'sms_gateway_freevoipdeal'),
'label_sms_gateway_smsglobal' => psm_get_lang('config', 'sms_gateway_smsglobal'),
'label_sms_gateway_nexmo' => psm_get_lang('config', 'sms_gateway_nexmo'),
+ 'label_sms_gateway_smsgw' => psm_get_lang('config', 'sms_gateway_smsgw'),
'label_sms_gateway_octopush' => psm_get_lang('config', 'sms_gateway_octopush'),
'label_sms_gateway_freemobilesms' => psm_get_lang('config', 'sms_gateway_freemobilesms'),
'label_sms_gateway_clicksend' => psm_get_lang('config', 'sms_gateway_clicksend'),
@@ -354,6 +364,8 @@ class ConfigController extends AbstractController {
'label_log_sms' => psm_get_lang('config', 'log_sms'),
'label_log_pushover' => psm_get_lang('config', 'log_pushover'),
'label_log_pushbullet' => psm_get_lang('config', 'log_pushover'),
+ 'label_alert_proxy' => psm_get_lang('config', 'alert_proxy'),
+ 'label_alert_proxy_url' => psm_get_lang('config', 'alert_proxy_url'),
'label_auto_refresh' => psm_get_lang('config', 'auto_refresh'),
'label_auto_refresh_servers' => psm_get_lang('config', 'auto_refresh_servers'),
'label_seconds' => psm_get_lang('config', 'seconds'),
@@ -364,4 +376,4 @@ class ConfigController extends AbstractController {
'label_log_retention_days' => psm_get_lang('config', 'log_retention_days'),
);
}
-}
+}
\ No newline at end of file
diff --git a/src/psm/Module/Install/Controller/InstallController.php b/src/psm/Module/Install/Controller/InstallController.php
index dad31b14..cae533f8 100644
--- a/src/psm/Module/Install/Controller/InstallController.php
+++ b/src/psm/Module/Install/Controller/InstallController.php
@@ -120,11 +120,13 @@ class InstallController extends AbstractController {
}
$config = array(
- 'host' => 'localhost',
- 'name' => '',
- 'user' => '',
- 'pass' => '',
- 'prefix' => 'psm_',
+ 'db_host' => 'localhost',
+ 'db_port' => '3306'
+ 'db_name' => '',
+ 'db_user' => '',
+ 'db_pass' => '',
+ 'db_prefix' => 'psm_',
+ 'base_url' => '',
);
$changed = false;
@@ -140,10 +142,11 @@ class InstallController extends AbstractController {
if($changed) {
// test db connection
$this->db = new \psm\Service\Database(
- $config['host'],
- $config['user'],
- $config['pass'],
- $config['name']
+ $config['db_host'],
+ $config['db_port'],
+ $config['db_user'],
+ $config['db_pass'],
+ $config['db_name']
);
if($this->db->status()) {
@@ -275,11 +278,11 @@ class InstallController extends AbstractController {
* @param array $db_vars prefix,user,pass,name,host
* @return boolean|string TRUE on success, string with config otherwise
*/
- protected function writeConfigFile($db_vars) {
+ protected function writeConfigFile($array_config) {
$config = " $value) {
- $line = "define('PSM_DB_{key}', '{value}');".PHP_EOL;
+ foreach($array_config as $key => $value) {
+ $line = "define('PSM_{key}', '{value}');".PHP_EOL;
$line = str_replace(
array('{key}', '{value}'),
array(strtoupper($key), $value),
@@ -307,8 +310,9 @@ class InstallController extends AbstractController {
'pass' => '',
'name' => '',
'host' => '',
+ 'port' => '3306'
);
- $pattern = "/define\('SM_DB_{key}', '(.*?)'/u";
+ $pattern = "/define\('SM_{key}', '(.*?)'/u";
foreach($vars as $key => $value) {
$pattern_key = str_replace('{key}', strtoupper($key), $pattern);
diff --git a/src/psm/Module/Server/Controller/ServerController.php b/src/psm/Module/Server/Controller/ServerController.php
index ff5fa795..87ba3746 100644
--- a/src/psm/Module/Server/Controller/ServerController.php
+++ b/src/psm/Module/Server/Controller/ServerController.php
@@ -280,6 +280,20 @@ class ServerController extends AbstractServerController {
// validate the lot
$server_validator = new \psm\Util\Server\ServerValidator($this->db);
+ // format port from http/s url
+ if($clean['type'] == 'website' && empty($clean['port'])) {
+ $tmp = parse_url($clean["ip"]);
+ if(isset($tmp["port"])) {
+ $clean["port"] = $tmp["port"];
+ } elseif ($tmp["scheme"] === "https") {
+ $clean["port"] = 443;
+ } elseif ($tmp["scheme"] === "http") {
+ $clean["port"] = 80;
+ } elseif ($tmp["scheme"] === "rdp") {
+ $clean["port"] = 3389;
+ }
+ }
+
try {
if($this->server_id > 0) {
$server_validator->serverId($this->server_id);
@@ -449,6 +463,7 @@ class ServerController extends AbstractServerController {
'label_type' => psm_get_lang('servers', 'type'),
'label_website' => psm_get_lang('servers', 'type_website'),
'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_description' => psm_get_lang('servers', 'pattern_description'),
'label_last_check' => psm_get_lang('servers', 'last_check'),
diff --git a/src/psm/Module/Server/Controller/StatusController.php b/src/psm/Module/Server/Controller/StatusController.php
index 4ef5aca9..600e9be1 100644
--- a/src/psm/Module/Server/Controller/StatusController.php
+++ b/src/psm/Module/Server/Controller/StatusController.php
@@ -37,6 +37,7 @@ class StatusController extends AbstractServerController {
function __construct(Database $db, \Twig_Environment $twig) {
parent::__construct($db, $twig);
+ $this->setCSRFKey('status');
$this->setActions(array('index', 'saveLayout'), 'index');
}
@@ -91,6 +92,13 @@ class StatusController extends AbstractServerController {
$this->twig->addGlobal('auto_refresh', true);
$this->twig->addGlobal('auto_refresh_seconds', $auto_refresh_seconds);
}
+
+ if($this->isXHR() || isset($_SERVER["HTTP_X_REQUESTED_WITH"])) {
+ $this->xhr = true;
+ //disable auto refresh in ajax return html
+ $layout_data["auto_refresh"] = 0;
+ }
+
return $this->twig->render('module/server/status/index.tpl.html', $layout_data);
}
diff --git a/src/psm/Service/Database.php b/src/psm/Service/Database.php
index c5296170..16ff69fc 100644
--- a/src/psm/Service/Database.php
+++ b/src/psm/Service/Database.php
@@ -35,6 +35,12 @@ class Database {
*/
protected $db_host;
+ /**
+ * DB port
+ * @var string $db_port
+ */
+ protected $db_port = 3306;
+
/**
* DB name
* @var string $db_name
@@ -81,9 +87,10 @@ class Database {
* @param string $pass
* @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) {
$this->db_host = $host;
+ $this->db_port = $port || 3306;
$this->db_name = $db;
$this->db_user = $user;
$this->db_pass = $pass;
@@ -498,7 +505,7 @@ class Database {
// Initizale connection
try {
$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_pass
);
diff --git a/src/psm/Txtmsg/Mollie.php b/src/psm/Txtmsg/Mollie.php
index 7c173777..1824c802 100644
--- a/src/psm/Txtmsg/Mollie.php
+++ b/src/psm/Txtmsg/Mollie.php
@@ -61,7 +61,7 @@ class Mollie extends Core {
public function sendSMS($message) {
$recipients = implode(',', $this->recipients);
- $result = $this->_auth_https_post('www.mollie.nl', '/xml/sms/',
+ $result = $this->_auth_https_post('api.messagebird.com', '/xml/sms/',
'gateway='.urlencode($this->gateway).
'&username='.urlencode($this->username).
'&password='.urlencode($this->password).
@@ -97,4 +97,4 @@ class Mollie extends Core {
}
return $buf;
}
-}
\ No newline at end of file
+}
diff --git a/src/psm/Txtmsg/Smsgw.php b/src/psm/Txtmsg/Smsgw.php
new file mode 100644
index 00000000..5fafb937
--- /dev/null
+++ b/src/psm/Txtmsg/Smsgw.php
@@ -0,0 +1,61 @@
+.
+ *
+ * @package phpservermon
+ * @author Daif Alotaibi
+ * @copyright Copyright (c) 2008-2015 Pepijn Over
+ * @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
+ * @version Release: @package_version@
+ * @link http://www.phpservermonitor.org/
+ **/
+
+namespace psm\Txtmsg;
+
+class Smsgw extends Core {
+
+ /**
+ * Send a text message to one or more recipients
+ *
+ * @param string $message
+ * @return boolean
+ */
+
+ public function sendSMS($message) {
+ $url = 'http://api.smsgw.net/SendBulkSMS';
+ $post = array(
+ 'strUserName' => $this->username,
+ 'strPassword' => $this->password,
+ 'strTagName' => $this->originator,
+ 'strRecepientNumbers' => implode(';', $this->recipients),
+ 'strMessage' => $message,
+ );
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
+ curl_setopt($ch, CURLOPT_HEADER, FALSE);
+ curl_setopt($ch, CURLOPT_POST, TRUE);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
+ $data = curl_exec($ch);
+ if($data == '1') {
+ $this->success = true;
+ }
+ return $this->success;
+ }
+
+}
diff --git a/src/psm/Txtmsg/Spryng.php b/src/psm/Txtmsg/Spryng.php
index 2a1a7028..482aafba 100644
--- a/src/psm/Txtmsg/Spryng.php
+++ b/src/psm/Txtmsg/Spryng.php
@@ -46,6 +46,7 @@ class Spryng extends Core {
public function sendSMS($message) {
$recipients = implode(',', $this->recipients);
+ $message = urlencode($message);
$result = $this->_auth_https_post('http://www.spryng.nl', '/SyncTextService',
'?OPERATION=send' .
diff --git a/src/psm/Util/Install/Installer.php b/src/psm/Util/Install/Installer.php
index 4150b5a3..b5f599dc 100644
--- a/src/psm/Util/Install/Installer.php
+++ b/src/psm/Util/Install/Installer.php
@@ -130,6 +130,10 @@ class Installer {
$queries[] = "INSERT INTO `" . PSM_DB_PREFIX . "users_servers` (`user_id`,`server_id`) VALUES (1, 1), (1, 2);";
$queries[] = "INSERT INTO `" . PSM_DB_PREFIX . "config` (`key`, `value`) VALUE
('language', 'en_US'),
+ ('proxy', '0'),
+ ('proxy_url', ''),
+ ('proxy_user', ''),
+ ('proxy_password', ''),
('email_status', '1'),
('email_from_email', 'monitor@example.org'),
('email_from_name', 'Server Monitor'),
@@ -218,7 +222,7 @@ class Installer {
`ip` varchar(500) NOT NULL,
`port` int(5) unsigned 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,
`status` enum('on','off') NOT NULL default 'on',
`error` varchar(255) NULL,
@@ -445,6 +449,11 @@ class Installer {
psm_update_conf('password_encrypt_key', sha1(microtime()));
$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[] = "INSERT INTO `" . PSM_DB_PREFIX . "config` (`key`, `value`) VALUE
+ ('proxy', '0'),
+ ('proxy_url', ''),
+ ('proxy_user', ''),
+ ('proxy_password', '');";
$this->execSQL($queries);
diff --git a/src/psm/Util/Server/ServerValidator.php b/src/psm/Util/Server/ServerValidator.php
index 8b23d14f..4c97333f 100644
--- a/src/psm/Util/Server/ServerValidator.php
+++ b/src/psm/Util/Server/ServerValidator.php
@@ -101,6 +101,11 @@ class ServerValidator {
throw new \InvalidArgumentException('server_ip_bad_service');
}
break;
+ case 'ping':
+ if(!filter_var($value, FILTER_VALIDATE_IP)) {
+ throw new \InvalidArgumentException('server_ip_bad_service');
+ }
+ break;
}
return true;
@@ -113,7 +118,7 @@ class ServerValidator {
* @throws \InvalidArgumentException
*/
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');
}
return true;
diff --git a/src/psm/Util/Server/Updater/StatusUpdater.php b/src/psm/Util/Server/Updater/StatusUpdater.php
index 84b147e1..ad787b2f 100644
--- a/src/psm/Util/Server/Updater/StatusUpdater.php
+++ b/src/psm/Util/Server/Updater/StatusUpdater.php
@@ -90,6 +90,9 @@ class StatusUpdater {
}
switch($this->server['type']) {
+ case 'ping':
+ $this->status_new = $this->updatePing($max_runs);
+ break;
case 'service':
$this->status_new = $this->updateService($max_runs);
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
* @param int $max_runs
diff --git a/src/templates/default/main/body.tpl.html b/src/templates/default/main/body.tpl.html
index 2197ac9e..4ce7dc56 100644
--- a/src/templates/default/main/body.tpl.html
+++ b/src/templates/default/main/body.tpl.html
@@ -6,14 +6,11 @@
{{ title }}
-
+
- {% if auto_refresh %}
-
- {% endif %}
diff --git a/src/templates/default/module/config/config.tpl.html b/src/templates/default/module/config/config.tpl.html
index 8e5c33b7..855fa2d3 100644
--- a/src/templates/default/module/config/config.tpl.html
+++ b/src/templates/default/module/config/config.tpl.html
@@ -70,6 +70,32 @@
{{ label_log_retention_days }}
+ {{ label_settings_proxy }}
+
+
+
{{ label_proxy }}
+
{{ label_alert_proxy|raw }}
+
+
+
+
{{ label_proxy_url }}
+
+
+
{{ label_alert_proxy_url|raw }}
+
+
+
+
{{ label_proxy_user }}
+
+
+
+
+
+
{{ label_proxy_password }}
+
+
+
+
{{ label_save }}
@@ -174,6 +200,7 @@
{{ label_sms_gateway_octopush }}
{{ label_sms_gateway_freemobilesms }}
{{ label_sms_gateway_clicksend }}
+ {{ label_sms_gateway_smsgw }}
diff --git a/src/templates/default/module/install/config_new.tpl.html b/src/templates/default/module/install/config_new.tpl.html
index 64fe07ab..200d45c3 100644
--- a/src/templates/default/module/install/config_new.tpl.html
+++ b/src/templates/default/module/install/config_new.tpl.html
@@ -10,35 +10,48 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/src/templates/default/module/server/server/update.tpl.html b/src/templates/default/module/server/server/update.tpl.html
index 5a708885..ead54a30 100644
--- a/src/templates/default/module/server/server/update.tpl.html
+++ b/src/templates/default/module/server/server/update.tpl.html
@@ -20,6 +20,7 @@
{{ label_please_select }}
+ {{ label_ping }}
{{ label_service }}
{{ label_website }}
@@ -47,6 +48,7 @@
SFTP (115)
WHOIS (43)
BIND (53)
+ RDP (3389)
diff --git a/src/templates/default/module/server/status/index.tpl.html b/src/templates/default/module/server/status/index.tpl.html
index 4f579206..c66cde78 100644
--- a/src/templates/default/module/server/status/index.tpl.html
+++ b/src/templates/default/module/server/status/index.tpl.html
@@ -1,4 +1,5 @@
+
{% for server in servers_offline %}
@@ -57,4 +58,17 @@
-
\ No newline at end of file
+
+
+{% if auto_refresh %}
+
+{% endif %}
\ No newline at end of file
diff --git a/static/js/scripts.js b/static/js/scripts.js
index fb29cb63..46669303 100755
--- a/static/js/scripts.js
+++ b/static/js/scripts.js
@@ -135,6 +135,7 @@ function psm_xhr(mod, params, method, on_complete, options) {
function psm_saveLayout(layout) {
var params = {
action: 'saveLayout',
+ csrf: $("input[name=saveLayout_csrf]").val(),
layout: layout
};
psm_xhr('server_status', params, 'POST');