- fixing RootDir in ApsInstaller and ApsUpdater, fixes #14 and #15

- fixed root_db connection in openRootDB()
This commit is contained in:
Michael Kaufmann (d00p)
2010-02-15 12:05:15 +00:00
parent 74e3ed0a1f
commit 0488a3c2a4
4 changed files with 98 additions and 91 deletions

View File

@@ -45,7 +45,7 @@ class ApsInstaller extends ApsParser
{
$this->db = $db;
$this->db_root = $db_root;
$this->RootDir = dirname(dirname(__FILE__)) . '/';
$this->RootDir = dirname(dirname(dirname(dirname(__FILE__)))) . '/';
$this->Hosts = $settings['system']['mysql_access_host'];
}

View File

@@ -43,7 +43,7 @@ class ApsUpdater extends ApsParser
$this->db = $db;
$this->RequestDomain = 'apscatalog.com';
$this->RootUrl = '/1/';
$this->RootDir = dirname(dirname(__FILE__)) . '/';
$this->RootDir = dirname(dirname(dirname(dirname(__FILE__)))) . '/';
}
/**
@@ -56,9 +56,9 @@ class ApsUpdater extends ApsParser
//return if allow_url_fopen is disabled
if(ini_get('allow_url_fopen') == '0')
if(!ini_get('allow_url_fopen'))
{
echo ("The APS updater cronjob requires that allow_url_fopen is enabled for the PHP CLI binary!\n");
echo "The APS updater cronjob requires that allow_url_fopen is enabled for the PHP CLI binary!\n";
return;
}
@@ -79,87 +79,96 @@ class ApsUpdater extends ApsParser
//fetch all vendors
$Vendors = self::FetchSubUrls($this->RootUrl);
foreach($Vendors as $Vendor)
if($Vendors !== false)
{
//fetch all applications from vendors
$Applications = self::FetchSubUrls($this->RootUrl . $Vendor);
foreach($Applications as $Application)
foreach($Vendors as $Vendor)
{
//get newest version of package which is already installed
//fetch all applications from vendors
$CurrentVersion = '';
$Result = $this->db->query('SELECT * FROM `' . TABLE_APS_PACKAGES . '` WHERE `Name` = "' . $this->db->escape(substr($Application, 0, -1)) . '"');
while($Row = $this->db->fetch_array($Result))
$Applications = self::FetchSubUrls($this->RootUrl . $Vendor);
if($Applications !== false)
{
if(version_compare($Row['Version'] . '-' . $Row['Release'], $CurrentVersion) == 1)
foreach($Applications as $Application)
{
$CurrentVersion = $Row['Version'] . '-' . $Row['Release'];
}
}
//get newest version of package which is already installed
if($this->db->num_rows($Result) != 0)
{
//package already installed in system, search for newer version
$CurrentVersion = '';
$Result = $this->db->query('SELECT * FROM `' . TABLE_APS_PACKAGES . '` WHERE `Name` = "' . $this->db->escape(substr($Application, 0, -1)) . '"');
if($Task['Task'] != TASK_SYSTEM_UPDATE)continue;
//fetch different versions of application from distribution server
$NewerVersion = '';
$Versions = self::FetchSubUrls($this->RootUrl . $Vendor . $Application);
foreach($Versions as $Version)
{
$OnlineVersion = substr($Version, 0, -1);
//is package newer than current version?
if(version_compare($OnlineVersion, $CurrentVersion) == 1)
while($Row = $this->db->fetch_array($Result))
{
//is new package newer than another one found before?
if(version_compare($OnlineVersion, $NewerVersion) == 1)
if(version_compare($Row['Version'] . '-' . $Row['Release'], $CurrentVersion) == 1)
{
$NewerVersion = $OnlineVersion;
$CurrentVersion = $Row['Version'] . '-' . $Row['Release'];
}
}
}
if($NewerVersion != '')
{
//download package as an update
self::DownloadPackage($this->RootUrl . $Vendor . $Application . $NewerVersion, substr($Application, 0, -1), $NewerVersion);
continue;
}
}
else
{
if($Task['Task'] != TASK_SYSTEM_DOWNLOAD)continue;
//new packages
$NewVersion = '';
$Versions = self::FetchSubUrls($this->RootUrl . $Vendor . $Application);
foreach($Versions as $Version)
{
$OnlineVersion = substr($Version, 0, -1);
//is package newer than another one found before?
if(version_compare($OnlineVersion, $NewVersion) == 1)
if($this->db->num_rows($Result) != 0)
{
$NewVersion = $OnlineVersion;
//package already installed in system, search for newer version
if($Task['Task'] != TASK_SYSTEM_UPDATE)continue;
//fetch different versions of application from distribution server
$NewerVersion = '';
$Versions = self::FetchSubUrls($this->RootUrl . $Vendor . $Application);
if($Versions !== false)
{
foreach($Versions as $Version)
{
$OnlineVersion = substr($Version, 0, -1);
//is package newer than current version?
if(version_compare($OnlineVersion, $CurrentVersion) == 1)
{
//is new package newer than another one found before?
if(version_compare($OnlineVersion, $NewerVersion) == 1)
{
$NewerVersion = $OnlineVersion;
}
}
}
if($NewerVersion != '')
{
//download package as an update
self::DownloadPackage($this->RootUrl . $Vendor . $Application . $NewerVersion, substr($Application, 0, -1), $NewerVersion);
continue;
}
}
}
}
else
{
if($Task['Task'] != TASK_SYSTEM_DOWNLOAD)continue;
if($NewVersion != '')
{
//download package as a new one
//new packages
self::DownloadPackage($this->RootUrl . $Vendor . $Application . $NewVersion, substr($Application, 0, -1), $NewVersion);
continue;
$NewVersion = '';
$Versions = self::FetchSubUrls($this->RootUrl . $Vendor . $Application);
foreach($Versions as $Version)
{
$OnlineVersion = substr($Version, 0, -1);
//is package newer than another one found before?
if(version_compare($OnlineVersion, $NewVersion) == 1)
{
$NewVersion = $OnlineVersion;
}
}
if($NewVersion != '')
{
//download package as a new one
self::DownloadPackage($this->RootUrl . $Vendor . $Application . $NewVersion, substr($Application, 0, -1), $NewVersion);
continue;
}
}
}
}
}
@@ -236,16 +245,16 @@ class ApsUpdater extends ApsParser
$Content = @file('http://' . $this->RequestDomain . $Url);
if($Content != false)
if($Content !== false)
{
foreach($Content as $Temp)
{
//skip empty lines
if($Temp != "\r\n"
&& $Temp != "\r"
&& $Temp != "\n"
&& $Temp != "")
&& $Temp != "\r"
&& $Temp != "\n"
&& $Temp != "")
{
//remove unwanted characters

View File

@@ -30,26 +30,24 @@ function openRootDB($debugHandler, $lockfile)
{
global $db_root;
// If one cronscript needs root, it should say $needrootdb = true before the include
if(isset($needrootdb)
&& $needrootdb === true)
require ('./lib/userdata.inc.php');
$db_root = new db($sql_root[0]['host'], $sql_root[0]['user'], $sql_root[0]['password'], '');
if($db_root->link_id == 0)
{
$db_root = new db($sql_root[0]['host'], $sql_root[0]['user'], $sql_root[0]['password'], '');
/**
* Do not proceed further if no database connection could be established
*/
if($db_root->link_id == 0)
{
/**
* Do not proceed further if no database connection could be established
*/
fclose($debugHandler);
unlink($lockfile);
die('root can\'t connect to mysqlserver. Please check userdata.inc.php! Exiting...');
}
unset($db_root->password);
fwrite($debugHandler, 'Database-rootconnection established' . "\n");
fclose($debugHandler);
unlink($lockfile);
die('root can\'t connect to mysqlserver. Please check userdata.inc.php! Exiting...');
}
unset($db_root->password);
fwrite($debugHandler, 'Database-rootconnection established' . "\n");
unset($sql);
}
function closeRootDB()

View File

@@ -134,7 +134,7 @@ function showUpdateStep($task = null, $needs_status = true)
* outputs [OK] (success), [??] (warning) or [!!] (failure)
* of the last update-step
*
* @param int status (0 = success, 1 = warning, -1 = failure)
* @param int status (0 = success, 1 = warning, 2 = failure)
*
* @return string formatted output and log-entry
*/