| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | #!/usr/bin/env python#============================================================================# This file is part of Pwman3.## Pwman3 is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License, version 2# as published by the Free Software Foundation;## Pwman3 is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with Pwman3; if not, write to the Free Software# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA#============================================================================# Copyright (C) 2012-2014 Oz Nahum <nahumoz@gmail.com>#============================================================================# Copyright (C) 2006 Ivan Kelly <ivan@ivankelly.net>#============================================================================from __future__ import print_functionimport sysimport shutilfrom pwman import get_conf_options, get_db_versionfrom pwman import parser_optionsfrom pwman.ui import get_ui_platformfrom pwman.ui.tools import CLICallbackimport pwman.util.config as configimport pwman.data.factoryfrom pwman.data.convertdb import PwmanConvertDBfrom pwman.util.crypto import CryptoEnginedef auto_convert():    try:        #1) Display a message saying that the database will be converted        # This step is done already in get_db_version        dbconvertor = PwmanConvertDB(args, config)        #2) copy the old database : cp ~/.pwman3/pwman.db ~/.pwman3/pwman.backup-2013-11-23-23:15.db        #3) Display a message about the backup file path        # These steps are done by PwmanConvertDB.backup_old_db()        dbconvertor.backup_old_db()        #4) convert the old database to the new format in ~/.pwman3/pwman.db        # This step is done by PwmanConvertDB.create_new_db()        #                      PwmanConvertDB.convert_nodes()        #                      PwmanConvertDB.save_new_nodes_to_db()        #                      PwmanConvertDB.save_old_key()        dbconvertor.read_old_db()        dbconvertor.create_new_db()        dbconvertor.convert_nodes()        dbconvertor.save_new_nodes_to_db()        dbconvertor.save_old_key()        #5) Display a message about the result of the conversion        # add message here ...        #5b) close connection        dbconvertor.db.close()        print("Your datbase %s was successfully converted " % dbconvertor.dbname)        #5c) rename the newly created db to the old name!        shutil.move(dbconvertor.newdb_name, dbconvertor.dbname)        #6) Start the pwman3 normally if all went ok        return True    except Exception, e:        raise edef main(args):    PwmanCliNew, OSX = get_ui_platform(sys.platform)    xselpath, dbtype = get_conf_options(args, OSX)    dbver = get_db_version(config, dbtype, args)    enc = CryptoEngine.get(dbver)    if args.dbconvert:        dbconvertor = PwmanConvertDB(args, config)        dbconvertor.run()        sys.exit(0)    if dbver < 0.4:        ans = raw_input("Would you like to proceed with the conversion of the database"                        " before starting pwman3 [y/N]?")        if ans.lower() != "y":            sys.exit(1)        auto_convert()        dbver = 0.4    db = pwman.data.factory.create(dbtype, dbver)    cli = PwmanCliNew(db, xselpath, CLICallback)    try:        cli.cmdloop()    except KeyboardInterrupt, e:        print(e)    if config.get_value("Global", "save") == "True":        try:            config.save(args.cfile)        except Exception, e:            print ("Error: %s" % e)            sys.exit(-1)if __name__ == '__main__':    args = parser_options().parse_args()    main(args)
 |