diff --git a/src/includes/functions.inc.php b/src/includes/functions.inc.php index ec725f67..7d39f9aa 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)'); } diff --git a/src/lang/en_US.lang.php b/src/lang/en_US.lang.php index 07c1d5d1..cf200819 100755 --- a/src/lang/en_US.lang.php +++ b/src/lang/en_US.lang.php @@ -188,6 +188,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', @@ -234,6 +238,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', @@ -248,6 +254,7 @@ $sm_lang = array( 'settings_pushover' => 'Pushover 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/psm/Module/Config/Controller/ConfigController.php b/src/psm/Module/Config/Controller/ConfigController.php index d058de63..6961ce86 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', @@ -52,6 +53,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', @@ -293,11 +297,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'), @@ -346,6 +355,8 @@ class ConfigController extends AbstractController { 'label_log_email' => psm_get_lang('config', 'log_email'), 'label_log_sms' => psm_get_lang('config', 'log_sms'), 'label_log_pushover' => 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'), diff --git a/src/psm/Util/Install/Installer.php b/src/psm/Util/Install/Installer.php index 6c3ee490..aeb414c8 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'), @@ -442,6 +446,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/templates/default/module/config/config.tpl.html b/src/templates/default/module/config/config.tpl.html index 103c52a8..71617232 100644 --- a/src/templates/default/module/config/config.tpl.html +++ b/src/templates/default/module/config/config.tpl.html @@ -69,6 +69,32 @@  {{ label_log_retention_days }} + {{ label_settings_proxy }} +
+
+ +

{{ label_alert_proxy|raw }}

+
+
+
+ +
+ +

{{ label_alert_proxy_url|raw }}

+
+
+
+ +
+ +
+
+
+ +
+ +
+