From 0488a3c2a4f736ac0272f74408ee569499f01150 Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Mon, 15 Feb 2010 12:05:15 +0000 Subject: [PATCH] - fixing RootDir in ApsInstaller and ApsUpdater, fixes #14 and #15 - fixed root_db connection in openRootDB() --- lib/classes/aps/class.ApsInstaller.php | 2 +- lib/classes/aps/class.ApsUpdater.php | 153 +++++++++--------- lib/functions/froxlor/function.openRootDB.php | 32 ++-- .../froxlor/function.updateFunctions.php | 2 +- 4 files changed, 98 insertions(+), 91 deletions(-) diff --git a/lib/classes/aps/class.ApsInstaller.php b/lib/classes/aps/class.ApsInstaller.php index e94eed03..e7ec293e 100644 --- a/lib/classes/aps/class.ApsInstaller.php +++ b/lib/classes/aps/class.ApsInstaller.php @@ -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']; } diff --git a/lib/classes/aps/class.ApsUpdater.php b/lib/classes/aps/class.ApsUpdater.php index f7445a78..e23a96f3 100644 --- a/lib/classes/aps/class.ApsUpdater.php +++ b/lib/classes/aps/class.ApsUpdater.php @@ -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 diff --git a/lib/functions/froxlor/function.openRootDB.php b/lib/functions/froxlor/function.openRootDB.php index 42d89a7e..c248d65a 100644 --- a/lib/functions/froxlor/function.openRootDB.php +++ b/lib/functions/froxlor/function.openRootDB.php @@ -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() diff --git a/lib/functions/froxlor/function.updateFunctions.php b/lib/functions/froxlor/function.updateFunctions.php index c14d9b92..918468e5 100644 --- a/lib/functions/froxlor/function.updateFunctions.php +++ b/lib/functions/froxlor/function.updateFunctions.php @@ -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 */