|  | @@ -25,55 +25,53 @@ import os.path
 | 
	
		
			
				|  |  |  import argparse
 | 
	
		
			
				|  |  |  import sys
 | 
	
		
			
				|  |  |  import re
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -_saveconfig = True
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -parser = argparse.ArgumentParser(description=('pwman3 - a command line '
 | 
	
		
			
				|  |  | -                                              'password manager.'))
 | 
	
		
			
				|  |  | -parser.add_argument('-c', '--config', dest='cfile',
 | 
	
		
			
				|  |  | -                    default=os.path.expanduser("~/.pwman/config"),
 | 
	
		
			
				|  |  | -                    help='cofiguration file to read')
 | 
	
		
			
				|  |  | -parser.add_argument('-d', '--database', dest='dbase')
 | 
	
		
			
				|  |  | -parser.add_argument('-e', '--encryption', dest="algo",
 | 
	
		
			
				|  |  | -                    help=("Possible options are: AES(default), ARC2, ARC4, "
 | 
	
		
			
				|  |  | -                          "Blowfish, CAST, DES, DES3, IDEA, RC5"))
 | 
	
		
			
				|  |  | -parser.add_argument('-k', '--convert', dest='dbconvert',
 | 
	
		
			
				|  |  | -                    action='store_true', default=False,
 | 
	
		
			
				|  |  | -                    # os.path.expanduser('~/.pwman/pwman.db'),
 | 
	
		
			
				|  |  | -                    help=("Convert old DB format to version >= 0.4."
 | 
	
		
			
				|  |  | -                          " The database that will be converted is the"
 | 
	
		
			
				|  |  | -                          " one found in the config file, or the one given"
 | 
	
		
			
				|  |  | -                          " as command line argument.")
 | 
	
		
			
				|  |  | -                    )
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -parser.add_argument('-t', '--test',  help="Run pwman from current directory \
 | 
	
		
			
				|  |  | -without installation", action="store_true")
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -args = parser.parse_args()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -if args.test:
 | 
	
		
			
				|  |  | -    sys.path.insert(0, os.getcwd())
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -from pwman.util.crypto import CryptoEngine
 | 
	
		
			
				|  |  | -from pwman import default_config, which
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -if 'darwin' in sys.platform:
 | 
	
		
			
				|  |  | -    from pwman.ui.mac import PwmanCliMacNew as PwmanCliNew
 | 
	
		
			
				|  |  | -    OSX = True
 | 
	
		
			
				|  |  | -elif 'win' in sys.platform:
 | 
	
		
			
				|  |  | -    from pwman.ui.win import PwmanCliWinNew as PwmanCliNew
 | 
	
		
			
				|  |  | -    OSX = False
 | 
	
		
			
				|  |  | -else:
 | 
	
		
			
				|  |  | -    from pwman.ui.cli import PwmanCliNew
 | 
	
		
			
				|  |  | -    OSX = False
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  from pwman.ui.tools import CLICallback
 | 
	
		
			
				|  |  |  import pwman.util.config as config
 | 
	
		
			
				|  |  |  import pwman.data.factory
 | 
	
		
			
				|  |  |  from pwman.data.convertdb import PwmanConvertDB
 | 
	
		
			
				|  |  | +from pwman.util.crypto import CryptoEngine
 | 
	
		
			
				|  |  | +from pwman import default_config, which
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +_saveconfig = True
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def get_ui_platform():
 | 
	
		
			
				|  |  | +    if 'darwin' in sys.platform:
 | 
	
		
			
				|  |  | +        from pwman.ui.mac import PwmanCliMacNew as PwmanCliNew
 | 
	
		
			
				|  |  | +        OSX = True
 | 
	
		
			
				|  |  | +    elif 'win' in sys.platform:
 | 
	
		
			
				|  |  | +        from pwman.ui.win import PwmanCliWinNew as PwmanCliNew
 | 
	
		
			
				|  |  | +        OSX = False
 | 
	
		
			
				|  |  | +    else:
 | 
	
		
			
				|  |  | +        from pwman.ui.cli import PwmanCliNew
 | 
	
		
			
				|  |  | +        OSX = False
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return PwmanCliNew, OSX
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def parser_options():
 | 
	
		
			
				|  |  | +    parser = argparse.ArgumentParser(description=('pwman3 - a command line '
 | 
	
		
			
				|  |  | +                                                  'password manager.'))
 | 
	
		
			
				|  |  | +    parser.add_argument('-c', '--config', dest='cfile',
 | 
	
		
			
				|  |  | +                        default=os.path.expanduser("~/.pwman/config"),
 | 
	
		
			
				|  |  | +                        help='cofiguration file to read')
 | 
	
		
			
				|  |  | +    parser.add_argument('-d', '--database', dest='dbase')
 | 
	
		
			
				|  |  | +    parser.add_argument('-e', '--encryption', dest="algo",
 | 
	
		
			
				|  |  | +                        help=("Possible options are: AES(default), ARC2, ARC4, "
 | 
	
		
			
				|  |  | +                              "Blowfish, CAST, DES, DES3, IDEA, RC5"))
 | 
	
		
			
				|  |  | +    parser.add_argument('-k', '--convert', dest='dbconvert',
 | 
	
		
			
				|  |  | +                        action='store_true', default=False,
 | 
	
		
			
				|  |  | +                        # os.path.expanduser('~/.pwman/pwman.db'),
 | 
	
		
			
				|  |  | +                        help=("Convert old DB format to version >= 0.4."
 | 
	
		
			
				|  |  | +                              " The database that will be converted is the"
 | 
	
		
			
				|  |  | +                              " one found in the config file, or the one given"
 | 
	
		
			
				|  |  | +                              " as command line argument."))
 | 
	
		
			
				|  |  | +    parser.add_argument('-t', '--test',  help=("Run pwman from current directory "
 | 
	
		
			
				|  |  | +                                               "without installation"),
 | 
	
		
			
				|  |  | +                        action="store_true")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return parser
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def get_conf_options(args, OSX):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -try:
 | 
	
		
			
				|  |  |      config_dir = os.path.expanduser("~/.pwman")
 | 
	
		
			
				|  |  |      if not os.path.isdir(config_dir):
 | 
	
		
			
				|  |  |          os.mkdir(config_dir)
 | 
	
	
		
			
				|  | @@ -115,11 +113,24 @@ try:
 | 
	
		
			
				|  |  |          print("Could not determine umask from config!")
 | 
	
		
			
				|  |  |          sys.exit(2)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    enc = CryptoEngine.get()
 | 
	
		
			
				|  |  |      dbtype = config.get_value("Database", "type")
 | 
	
		
			
				|  |  |      if not dbtype:
 | 
	
		
			
				|  |  |          printf("Could not read the Database type from the config!")
 | 
	
		
			
				|  |  |          sys.exit(1)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return xselpath, dbtype
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +args = parser_options().parse_args()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if args.test:
 | 
	
		
			
				|  |  | +    sys.path.insert(0, os.getcwd())
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +PwmanCliNew, OSX = get_ui_platform()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +try:
 | 
	
		
			
				|  |  | +    xselpath, dbtype = get_conf_options(args, OSX)
 | 
	
		
			
				|  |  | +    enc = CryptoEngine.get()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      if os.path.exists(config.get_value("Database", "filename")):
 | 
	
		
			
				|  |  |          dbver = pwman.data.factory.check_db_version(dbtype)
 | 
	
		
			
				|  |  |          dbver = float(dbver.strip("\'"))
 |