Exemple #1
0
def celery():
    print_topic("Celery")
    print_info("Celery is used for concurrent operation. It will spawn multiple\
               workes on multiple CPU cores and possibly even on multiple\
               hosts, running as a cluster. Disabling Celery will make\
               NodeDefender as a single process. Celery requires AMQP or Redis\
               to communicate between workes")
    enabled = None
    while enabled is None:
        enabled = prompt("Enable Celery(Y/N)").upper()
        if 'Y' in enabled:
            enabled = True
        elif 'N' in enabled:
            enabled = False
        else:
            enabled = None
    if not enabled:
        NodeDefender.config.celery.set(enabled = False)
        if NodeDefender.config.celery.write():
            print_info("Celery- config successfully written")
        return True
    
    broker = None
    while broker is None:
        broker = prompt("Enter Broker type(AMQP or Redis)").lower()
        if broker not in supported_brokers:
            broker = None

    host = None
    while host is None:
        host = prompt("Enter Server Address")

    port = None
    while port is None:
        port = prompt("Enter Server Port")

    database = ''
    while not database:
        database = prompt("Enter Database")

    server_name = ""
    while not server_name:
        print_info("Server name is needed for generating same URL")
        print_info("Format should be HOST or HOST:PORT")
        server_name = prompt("Enter Server name")
    NodeDefender.config.celery.set(enabled=True,
                                   broker=broker,
                                   host=host,
                                   port=port,
                                   database=database,
                                  server_name=server_name)
    if NodeDefender.config.celery.write():
        print_info("Celery- config successfully written")
    return True
Exemple #2
0
def general():
    port = None
    while port is None:
        port = prompt("Which port should the server be running on")

    print_info("Security Key is used to Encrypt Password etc.")
    key = None
    while key is None:
        key = prompt("Enter Secret Key")

    print_info("Salt is used to genereate URLS and more.")
    salt = None
    while salt is None:
        salt = prompt("Please enter Salt")

    print_info("You can either have users register by themselfs on the\
               authentication- page or via invite mail. Invite mail requires\
               that you also enable mail- support so that NodeDefender can send\
               invitation- mail and such. Superuser can still administrate\
               users in the same way.")
    self_registration = None
    while self_registration is None:
        self_registration = prompt("Enable self-registration(Y/N)").upper()
        if 'Y' in self_registration:
            self_registration = True
        elif 'N' in self_registration:
            self_registration = False
        else:
            self_registration = None

    NodeDefender.config.general.set(port=port,
                                    key=key,
                                    salt=salt,
                                    self_registration=self_registration)
    if NodeDefender.config.general.write():
        print_info("General- config successfully written")
    return True
Exemple #3
0
def redis():
    print_topic("Redis")
    print_info("Redis is used to store temporary data(Current heat of sensor\
               etc). With redis enabled it will store the data in Redis.\
               Disabled will store in as a local class- object")
    enabled = None
    while enabled is None:
        enabled = prompt("Enable Redis(Y/N)").upper()
        if 'Y' in enabled:
            enabled = True
        elif 'N' in enabled:
            enabled = False
        else:
            enabled = None
    if not enabled:
        NodeDefender.config.redis.set(enabled=False)
        if NodeDefender.config.redis.write():
            print_info("Redis- config successfully written")
        return True

    host = None
    while host is None:
        host = prompt("Enter Host Address")

    port = None
    while port is None:
        port = prompt("Enter Server Port")

    database = ''
    while not database:
        database = prompt("Enter Database")
    NodeDefender.config.redis.set(enabled=True,
                                  host=host,
                                  port=port,
                                  database=database)
    if NodeDefender.config.redis.write():
        print_info("Redis- config successfully written")
    return True
Exemple #4
0
def logging():
    print_topic("Logging")
    print_info("Logging to store runtime- information.")
    print_info("If disabled it will be printed to standard output")

    enabled = None
    while enabled is None:
        enabled = prompt("Enable Logging(Y/N)").upper()
        if 'Y' in enabled:
            enabled = True
        elif 'N' in enabled:
            enabled = False
        else:
            enabled = None

    if not enabled:
        NodeDefender.config.logging.set(enabled=False)
        if NodeDefender.config.logging.write():
            print_info("Logging- config successfully written")
        return False

    engine = None
    while engine is None:
        engine = prompt("Enter Logging Type(Syslog/Local)").lower()
        if engine not in supported_engines:
            engine = None

    filepath = None
    host = None
    port = None
    if engine == "local":
        while not filepath:
            print_info("Enter filename for loggingfile.")
            print_info("File will be stored in you datafolder")
            filepath = prompt("Please Filename")

    elif engine == "syslog":
        while not server:
            server = prompt('Enter Syslog IP')

        while not port:
            port = prompt('Enter Syslog Port')

    NodeDefender.config.logging.set(enabled=True,
                                    engine=engine,
                                    filepath=filepath,
                                    host=host,
                                    port=port,
                                    level="debug")
    if NodeDefender.config.logging.write():
        print_info("Logging- config successfully written")
    return True
Exemple #5
0
def mail():
    print_topic("Mail")
    print_info("Mail can be used for registering users. Can also be used\
               for password- recovery, sending group- infomation, updates\
               about Nodes, icpes, sensors and much mode")
    enabled = None
    while enabled is None:
        enabled = prompt("Enable Mail(Y/N)").upper()
        if 'Y' in enabled:
            enabled = True
        elif 'N' in enabled:
            enabled = False
        else:
            enabled = None
    if not enabled:
        NodeDefender.config.mail.set(enabled=False)
        if NodeDefender.config.mail.write():
            print_info("Mail- config successfully written")
        return False

    host = None
    while host is None:
        host = prompt("Enter Server Address")

    port = None
    while port is None:
        port = prompt("Enter Server Port")

    tls = None
    while tls is None:
        tls = prompt("TLS Enabled(Y/N)?")
        if tls[0].upper() == 'Y':
            tls = True
        elif tls[0].upper() == 'N':
            tls = False
        else:
            tls = None

    ssl = None
    while ssl is None:
        ssl = prompt("SSL Enabled(Y/N)?")
        if ssl[0].upper() == 'Y':
            ssl = True
        elif ssl[0].upper() == 'N':
            ssl = False
        else:
            ssl = None

    username = None
    while username is None:
        username = prompt('Username')

    password = None
    while password is None:
        password = prompt('Password')

    NodeDefender.config.mail.set(enabled=True,
                                 host=host,
                                 port=port,
                                 tls=tls,
                                 ssl=ssl,
                                 username=username,
                                 password=password)
    if NodeDefender.config.mail.write():
        print_info("Mail- config successfully written")
    return True
Exemple #6
0
def database():
    print_topic('Database')
    print_info("Database is used to store presistant data.")
    print_info(
        "By having it disabled the data will be store in run-time RAM for the\
               session")
    enabled = None
    while enabled is None:
        enabled = prompt("Enable Database(Y/N)").upper()
        if 'Y' in enabled:
            enabled = True
        elif 'N' in enabled:
            enabled = False
        else:
            enabled = None

    if not enabled:
        NodeDefender.config.database.set(enabled=False)
        if NodeDefender.config.database.write():
            print_info("Database- config successfully written")
        return False

    supported_databases = ['mysql', 'sqlite']
    engine = None
    while engine is None:
        engine = prompt("Enter DB Engine(SQLite, MySQL)").lower()
        if engine not in supported_databases:
            engine = None

    host = None
    port = None
    username = None
    password = None
    database = None

    if engine == "mysql":
        while not host:
            host = prompt('Enter Server Address')

        while not port:
            port = prompt('Enter Server Port')

        while not username:
            username = prompt('Enter Username')

        while not password:
            password = prompt('Enter Password')

        while not database:
            database = prompt("Enter Database Name")

    filepath = None
    if engine == "sqlite":
        while not filepath:
            print_info("Filename for SQLite Database")
            print_info("SQLite will be stored as file in data- folder")
            print_info(NodeDefender.config.datafolder)
            print_info("Do not use any slashes in the filename")
            filepath = prompt("Enter File Path")

    NodeDefender.config.database.set(enabled=True,
                                     engine=engine,
                                     host=host,
                                     port=port,
                                     username=username,
                                     password=password,
                                     database=database,
                                     filepath=filepath)
    if NodeDefender.config.database.write():
        print_info("Database- config successfully written")
    return True