def check_dependencies(): if python_version() == 2: sys.exit( color.color("red") + "[X] " + color.color("yellow") + "Python2 is No longer supported!" + color.color("reset")) # check os compatibility from config import nettacker_paths, nettacker_database_config external_modules = open( nettacker_paths()["requirements_path"]).read().split('\n') for module_name in external_modules: try: __import__( module_name.split('==')[0] if 'library_name=' not in module_name else module_name.split('library_name=')[1].split( )[0]) except Exception: if 'is_optional=true' not in module_name: sys.exit( color.color("red") + "[X] " + color.color("yellow") + "pip3 install -r requirements.txt ---> " + module_name.split('#')[0].strip() + " not installed!" + color.color("reset")) logo() from core.alert import messages if not ('linux' in os_name() or 'darwin' in os_name()): die_failure(messages("error_platform")) if not os.path.exists(nettacker_paths()["home_path"]): try: os.mkdir(nettacker_paths()["home_path"]) os.mkdir(nettacker_paths()["tmp_path"]) os.mkdir(nettacker_paths()["results_path"]) except Exception: die_failure("cannot access the directory {0}".format( nettacker_paths()["home_path"])) if not os.path.exists(nettacker_paths()["tmp_path"]): try: os.mkdir(nettacker_paths()["tmp_path"]) except Exception: die_failure("cannot access the directory {0}".format( nettacker_paths()["results_path"])) if not os.path.exists(nettacker_paths()["results_path"]): try: os.mkdir(nettacker_paths()["results_path"]) except Exception: die_failure("cannot access the directory {0}".format( nettacker_paths()["results_path"])) if nettacker_database_config()["DB"] == "sqlite": try: if not os.path.isfile(nettacker_paths()["database_path"]): from database.sqlite_create import sqlite_create_tables sqlite_create_tables() except Exception: die_failure("cannot access the directory {0}".format( nettacker_paths()["home_path"])) elif nettacker_database_config()["DB"] == "mysql": try: from database.mysql_create import (mysql_create_tables, mysql_create_database) mysql_create_database() mysql_create_tables() except Exception: die_failure(messages("database_connection_failed")) elif nettacker_database_config()["DB"] == "postgres": try: from database.postgres_create import postgres_create_database postgres_create_database() except Exception: die_failure(messages("database_connection_failed")) else: die_failure(messages("invalid_database"))
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from sqlalchemy import create_engine from config import nettacker_database_config from database.models import Base from sqlalchemy.exc import OperationalError USER = nettacker_database_config()["USERNAME"] PASSWORD = nettacker_database_config()["PASSWORD"] HOST = nettacker_database_config()["HOST"] PORT = nettacker_database_config()["PORT"] DATABASE = nettacker_database_config()["DATABASE"] def postgres_create_database(): """ when using postgres database, this is the function that is used to create the database for the first time when you the nettacker run module. Args: None Returns: True if success otherwise False """ try: engine = create_engine( 'postgres+psycopg2://{0}:{1}@{2}:{3}/{4}'.format( USER, PASSWORD, HOST, PORT, DATABASE))
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from sqlalchemy import create_engine from database.models import Base from config import nettacker_database_config DATABASE = nettacker_database_config()["DATABASE"] def sqlite_create_tables(): """ when using sqlite database, this is the function that is used to create the database schema for the first time when you run the nettacker module. Args: None Returns: True if success otherwise False """ try: db_engine = create_engine('sqlite:///{0}'.format(DATABASE), connect_args={'check_same_thread': False}) Base.metadata.create_all(db_engine) return True except Exception: return False