def import_cuckoo(username, mode, dirpath): version = identify(dirpath) if not version: raise CuckooOperationalError( "The path that you specified is not a proper Cuckoo setup. Please " "point the path to the root of your older Cuckoo setup, i.e., to " "the directory containing the cuckoo.py script!") # TODO Copy over the configuration and ignore the database. if version in ("0.4", "0.4.1", "0.4.2"): raise CuckooOperationalError( "Importing from version 0.4, 0.4.1, or 0.4.2 is not supported as " "there are no database migrations for that version. Please start " "from scratch, your configuration would have been obsolete anyway!" ) print "We've identified a Cuckoo Sandbox %s installation!" % version if os.path.isdir(cwd()) and os.listdir(cwd()): raise CuckooOperationalError( "This Cuckoo Working Directory already exists. Please import to " "a new/clean Cuckoo Working Directory.") # Following are various recursive imports. from cuckoo.apps import migrate_database from cuckoo.main import cuckoo_create print "Reading in the old configuration.." # Port the older configuration. cfg = Config.from_confdir(os.path.join(dirpath, "conf"), loose=True) cfg = migrate_conf(cfg, version) print " configuration has been migrated to the latest version!" print # Create a fresh Cuckoo Working Directory. cuckoo_create(username, cfg, quiet=True) # Ask if the user would like to make a backup of the SQL database. sqldump(cfg["cuckoo"]["database"]["connection"], dirpath) # Run database migrations. if not migrate_database(): raise CuckooOperationalError( "Error migrating your old Cuckoo database!") # Link or copy all of the older results to the new CWD. import_legacy_analyses(mode, dirpath) # Urge the user to run the community command. print "You have successfully imported your old version of Cuckoo!" print "However, in order to get up-to-date, you'll probably want to" print " " * 10, yellow("run the community command") print "by running 'cuckoo community' manually." print "The community command will fetch the latest monitoring updates" print "and Cuckoo Signatures."
def import_cuckoo(username, mode, dirpath): version = identify(dirpath) if not version: raise CuckooOperationalError( "The path that you specified is not a proper Cuckoo setup. Please " "point the path to the root of your older Cuckoo setup, i.e., to " "the directory containing the cuckoo.py script!" ) # TODO Copy over the configuration and ignore the database. if version in ("0.4", "0.4.1", "0.4.2"): raise CuckooOperationalError( "Importing from version 0.4, 0.4.1, or 0.4.2 is not supported as " "there are no database migrations for that version. Please start " "from scratch, your configuration would have been obsolete anyway!" ) print "We've identified a Cuckoo Sandbox %s installation!" % version if os.path.isdir(cwd()) and os.listdir(cwd()): raise CuckooOperationalError( "This Cuckoo Working Directory already exists. Please import to " "a new/clean Cuckoo Working Directory." ) # Following are various recursive imports. from cuckoo.apps import migrate_database from cuckoo.main import cuckoo_create print "Reading in the old configuration.." # Port the older configuration. cfg = Config.from_confdir(os.path.join(dirpath, "conf"), loose=True) cfg = migrate_conf(cfg, version) print " configuration has been migrated to the latest version!" print # Create a fresh Cuckoo Working Directory. cuckoo_create(username, cfg, quiet=True) dburi = cfg["cuckoo"]["database"]["connection"] # Ask if the user would like to make a backup of the SQL database and in # the case of sqlite3, copy/move/symlink cuckoo.db to the CWD. sqldump(dburi, dirpath) movesql(dburi, mode, dirpath) # Run database migrations. if not migrate_database(): raise CuckooOperationalError( "Error migrating your old Cuckoo database!" ) # Link or copy all of the older results to the new CWD. import_legacy_analyses(mode, dirpath) # Urge the user to run the community command. print print "You have successfully imported your old version of Cuckoo!" print "However, in order to get up-to-date, you'll probably want to" print yellow("run the community command"), print "by running", red("'cuckoo community'"), "manually." print "The community command will fetch the latest monitoring updates" print "and Cuckoo Signatures."