|
@@ -9,16 +9,16 @@ when priniting nodes, decrypt is first called by:
|
|
|
this initializes CryptoEngine instance,
|
|
|
and sets the following instance properties:
|
|
|
- _callback
|
|
|
- - _instance
|
|
|
+ - _instance
|
|
|
- _keycrypted
|
|
|
- _timeout
|
|
|
- _cypher
|
|
|
|
|
|
this initialization asks the user for the decryption key
|
|
|
-of the database.
|
|
|
+of the database.
|
|
|
|
|
|
the action that user does called the respective db function which
|
|
|
-returns an ENCRYPTED STRING!,
|
|
|
+returns an ENCRYPTED STRING!,
|
|
|
which is then given to decryption via nodes.py or tags.py which do the
|
|
|
actual decryption on each decrypted string returned from the DB.
|
|
|
|
|
@@ -29,79 +29,84 @@ initializing a _db instance, then we call _db.open()
|
|
|
calling do_print(10) calls _db.getnodes([i]) at this point
|
|
|
the database is still not decrypted ... e.g. _cypher is still empty
|
|
|
|
|
|
-when _db.getnodes([i]) is done node inside print_node is containing
|
|
|
+when _db.getnodes([i]) is done node inside print_node is containing
|
|
|
alot of encrypted string.
|
|
|
|
|
|
now print_node will be called, at which point the different methods
|
|
|
of node instance will decrypt their respective string:
|
|
|
|
|
|
e.g. get_username(self) instide nodes.py:
|
|
|
-
|
|
|
+
|
|
|
self._username -> OexYH7vT/WVpXO0ZBM93RF/l8+o8/QU8ykgDB4qY8+BxBaKylAOeJWEQ+edjpLTU\n
|
|
|
- enc = CryptoEngine.get()
|
|
|
+ enc = CryptoEngine.get()
|
|
|
enc.decrypt(self._username) -> nahum.oz@gmail.com
|
|
|
|
|
|
|
|
|
to see this in work:
|
|
|
-insert
|
|
|
+insert
|
|
|
import ipdb; ipdb.set_trace()
|
|
|
to def getnodes(self, ids) in "pwman/data/drivers/sqlite.py.
|
|
|
|
|
|
continue to pwman3/pwman/ui/cli.py(382) self.print_node(node[0])
|
|
|
-and then step into this function.
|
|
|
-continue further into def print_node(self, node) inside pwman3/pwman/ui/cli.py,
|
|
|
+and then step into this function.
|
|
|
+continue further into def print_node(self, node) inside pwman3/pwman/ui/cli.py,
|
|
|
finally you should step into:
|
|
|
|
|
|
node.get_username()
|
|
|
|
|
|
# New features to implement:
|
|
|
1. Password expiry date - register password date, remind when password is about to expire.
|
|
|
- 2. Make new passwords according to user defined rules.
|
|
|
+ 2. Make new passwords according to user defined rules.
|
|
|
|
|
|
-# build the package with
|
|
|
+# build the package with
|
|
|
|
|
|
python setup.py sdist
|
|
|
|
|
|
-# upload
|
|
|
-
|
|
|
+# upload
|
|
|
+
|
|
|
twine upload dist/pwman.tar.gz
|
|
|
-
|
|
|
+
|
|
|
+# update version on the server
|
|
|
+
|
|
|
+update the version numer
|
|
|
+restart the service pwman.app
|
|
|
+
|
|
|
# db ... https://github.com/coleifer/peewee
|
|
|
http://sqlobject.org/
|
|
|
http://www.sqlalchemy.org/
|
|
|
|
|
|
-
|
|
|
-# when developing pwman3 you might be using a debugger. if so add the following
|
|
|
+
|
|
|
+# when developing pwman3 you might be using a debugger. if so add the following
|
|
|
pre-commit hook to your .git/ :
|
|
|
|
|
|
- $ cat .git/hooks/pre-commit
|
|
|
+ $ cat .git/hooks/pre-commit
|
|
|
#!/bin/bash
|
|
|
VAR=$(git diff --cached | grep "\+*import i*pdb; i*pdb.set_trace")
|
|
|
if [ ! -z "$VAR" ]; then
|
|
|
echo "You've left a BREAK POINT in one of your files! Aborting commit..."
|
|
|
exit 1
|
|
|
- fi
|
|
|
+ fi
|
|
|
|
|
|
make test || exit 1
|
|
|
exit 0
|
|
|
|
|
|
### testing :
|
|
|
|
|
|
-Each class should have at least 95% coverage.
|
|
|
+Each class should have at least 95% coverage.
|
|
|
Each module should be tested as a stand alone with:
|
|
|
|
|
|
- foo.py
|
|
|
- test_foo.py
|
|
|
+ foo.py
|
|
|
+ test_foo.py
|
|
|
|
|
|
The test module test_foo.py should contain at the bottom:
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
-
|
|
|
- # prepare everything for testing
|
|
|
+
|
|
|
+ # prepare everything for testing
|
|
|
try:
|
|
|
unittest.main(verbosity=2)
|
|
|
except SystemExit:
|
|
|
- # clean everything after test was run
|
|
|
+ # clean everything after test was run
|
|
|
|
|
|
You should be able to run the module testing with:
|
|
|
|
|
@@ -110,7 +115,7 @@ You should be able to run the module testing with:
|
|
|
But you should also run the tests as part of a larger scheme with:
|
|
|
|
|
|
|
|
|
- from test_foo import TestFoo
|
|
|
+ from test_foo import TestFoo
|
|
|
...
|
|
|
...
|
|
|
loader = unittest.TestLoader()
|