function doRackspaceUploadNewDeleteOld($RS_USERNAME, $RS_KEY)
{
    //get the most recent grouping of files.
    $arrRecentFiles = getMostRecentFiles();
    sort($arrRecentFiles);
    if (count($arrRecentFiles > 0)) {
        //============================================ get our rackspace auth, connection, and container set up =====================================
        //Create the authentication instance
        $auth = new CF_Authentication($RS_USERNAME, $RS_KEY);
        //Perform authentication request
        $auth->authenticate();
        //Create a connection to the storage/cdn system(s) and pass in the validated CF_Authentication instance.
        $conn = new CF_Connection($auth);
        //get the "salesforce_backups" container
        $cont = $conn->get_container('salesforce_backups');
        //============================================ end get our rackspace auth, connection, and container set up =====================================
        //get the date prefix off of the most recent grouping of local files
        $recentFileDate = getDatePrefix($arrRecentFiles[0]);
        //get the listing of files from rackspace cloud files
        $arrRackspaceFiles = $cont->list_objects();
        sort($arrRackspaceFiles);
        //get a distinct listing off all the rackspace prefixes (Dates)
        $arrRackspaceDistinctPrefixes = filterDistinctPrefixes($arrRackspaceFiles);
        //see if the most recent local date is in rackspace or not
        if (!in_array($recentFileDate, $arrRackspaceDistinctPrefixes)) {
            //we haven't uploaded our most recent local files yet to rackspace.  Let's do it.
            uploadToRackspace($cont, $arrRecentFiles);
        }
        //refresh our container and objects so we are sure the newly included files are in them
        $cont = $conn->get_container('salesforce_backups');
        //if we have more than 4 distinct date range prefixes (more than 4 weekly backups), delete the older ones so we are just left with the 4 most recent.
        deleteOlderBackups($conn, $cont);
    }
}
Exemplo n.º 2
0
/**
 * Get the Swift thumbnail container for this wiki.
 *
 * @param $site string
 * @param $lang string
 * @param $relPath string Path relative to container
 * @return CF_Container|null
 */
function wmfGetSwiftThumbContainer($site, $lang, $relPath)
{
    global $wmfSwiftConfig;
    // from PrivateSettings.php
    $auth = new CF_Authentication($wmfSwiftConfig['user'], $wmfSwiftConfig['key'], NULL, $wmfSwiftConfig['authUrl']);
    try {
        $auth->authenticate();
    } catch (Exception $e) {
        wfDebugLog('swiftThumb', "Could not establish a connection to Swift.");
        return null;
    }
    $conn = new CF_Connection($auth);
    $wikiId = "{$site}-{$lang}";
    // Get the full swift container name, including any shard suffix
    $name = "{$wikiId}-local-thumb";
    if (in_array($wikiId, array('wikipedia-commons', 'wikipedia-en'))) {
        // Code stolen from FileBackend::getContainerShard()
        if (preg_match("!^(?:[^/]{2,}/)*[0-9a-f]/(?P<shard>[0-9a-f]{2})(?:/|\$)!", $relPath, $m)) {
            $name .= '.' . $m['shard'];
        } else {
            throw new MWException("Can't determine shard of path '{$relPath}' for '{$wikiId}'.");
        }
    }
    try {
        $container = $conn->get_container($name);
    } catch (NoSuchContainerException $e) {
        // container not created yet
        $container = null;
        wfDebugLog('swiftThumb', "Could not access `{$name}`; container does not exist.");
    }
    return $container;
}
 private function init_connection()
 {
     // Verify authentication information
     try {
         $this->auth = new CF_Authentication($this->username, $this->api_key);
         $this->auth->authenticate();
     } catch (Exception $e) {
         throw new moodle_exception('repo_auth_fail', 'repository_rackspace_cf');
     }
     // Initialize the connection
     $conn = new CF_Connection($this->auth);
     // Get a list of all the available containers
     $containers = $conn->list_containers();
     // See if the container already exists
     $container_exists = in_array($this->container_name, $containers);
     if ($container_exists) {
         // Save a connection to the container
         $this->container = $conn->get_container($this->container_name);
     } else {
         // The container specified does not exists so create it.
         $this->container = $conn->create_container($this->container_name);
     }
     if ($this->cdn_enable) {
         // Enable CDN for the container
         $this->container->make_public();
     } else {
         // Disable CDN for the container
         $this->container->make_private();
     }
 }
Exemplo n.º 4
0
 protected function initContainer()
 {
     if (!$this->containerInitiated) {
         $auth = new \CF_Authentication($this->username, $this->apiKey);
         $auth->authenticate();
         $conn = new \CF_Connection($auth, $this->serviceNet);
         $container = $conn->get_container($this->name);
         parent::__construct($container->cfs_auth, $container->cfs_http, $container->name, $container->object_count, $container->bytes_used);
     }
     $this->containerInitiated = true;
 }
Exemplo n.º 5
0
 private static function getBucket($bucketName)
 {
     $auth = self::getAuth();
     $conn = new CF_Connection($auth);
     try {
         $images = $conn->get_container($bucketName);
     } catch (NoSuchContainerException $e) {
         $images = $conn->create_container($bucketName);
         $uri = $images->make_public();
     }
     return $images;
 }
Exemplo n.º 6
0
 /**
  * Init container object
  *
  * @param string $error
  * @return boolean
  */
 function _init_container(&$error)
 {
     if (empty($this->_config['container'])) {
         $error = 'Empty container.';
         return false;
     }
     try {
         $this->_container = $this->_connection->get_container($this->_config['container']);
     } catch (Exception $exception) {
         $error = $exception->getMessage();
         return false;
     }
     return true;
 }
 /**
  * Set up Rackspace cloud files - used by rackspace:initialise task as well as constructor
  * 
  * @see rackspaceInitialiseTask::execute()
  * @var array $options    Passed through from __construct
  * @return CF_Container
  */
 public static function setup($options)
 {
     $required_fields = array('container', 'api_key', 'username');
     $adapter_options = $options['options'];
     foreach ($required_fields as $f) {
         if (!array_key_exists($f, $adapter_options)) {
             throw new InvalidArgumentException(sprintf("Missing option '%s' is required", $f));
         }
     }
     $adapter_options = array_merge(self::$adapter_options, $adapter_options);
     $auth = new CF_Authentication($adapter_options['username'], $adapter_options['api_key'], null, 'UK' == $adapter_options['auth_host'] ? UK_AUTHURL : US_AUTHURL);
     $auth->authenticate();
     $conn = new CF_Connection($auth);
     try {
         $container = $conn->get_container($adapter_options['container']);
     } catch (NoSuchContainerException $e) {
         // Container doesn't already exist so create it
         $container = $conn->create_container($adapter_options['container']);
         $container->make_public();
     }
     return $container;
 }
Exemplo n.º 8
0
/**
 * Get the Swift thumbnail container for this wiki.
 *
 * @param $site string
 * @param $lang string
 * @return CF_Container|null
 */
function wmfGetSwiftThumbContainer( $site, $lang ) {
	global $wmfSwiftConfig; // PrivateSettings.php

	$auth = new CF_Authentication(
		$wmfSwiftConfig['user'],
		$wmfSwiftConfig['key'],
		NULL,
		$wmfSwiftConfig['authUrl']
	);
	$auth->authenticate();

	$conn = new CF_Connection( $auth );

	$name = "{$site}-{$lang}-media-thumb"; // swift container name
	try {
		$container = $conn->get_container( $name );
	} catch ( NoSuchContainerException $e ) { // container not created yet
		$container = null;
		wfDebugLog( 'swiftThumb', "Could not access `{$name}`; container does not exist." );
	}

	return $container;
}
<?php

ini_set("memory_limit", "512M");
require "php-cloudfiles-1.3.0/cloudfiles.php";
$backupsToKeep = 5;
// # of backup files to keep
$username = '******';
$apiKey = 'APIKEY';
$containerToUse = 'CLOUDCONTAINERNAME';
$baseDir = 'YOURSITEPATH/backup/';
$auth = new CF_Authentication($username, $apiKey);
$auth->authenticate();
$conn = new CF_Connection($auth);
$container = $conn->get_container($containerToUse);
function cleanup($prefix)
{
    global $container, $backupsToKeep;
    $list = $container->list_objects(0, NULL, $prefix);
    sort($list);
    $del_list = array_slice($list, 0, -($backupsToKeep - 1));
    foreach ($del_list as $file) {
        $container->delete_object($file);
        echo $file . ' deleted - ';
    }
}
function copytocloud($file, $objName)
{
    global $container, $baseDir;
    $object = $container->create_object($objName);
    $result = $object->load_from_filename($baseDir . $file);
    echo $object . ' copied - ';
Exemplo n.º 10
0
 function afterDelete(&$model)
 {
     if ($this->_fileToRemove) {
         $conf = Configure::read('Trois.media');
         switch ($conf['fileEngine']) {
             case 'local':
                 $file = new File(WWW_ROOT . $this->_fileToRemove);
                 return $file->delete();
                 break;
             case 'cloudFiles':
                 App::import('Vendor', 'Trois.Cloudfiles', array('file' => 'php-cloudfiles' . DS . 'cloudfiles.php'));
                 $auth = new CF_Authentication($conf['user'], $conf['secret']);
                 $auth->authenticate();
                 $conn = new CF_Connection($auth);
                 $container = $conn->get_container($conf['base']);
                 return $container->delete_object($this->_fileToRemove);
                 break;
         }
     }
     return true;
 }
Exemplo n.º 11
0
 function test_rackspace($rs_username, $rs_api_key, $rs_container)
 {
     if (empty($rs_username) || empty($rs_api_key) || empty($rs_container)) {
         return 'Missing one or more required fields.';
     }
     require_once $this->_pluginPath . '/lib/rackspace/cloudfiles.php';
     $auth = new CF_Authentication($rs_username, $rs_api_key);
     if (!$auth->authenticate()) {
         return 'Unable to authenticate. Verify your username/api key.';
     }
     $conn = new CF_Connection($auth);
     // Set container
     if (false === ($container = @$conn->get_container($rs_container))) {
         return 'Invalid container. You must create it first.';
     }
     // Create test file
     $testbackup = @$container->create_object('backupbuddytest.txt');
     if (!$testbackup->load_from_filename($this->_pluginPath . '/readme.txt')) {
         return 'BackupBuddy was not able to write the test file.';
     }
     // Delete test file from Rackspace
     if (!$container->delete_object('backupbuddytest.txt')) {
         return 'Unable to delete file from container.';
     }
     return true;
     // Success
 }
Exemplo n.º 12
0
 /**
  * Delete file from cloud hosting
  * $containerName = 'img_albums';
  * $cloudFileName = 'banner.jpg';
  *  
  * @author Oleg D.
  */
 function deleteFromCloudHosting($containerName, $cloudFileName)
 {
     include_once '../vendors/rackspace_cloudfiles/cloudfiles.php';
     // Connect to Rackspace
     $Auth = new CF_Authentication(RACKSPACE_CLOUDFILE_USERNAME, RACKSPACE_CLOUDFILE_APIKEY);
     $Auth->authenticate();
     $Connection = new CF_Connection($Auth);
     // Get the container we want to use
     $Container = $Connection->get_container($containerName);
     // check for exists file
     $CheckExistObject = new CF_Object($Container, $cloudFileName);
     if (!$CheckExistObject->exists()) {
         return false;
     }
     // delete file
     return $Container->delete_object($cloudFileName);
 }
Exemplo n.º 13
0
     break;
 case 'downloadrsc':
     //Download RSC Backup
     check_admin_referer('download-backup');
     if (!class_exists('CF_Authentication')) {
         require_once realpath(plugin_dir_path(__FILE__) . '/../libs/rackspace/cloudfiles.php');
     }
     $jobs = get_option('backwpup_jobs');
     $jobid = $_GET['jobid'];
     try {
         $auth = new CF_Authentication($jobs[$jobid]['rscUsername'], $jobs[$jobid]['rscAPIKey']);
         $auth->ssl_use_cabundle();
         if ($auth->authenticate()) {
             $conn = new CF_Connection($auth);
             $conn->ssl_use_cabundle();
             $backwpupcontainer = $conn->get_container($jobs[$jobid]['rscContainer']);
             $backupfile = $backwpupcontainer->get_object($_GET['file']);
             header("Pragma: public");
             header("Expires: 0");
             header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
             header("Content-Type: " . $backupfile->content_type);
             header("Content-Type: application/force-download");
             header("Content-Type: application/octet-stream");
             header("Content-Type: application/download");
             header("Content-Disposition: attachment; filename=" . basename($_GET['file']) . ";");
             header("Content-Transfer-Encoding: binary");
             header("Content-Length: " . $backupfile->content_length);
             $output = fopen("php://output", "w");
             $backupfile->stream($output);
             fclose($output);
             die;
Exemplo n.º 14
0
<?php

// include the API
require 'cloudfiles/cloudfiles.php';
// cloud info
$username = $this->config['imagehost']['username'];
$key = $this->config['imagehost']['api_key'];
$bucket = $this->config['imagehost']['bucket'];
$campaign_folder = $this->mc_edm->get_cdn_location();
// Connect to Rackspace
$auth = new CF_Authentication($username, $key);
$auth->authenticate();
$conn = new CF_Connection($auth);
$container = $conn->get_container($bucket);
echo $campaign_folder;
print_r($container);
// // Get the container we want to use
// // store file information
// $localfile = $_FILES['upload']['tmp_name'];
// $filename = $_FILES['upload']['name'];
// // upload file to Rackspace
// $object = $container->create_object($filename);
// $object->load_from_filename($localfile);
Exemplo n.º 15
0
 function test_rackspace($rs_username, $rs_api_key, $rs_container, $rs_server)
 {
     if (empty($rs_username) || empty($rs_api_key) || empty($rs_container)) {
         return __('Missing one or more required fields.', 'it-l10n-backupbuddy');
     }
     require_once pb_backupbuddy::plugin_path() . '/lib/rackspace/cloudfiles.php';
     $auth = new CF_Authentication($rs_username, $rs_api_key, NULL, $rs_server);
     if (!$auth->authenticate()) {
         return __('Unable to authenticate. Verify your username/api key.', 'it-l10n-backupbuddy');
     }
     $conn = new CF_Connection($auth);
     // Set container
     $container = @$conn->get_container($rs_container);
     // returns object on success, string error message on failure.
     if (!is_object($container)) {
         return __('There was a problem selecting the container:', 'it-l10n-backupbuddy') . ' ' . $container;
     }
     // Create test file
     $testbackup = @$container->create_object('backupbuddytest.txt');
     if (!$testbackup->load_from_filename(pb_backupbuddy::plugin_path() . '/readme.txt')) {
         return __('BackupBuddy was not able to write the test file.', 'it-l10n-backupbuddy');
     }
     // Delete test file from Rackspace
     if (!$container->delete_object('backupbuddytest.txt')) {
         return __('Unable to delete file from container.', 'it-l10n-backupbuddy');
     }
     return true;
     // Success
 }
Exemplo n.º 16
0
function backwpup_get_backup_files($jobid, $dest)
{
    global $backwpup_message;
    if (empty($jobid) or !in_array(strtoupper($dest), explode(',', strtoupper(BACKWPUP_DESTS))) and $dest != 'FOLDER') {
        return false;
    }
    $jobs = get_option('backwpup_jobs');
    //Load jobs
    $jobvalue = $jobs[$jobid];
    $filecounter = 0;
    $files = array();
    //Get files/filinfo in backup folder
    if ($dest == 'FOLDER' and !empty($jobvalue['backupdir']) and is_dir($jobvalue['backupdir'])) {
        if ($dir = opendir($jobvalue['backupdir'])) {
            while (($file = readdir($dir)) !== false) {
                if (substr($file, 0, 1) == '.') {
                    continue;
                }
                if (is_file($jobvalue['backupdir'] . $file)) {
                    $files[$filecounter]['JOBID'] = $jobid;
                    $files[$filecounter]['DEST'] = $dest;
                    $files[$filecounter]['folder'] = $jobvalue['backupdir'];
                    $files[$filecounter]['file'] = $jobvalue['backupdir'] . $file;
                    $files[$filecounter]['filename'] = $file;
                    $files[$filecounter]['downloadurl'] = backwpup_admin_url('admin.php') . '?page=backwpupbackups&action=download&file=' . $jobvalue['backupdir'] . $file;
                    $files[$filecounter]['filesize'] = filesize($jobvalue['backupdir'] . $file);
                    $files[$filecounter]['time'] = filemtime($jobvalue['backupdir'] . $file);
                    $filecounter++;
                }
            }
            closedir($dir);
        }
    }
    //Get files/filinfo from Dropbox
    if ($dest == 'DROPBOX' and !empty($jobvalue['dropetoken']) and !empty($jobvalue['dropesecret'])) {
        require_once realpath(dirname(__FILE__) . '/../libs/dropbox.php');
        try {
            $dropbox = new backwpup_Dropbox('dropbox');
            $dropbox->setOAuthTokens($jobvalue['dropetoken'], $jobvalue['dropesecret']);
            $contents = $dropbox->metadata($jobvalue['dropedir']);
            if (is_array($contents)) {
                foreach ($contents['contents'] as $object) {
                    if ($object['is_dir'] != true) {
                        $files[$filecounter]['JOBID'] = $jobid;
                        $files[$filecounter]['DEST'] = $dest;
                        $files[$filecounter]['folder'] = "https://api-content.dropbox.com/1/files/" . $jobvalue['droperoot'] . "/" . dirname($object['path']) . "/";
                        $files[$filecounter]['file'] = $object['path'];
                        $files[$filecounter]['filename'] = basename($object['path']);
                        $files[$filecounter]['downloadurl'] = backwpup_admin_url('admin.php') . '?page=backwpupbackups&action=downloaddropbox&file=' . $object['path'] . '&jobid=' . $jobid;
                        $files[$filecounter]['filesize'] = $object['bytes'];
                        $files[$filecounter]['time'] = strtotime($object['modified']);
                        $filecounter++;
                    }
                }
            }
        } catch (Exception $e) {
            $backwpup_message .= 'DROPBOX: ' . $e->getMessage() . '<br />';
        }
    }
    //Get files/filinfo from Sugarsync
    if ($dest == 'SUGARSYNC' and !empty($jobvalue['sugarrefreshtoken'])) {
        if (!class_exists('SugarSync')) {
            require_once dirname(__FILE__) . '/../libs/sugarsync.php';
        }
        if (class_exists('SugarSync')) {
            try {
                $sugarsync = new SugarSync($jobvalue['sugarrefreshtoken']);
                $dirid = $sugarsync->chdir($jobvalue['sugardir'], $jobvalue['sugarroot']);
                $user = $sugarsync->user();
                $dir = $sugarsync->showdir($dirid);
                $getfiles = $sugarsync->getcontents('file');
                if (is_object($getfiles)) {
                    foreach ($getfiles->file as $getfile) {
                        $files[$filecounter]['JOBID'] = $jobid;
                        $files[$filecounter]['DEST'] = $dest;
                        $files[$filecounter]['folder'] = 'https://' . $user->nickname . '.sugarsync.com/' . $dir;
                        $files[$filecounter]['file'] = (string) $getfile->ref;
                        $files[$filecounter]['filename'] = utf8_decode((string) $getfile->displayName);
                        $files[$filecounter]['downloadurl'] = backwpup_admin_url('admin.php') . '?page=backwpupbackups&action=downloadsugarsync&file=' . (string) $getfile->ref . '&jobid=' . $jobid;
                        $files[$filecounter]['filesize'] = (int) $getfile->size;
                        $files[$filecounter]['time'] = strtotime((string) $getfile->lastModified);
                        $filecounter++;
                    }
                }
            } catch (Exception $e) {
                $backwpup_message .= 'SUGARSYNC: ' . $e->getMessage() . '<br />';
            }
        }
    }
    //Get files/filinfo from S3
    if ($dest == 'S3' and !empty($jobvalue['awsAccessKey']) and !empty($jobvalue['awsSecretKey']) and !empty($jobvalue['awsBucket'])) {
        if (!class_exists('AmazonS3')) {
            require_once dirname(__FILE__) . '/../libs/aws/sdk.class.php';
        }
        if (class_exists('AmazonS3')) {
            try {
                $s3 = new AmazonS3(array('key' => $jobvalue['awsAccessKey'], 'secret' => $jobvalue['awsSecretKey'], 'certificate_authority' => true));
                if (($contents = $s3->list_objects($jobvalue['awsBucket'], array('prefix' => $jobvalue['awsdir']))) !== false) {
                    foreach ($contents->body->Contents as $object) {
                        $files[$filecounter]['JOBID'] = $jobid;
                        $files[$filecounter]['DEST'] = $dest;
                        $files[$filecounter]['folder'] = "https://" . $jobvalue['awsBucket'] . ".s3.amazonaws.com/" . dirname((string) $object->Key) . '/';
                        $files[$filecounter]['file'] = (string) $object->Key;
                        $files[$filecounter]['filename'] = basename($object->Key);
                        $files[$filecounter]['downloadurl'] = backwpup_admin_url('admin.php') . '?page=backwpupbackups&action=downloads3&file=' . $object->Key . '&jobid=' . $jobid;
                        $files[$filecounter]['filesize'] = (string) $object->Size;
                        $files[$filecounter]['time'] = strtotime($object->LastModified);
                        $filecounter++;
                    }
                }
            } catch (Exception $e) {
                $backwpup_message .= 'Amazon S3: ' . $e->getMessage() . '<br />';
            }
        }
    }
    //Get files/filinfo from Google Storage
    if ($dest == 'GSTORAGE' and !empty($jobvalue['GStorageAccessKey']) and !empty($jobvalue['GStorageSecret']) and !empty($jobvalue['GStorageBucket'])) {
        if (!class_exists('AmazonS3')) {
            require_once dirname(__FILE__) . '/../libs/aws/sdk.class.php';
        }
        if (class_exists('AmazonS3')) {
            try {
                $gstorage = new AmazonS3(array('key' => $jobvalue['GStorageAccessKey'], 'secret' => $jobvalue['GStorageSecret'], 'certificate_authority' => true));
                $gstorage->set_hostname('storage.googleapis.com');
                $gstorage->allow_hostname_override(false);
                if (($contents = $gstorage->list_objects($jobvalue['GStorageBucket'], array('prefix' => $jobvalue['GStoragedir']))) !== false) {
                    foreach ($contents->body->Contents as $object) {
                        $files[$filecounter]['JOBID'] = $jobid;
                        $files[$filecounter]['DEST'] = $dest;
                        $files[$filecounter]['folder'] = "https://storage.cloud.google.com/" . $jobvalue['GStorageBucket'] . "/" . dirname((string) $object->Key) . '/';
                        $files[$filecounter]['file'] = (string) $object->Key;
                        $files[$filecounter]['filename'] = basename($object->Key);
                        $files[$filecounter]['downloadurl'] = "https://storage.cloud.google.com/" . $jobvalue['GStorageBucket'] . "/" . (string) $object->Key;
                        $files[$filecounter]['filesize'] = (string) $object->Size;
                        $files[$filecounter]['time'] = strtotime($object->LastModified);
                        $filecounter++;
                    }
                }
            } catch (Exception $e) {
                $backwpup_message .= sprintf(__('GStorage API: %s', 'backwpup'), $e->getMessage()) . '<br />';
            }
        }
    }
    //Get files/filinfo from Microsoft Azure
    if ($dest == 'MSAZURE' and !empty($jobvalue['msazureHost']) and !empty($jobvalue['msazureAccName']) and !empty($jobvalue['msazureKey']) and !empty($jobvalue['msazureContainer'])) {
        if (!class_exists('Microsoft_WindowsAzure_Storage_Blob')) {
            require_once dirname(__FILE__) . '/../libs/Microsoft/WindowsAzure/Storage/Blob.php';
        }
        if (class_exists('Microsoft_WindowsAzure_Storage_Blob')) {
            try {
                $storageClient = new Microsoft_WindowsAzure_Storage_Blob($jobvalue['msazureHost'], $jobvalue['msazureAccName'], $jobvalue['msazureKey']);
                $blobs = $storageClient->listBlobs($jobvalue['msazureContainer'], $jobvalue['msazuredir']);
                if (is_array($blobs)) {
                    foreach ($blobs as $blob) {
                        $files[$filecounter]['JOBID'] = $jobid;
                        $files[$filecounter]['DEST'] = $dest;
                        $files[$filecounter]['folder'] = "https://" . $jobvalue['msazureAccName'] . '.' . $jobvalue['msazureHost'] . "/" . $jobvalue['msazureContainer'] . "/" . dirname($blob->Name) . "/";
                        $files[$filecounter]['file'] = $blob->Name;
                        $files[$filecounter]['filename'] = basename($blob->Name);
                        $files[$filecounter]['downloadurl'] = backwpup_admin_url('admin.php') . '?page=backwpupbackups&action=downloadmsazure&file=' . $blob->Name . '&jobid=' . $jobid;
                        $files[$filecounter]['filesize'] = $blob->size;
                        $files[$filecounter]['time'] = strtotime($blob->lastmodified);
                        $filecounter++;
                    }
                }
            } catch (Exception $e) {
                $backwpup_message .= 'MSAZURE: ' . $e->getMessage() . '<br />';
            }
        }
    }
    //Get files/filinfo from RSC
    if ($dest == 'RSC' and !empty($jobvalue['rscUsername']) and !empty($jobvalue['rscAPIKey']) and !empty($jobvalue['rscContainer'])) {
        if (!class_exists('CF_Authentication')) {
            require_once dirname(__FILE__) . '/../libs/rackspace/cloudfiles.php';
        }
        if (class_exists('CF_Authentication')) {
            try {
                $auth = new CF_Authentication($jobvalue['rscUsername'], $jobvalue['rscAPIKey']);
                $auth->ssl_use_cabundle();
                if ($auth->authenticate()) {
                    $conn = new CF_Connection($auth);
                    $conn->ssl_use_cabundle();
                    $backwpupcontainer = $conn->get_container($jobvalue['rscContainer']);
                    $contents = $backwpupcontainer->get_objects(0, NULL, NULL, $jobvalue['rscdir']);
                    foreach ($contents as $object) {
                        $files[$filecounter]['JOBID'] = $jobid;
                        $files[$filecounter]['DEST'] = $dest;
                        $files[$filecounter]['folder'] = "RSC://" . $jobvalue['rscContainer'] . "/" . dirname($object->name) . "/";
                        $files[$filecounter]['file'] = $object->name;
                        $files[$filecounter]['filename'] = basename($object->name);
                        $files[$filecounter]['downloadurl'] = backwpup_admin_url('admin.php') . '?page=backwpupbackups&action=downloadrsc&file=' . $object->name . '&jobid=' . $jobid;
                        $files[$filecounter]['filesize'] = $object->content_length;
                        $files[$filecounter]['time'] = strtotime($object->last_modified);
                        $filecounter++;
                    }
                }
            } catch (Exception $e) {
                $backwpup_message .= 'RSC: ' . $e->getMessage() . '<br />';
            }
        }
    }
    //Get files/filinfo from FTP
    if ($dest == 'FTP' and !empty($jobvalue['ftphost']) and function_exists('ftp_connect') and !empty($jobvalue['ftpuser']) and !empty($jobvalue['ftppass'])) {
        if (function_exists('ftp_ssl_connect') and $jobvalue['ftpssl']) {
            //make SSL FTP connection
            $ftp_conn_id = ftp_ssl_connect($jobvalue['ftphost'], $jobvalue['ftphostport'], 10);
        } elseif (!$jobvalue['ftpssl']) {
            //make normal FTP conection if SSL not work
            $ftp_conn_id = ftp_connect($jobvalue['ftphost'], $jobvalue['ftphostport'], 10);
        }
        $loginok = false;
        if ($ftp_conn_id) {
            //FTP Login
            if (@ftp_login($ftp_conn_id, $jobvalue['ftpuser'], backwpup_base64($jobvalue['ftppass']))) {
                $loginok = true;
            } else {
                //if PHP ftp login don't work use raw login
                ftp_raw($ftp_conn_id, 'USER ' . $jobvalue['ftpuser']);
                $return = ftp_raw($ftp_conn_id, 'PASS ' . backwpup_base64($jobvalue['ftppass']));
                if (substr(trim($return[0]), 0, 3) <= 400) {
                    $loginok = true;
                }
            }
        }
        if ($loginok) {
            ftp_chdir($ftp_conn_id, $jobvalue['ftpdir']);
            $currentftpdir = rtrim(ftp_pwd($ftp_conn_id), '/') . '/';
            ftp_pasv($ftp_conn_id, $jobvalue['ftppasv']);
            if ($ftpfilelist = ftp_nlist($ftp_conn_id, $currentftpdir)) {
                foreach ($ftpfilelist as $ftpfiles) {
                    if (substr(basename($ftpfiles), 0, 1) == '.') {
                        continue;
                    }
                    $files[$filecounter]['JOBID'] = $jobid;
                    $files[$filecounter]['DEST'] = $dest;
                    $files[$filecounter]['folder'] = "ftp://" . $jobvalue['ftphost'] . ':' . $jobvalue['ftphostport'] . dirname($ftpfiles) . "/";
                    $files[$filecounter]['file'] = $ftpfiles;
                    $files[$filecounter]['filename'] = basename($ftpfiles);
                    $files[$filecounter]['downloadurl'] = "ftp://" . rawurlencode($jobvalue['ftpuser']) . ":" . rawurlencode(backwpup_base64($jobvalue['ftppass'])) . "@" . $jobvalue['ftphost'] . ':' . $jobvalue['ftphostport'] . $ftpfiles;
                    $files[$filecounter]['filesize'] = ftp_size($ftp_conn_id, $ftpfiles);
                    $files[$filecounter]['time'] = ftp_mdtm($ftp_conn_id, $ftpfiles);
                    $filecounter++;
                }
            }
        } else {
            $backwpup_message .= 'FTP: ' . __('Login failure!', 'backwpup') . '<br />';
        }
        $donefolders[] = $jobvalue['ftphost'] . '|' . $jobvalue['ftpuser'] . '|' . $jobvalue['ftpdir'];
    }
    return $files;
}
Exemplo n.º 17
0
		<?php 
mysql_connect($mysqlhost, $mysqluser, $mysqlpassword) or die("Could not connect: " . mysql_error());
mysql_select_db($mysqldatabase);
$query = "SELECT * from files;";
$cfauth = new CF_Authentication($cfuser, $cfapikey, NULL, $cfauthurl);
$cfauth->authenticate();
$cfconn = new CF_Connection($cfauth);
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
    $thisid = $row["id"];
    echo "\t\t\t<tr>\n";
    echo "\t\t\t\t<td><form action=\"index.php\" method=\"POST\"><input type=\"hidden\" name=\"do\" value=\"delete\" /><input type=\"hidden\" name=\"id\" value=\"" . $thisid . "\" /> <input type=\"submit\" value=\"X\" /> </form> </td>\n";
    $filename = $row["fname"];
    echo "\t\t\t\t<td>" . $filename . "</td> \n";
    echo "\t\t\t\t<td>" . $row["desc"] . "</td> \n";
    $ccont = $cfconn->get_container("testcontainer");
    $cfile = $ccont->get_object("{$filename}");
    $filesize = $cfile->content_length;
    $propersize = format_bytes($filesize);
    echo "\t\t\t\t<td>" . $propersize . "</td>\n";
    if ($thisid == $fileid) {
        echo "<td> <a href=\"{$url}\">Download</a> Valid for: <div id=\"javascript_countdown_time\"></div> </td>\n";
    } else {
        echo "\t\t\t\t<td><form action=\"index.php\" method=\"POST\"><input type=\"hidden\" name=\"do\" value=\"download\" /><input type=\"hidden\" name=\"id\" value=\"" . $row["id"] . "\" /> <input type=\"submit\" value=\"Download\" /> </form> </td>\n";
    }
    if ($thisid == $filestreamid) {
        echo "<td> \n\n\t\t\t\t\t\t\t<script type='text/javascript' src='jwplayer.js'></script>\n\n\t\t\t\t\t\t\t<div id='mediaspace'>Loading...</div>\n\n\t\t\t\t\t\t\t<script type='text/javascript'>\n\t\t\t\t\t\t\t  jwplayer('mediaspace').setup({\n\t\t\t\t\t\t\t    'flashplayer': 'player.swf',\n\t\t\t\t\t\t\t    'file': '" . $url . "',\n\t\t\t\t\t\t\t    'controlbar': 'bottom',\n\t\t\t\t\t\t\t    'width': '470',\n\t\t\t\t\t\t\t    'height': '320'\n\t\t\t\t\t\t\t  });\n\t\t\t\t\t\t\t</script>\n";
    } else {
        echo "\t\t\t\t<td><form action=\"index.php\" method=\"POST\"><input type=\"hidden\" name=\"do\" value=\"stream\" /><input type=\"hidden\" name=\"id\" value=\"" . $row["id"] . "\" /> <input type=\"submit\" value=\"Stream\" /> </form> </td>\n";
    }
    echo "\t\t\t\t</tr>\n";
Exemplo n.º 18
0
function dest_rsc()
{
    global $WORKING, $STATIC;
    trigger_error($WORKING['DEST_RSC']['STEP_TRY'] . '. ' . __('Try to sending backup file to Rackspace Cloud...', 'backwpup'), E_USER_NOTICE);
    $WORKING['STEPTODO'] = 2 + filesize($STATIC['JOB']['backupdir'] . $STATIC['backupfile']);
    $WORKING['STEPDONE'] = 0;
    require_once dirname(__FILE__) . '/../libs/rackspace/cloudfiles.php';
    $auth = new CF_Authentication($STATIC['JOB']['rscUsername'], $STATIC['JOB']['rscAPIKey']);
    $auth->ssl_use_cabundle();
    try {
        if ($auth->authenticate()) {
            trigger_error(__('Connected to Rackspase ...', 'backwpup'), E_USER_NOTICE);
        }
        $conn = new CF_Connection($auth);
        $conn->ssl_use_cabundle();
        $is_container = false;
        $containers = $conn->get_containers();
        foreach ($containers as $container) {
            if ($container->name == $STATIC['JOB']['rscContainer']) {
                $is_container = true;
            }
        }
        if (!$is_container) {
            $public_container = $conn->create_container($STATIC['JOB']['rscContainer']);
            $public_container->make_private();
            if (empty($public_container)) {
                $is_container = false;
            }
        }
    } catch (Exception $e) {
        trigger_error(__('Rackspase Cloud API:', 'backwpup') . ' ' . $e->getMessage(), E_USER_ERROR);
        return;
    }
    if (!$is_container) {
        trigger_error(__('Rackspase Cloud Container not exists:', 'backwpup') . ' ' . $STATIC['JOB']['rscContainer'], E_USER_ERROR);
        return;
    }
    try {
        //Transfer Backup to Rackspace Cloud
        $backwpupcontainer = $conn->get_container($STATIC['JOB']['rscContainer']);
        //if (!empty($STATIC['JOB']['rscdir'])) //make the foldder
        //	$backwpupcontainer->create_paths($STATIC['JOB']['rscdir']);
        $backwpupbackup = $backwpupcontainer->create_object($STATIC['JOB']['rscdir'] . $STATIC['backupfile']);
        //set content Type
        if ($STATIC['JOB']['fileformart'] == '.zip') {
            $backwpupbackup->content_type = 'application/zip';
        }
        if ($STATIC['JOB']['fileformart'] == '.tar') {
            $backwpupbackup->content_type = 'application/x-ustar';
        }
        if ($STATIC['JOB']['fileformart'] == '.tar.gz') {
            $backwpupbackup->content_type = 'application/x-compressed';
        }
        if ($STATIC['JOB']['fileformart'] == '.tar.bz2') {
            $backwpupbackup->content_type = 'application/x-compressed';
        }
        trigger_error(__('Upload to RSC now started ... ', 'backwpup'), E_USER_NOTICE);
        if ($backwpupbackup->load_from_filename($STATIC['JOB']['backupdir'] . $STATIC['backupfile'])) {
            $WORKING['STEPTODO'] = 1 + filesize($STATIC['JOB']['backupdir'] . $STATIC['backupfile']);
            trigger_error(__('Backup File transferred to RSC://', 'backwpup') . $STATIC['JOB']['rscContainer'] . '/' . $STATIC['JOB']['rscdir'] . $STATIC['backupfile'], E_USER_NOTICE);
            $STATIC['JOB']['lastbackupdownloadurl'] = $STATIC['WP']['ADMINURL'] . '?page=backwpupbackups&action=downloadrsc&file=' . $STATIC['JOB']['rscdir'] . $STATIC['backupfile'] . '&jobid=' . $STATIC['JOB']['jobid'];
            $WORKING['STEPSDONE'][] = 'DEST_RSC';
            //set done
        } else {
            trigger_error(__('Can not transfer backup to RSC.', 'backwpup'), E_USER_ERROR);
        }
    } catch (Exception $e) {
        trigger_error(__('Rackspase Cloud API:', 'backwpup') . ' ' . $e->getMessage(), E_USER_ERROR);
    }
    try {
        if ($STATIC['JOB']['rscmaxbackups'] > 0) {
            //Delete old backups
            $backupfilelist = array();
            $contents = $backwpupcontainer->list_objects(0, NULL, NULL, $STATIC['JOB']['rscdir']);
            if (is_array($contents)) {
                foreach ($contents as $object) {
                    $file = basename($object);
                    if ($STATIC['JOB']['rscdir'] . $file == $object) {
                        //only in the folder and not in complete bucket
                        if ($STATIC['JOB']['fileprefix'] == substr($file, 0, strlen($STATIC['JOB']['fileprefix'])) and $STATIC['JOB']['fileformart'] == substr($file, -strlen($STATIC['JOB']['fileformart']))) {
                            $backupfilelist[] = $file;
                        }
                    }
                }
            }
            if (sizeof($backupfilelist) > 0) {
                rsort($backupfilelist);
                $numdeltefiles = 0;
                for ($i = $STATIC['JOB']['rscmaxbackups']; $i < sizeof($backupfilelist); $i++) {
                    if ($backwpupcontainer->delete_object($STATIC['JOB']['rscdir'] . $backupfilelist[$i])) {
                        //delte files on Cloud
                        $numdeltefiles++;
                    } else {
                        trigger_error(__('Can not delete file on RSC://', 'backwpup') . $STATIC['JOB']['rscContainer'] . $STATIC['JOB']['rscdir'] . $backupfilelist[$i], E_USER_ERROR);
                    }
                }
                if ($numdeltefiles > 0) {
                    trigger_error(sprintf(_n('One file deleted on RSC container', '%d files deleted on RSC container', $numdeltefiles, 'backwpup'), $numdeltefiles), E_USER_NOTICE);
                }
            }
        }
    } catch (Exception $e) {
        trigger_error(__('Rackspase Cloud API:', 'backwpup') . ' ' . $e->getMessage(), E_USER_ERROR);
    }
    $WORKING['STEPDONE']++;
}
out('Authenticating with Rackspace Cloud Files...', FALSE);
$auth->authenticate();
out('Done.');
# Establish a connection to the storage system
#
# NOTE: Some versions of cURL include an outdated certificate authority (CA)
#       file.  This API ships with a newer version obtained directly from
#       cURL's web site (http://curl.haxx.se).  To use the newer CA bundle,
#       call the CF_Connection instance's 'ssl_use_cabundle()' method.
#
out('Establishing a new connection to storage system...', FALSE);
$conn = new CF_Connection($auth);
out('Done.');
out(sprintf('Getting existing remote Container "%s"...', $container_name), FALSE);
try {
    $container = $conn->get_container($container_name);
} catch (Exception $e) {
    out('Fail! Container does not exist!');
    //  out('Attempting to automatically create new remote Container...', FALSE);
    //  $container = $conn->create_container($container_name);
}
out('Done.');
if (is_dir($path)) {
    $dirs = array($path);
    while (NULL !== ($dir = array_pop($dirs))) {
        if ($dh = opendir($dir)) {
            while (FALSE !== ($_file = readdir($dh))) {
                if ($_file == '.' || $_file == '..') {
                    continue;
                }
                $_path = $dir . '/' . $_file;
Exemplo n.º 20
0
 public function transer_dir($image_id)
 {
     $this->EE->load->helper('file');
     // Grab image info
     $query = $this->EE->db->select('field_id, entry_id, filename, extension')->from('exp_channel_images')->where('image_id', $image_id)->limit(1)->get();
     $field_id = $query->row('field_id');
     // Grab settings
     $settings = $this->EE->image_helper->grabFieldSettings($field_id);
     $filename = $query->row('filename');
     $extension = '.' . substr(strrchr($filename, '.'), 1);
     $entry_id = $query->row('entry_id');
     // -----------------------------------------
     // Load Location
     // -----------------------------------------
     $location_type = $settings['upload_location'];
     $location_class = 'CI_Location_' . $location_type;
     // Load Settings
     if (isset($settings['locations'][$location_type]) == FALSE) {
         $o['body'] = $this->EE->lang->line('ci:location_settings_failure');
         exit($this->EE->image_helper->generate_json($o));
     }
     $location_settings = $settings['locations'][$location_type];
     // Load Main Class
     if (class_exists('Image_Location') == FALSE) {
         require PATH_THIRD . 'channel_images/locations/image_location.php';
     }
     // Try to load Location Class
     if (class_exists($location_class) == FALSE) {
         $location_file = PATH_THIRD . 'channel_images/locations/' . $location_type . '/' . $location_type . '.php';
         if (file_exists($location_file) == FALSE) {
             $o['body'] = $this->EE->lang->line('ci:location_load_failure');
             exit($this->EE->image_helper->generate_json($o));
         }
         require $location_file;
     }
     // Init
     $LOC = new $location_class($location_settings);
     // Temp Dir
     @mkdir($this->EE->channel_images->cache_path . 'channel_images/', 0777);
     @mkdir($this->EE->channel_images->cache_path . 'channel_images/transfer/', 0777);
     @mkdir($this->EE->channel_images->cache_path . 'channel_images/transfer/' . $image_id . '/', 0777);
     $temp_dir = $this->EE->channel_images->cache_path . 'channel_images/transfer/' . $image_id . '/';
     // -----------------------------------------
     // Copy Image to temp location
     // -----------------------------------------
     $LOC->download_file($entry_id, $filename, $temp_dir);
     //if ($response !== TRUE) exit($response);
     foreach ($settings['action_groups'] as $group) {
         $size_name = $group['group_name'];
         $size_filename = str_replace($extension, "__{$size_name}{$extension}", $filename);
         $LOC->download_file($entry_id, $size_filename, $temp_dir);
     }
     // -----------------------------------------
     // Init Amazon
     // -----------------------------------------
     if ($_POST['transfer']['to'] == 's3') {
         if (class_exists('CFRuntime') == FALSE) {
             // Include the SDK
             require_once PATH_THIRD . 'channel_images/locations/s3/sdk/sdk.class.php';
         }
         // Just to be sure
         if (class_exists('AmazonS3') == FALSE) {
             include PATH_THIRD . 'channel_images/locations/s3/sdk/services/s3.class.php';
         }
         // Instantiate the AmazonS3 class
         $S3 = new AmazonS3(array('key' => trim($_POST['s3']['key']), 'secret' => trim($_POST['s3']['secret_key'])));
         $S3->ssl_verification = FALSE;
         // Init Configs
         $temp = $this->EE->config->item('ci_s3_storage');
         $s3_storage = constant('AmazonS3::' . $temp[$_POST['s3']['storage']]);
         $temp = $this->EE->config->item('ci_s3_acl');
         $s3_acl = constant('AmazonS3::' . $temp[$_POST['s3']['acl']]);
         $s3_directory = trim($_POST['s3']['directory']);
         $s3_bucket = $_POST['s3']['bucket'];
         $s3_subdir = '';
         if ($s3_directory) {
             $s3_subdir = $s3_directory . '/';
         }
         $s3_headers = $this->EE->config->item('ci_s3_headers');
         // Test it
         $resp = $S3->get_bucket_headers($s3_bucket);
         if (!$resp->isOK()) {
             if (isset($resp->body->Message)) {
                 exit('ERROR_S3: ' . $resp->body->Message);
             } else {
                 exit('ERROR_S3: Bucket error');
             }
         }
     } else {
         // Include the SDK
         if (class_exists('CF_Authentication') == FALSE) {
             require_once PATH_THIRD . 'channel_images/locations/cloudfiles/sdk/cloudfiles.php';
         }
         // Which Region?
         if ($_POST['cloudfiles']['region'] == 'uk') {
             $_POST['cloudfiles']['region'] = constant('UK_AUTHURL');
         } else {
             $_POST['cloudfiles']['region'] = constant('US_AUTHURL');
         }
         // Instantiate the Cloudfiles class
         $CF_AUTH = new CF_Authentication($_POST['cloudfiles']['username'], $_POST['cloudfiles']['api'], NULL, $_POST['cloudfiles']['region']);
         try {
             $CF_AUTH->ssl_use_cabundle();
             $CF_AUTH->authenticate();
         } catch (AuthenticationException $e) {
             exit('ERROR_CLOUDFILES:' . $e->getMessage());
         }
         $CF_CONN = new CF_Connection($CF_AUTH);
         $CF_CONN->ssl_use_cabundle();
         $CF_CONT = $CF_CONN->get_container($_POST['cloudfiles']['container']);
     }
     // -----------------------------------------
     // Loop over all dirs
     // -----------------------------------------
     $files = scandir($temp_dir);
     foreach ($files as $file) {
         $full_path = $temp_dir . $file;
         if (is_file($full_path) == false) {
             continue;
         }
         $extension = substr(strrchr($file, '.'), 1);
         // Mime type
         if ($extension == 'jpg') {
             $filemime = 'image/jpeg';
         } elseif ($extension == 'jpeg') {
             $filemime = 'image/jpeg';
         } elseif ($extension == 'png') {
             $filemime = 'image/png';
         } elseif ($extension == 'gif') {
             $filemime = 'image/gif';
         } else {
             continue;
         }
         if (isset($S3) == true) {
             $upload_arr = array();
             $upload_arr['fileUpload'] = $full_path;
             $upload_arr['contentType'] = $filemime;
             $upload_arr['acl'] = $s3_acl;
             $upload_arr['storage'] = $s3_storage;
             $upload_arr['headers'] = array();
             if ($s3_headers != FALSE && is_array($s3_headers) === TRUE) {
                 $upload_arr['headers'] = $s3_headers;
             }
             $response = $S3->create_object($s3_bucket, $s3_subdir . $entry_id . '/' . $file, $upload_arr);
             // Success?
             if (!$response->isOK()) {
                 exit((string) $response->body->Message);
             }
         } else {
             $OBJECT = $CF_CONT->create_object($entry_id . '/' . $file);
             $OBJECT->content_type = $filemime;
             try {
                 $OBJECT->load_from_filename($full_path);
             } catch (Exception $e) {
                 exit($e->getMessage());
             }
         }
         //@unlink($temp_dir.$file);
     }
     @delete_files($temp_dir, true);
     @rmdir($temp_dir);
     $o = array('success' => 'yes');
     exit($this->EE->image_helper->generate_json($o));
 }
Exemplo n.º 21
0
} else {
	$rs_server = 'https://auth.api.rackspacecloud.com';
}
$rs_path = ''; //$destination['path'];
*/
require_once pb_backupbuddy::plugin_path() . '/destinations/rackspace/lib/rackspace/cloudfiles.php';
$auth = new CF_Authentication($rs_username, $rs_api_key, NULL, $rs_server);
$auth->authenticate();
try {
    $conn = new CF_Connection($auth);
} catch (Exception $e) {
    echo 'Error #847834: Exception caught accessing Rackspace. If this persists try deleting (by selecting the configure destination button) & re-creating this destination. Details: `' . $e->getMessage() . '`.';
    die;
}
// Set container
$container = @$conn->get_container($rs_container);
// Delete Rackspace backups
if (!empty($_POST['delete_file'])) {
    pb_backupbuddy::verify_nonce();
    $delete_count = 0;
    if (!empty($_POST['files']) && is_array($_POST['files'])) {
        // loop through and delete Rackspace files
        foreach ($_POST['files'] as $rsfile) {
            $delete_count++;
            // Delete Rackspace file
            $container->delete_object($rsfile);
        }
    }
    if ($delete_count > 0) {
        pb_backupbuddy::alert(sprintf(_n('Deleted %d file', 'Deleted %d files', $delete_count, 'it-l10n-backupbuddy'), $delete_count));
    }
Exemplo n.º 22
0
 function process_rackspace_copy($rs_backup, $rs_username, $rs_api_key, $rs_container, $rs_server)
 {
     pb_backupbuddy::set_greedy_script_limits();
     if (!class_exists('backupbuddy_core')) {
         require_once pb_backupbuddy::plugin_path() . '/classes/core.php';
     }
     require_once pb_backupbuddy::plugin_path() . '/destinations/rackspace/lib/rackspace/cloudfiles.php';
     $auth = new CF_Authentication($rs_username, $rs_api_key, NULL, $rs_server);
     $auth->authenticate();
     $conn = new CF_Connection($auth);
     // Set container
     $container = $conn->get_container($rs_container);
     // Get file from Rackspace
     $rsfile = $container->get_object($rs_backup);
     $destination_file = backupbuddy_core::getBackupDirectory() . $rs_backup;
     if (file_exists($destination_file)) {
         $destination_file = str_replace('backup-', 'backup_copy_' . pb_backupbuddy::random_string(5) . '-', $destination_file);
     }
     $fso = fopen(backupbuddy_core::getBackupDirectory() . $rs_backup, 'w');
     $rsfile->stream($fso);
     fclose($fso);
 }
Exemplo n.º 23
0
	function process_rackspace_copy( $rs_backup, $rs_username, $rs_api_key, $rs_container, $rs_server ) {
		pb_backupbuddy::set_greedy_script_limits();
		
		require_once( pb_backupbuddy::plugin_path() . '/lib/rackspace/cloudfiles.php' );
		$auth = new CF_Authentication( $rs_username, $rs_api_key, NULL, $rs_server );
		$auth->authenticate();
		$conn = new CF_Connection( $auth );

		// Set container
		$container = $conn->get_container( $rs_container );
		
		// Get file from Rackspace
		$rsfile = $container->get_object( $rs_backup );
		
		$destination_file = ABSPATH . 'wp-content/uploads/backupbuddy_backups/' . $rs_backup;
		if ( file_exists( $destination_file ) ) {
			$destination_file = str_replace( 'backup-', 'backup_copy_' . pb_backupbuddy::random_string( 5 ) . '-', $destination_file );
		}
		
		$fso = fopen( ABSPATH . 'wp-content/uploads/backupbuddy_backups/' . $rs_backup, 'w' );
		$rsfile->stream($fso);
		fclose($fso);
	}
 function _serve_file($link_id, $storage, $container, $endpoint, $url, $filename, $type, $file_id, $inline = false)
 {
     //echo $link_id.", <br />".$storage.", <br />".$container.", <br />".$endpoint.", <br />".$url.", <br />".$filename.",  <br />".$type.", <br />".$file_id.", <br />".$inline;
     if ($this->EE->session->userdata('group_id') != 1) {
         $this->EE->db->query("INSERT INTO exp_protected_links_stats (link_id, file_id, member_id, ip, dl_date) VALUES ('{$link_id}', '{$file_id}', '" . $this->EE->session->userdata('member_id') . "', '" . $this->EE->input->ip_address . "', '" . $this->EE->localize->now . "')");
         $this->EE->db->query("UPDATE exp_protected_links_files SET dl_count=dl_count+1, dl_date='" . $this->EE->localize->now . "' WHERE file_id={$file_id}");
         $this->EE->db->query("UPDATE exp_protected_links_links SET dl_count=dl_count+1 WHERE link_id={$link_id}");
     }
     $filename = strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? preg_replace('/\\./', '%2e', $filename, substr_count($filename, '.') - 1) : $filename;
     switch ($storage) {
         case 'local':
             $url = urldecode($url);
             if (!file_exists($url)) {
                 return $this->EE->output->show_user_error('general', array($this->EE->lang->line('file_not_exist')));
             }
             header("Pragma: public");
             header("Expires: 0");
             header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
             header("Cache-Control: public", FALSE);
             header("Content-Description: File Transfer");
             header("Content-Type: " . $type);
             header("Accept-Ranges: bytes");
             if ($inline == true) {
                 header("Content-Disposition: inline; filename=\"" . $filename . "\";");
             } else {
                 header("Content-Disposition: attachment; filename=\"" . $filename . "\";");
             }
             header("Content-Transfer-Encoding: binary");
             header('Content-Length: ' . filesize($url));
             @ob_clean();
             @flush();
             @readfile($url);
             break;
         case 'url':
             $use_curl = true;
             if (!function_exists('curl_init')) {
                 $use_curl = false;
                 //return $this->EE->output->show_user_error('general', array($this->EE->lang->line('curl_required')));
             } else {
                 $curl = curl_init();
                 curl_setopt($curl, CURLOPT_URL, str_replace('&#47;', '/', $url));
                 curl_setopt($curl, CURLOPT_HEADER, true);
                 curl_setopt($curl, CURLOPT_NOBODY, true);
                 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                 if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')) {
                     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
                 }
                 curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
                 curl_setopt($curl, CURLOPT_SSLVERSION, 3);
                 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
                 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
                 curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
                 $out = curl_exec($curl);
                 $error = curl_error($curl);
                 if ($error != '') {
                     return $this->EE->output->show_user_error('general', array($this->EE->lang->line('curl_error') . $error));
                 }
                 $size = curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
                 curl_close($curl);
                 $memory = memory_get_usage(true);
                 if ($size > $memory * 3 / 4) {
                     $use_curl = false;
                 }
             }
             header("Pragma: public");
             header("Expires: 0");
             header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
             header("Cache-Control: public", FALSE);
             header("Content-Description: File Transfer");
             header("Content-Type: " . $type);
             header("Accept-Ranges: bytes");
             if ($inline == true) {
                 header("Content-Disposition: inline; filename=\"" . $filename . "\";");
             } else {
                 header("Content-Disposition: attachment; filename=\"" . $filename . "\";");
             }
             header("Content-Transfer-Encoding: binary");
             if ($use_curl == true) {
                 $curl = curl_init();
                 curl_setopt($curl, CURLOPT_URL, str_replace('&#47;', '/', $url));
                 curl_setopt($curl, CURLOPT_HEADER, false);
                 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                 if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')) {
                     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
                 }
                 curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
                 curl_setopt($curl, CURLOPT_SSLVERSION, 3);
                 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
                 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
                 curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
                 $out = curl_exec($curl);
                 curl_close($curl);
                 echo $out;
             } else {
                 $fp = fopen(str_replace('&#47;', '/', $url), "rb");
                 while (!feof($fp)) {
                     echo fread($fp, 4096);
                     flush();
                 }
                 fclose($fp);
             }
             break;
         case 's3':
         case 'S3':
             require_once PATH_THIRD . "protected_links/storage_api/amazon/S3.php";
             header("Pragma: public");
             header("Expires: 0");
             header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
             header("Cache-Control: public", FALSE);
             header("Content-Description: File Transfer");
             header("Content-Type: " . $type);
             header("Accept-Ranges: bytes");
             if ($inline == true) {
                 header("Content-Disposition: inline; filename=\"" . $filename . "\";");
             } else {
                 header("Content-Disposition: attachment; filename=\"" . $filename . "\";");
             }
             header("Content-Transfer-Encoding: binary");
             $s3 = new S3($this->settings['s3_key_id'], $this->settings['s3_key_value']);
             if ($endpoint != '') {
                 $s3->setEndpoint($endpoint);
             }
             $fp = fopen("php://output", "wb");
             $s3->getObject("{$container}", $url, $fp);
             fclose($fp);
             break;
         case 'rackspace':
             require_once PATH_THIRD . "protected_links/storage_api/rackspace/cloudfiles.php";
             header("Pragma: public");
             header("Expires: 0");
             header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
             header("Cache-Control: public", FALSE);
             header("Content-Description: File Transfer");
             header("Content-Type: " . $type);
             header("Accept-Ranges: bytes");
             if ($inline == true) {
                 header("Content-Disposition: inline; filename=\"" . $filename . "\";");
             } else {
                 header("Content-Disposition: attachment; filename=\"" . $filename . "\";");
             }
             header("Content-Transfer-Encoding: binary");
             $auth = new CF_Authentication($this->settings['rackspace_api_login'], $this->settings['rackspace_api_password']);
             $auth->authenticate();
             $conn = new CF_Connection($auth);
             $container = $conn->get_container("{$container}");
             $fp = fopen("php://output", "wb");
             $url->stream($fp);
             fclose($fp);
             break;
     }
     exit;
 }
Exemplo n.º 25
0
 /**
  * se conecta al CDN (cloudfiles) en base a las constantes definidas en config.php
  * @return object CND repo
  */
 function cdn_connect()
 {
     $auth = new CF_Authentication(CDN_USERNAME, CDN_APIKEY);
     $auth->authenticate();
     $conn = new CF_Connection($auth);
     $cloudfiles = $conn->get_container(CDN_REPO);
     return $cloudfiles;
 }