Pārlūkot izejas kodu

Make leetify, numerics and special_signs work

Holger Brunn 10 gadi atpakaļ
vecāks
revīzija
9dbc0738aa
4 mainītis faili ar 25 papildinājumiem un 19 dzēšanām
  1. 1 1
      pwman/tests/db_tests.py
  2. 5 12
      pwman/ui/base.py
  3. 12 6
      pwman/ui/tools.py
  4. 7 0
      pwman/util/config.py

+ 1 - 1
pwman/tests/db_tests.py

@@ -22,11 +22,11 @@ from pwman.data.tags import TagNew
 from pwman.data import factory
 from pwman.data.drivers.sqlite import DatabaseException, SQLiteDatabaseNewForm
 from pwman.util import config
+from pwman.util.config import get_pass_conf
 from pwman.util.generator import leetlist
 from pwman.util.crypto import CryptoEngine, CryptoBadKeyException
 from pwman import default_config, set_xsel
 from pwman.ui import get_ui_platform
-from pwman.ui.base import get_pass_conf
 from pwman.ui.tools import CMDLoop, CliMenuItem
 from pwman import (parser_options, get_conf_options, get_conf_file, set_umask)
 from pwman.data.database import __DB_FORMAT__

+ 5 - 12
pwman/ui/base.py

@@ -30,6 +30,7 @@ import os
 import time
 import select as uselect
 import ast
+from pwman.util.config import get_pass_conf
 from pwman.ui import tools
 from pwman.ui.tools import CliMenuItem
 from colorama import Fore
@@ -38,16 +39,6 @@ from pwman.ui.tools import CMDLoop
 import getpass
 from pwman.data.tags import TagNew
 
-
-def get_pass_conf():
-    numerics = config.get_value("Generator", "numerics").lower() == 'true'
-    # TODO: allow custom leetifying through the config
-    leetify = config.get_value("Generator", "leetify").lower() == 'true'
-    special_chars = config.get_value("Generator", "special_chars"
-                                     ).lower() == 'true'
-    return numerics, leetify, special_chars
-
-
 class HelpUI(object): # pragma: no cover
     """
     this class holds all the UI help functionality.
@@ -560,7 +551,7 @@ class BaseCommands(BaseUI, HelpUI):
                 numerics, leet, s_chars = get_pass_conf()
                 password = self.get_password(argsgiven=0,
                                              numerics=numerics,
-                                             symbols=leet,
+                                             leetify=leet,
                                              special_signs=s_chars)
             url = self.get_url()
             notes = self.get_notes()
@@ -634,7 +625,9 @@ class BaseCommands(BaseUI, HelpUI):
                      symbols=False, special_signs=False,
                      reader=getpass.getpass, length=None):
         return tools.getpassword("Password (Blank to generate): ",
-                                 reader=reader, length=length, leetify=leetify)
+                                 reader=reader, length=length, leetify=leetify,
+                                 special_signs=special_signs, symbols=symbols,
+                                 numerics=numerics)
 
 
 class Aliases(BaseCommands): # pragma: no cover

+ 12 - 6
pwman/ui/tools.py

@@ -29,6 +29,7 @@ import struct
 import os
 import colorama
 from pwman.data.tags import TagNew as Tag
+from pwman.util.config import get_pass_conf
 import pwman.util.generator as generator
 
 if sys.platform != 'win32':
@@ -151,17 +152,19 @@ def getpassword(question, argsgiven=None,
             except ValueError:
                 print("please enter a proper integer")
 
-        password, dumpme = generator.generate_password(length, length,
-                                                       True, leetify,
-                                                       numerics,
-                                                       special_signs)
+        password, dumpme = generator.generate_password(
+            length, length, True, symbols=leetify, numerics=numerics,
+            special_chars=special_signs)
         print ("New password: %s" % (password))
         return password
     # no args given
     while True:
         a1 = reader(question.ljust(width))
         if not a1:
-            return getpassword('', argsgiven=1)
+            return getpassword(
+                    '', argsgiven=1, width=width, echo=echo, reader=reader,
+                    numerics=numerics, leetify=leetify, symbols=symbols,
+                    special_signs=special_signs, length=length)
         a2 = reader("[Repeat] %s" % (question.ljust(width)))
         if a1 == a2:
             if leetify:
@@ -264,7 +267,10 @@ class CMDLoop(object):  # pragma: no cover
                     self.items[0].getter = new_node.username
                     self.items[0].setter = new_node.username
                 elif selection == 1:  # for password
-                    new_node.password = getpassword('New Password:')
+                    numerics, leet, s_chars = get_pass_conf()
+                    new_node.password = getpassword(
+                            'New Password:', numerics=numerics, leetify=leet,
+                            special_signs=s_chars)
                     self.items[1].getter = new_node.password
                     self.items[1].setter = new_node.password
                 elif selection == 2:

+ 7 - 0
pwman/util/config.py

@@ -145,3 +145,10 @@ def save(filename=None):
         fp.close()
     except IOError as e:
         raise ConfigException(str(e))
+
+def get_pass_conf():
+    numerics = get_value("Generator", "numerics").lower() == 'true'
+    # TODO: allow custom leetifying through the config
+    leetify = get_value("Generator", "leetify").lower() == 'true'
+    special_chars = get_value("Generator", "special_chars").lower() == 'true'
+    return numerics, leetify, special_chars