static function Open()
 {
     // Check if native PHP methods should be used - Test 1
     self::$native = is_writable(DOC_ROOT) && getmyuid() == fileowner(DOC_ROOT) ? true : false;
     // Check if native PHP methods should be used - Test 2
     if (self::$native) {
         // Create temporary file
         $native_check_file = DOC_ROOT . '/native-check' . time();
         $handle = @fopen($native_check_file, 'w');
         @fwrite($handle, 'Native Check');
         // Check if webserver/PHP has filesystem access
         self::$native = fileowner($native_check_file) == getmyuid() ? true : false;
         // Remove temporary file
         @fclose($handle);
         @unlink($native_check_file);
     }
     // Login to server via FTP if PHP doesn't have write access
     if (!self::$native) {
         // Set FTP login settings
         global $settings;
         self::$ftp_hostname = $settings->ftp_hostname;
         self::$ftp_username = $settings->ftp_username;
         self::$ftp_password = $settings->ftp_password;
         self::$ftp_path = $settings->ftp_path;
         self::$ftp_ssl = $settings->ftp_ssl;
         // Connect to FTP host
         if (self::$ftp_ssl) {
             if (!function_exists('ftp_ssl_connect')) {
                 throw new Exception("Your host doesn't support FTP over SSL connections.");
             }
             self::$ftp_stream = @ftp_ssl_connect(self::$ftp_hostname);
         } else {
             self::$ftp_stream = @ftp_connect(self::$ftp_hostname);
         }
         if (!self::$ftp_stream) {
             throw new Exception("Unable to connect to FTP host (" . self::$ftp_hostname . ")");
         }
         // Login with username and password
         if (!@ftp_login(self::$ftp_stream, self::$ftp_username, self::$ftp_password)) {
             throw new Exception("Unable to login to FTP server (Username: '******', Password: '******')");
         }
     }
     return self::$native ? 'native' : 'ftp';
 }
Beispiel #2
0
         $config_content = preg_replace('/{FTP_USER}/i', $settings->ftp_username, $config_content);
         $config_content = preg_replace('/{FTP_PASS}/i', $settings->ftp_password, $config_content);
         $config_content = preg_replace('/{FTP_PATH}/i', $settings->ftp_path, $config_content);
         $config_content = preg_replace('/{FTP_SSL}/i', $settings->ftp_ssl ? 'true' : 'false', $config_content);
         // Save database settings to config file in permanent location
         $perm_config_file = DOC_ROOT . '/cc-core/config/config.php';
         FilesystemInstaller::Open();
         FilesystemInstaller::Create($perm_config_file);
         FilesystemInstaller::Write($perm_config_file, $config_content);
         FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/bin', 0777);
         FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/bin/qtfaststart', 0777);
         FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/qtfaststart', 0777);
         FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/qtfaststart/exceptions.py', 0777);
         FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/qtfaststart/__init__.py', 0777);
         FilesystemInstaller::SetPermissions(DOC_ROOT . '/cc-core/system/qtfaststart/processor.py', 0777);
         FilesystemInstaller::Close();
         // Store information & redirect user
         $settings->db_hostname = $hostname;
         $settings->db_name = $name;
         $settings->db_username = $username;
         $settings->db_password = $password;
         $settings->db_prefix = $prefix;
         $settings->completed[] = 'database';
         $_SESSION['settings'] = serialize($settings);
         header("Location: " . HOST . '/cc-install/?site-details');
         exit;
     } catch (Exception $e) {
         $error_msg = $e->getMessage();
     }
 } else {
     $error_msg = '<p>Errors were found. Please correct them and try again.<br /><br /> - ';