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
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
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
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
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
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