示例#1
0
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