diff --git a/cron/status.cron.php b/cron/status.cron.php index 9b6ce773..8b08e89f 100644 --- a/cron/status.cron.php +++ b/cron/status.cron.php @@ -32,6 +32,8 @@ if(!psm_is_cli()) { die('This script can only be run from the command line.'); } +psm_set_cli_uri(); + // prevent cron from running twice at the same time // however if the cron has been running for X mins, we'll assume it died and run anyway // if you want to change PSM_CRON_TIMEOUT, have a look in src/includes/psmconfig.inc.php. diff --git a/src/includes/functions.inc.php b/src/includes/functions.inc.php index 829de923..e888a940 100644 --- a/src/includes/functions.inc.php +++ b/src/includes/functions.inc.php @@ -548,6 +548,32 @@ function psm_is_cli() { return (!isset($_SERVER['SERVER_SOFTWARE']) || php_sapi_name() == 'cli'); } +/** + * Set _server vars from the cli argument --uri= + * Example: php cron/status.cron.php --uri="http://www.phpservermonitor.org/" + */ +function psm_set_cli_uri() { + foreach ($_SERVER['argv'] as $argv) { + if (0 === strpos($argv, '--uri=')) { + $uriArray = parse_url(substr($argv, 6)); + if (!empty($uriArray['scheme'])) { + $_SERVER['REQUEST_SCHEME'] = $uriArray['scheme']; + $_SERVER['SERVER_PORT'] = ($uriArray['scheme'] == 'https') ? 443 : 80; + } + if (!empty($uriArray['host'])) { + $_SERVER['HTTP_HOST'] = $uriArray['host']; + } + if (!empty($uriArray['port'])) { + $_SERVER['SERVER_PORT'] = $uriArray['port']; + } + if (!empty($uriArray['path'])) { + $_SERVER['SCRIPT_NAME'] = $uriArray['path']; + } + break; + } + } +} + ############################################### # # Debug functions diff --git a/src/psm/Util/Server/Updater/StatusNotifier.class.php b/src/psm/Util/Server/Updater/StatusNotifier.class.php index 028889f0..154b4c3e 100644 --- a/src/psm/Util/Server/Updater/StatusNotifier.class.php +++ b/src/psm/Util/Server/Updater/StatusNotifier.class.php @@ -245,9 +245,8 @@ class StatusNotifier { $pushover->setTitle(psm_parse_msg($this->status_new, 'pushover_title', $this->server)); $pushover->setMessage(str_replace('
', "\n", $message)); - // @todo fix url when script is executed via CLI -// $pushover->setUrl($url); -// $pushover->setUrlTitle(psm_get_lang('system', 'title')); + $pushover->setUrl(psm_build_url()); + $pushover->setUrlTitle(psm_get_lang('system', 'title')); foreach($users as $user) { if(trim($user['pushover_key']) == '') {