예제 #1
0
 def setup_gs(self, access_key, secret_access_key, project_id, local_folder, holder,
              log=True, encrypt=False, encrypt_code=None, force_stop=True):
     try:
         self.gs_lock.acquire()
     
         if self.gs_handler:
             return self.gs_handler
         
         if force_stop and self.gs_handler:
             self.gs_handler.stop()
         
         if encrypt and encrypt_code:
             client = CryptoGSClient(access_key, secret_access_key, project_id, encrypt_code)
         else:
             client = GSClient(access_key, secret_access_key, project_id)
             
         storage = GSStorage(client, holder)
         
         try:
             handler = SyncHandler(storage, local_folder, sec=DEFAULT_SLEEP_SECS, log=log)
             handler.setDaemon(True)
             handler.start()
             self.gs_handler = handler
             
             self.save_gs_info(access_key, secret_access_key, project_id, 
                               local_folder, holder, log, encrypt, encrypt_code)
             
             return handler
         except GSError, e:
             raise CloudBackupError(e.src, e.err_no, e.msg)
     finally:
         self.gs_lock.release()
예제 #2
0
 def setup_vdisk(self, account, password, local_folder, holder, is_weibo=False, 
                 log=True, encrypt=False, encrypt_code=None, force_stop=True):
     try:
         self.vdisk_lock.acquire()
         
         if not force_stop and self.vdisk_handler:
             return self.vdisk_handler
         
         if force_stop and self.vdisk_handler:
             self.vdisk_handler.stop()
         
         if encrypt and encrypt_code:
             client = CryptoVdiskClient(VDISK_APP_KEY, VDISK_APP_SECRET)
             client.auth(account, password, encrypt_code, 'sinat' if is_weibo else 'local')
         else:
             client = VdiskClient(VDISK_APP_KEY, VDISK_APP_SECRET)
             client.auth(account, password, 'sinat' if is_weibo else 'local')
         self.vdisk_token_refresh = VdiskRefreshToken(client)
         self.vdisk_token_refresh.setDaemon(True)
         self.vdisk_token_refresh.start()
             
         storage = VdiskStorage(client, holder_name=holder)
         
         try:
             handler = SyncHandler(storage, local_folder, sec=DEFAULT_SLEEP_SECS, log=log)
             handler.setDaemon(True)
             handler.start()
             self.vdisk_handler = handler
             
             self.save_vdisk_info(account, password, local_folder, holder,
                                  is_weibo, log, encrypt, encrypt_code)
             return handler
         except VdiskError, e:
             raise CloudBackupError(e.src, e.err_no, e.msg)
     finally:
         self.vdisk_lock.release()
예제 #3
0
    def setup_vdisk(self,
                    account,
                    password,
                    local_folder,
                    holder,
                    is_weibo=False,
                    log=True,
                    encrypt=False,
                    encrypt_code=None,
                    force_stop=True):
        try:
            self.vdisk_lock.acquire()

            if not force_stop and self.vdisk_handler:
                return self.vdisk_handler

            if force_stop and self.vdisk_handler:
                self.vdisk_handler.stop()

            if encrypt and encrypt_code:
                client = CryptoVdiskClient(VDISK_APP_KEY, VDISK_APP_SECRET)
                client.auth(account, password, encrypt_code,
                            'sinat' if is_weibo else 'local')
            else:
                client = VdiskClient(VDISK_APP_KEY, VDISK_APP_SECRET)
                client.auth(account, password,
                            'sinat' if is_weibo else 'local')
            self.vdisk_token_refresh = VdiskRefreshToken(client)
            self.vdisk_token_refresh.setDaemon(True)
            self.vdisk_token_refresh.start()

            storage = VdiskStorage(client, holder_name=holder)

            try:
                handler = SyncHandler(storage,
                                      local_folder,
                                      sec=DEFAULT_SLEEP_SECS,
                                      log=log)
                handler.setDaemon(True)
                handler.start()
                self.vdisk_handler = handler

                self.save_vdisk_info(account, password, local_folder, holder,
                                     is_weibo, log, encrypt, encrypt_code)
                return handler
            except VdiskError, e:
                raise CloudBackupError(e.src, e.err_no, e.msg)
        finally:
            self.vdisk_lock.release()
예제 #4
0
    def setup_gs(self,
                 access_key,
                 secret_access_key,
                 project_id,
                 local_folder,
                 holder,
                 log=True,
                 encrypt=False,
                 encrypt_code=None,
                 force_stop=True):
        try:
            self.gs_lock.acquire()

            if self.gs_handler:
                return self.gs_handler

            if force_stop and self.gs_handler:
                self.gs_handler.stop()

            if encrypt and encrypt_code:
                client = CryptoGSClient(access_key, secret_access_key,
                                        project_id, encrypt_code)
            else:
                client = GSClient(access_key, secret_access_key, project_id)

            storage = GSStorage(client, holder)

            try:
                handler = SyncHandler(storage,
                                      local_folder,
                                      sec=DEFAULT_SLEEP_SECS,
                                      log=log)
                handler.setDaemon(True)
                handler.start()
                self.gs_handler = handler

                self.save_gs_info(access_key, secret_access_key, project_id,
                                  local_folder, holder, log, encrypt,
                                  encrypt_code)

                return handler
            except GSError, e:
                raise CloudBackupError(e.src, e.err_no, e.msg)
        finally:
            self.gs_lock.release()