Esempio n. 1
0
def filemanager_api_view(request):
    try:
        json_request = json.loads(request.body.decode('utf-8'))
    except:
        error_dict = {
            "result": {
                "success": False,
                "error": traceback.format_exc()
            }
        }
        json_context = json.dumps(error_dict).encode('utf-8')
        return HttpResponseBadRequest(json_context,
                                      content_type='application/json')
    # lg.out(4, 'filemanagerapp.filemanager_api_view request: %s' % json_request)
    mode = json_request['params']['mode']
    params = json_request['params']
    try:
        if mode == 'list':
            result = api.files_list(params['path'])
        if mode == 'listall':
            result = api.files_list('')
        elif mode == 'upload':
            filename = unicode(params['path'])
            import os
            local_path = os.path.abspath(
                os.path.join(os.path.expanduser('~'), filename))
            api.file_create(filename)
            result = api.file_upload_start(local_path, filename)
        else:
            result = api.filemanager(json_request)
    except:
        return HttpResponseBadRequest(json_context,
                                      content_type='application/json')
    return HttpResponse(json.dumps(result), content_type='application/json')
Esempio n. 2
0
 def file_list_v1(self, request):
     return api.files_list(
         remote_path=_request_arg(request, 'remote_path', None),
         key_id=_request_arg(request, 'key_id', None),
         recursive=bool(_request_arg(request, 'recursive', '0') in ['1', 'true', ]),
         all_customers=bool(_request_arg(request, 'all_customers', '0') in ['1', 'true', ]),
     )
Esempio n. 3
0
 def _on_key_erased(self, evt):
     from interface import api
     ret = api.files_list(
         remote_path='',
         key_id=evt.data['key_id'],
         recursive=True,
         all_customers=True,
     )
     if ret.get('status') == 'OK':
         for one_file in ret['result']:
             api.file_delete(one_file['remote_path'])
Esempio n. 4
0
    def ftp_LIST(self, path=''):
        # Uh, for now, do this retarded thing.
        if self.dtpInstance is None or not self.dtpInstance.isConnected:
            return defer.fail(
                BadCmdSequenceError('must send PORT or PASV before RETR'))
        # Various clients send flags like -L or -al etc.  We just ignore them.
        if path.lower() in ['-a', '-l', '-la', '-al']:
            path = ''
        try:
            segments = toSegments(self.workingDirectory, path)
        except InvalidPath:
            return defer.fail(FileNotFoundError(path))
        pth = '/'.join(segments)
        ret = api.files_list(pth)
        if ret['status'] != 'OK':
            return defer.fail(FileNotFoundError(path))
        lst = ret['result']
        result = []
        for itm in lst:
            if itm['path'] == 'index':
                continue
            # known_size = max(itm[7].size, 0)
#             if itm['versions']:
#                 known_size = itm['size']
#             else:
#                 known_size = 1
            known_size = max(itm['local_size'], 0)
            key_alias, _, _ = itm['key_id'].partition('$')
            result.append((
                os.path.basename(itm['path']),
                [  # name
                    known_size,  # size
                    True
                    if itm['type'] == 'dir' else False,  # folder or file ?
                    filepath.Permissions(0o7777),  # permissions
                    0,  # hardlinks
                    time.mktime(
                        time.strptime(itm['latest'], '%Y-%m-%d %H:%M:%S'))
                    if itm['latest'] else None,  # time
                    itm['customer'],  # owner
                    key_alias,  # group
                ],
            ))
        d = Deferred()
        d.addCallback(self._dirListingResponse)
        d.callback(result)
        return d
 def jsonrpc_files_list(self, remote_path=None):
     return api.files_list(remote_path=remote_path)
Esempio n. 6
0
 def file_list_all_v1(self, request):
     return api.files_list(all_customers=True)
Esempio n. 7
0
 def file_list_all_v1(self, request):
     return api.files_list(all_customers=True, include_uploads=True, include_downloads=True)
Esempio n. 8
0
 def file_list_v1(self, request):
     return api.files_list(remote_path=_request_arg(request, 'remote_path', None))