[ Avaa Bypassed ]




Upload:

Command:

www-data@13.59.192.254: ~ $
# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-
#
# Copyright 2016 Roman Yepishev <rye@keypressure.com>
#
# This file is part of duplicity.
#
# Duplicity 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 2 of the License, or (at your
# option) any later version.
#
# Duplicity 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 duplicity; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

u"""MediaFire Duplicity Backend"""

from builtins import str

import os

import duplicity.backend
from duplicity import util
from duplicity.errors import BackendException

DUPLICITY_APP_ID = u'45593'


class MediafireBackend(duplicity.backend.Backend):
    u"""Use this backend when saving to MediaFire

    URLs look like mf:/root/folder.
    """
    def __init__(self, parsed_url):
        try:
            import mediafire.client
        except ImportError as e:
            raise BackendException(u"""\
Mediafire backend requires the mediafire library.
Exception: %s""" % str(e))

        duplicity.backend.Backend.__init__(self, parsed_url)

        mediafire_email = parsed_url.username
        mediafire_password = self.get_password()

        self._file_res = mediafire.client.File
        self._folder_res = mediafire.client.Folder
        self._downloaderror_exc = mediafire.client.DownloadError
        self._notfound_exc = mediafire.client.ResourceNotFoundError

        self.client = mediafire.client.MediaFireClient()
        self.client.login(app_id=DUPLICITY_APP_ID,
                          email=mediafire_email,
                          password=mediafire_password)

        # //username:password@host/path/to/folder -> path/to/folder
        uri = u'mf:///' + parsed_url.path.split(u'/', 3)[3]

        # Create folder if it does not exist and make sure it is private
        # See MediaFire Account Settings /Security and Privacy / Share Link
        # to set "Inherit from parent folder"
        try:
            folder = self.client.get_resource_by_uri(uri)
            if not isinstance(folder, self._folder_res):
                raise BackendException(u"target_url already exists "
                                       u"and is not a folder")
        except mediafire.client.ResourceNotFoundError:
            # force folder to be private
            folder = self.client.create_folder(uri, recursive=True)
            self.client.update_folder_metadata(uri, privacy=u'private')

        self.folder = folder

    def _put(self, source_path, remote_filename=None):
        u"""Upload file"""
        # Use source file name if remote one is not defined
        if remote_filename is None:
            remote_filename = os.path.basename(source_path.name)

        uri = self._build_uri(remote_filename)

        with self.client.upload_session():
            self.client.upload_file(source_path.open(u'rb'), uri)

    def _get(self, filename, local_path):
        u"""Download file"""
        uri = self._build_uri(filename)
        try:
            self.client.download_file(uri, local_path.open(u'wb'))
        except self._downloaderror_exc as ex:
            raise BackendException(ex)

    def _list(self):
        u"""List files in backup directory"""
        uri = self._build_uri()
        filenames = []
        for item in self.client.get_folder_contents_iter(uri):
            if not isinstance(item, self._file_res):
                continue

            filenames.append(item[u'filename'].encode(u'utf-8'))

        return filenames

    def _delete(self, filename):
        u"""Delete single file"""
        uri = self._build_uri(filename)
        self.client.delete_file(uri)

    def _delete_list(self, filename_list):
        u"""Delete list of files"""
        for filename in filename_list:
            self._delete(filename)

    def _query(self, filename):
        u"""Stat the remote file"""
        uri = self._build_uri(filename)

        try:
            resource = self.client.get_resource_by_uri(uri)
            size = int(resource[u'size'])
        except self._notfound_exc:
            size = -1

        return {u'size': size}

    def _build_uri(self, filename=u''):
        u"""Build relative URI"""
        return (
            u'mf:' + self.folder[u"folderkey"] +
            (u'/' + util.fsdecode(filename))
        )


duplicity.backend.register_backend(u"mf", MediafireBackend)

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
pyrax_identity Folder 0755
__init__.py File 1.07 KB 0644
_boto_multi.py File 9.52 KB 0644
_boto_single.py File 14.07 KB 0644
_cf_cloudfiles.py File 3.81 KB 0644
_cf_pyrax.py File 5.07 KB 0644
adbackend.py File 16.97 KB 0644
azurebackend.py File 7.91 KB 0644
b2backend.py File 6.77 KB 0644
cfbackend.py File 1.11 KB 0644
dpbxbackend.py File 19.86 KB 0644
gdocsbackend.py File 9.12 KB 0644
giobackend.py File 8.25 KB 0644
hsibackend.py File 2.67 KB 0644
hubicbackend.py File 2.37 KB 0644
imapbackend.py File 9.83 KB 0644
jottacloudbackend.py File 5.53 KB 0644
lftpbackend.py File 9.79 KB 0644
localbackend.py File 2.65 KB 0644
mediafirebackend.py File 4.67 KB 0644
megabackend.py File 6.18 KB 0644
multibackend.py File 13.84 KB 0644
ncftpbackend.py File 5.56 KB 0644
onedrivebackend.py File 13.25 KB 0644
par2backend.py File 8.14 KB 0644
pcabackend.py File 8.96 KB 0644
pydrivebackend.py File 10.68 KB 0644
rclonebackend.py File 4.16 KB 0644
rsyncbackend.py File 6.44 KB 0644
s3_boto3_backend.py File 8.81 KB 0644
s3_boto_backend.py File 1.48 KB 0644
ssh_paramiko_backend.py File 18.33 KB 0644
ssh_pexpect_backend.py File 12.63 KB 0644
swiftbackend.py File 7.5 KB 0644
sxbackend.py File 2.3 KB 0644
tahoebackend.py File 2.61 KB 0644
webdavbackend.py File 19.73 KB 0644