2013-08-28 22:47:04 +02:00
< ? php
2013-10-20 12:02:02 +02:00
2013-08-28 22:47:04 +02:00
/**
* File : startupdates . php .
* Author : Ulrich Block
* Date : 05.01 . 13
* Time : 12 : 20
* Contact : < ulrich . block @ easy - wi . com >
*
* This file is part of Easy - WI .
*
* Easy - WI 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 .
*
* Easy - WI 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 Easy - WI . If not , see < http :// www . gnu . org / licenses />.
*
* Diese Datei ist Teil von Easy - WI .
*
* Easy - WI ist Freie Software : Sie koennen es unter den Bedingungen
* der GNU General Public License , wie von der Free Software Foundation ,
* Version 3 der Lizenz oder ( nach Ihrer Wahl ) jeder spaeteren
* veroeffentlichten Version , weiterverbreiten und / oder modifizieren .
*
* Easy - WI wird in der Hoffnung , dass es nuetzlich sein wird , aber
* OHNE JEDE GEWAEHELEISTUNG , bereitgestellt ; sogar ohne die implizite
* Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK .
* Siehe die GNU General Public License fuer weitere Details .
*
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
* Programm erhalten haben . Wenn nicht , siehe < http :// www . gnu . org / licenses />.
*/
2013-10-20 12:02:02 +02:00
2013-08-28 22:47:04 +02:00
if ( isset ( $_SERVER [ 'REMOTE_ADDR' ])) {
2013-10-13 11:42:31 +02:00
$ip = $_SERVER [ 'REMOTE_ADDR' ];
2015-10-17 09:50:28 +02:00
2013-10-20 12:02:02 +02:00
$timelimit = ( isset ( $_GET [ 'timeout' ]) and is_numeric ( $_GET [ 'timeout' ])) ? $_GET [ 'timeout' ] : ini_get ( 'max_execution_time' ) - 10 ;
2015-10-17 09:50:28 +02:00
2013-08-28 22:47:04 +02:00
} else {
2013-10-20 12:02:02 +02:00
$timelimit = 600 ;
2013-08-28 22:47:04 +02:00
}
2015-10-17 09:50:28 +02:00
$allRoots = ( isset ( $_GET [ 'all_root' ])) ? true : false ;
$forceUpdate = ( isset ( $_GET [ 'force_update' ])) ? true : false ;
if ( isset ( $argv )) {
$args = array ();
foreach ( $argv as $a ) {
if ( $a == 'all_root' ) {
$allRoots = true ;
} else if ( $a == 'force_update' ) {
$forceUpdate = true ;
}
}
}
2013-08-28 22:47:04 +02:00
set_time_limit ( $timelimit );
2013-10-20 12:02:02 +02:00
define ( 'EASYWIDIR' , dirname ( __FILE__ ));
2015-10-17 09:50:28 +02:00
2014-02-23 13:13:48 +01:00
include ( EASYWIDIR . '/stuff/methods/vorlage.php' );
include ( EASYWIDIR . '/stuff/methods/class_validator.php' );
include ( EASYWIDIR . '/stuff/methods/functions.php' );
2013-10-20 12:02:02 +02:00
include ( EASYWIDIR . '/stuff/settings.php' );
2014-02-23 13:13:48 +01:00
include ( EASYWIDIR . '/stuff/methods/functions_ssh_exec.php' );
include ( EASYWIDIR . '/stuff/methods/class_masterserver.php' );
2013-10-20 12:02:02 +02:00
include ( EASYWIDIR . '/stuff/keyphrasefile.php' );
if ( ! isset ( $ip ) or $ui -> escaped ( 'SERVER_ADDR' , 'server' ) == $ip or in_array ( $ip , ipstoarray ( $rSA [ 'cronjob_ips' ]))) {
2013-12-28 11:30:23 +01:00
$currentHour = date ( 'G' );
$currentMinute = ( int ) date ( 'i' );
2023-05-18 23:14:44 +03:30
echo " Start Syncs and Updates. Hour is ${ currentHour } and minute is ${ currentMinute } \r \n " ;
2014-01-26 13:04:36 +01:00
2015-10-17 09:50:28 +02:00
if ( $allRoots ) {
echo " Checking for all available and active servers \r \n " ;
$query = $sql -> prepare ( " SELECT `id`,`updates` FROM `rserverdata` WHERE `active`!='N' " );
$query -> execute ();
} else {
$query = $sql -> prepare ( " SELECT `lastUpdateRun` FROM `settings` WHERE `resellerid`=0 LIMIT 1 " );
$query -> execute ();
$lastUpdateRun = ( int ) $query -> fetchColumn ();
$query = $sql -> prepare ( " UPDATE `settings` SET `lastUpdateRun`=? WHERE `resellerid`=0 LIMIT 1 " );
$query -> execute ( array ( $currentMinute ));
2013-12-28 11:30:23 +01:00
2023-05-18 23:14:44 +03:30
echo " Checking for servers to be updated and or synced at hour ${ currentHour } and between minutes ${ lastUpdateRun } and ${ currentMinute } \r \n " ;
2013-12-28 11:30:23 +01:00
2015-10-17 09:50:28 +02:00
// avoid less/more OR equal in SQL. We want only less/more to eliminate the OR comparison
$currentMinute ++ ;
$lastUpdateRun -- ;
2013-12-28 11:30:23 +01:00
2023-05-18 23:14:44 +03:30
echo " Altered minutes for running a more efficient query will be updateMinute > ${ lastUpdateRun } AND updateMinute < ${ currentMinute } \r \n " ;
2013-12-28 11:30:23 +01:00
2015-10-17 09:50:28 +02:00
$query = $sql -> prepare ( " SELECT `id`,`updates` FROM `rserverdata` WHERE (`alreadyStartedAt` IS NULL OR `alreadyStartedAt`!=?) AND `updateMinute`>? AND `updateMinute`<? AND `active`!='N' " );
$query -> execute ( array ( $currentHour , $lastUpdateRun , $currentMinute ));
}
2013-12-28 11:30:23 +01:00
2013-09-29 15:29:58 +02:00
$query2 = $sql -> prepare ( " UPDATE `rserverdata` SET `alreadyStartedAt`=? WHERE `id`=? LIMIT 1 " );
2014-01-23 08:41:13 +01:00
2014-11-30 12:55:07 +01:00
while ( $row = $query -> fetch ( PDO :: FETCH_ASSOC )) {
2013-12-28 11:30:23 +01:00
2014-01-23 08:41:13 +01:00
$rootServer = new masterServer ( $row [ 'id' ], $aeskey );
if ( $row [ 'updates' ] == 3 ) {
echo " Updates deactivated for: " . $rootServer -> sship . " \r \n " ;
} else {
2015-10-17 09:50:28 +02:00
if ( 4 == $currentHour or $forceUpdate ) {
2014-12-31 15:45:05 +01:00
$rootServer -> collectData ( true , true , false );
} else {
$rootServer -> collectData ();
}
2013-12-28 11:30:23 +01:00
2014-12-31 15:45:05 +01:00
$sshReturn = $rootServer -> sshConnectAndExecute ();
2013-12-28 11:30:23 +01:00
2014-12-31 15:45:05 +01:00
if ( $sshReturn === false and $rootServer -> updateAmount > 0 ) {
2013-12-28 11:30:23 +01:00
2014-12-31 15:45:05 +01:00
echo " Updating failed for: " . $rootServer -> sship . " \r \n " ;
2013-12-28 11:30:23 +01:00
2014-12-31 15:45:05 +01:00
} else {
2014-01-26 10:42:53 +01:00
2014-12-31 15:45:05 +01:00
if ( $rootServer -> updateAmount > 0 ) {
2014-01-26 10:42:53 +01:00
2014-12-31 15:45:05 +01:00
echo " Updater started for " . $rootServer -> sship . " \r \n " ;
2014-01-26 10:42:53 +01:00
if ( isset ( $dbConnect [ 'debug' ]) and $dbConnect [ 'debug' ] == 1 ) {
2014-12-31 15:45:05 +01:00
print_r ( $rootServer -> getCommands ());
2014-01-26 10:42:53 +01:00
}
2013-12-28 11:30:23 +01:00
2014-01-23 08:41:13 +01:00
} else {
2014-01-26 10:42:53 +01:00
echo " No updates to be executed for " . $rootServer -> sship . " \r \n " ;
2014-01-23 08:41:13 +01:00
}
2013-08-28 22:47:04 +02:00
}
2013-12-28 11:30:23 +01:00
2014-01-23 08:41:13 +01:00
$query2 -> execute ( array ( $currentHour , $row [ 'id' ]));
2013-12-28 11:30:23 +01:00
2014-01-23 08:41:13 +01:00
$rootServer = null ;
}
2013-08-28 22:47:04 +02:00
}
2013-12-28 11:30:23 +01:00
2014-01-10 22:16:51 +01:00
$query = $sql -> prepare ( " UPDATE `settings` SET `lastCronUpdates`=UNIX_TIMESTAMP() " );
2013-08-28 22:47:04 +02:00
$query -> execute ();
}