コード例 #1
0
ファイル: baseui.py プロジェクト: the-cc-dev/pwman3
 def do_edit(self, args, menu=None):
     ids = self._get_ids(args)
     for i in ids:
         i = int(i)
         node = self._db.getnodes([i])
         if not node:
             print("Node not found ...")
             return
         node = node[0]
         node = node[1:5] + [node[5:]]
         node = Node.from_encrypted_entries(*node)
         if not menu:
             menu = CMDLoop(self.config)
             print("Editing node %d." % (i))
             menu.add(CliMenuItem("Username", node.username))
             menu.add(CliMenuItem("Password", node.password))
             menu.add(CliMenuItem("Url", node.url))
             menunotes = CliMenuItem("Notes", node.notes)
             menu.add(menunotes)
             menu.add(
                 CliMenuItem("Tags",
                             ','.join(map(lambda x: x.decode(),
                                          node.tags))))  # noqa
         menu.run(node)
         self._db.editnode(i, **node.to_encdict())
         # when done with node erase it
         zerome(node._password)
コード例 #2
0
ファイル: baseui.py プロジェクト: donnm/pwman3
    def do_export(self, args):
        """export the database to a given format"""
        try:
            args = ast.literal_eval(args)
        except Exception:
            args = {}

        filename = args.get('filename', 'pwman-export.csv')
        delim = args.get('delimiter', ';')
        nodeids = self._db.listnodes()
        nodes = self._db.getnodes(nodeids)

        with open(filename, 'w') as csvfile:
            writer = csv.writer(csvfile, delimiter=delim)
            writer.writerow(['Username', 'URL', 'Password', 'Notes',
                             'Tags'])
            for node in nodes:
                n = Node.from_encrypted_entries(node[1], node[2], node[3],
                                                node[4],
                                                node[5:])
                tags = n.tags
                tags = ','.join(t.strip().decode() for t in tags)
                r = list([n.username, n.url, n.password, n.notes])
                writer.writerow(r + [tags])

        with open(filename) as f:
            for line in f.readlines():
                print(line)

        print("Successfuly exported database to {}".format(
            os.path.join(os.getcwd(), filename)))
コード例 #3
0
ファイル: baseui.py プロジェクト: gadeleon/pwman3
    def do_edit(self, args, menu=None):
        ids = self._get_ids(args)
        for i in ids:
            i = int(i)
            node = self._db.getnodes([i])
            if not node:
                print("Node not found ...")
                return
            node = node[0]
            node = node[1:5] + [node[5:]]
            node = Node.from_encrypted_entries(*node)
            if not menu:
                menu = CMDLoop(self.config)
                print ("Editing node %d." % (i))

                menu.add(CliMenuItem("Username", node.username))
                menu.add(CliMenuItem("Password",  node.password))
                menu.add(CliMenuItem("Url", node.url))
                menunotes = CliMenuItem("Notes", node.notes)
                menu.add(menunotes)
                tgetter = lambda: ', '.join(t for t in node.tags)
                menu.add(CliMenuItem("Tags", tgetter()))
            menu.run(node)
            self._db.editnode(i, **node.to_encdict())
            # when done with node erase it
            zerome(node._password)
コード例 #4
0
ファイル: baseui.py プロジェクト: gadeleon/pwman3
    def do_export(self, args):
        """export the database to a given format"""
        try:
            args = ast.literal_eval(args)
        except Exception:
            args = {}

        filename = args.get('filename', 'pwman-export.csv')
        delim = args.get('delimiter', ';')
        nodeids = self._db.listnodes()
        nodes = self._db.getnodes(nodeids)
        with open(filename, 'w') as csvfile:
            writer = csv.writer(csvfile, delimiter=delim)
            writer.writerow(['Username', 'URL', 'Password', 'Notes',
                             'Tags'])
            for node in nodes:
                n = Node.from_encrypted_entries(node[1], node[2], node[3],
                                                node[4],
                                                node[5:])
                tags = n.tags
                tags = ','.join(t.strip() for t in tags)
                r = list([n.username, n.url, n.password, n.notes])
                writer.writerow(r + [tags])

        print("Successfuly exported database to {}".format(
            os.path.join(os.getcwd(), filename)))
コード例 #5
0
def listnodes(apply=['require_login']):

    global AUTHENTICATED, TAGS, DB

    _filter = None

    if 'POST' in request.method:
        _filter = request.POST.get('tag')
        if _filter:
            DB._filtertags = []
        if _filter == 'None':
            DB._filtertags = []

    nodeids = DB.listnodes()
    raw_nodes = DB.getnodes(nodeids)
    _nodes_inst = []
    for node in raw_nodes:
        _nodes_inst.append(Node.from_encrypted_entries(
            node[1],
            node[2],
            node[3],
            node[4],
            node[5:]))
        _nodes_inst[-1]._id = node[0]
    nodesd = _nodes_inst
    ce = CryptoEngine.get()
    tags = [ce.decrypt(t).decode() for t in DB.listtags()]
    html_nodes = template("index.tpl", nodes=nodesd, tags=tags, request=request,
                          template_lookup=[resource_filename('pwman',
                                                             'ui/templates')])
    return html_nodes
コード例 #6
0
ファイル: baseui.py プロジェクト: the-cc-dev/pwman3
 def _db_entries_to_nodes(self, raw_nodes):
     _nodes_inst = []
     # user, pass, url, notes
     for node in raw_nodes:
         _nodes_inst.append(
             Node.from_encrypted_entries(node[1], node[2], node[3], node[4],
                                         node[5:]))
         _nodes_inst[-1]._id = node[0]
     return _nodes_inst
コード例 #7
0
 def test_8_do_edit_2(self):
     node = self.tester.cli._db.getnodes([1])[0]
     node = node[1:5] + [node[5:]]
     node = Node.from_encrypted_entries(*node)
     sys.stdin = StringIO(("2\ns3kr3t\nx\n"))
     self.tester.cli.do_edit('1')
     v = StringIO()
     sys.stdin = sys.__stdin__
     sys.stdout = v
     self.tester.cli.do_print('1')
     self.assertIn('\x1b[31mPassword:\x1b[0m s3kr3t', v.getvalue())
コード例 #8
0
 def test_8_do_edit_1(self):
     node = self.tester.cli._db.getnodes([1])[0]
     node = node[1:5] + [node[5:]]
     node = Node.from_encrypted_entries(*node)
     sys.stdin = StringIO(("1\nfoo\nx\n"))
     self.tester.cli.do_edit('1')
     v = StringIO()
     sys.stdin = sys.__stdin__
     sys.stdout = v
     self.tester.cli.do_print('1')
     self.assertIn('\x1b[31mUsername:\x1b[0m foo', v.getvalue())
コード例 #9
0
def view_node(no):
    global DB
    node = DB.getnodes([no])
    node = DB.getnodes([no])[0]
    node = Node.from_encrypted_entries(node[1],
                                       node[2],
                                       node[3],
                                       node[4],
                                       node[5:])
    return template("ajax.tpl", request=request, node=node,
                    template_lookup=templates_path)
コード例 #10
0
ファイル: baseui.py プロジェクト: gadeleon/pwman3
 def _db_entries_to_nodes(self, raw_nodes):
     _nodes_inst = []
     # user, pass, url, notes
     for node in raw_nodes:
         _nodes_inst.append(Node.from_encrypted_entries(
             node[1],
             node[2],
             node[3],
             node[4],
             node[5:]))
         _nodes_inst[-1]._id = node[0]
     return _nodes_inst
コード例 #11
0
ファイル: test_mongodb.py プロジェクト: gadeleon/pwman3
    def test_5_add_node(self):
        innode = [u"TBONE", u"S3K43T", u"example.org", u"some note",
                  [u"bartag", u"footag"]]

        kwargs = {
            "username":innode[0], "password": innode[1],
            "url": innode[2], "notes": innode[3], "tags": innode[4]
        }

        node = Node(clear_text=True, **kwargs)
        self.db.add_node(node)
        outnode = self.db.getnodes([1])[0]
        no = outnode[1:5]
        no.append(outnode[5:])
        o = Node.from_encrypted_entries(*no)
        self.assertEqual(list(node), list(o))
コード例 #12
0
def edit_node(no=None):
    global DB

    if 'POST' in request.method:
        submit_node(no, request)

    if no:
        node = DB.getnodes([no])[0]
        node = Node.from_encrypted_entries(node[1],
                                           node[2],
                                           node[3],
                                           node[4],
                                           node[5:])

    output = template('edit.tpl', node=node,  
                      template_lookup=templates_path)
    return output
コード例 #13
0
    def test_5_add_node(self):
        innode = [
            u"TBONE", u"S3K43T", u"example.org", u"some note",
            [u"bartag", u"footag"]
        ]

        kwargs = {
            "username": innode[0],
            "password": innode[1],
            "url": innode[2],
            "notes": innode[3],
            "tags": innode[4]
        }

        node = Node(clear_text=True, **kwargs)
        self.db.add_node(node)
        outnode = self.db.getnodes([1])[0]
        no = outnode[1:5]
        no.append(outnode[5:])
        o = Node.from_encrypted_entries(*no)
        self.assertEqual(list(node), list(o))