Example #1
0
 def __init__(self, username, userpw):
     super(NdriveProvider, self).__init__()
     self.ndrive = Ndrive()
     if self.ndrive.login(username, userpw):
         _logger.info("login ok")
     else:
         _logger.error("login fail")
Example #2
0
    def __init__(self, id, passwd):
        cmd.Cmd.__init__(self)
        self.n = Ndrive()

        self.id = id
        self.passwd = passwd
        s = self.n.login(id, passwd)

        if s:
            self.stdout.write('Success lgoin\n')
        else:
            self.stdout.write('Failed lgoin: wrong Id or Password\n')
            return

        self.current_path = '/'
        self.do_cd(self.current_path)

        self.prompt = "> %s@Ndrive:%s " % (self.id, self.current_path)
Example #3
0
    def __init__(self, id, passwd):
        cmd.Cmd.__init__(self)
        self.n = Ndrive()

        self.id = id
        self.passwd = passwd
        s = self.n.login(id, passwd)

        if s:
            self.stdout.write('Success lgoin\n')
        else:
            self.stdout.write('Failed lgoin: wrong Id or Password\n')
            return

        self.current_path = '/'
        self.do_cd(self.current_path)

        self.prompt = "> %s@Ndrive:%s " %(self.id, self.current_path)
Example #4
0
class NdriveProvider(DAVProvider):
    def __init__(self, username, userpw):
        super(NdriveProvider, self).__init__()
        self.ndrive = Ndrive()
        if self.ndrive.login(username, userpw):
            _logger.info("login ok")
        else:
            _logger.error("login fail")

    def getResourceInst(self, path, environ):
        _logger.info("getResourceInst('%s')" % path)
        self._count_getResourceInst += 1
        global _last_path
        npath = self.sharePath + path
        if _last_path == npath:
            global _dircache
            #del _dircache[npath]
            _dircache.__delete__(npath)
        _last_path = npath
        root = NdriveCollection("/", environ, self.ndrive)
        return root.resolve("", path)
Example #5
0
#!/usr/bin/python
import sys
import getpass
from time import gmtime, strftime
from ndrive import Ndrive

if len(sys.argv) != 2:
    print "[!] Error: need file name"
    sys.exit(1)

f_name = sys.argv[1]
day = strftime("%Y-%m-%d", gmtime())

print "[*] Uploading %s" % f_name

nd = Ndrive()

#n_id = raw_input("Id : ")
n_id = "carpedm30"
n_pass = getpass.getpass()

nd.login(n_id, n_pass)
nd.uploadFile(f_name, "/%s-%s" % (day, f_name))

print "[*] Complete!"
Example #6
0
class NdriveTerm(cmd.Cmd):
    TMP_PATH = expanduser('~/.ndrive/')

    def __init__(self, id, passwd):
        cmd.Cmd.__init__(self)
        self.n = Ndrive()

        self.id = id
        self.passwd = passwd
        s = self.n.login(id, passwd)

        if s:
            self.stdout.write('Success lgoin\n')
        else:
            self.stdout.write('Failed lgoin: wrong Id or Password\n')
            return

        self.current_path = '/'
        self.do_cd(self.current_path)

        self.prompt = "> %s@Ndrive:%s " % (self.id, self.current_path)

    def do_ls(self, nothing=''):
        """list files in current remote directory"""
        for d in self.dirs:
            self.stdout.write("\033[0;34m" + ('%s\n' % d) + "\033[0m")

        for f in self.files:
            self.stdout.write('%s\n' % f)

    def do_pwd(self, nothing=''):
        self.stdout.write(('%s\n' % self.current_path).encode('utf-8'))

    def getList(self, text='', path='', directory=True):
        if path == '':
            path = self.current_path

        resp = self.n.getList(path, type=3)
        resp_list = [i['href'] for i in resp]

        lists = []
        if resp:
            for f in resp_list:
                name = f.encode('utf-8')

                if name[-1] == '/' and directory:
                    name = os.path.basename(name[:-1])

                    if name.find(text) == 0:
                        lists.append(name + '/')
                elif not directory:
                    name = os.path.basename(name)

                    if name.find(text) == 0:
                        lists.append(name + '/')

        return lists

    def dir_complete(self, text=''):
        return self.getList(text, self.current_path, True)

    def file_complete(self, text=''):
        return self.getList(text, self.current_path, False)

    def do_cd(self, path='/'):
        """change current working directory"""
        path = path[0]

        if path == "..":
            self.current_path = "/".join(
                self.current_path[:-1].split("/")[0:-1]) + '/'
        elif path == '/':
            self.current_path = "/"
        else:
            if path[-1] == '/':
                self.current_path += path
            else:
                self.current_path += path + '/'

        resp = self.n.getList(self.current_path, type=3)

        if resp:
            self.dirs = []
            self.files = []

            for f in resp:
                name = f['href'].encode('utf-8')

                if name[-1] == '/':
                    self.dirs.append(os.path.basename(name[:-1]))
                else:
                    self.files.append(os.path.basename(name))

        self.prompt = "> %s@Ndrive:%s " % (self.id, self.current_path)

    def complete_cd(self, text, line, start_idx, end_idx):
        return self.dir_complete(text)

    def do_cat(self, path):
        """display the contents of a file"""
        path = path[0]
        tmp_file_path = self.TMP_PATH + 'tmp'

        if not os.path.exists(self.TMP_PATH):
            os.makedirs(self.TMP_PATH)

        f = self.n.downloadFile(self.current_path + path, tmp_file_path)
        f = open(tmp_file_path, 'r')

        self.stdout.write(f.read())
        self.stdout.write("\n")

    def complete_cat(self, text, line, start_idx, end_idx):
        return self.file_complete(text)

    def do_mkdir(self, path):
        """create a new directory"""
        path = path[0]

        self.n.makeDirectory(self.current_path + path)
        self.dirs = self.dir_complete()

    def do_rm(self, path):
        path = path[0]
        """delete a file or directory"""
        self.n.delete(self.current_path + path)
        self.dirs = self.dir_complete()
        self.files = self.file_complete()

    def do_mv(self, from_path, to_path, nothing=''):
        """move/rename a file or directory"""
        self.n.doMove(self.current_path + from_path,
                      self.current_path + to_path)

    def complete_mv(self, text, line, start_idx, end_idx):
        return self.dir_complete(text)

    def do_account_info(self):
        """display account information"""
        s, metadata = self.n.getRegisterUserInfo()
        pprint.PrettyPrinter(indent=2).pprint(metadata)

    def do_exit(self, empty=''):
        """exit"""
        return True

    def do_get(self, from_path, to_path):
        """
        Copy file from Ndrive to local file and print out out the metadata.

        Examples:
          Ndrive> get file.txt ~/ndrive-file.txt
        """
        to_file = open(os.path.expanduser(to_path), "wb")

        self.n.downloadFile(self.current_path + "/" + from_path, to_path)

    def do_put(self, from_path, to_path):
        """
        Copy local file to Ndrive

        Examples:
          Ndrive> put ~/test.txt ndrive-copy-test.txt
        """
        from_file = open(os.path.expanduser(from_path), "rb")

        self.n.put(self.current_path + "/" + from_path, to_path)

    def do_search(self, string):
        """Search Ndrive for filenames containing the given string."""
        results = self.n.doSearch(string, full_path=self.current_path)

        if results:
            for r in results:
                self.stdout.write("%s\n" % r['path'])

    def do_help(self, empty=''):
        # Find every "do_" attribute with a non-empty docstring and print
        # out the docstring.
        all_names = dir(self)
        cmd_names = []
        for name in all_names:
            if name[:3] == 'do_':
                cmd_names.append(name[3:])
        cmd_names.sort()
        for cmd_name in cmd_names:
            f = getattr(self, 'do_' + cmd_name)
            if f.__doc__:
                self.stdout.write('%s: %s\n' % (cmd_name, f.__doc__))

    # the following are for command line magic and aren't Ndrive-related
    def emptyline(self):
        pass

    def do_EOF(self, line):
        self.stdout.write('\n')
        return True

    def parseline(self, line):
        parts = shlex.split(line)
        if len(parts) == 0:
            return None, None, line
        else:
            return parts[0], parts[1:], line
Example #7
0
class NdriveTerm(cmd.Cmd):
    TMP_PATH = expanduser('~/.ndrive/')

    def __init__(self, id, passwd):
        cmd.Cmd.__init__(self)
        self.n = Ndrive()

        self.id = id
        self.passwd = passwd
        s = self.n.login(id, passwd)

        if s:
            self.stdout.write('Success lgoin\n')
        else:
            self.stdout.write('Failed lgoin: wrong Id or Password\n')
            return

        self.current_path = '/'
        self.do_cd(self.current_path)

        self.prompt = "> %s@Ndrive:%s " %(self.id, self.current_path)

    def do_ls(self, nothing = ''):
        """list files in current remote directory"""
        for d in self.dirs:
            self.stdout.write("\033[0;34m" + ('%s\n' % d) + "\033[0m")

        for f in self.files:
            self.stdout.write('%s\n' % f)

    def do_pwd(self, nothing = ''):
        self.stdout.write(('%s\n' % self.current_path).encode('utf-8'))

    def getList(self, text = '', path = '', directory = True):
        if path == '':
            path = self.current_path

        resp = self.n.getList(path, type=3)
        resp_list = [i['href'] for i in resp]
        
        lists = []
        if resp:
            for f in resp_list:
                name = f.encode('utf-8')

                if name[-1] == '/' and directory:
                    name = os.path.basename(name[:-1])

                    if name.find(text) == 0:
                        lists.append(name + '/')
                elif not directory:
                    name = os.path.basename(name)

                    if name.find(text) == 0:
                        lists.append(name + '/')

        return lists

    def dir_complete(self, text = ''):
        return self.getList(text, self.current_path, True)

    def file_complete(self, text = ''):
        return self.getList(text, self.current_path, False)

    def do_cd(self, path = '/'):
        """change current working directory"""
        path = path[0]

        if path == "..":
            self.current_path = "/".join(self.current_path[:-1].split("/")[0:-1]) + '/'
        elif path == '/':
            self.current_path = "/"
        else:
            if path[-1] == '/':
                self.current_path += path
            else:
                self.current_path += path + '/'

        resp = self.n.getList(self.current_path, type=3)

        if resp:
            self.dirs = []
            self.files = []

            for f in resp:
                name = f['href'].encode('utf-8')

                if name[-1] == '/':
                    self.dirs.append(os.path.basename(name[:-1]))
                else:
                    self.files.append(os.path.basename(name))

        self.prompt = "> %s@Ndrive:%s " %(self.id, self.current_path)

    def complete_cd(self, text, line, start_idx, end_idx):
        return self.dir_complete(text)

    def do_cat(self, path):
        """display the contents of a file"""
        path = path[0]
        tmp_file_path = self.TMP_PATH + 'tmp'

        if not os.path.exists(self.TMP_PATH):
            os.makedirs(self.TMP_PATH)

        f = self.n.download(self.current_path + path, tmp_file_path)
        f = open(tmp_file_path, 'r')

        self.stdout.write(f.read())
        self.stdout.write("\n")
    
    def complete_cat(self, text, line, start_idx, end_idx):
        return self.file_complete(text)

    def do_mkdir(self, path):
        """create a new directory"""
        path = path[0]

        self.n.makeDirectory(self.current_path + path)
        self.dirs = self.dir_complete()

    def do_rm(self, path):
        path = path[0]

        """delete a file or directory"""
        self.n.delete(self.current_path + path)
        self.dirs = self.dir_complete()
        self.files = self.file_complete()

    def do_mv(self, from_path, to_path, nothing = ''):
        """move/rename a file or directory"""
        self.n.doMove(self.current_path + from_path,
                      self.current_path + to_path)

    def complete_mv(self, text, line, start_idx, end_idx):
        return self.dir_complete(text)

    def do_account_info(self):
        """display account information"""
        s, metadata = self.n.getRegisterUserInfo()
        pprint.PrettyPrinter(indent=2).pprint(metadata)

    def do_exit(self, empty = ''):
        """exit"""
        return True

    def do_get(self, from_path, to_path):
        """
        Copy file from Ndrive to local file and print out out the metadata.

        Examples:
          Ndrive> get file.txt ~/ndrive-file.txt
        """
        to_file = open(os.path.expanduser(to_path), "wb")

        self.n.download(self.current_path + "/" + from_path, to_path)

    def do_put(self, from_path, to_path):
        """
        Copy local file to Ndrive

        Examples:
          Ndrive> put ~/test.txt ndrive-copy-test.txt
        """
        from_file = open(os.path.expanduser(from_path), "rb")

        self.n.put(self.current_path + "/" + from_path, to_path)

    def do_search(self, string):
        """Search Ndrive for filenames containing the given string."""
        results = self.n.doSearch(string, full_path = self.current_path)

        if results:
            for r in results:
                self.stdout.write("%s\n" % r['path'])

    def do_help(self, empty = ''):
        # Find every "do_" attribute with a non-empty docstring and print
        # out the docstring.
        all_names = dir(self)
        cmd_names = []
        for name in all_names:
            if name[:3] == 'do_':
                cmd_names.append(name[3:])
        cmd_names.sort()
        for cmd_name in cmd_names:
            f = getattr(self, 'do_' + cmd_name)
            if f.__doc__:
                self.stdout.write('%s: %s\n' % (cmd_name, f.__doc__))

    # the following are for command line magic and aren't Ndrive-related
    def emptyline(self):
        pass

    def do_EOF(self, line):
        self.stdout.write('\n')
        return True

    def parseline(self, line):
        parts = shlex.split(line)
        if len(parts) == 0:
            return None, None, line
        else:
            return parts[0], parts[1:], line