コード例 #1
0
    def process(self, opt, arg, cli):
        path = arg[1]

        # FIXME duplicate code
        acl_info = arg[2].split(':')
        if len(acl_info) == 4:
            scheme, username, password, perm = acl_info
            id = f'{username}:{password}'
        elif len(acl_info) == 3:
            scheme, id, perm = acl_info
        scheme = scheme.lower()
        perm = perm.lower()
        if opt.unencrypted and scheme == 'digest':
            username, password = id.split(":")
            id = make_digest_acl_credential(username, password)

        try:
            perm_kw = {
                'all': perm == 'all',
                'read': 'r' in perm,
                'write': 'w' in perm,
                'create': 'c' in perm,
                'delete': 'd' in perm,
                'admin': 'a' in perm,
            }
            cli.client.set_acls(path, [make_acl(scheme, id, **perm_kw)],
                                opt.version)
        except NoAuthError as e:
            raise ValueError(f"Authentication is not valid, '{path}'")
        except NoNodeError as e:
            raise ValueError(f"Path '{path}' not exists")
        except Exception as e:
            import traceback
            raise ValueError(f"Illegal arguments! {traceback.format_exc()}")
        return PlainViewModel(content='setAcl successfully', color='info')
コード例 #2
0
 def process(self, opt, arg, cli):
     path = arg[1]
     try:
         data, stat = cli.client.get(path, default_watch if opt.watch else None)
         return PlainViewModel(content=get_stat_content(stat, data), color='info')
     except NoNodeError as e:
         raise ValueError(f"Path '{path}' not exists")
コード例 #3
0
ファイル: set_.py プロジェクト: kaixinbaba/jaina
 def process(self, opt, arg, cli):
     try:
         cli.client.set(arg[1], arg[2].encode(), version=opt.version)
         return PlainViewModel(content=f'[green]set data ok[/green]')
     except NoNodeError as e:
         raise ValueError(f"The path '{arg[1]}' not exists")
     except BadVersionError as e:
         raise ValueError(
             f"The specified version '{opt.version}' does not match")
コード例 #4
0
 def process(self, opt, arg, cli):
     if len(arg) >= 3:
         credential = f'{arg[1]}:{arg[2]}'
     else:
         credential = arg[1]
     try:
         cli.client.add_auth('digest', credential)
     except Exception as e:
         raise ValueError(f"addauth occur error, {e}")
     else:
         return PlainViewModel(content='addauth successfully', color='info')
コード例 #5
0
ファイル: delete_.py プロジェクト: kaixinbaba/jaina
 def process(self, opt, arg, cli):
     try:
         cli.client.delete(arg[1],
                           version=opt.version,
                           recursive=opt.recursion)
         return PlainViewModel(
             content=f'[green]successfully deleted[/green]')
     except NoNodeError as e:
         raise ValueError(f"The path '{arg[1]}' not exists")
     except NotEmptyError as e:
         raise ValueError("Can't delete un-leaf node without '-R' option")
コード例 #6
0
 def process(self, opt, arg, cli):
     arg_len = len(arg)
     if arg_len == 1:
         # 查询所有的alias
         content = self._query_all_alias(cli.config)
     elif arg_len == 2:
         # 查询指定alias
         content = self._query_specify_alias(cli.config, arg[1])
     else:
         # 设置alias
         content = self._set_specify_alias(cli.config, arg)
     return PlainViewModel(content=content)
コード例 #7
0
ファイル: exists_.py プロジェクト: kaixinbaba/jaina
    def process(self, opt, arg, cli):
        if len(arg) == 1 or not arg[1]:
            raise ValueError('<path> is required, use -h to get help')
        r = cli.client.exists(arg[1], default_watch if opt.watch else None)
        if r is None:
            content = False
        elif opt.stat:
            content = get_stat_content(r)
        else:
            content = True

        return PlainViewModel(content=content, color='info')
コード例 #8
0
 def process(self, opt, arg, cli):
     path = arg[1]
     try:
         acl_list, stat = cli.client.get_acls(path)
         acl = acl_list[0]
         c = [
             f'{acl.id.scheme}:{acl.id.id}',
             f'[blue]{int2perm(acl.perms)}[/blue]'
         ]
         if opt.stat:
             c.append('-' * 10)
             c.append(get_stat_content(stat))
         return PlainViewModel(content='\n'.join(c), color='info')
     except NoAuthError as e:
         raise ValueError(f"Authentication is not valid, '{path}'")
     except NoNodeError as e:
         raise ValueError(f"Path '{path}' not exists")
コード例 #9
0
ファイル: create_.py プロジェクト: kaixinbaba/jaina
 def process(self, opt, arg, cli):
     arg_len = len(arg)
     path = arg[1]
     data = arg[2].encode() if arg_len > 2 else b''
     acl = arg[3] if arg_len > 3 else None
     try:
         return PlainViewModel(
             content=cli.client.create(path=path,
                                       value=data,
                                       acl=acl,
                                       ephemeral=opt.ephemeral,
                                       sequence=opt.sequential,
                                       makepath=opt.recursion))
     except NoNodeError as e:
         raise ValueError(
             f"Path '{path}' not exists, try to add '-R' option")
     except NodeExistsError as e:
         raise ValueError(f"Path '{path}' already exists")
コード例 #10
0
 def process(self, opt, arg, cli):
     return PlainViewModel(content=self.confession)
コード例 #11
0
ファイル: history_.py プロジェクト: kaixinbaba/jaina
 def process(self, opt, arg, cli):
     history_list = cli.history.read_history(opt.time)
     return PlainViewModel(content='\n'.join(history_list), color='info')