2014-01-07 19:24:48 +00:00
< ? php
2014-01-07 22:32:57 +00:00
/**
* PHP Server Monitor
* Monitor your servers and websites .
2014-01-07 19:24:48 +00:00
*
* This file is part of PHP Server Monitor .
* PHP Server Monitor is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* PHP Server Monitor is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* 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 />.
2014-01-07 22:32:57 +00:00
*
* @ package phpservermon
2017-04-15 19:34:49 +00:00
* @ author Pepijn Over < pep @ mailbox . org >
* @ copyright Copyright ( c ) 2008 - 2017 Pepijn Over < pep @ mailbox . org >
2014-01-07 22:32:57 +00:00
* @ license http :// www . gnu . org / licenses / gpl . txt GNU GPL v3
* @ version Release : @ package_version @
2014-02-10 22:48:43 +00:00
* @ link http :// www . phpservermonitor . org /
2014-01-07 22:32:57 +00:00
**/
2014-01-07 19:24:48 +00:00
// include main configuration and functionality
2018-07-05 17:59:57 +00:00
require_once __DIR__ . '/../src/bootstrap.php' ;
2014-01-07 19:24:48 +00:00
2018-07-05 17:59:57 +00:00
if ( ! psm_is_cli ()) {
2016-09-20 11:37:58 +00:00
// check if it's an allowed host
2018-07-05 17:59:57 +00:00
if ( ! isset ( $_SERVER [ " HTTP_X_FORWARDED_FOR " ])) {
2018-06-29 17:46:58 +00:00
$_SERVER [ " HTTP_X_FORWARDED_FOR " ] = " " ;
}
// define won't accept array before php 7.0.0
// check if data is serialized (not needed when using php 7.0.0 and higher)
$data = @ unserialize ( PSM_CRON_ALLOW );
$allow = $data === false ? PSM_CRON_ALLOW : $data ;
2018-07-05 17:59:57 +00:00
if ( ! in_array ( $_SERVER [ 'REMOTE_ADDR' ], $allow ) && ! in_array ( $_SERVER [ " HTTP_X_FORWARDED_FOR " ], $allow )) {
2018-06-29 17:46:58 +00:00
header ( 'HTTP/1.0 403 Forbidden' );
die ( '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>403 Forbidden</title></head><body><h1>Forbidden</h1><p>IP address not allowed. See the <a href="http://docs.phpservermonitor.org/en/latest/install.html#cronjob-over-web">documentation</a> for more info.</p></body></html>' );
2016-09-20 11:37:58 +00:00
}
2018-06-29 17:46:58 +00:00
echo " OK " ;
2014-03-28 13:41:04 +00:00
}
2014-11-06 09:52:30 +00:00
$cron_timeout = PSM_CRON_TIMEOUT ;
// parse a couple of arguments
2018-07-05 17:59:57 +00:00
if ( ! empty ( $_SERVER [ 'argv' ])) {
foreach ( $_SERVER [ 'argv' ] as $argv ) {
2014-11-06 09:52:30 +00:00
$argi = explode ( '=' , ltrim ( $argv , '--' ));
2018-07-05 17:59:57 +00:00
if ( count ( $argi ) !== 2 ) {
2014-11-06 09:52:30 +00:00
continue ;
}
2018-07-05 17:59:57 +00:00
switch ( $argi [ 0 ]) {
2014-11-06 09:52:30 +00:00
case 'uri' :
2018-07-05 17:59:57 +00:00
if ( ! defined ( 'PSM_BASE_URL' )) {
2018-04-09 17:12:10 +00:00
define ( 'PSM_BASE_URL' , $argi [ 1 ]);
}
2014-11-06 09:52:30 +00:00
break ;
case 'timeout' :
$cron_timeout = intval ( $argi [ 1 ]);
break ;
}
}
}
2014-09-11 23:08:04 +00:00
2014-02-08 20:16:41 +00:00
// prevent cron from running twice at the same time
2014-03-14 23:35:35 +00:00
// 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.
2014-11-06 09:52:30 +00:00
// or you can provide the --timeout=x argument
2014-02-08 20:16:41 +00:00
$time = time ();
2018-07-05 17:59:57 +00:00
if (
2014-11-06 09:52:30 +00:00
psm_get_conf ( 'cron_running' ) == 1
&& $cron_timeout > 0
&& ( $time - psm_get_conf ( 'cron_running_time' ) < $cron_timeout )
) {
2014-02-08 20:16:41 +00:00
die ( 'Cron is already running. Exiting.' );
}
2018-07-05 17:59:57 +00:00
if ( ! defined ( 'PSM_DEBUG' ) || ! PSM_DEBUG ) {
2014-03-16 01:04:49 +00:00
psm_update_conf ( 'cron_running' , 1 );
}
2014-02-08 20:16:41 +00:00
psm_update_conf ( 'cron_running_time' , $time );
2015-02-27 14:05:46 +00:00
$autorun = $router -> getService ( 'util.server.updatemanager' );
$autorun -> run ( true );
2014-01-07 19:24:48 +00:00
2014-02-08 20:16:41 +00:00
psm_update_conf ( 'cron_running' , 0 );