#!/usr/bin/env python import sys from codecs import getwriter from signal import SIGINT, signal from sys import stderr, stdout from twisted.internet import reactor # Webapp stuff from twisted.internet.protocol import Factory from twisted.internet.ssl import DefaultOpenSSLContextFactory import core.logstash import main import modules.counters from api.views import API from core.relay import RelayFactory from core.server import ServerFactory from utils.cleanup import handler from utils.loaders.command_loader import loadCommands from utils.logging.log import log from os import getenv Factory.noisy = False main.initMain() if "--debug" in sys.argv: # yes really main.config["Debug"] = True if "--trace" in sys.argv: main.config["Trace"] = True loadCommands() core.logstash.init_logstash() signal(SIGINT, handler) # Handle Ctrl-C and run the cleanup routine stdout = getwriter("utf8")(stdout) # this is a generic fix but we all know stderr = getwriter("utf8")(stderr) # it's just for the retards on Rizon using # unicode quit messages for no reason trues = ('true', '1', 't', True) # Main listener listener_address = getenv("THRESHOLD_LISTENER_HOST", main.config["Listener"]["Address"]) listener_port = int(getenv("THRESHOLD_LISTENER_PORT", main.config["Listener"]["Port"])) listener_ssl = getenv("THRESHOLD_LISTENER_SSL", main.config["Listener"]["UseSSL"]) in trues # RelayAPI relay_enabled = getenv("THRESHOLD_RELAY_ENABLED", main.config["RelayAPI"]["Enabled"]) in trues relay_address = getenv("THRESHOLD_RELAY_HOST", main.config["RelayAPI"]["Address"]) relay_port = int(getenv("THRESHOLD_RELAY_PORT", main.config["RelayAPI"]["Port"])) relay_ssl = getenv("THRESHOLD_RELAY_SSL", main.config["RelayAPI"]["UseSSL"]) in trues # Web API api_enabled = getenv("THRESHOLD_API_ENABLED", main.config["API"]["Enabled"]) in trues api_address = getenv("THRESHOLD_API_HOST", main.config["API"]["Address"]) api_port = int(getenv("THRESHOLD_API_PORT", main.config["API"]["Port"])) print("API PORT", api_port) print("ENV PORT", getenv("THRESHOLD_API_PORT")) if __name__ == "__main__": listener = ServerFactory() if listener_ssl is True: reactor.listenSSL( main.config["Listener"]["Port"], listener, DefaultOpenSSLContextFactory( main.certPath + main.config["Key"], main.certPath + main.config["Certificate"], ), interface=listener_address, ) log( "Threshold running with SSL on %s:%s" % (listener_address, listener_port) ) else: reactor.listenTCP( listener_port, listener, interface=listener_address, ) log("Threshold running on %s:%s" % (listener_address, listener_port)) if relay_enabled: relay = RelayFactory() if relay_ssl is True: reactor.listenSSL( relay_port, relay, DefaultOpenSSLContextFactory( main.certPath + main.config["Key"], main.certPath + main.config["Certificate"], ), interface=relay_address, ) log( "Threshold relay running with SSL on %s:%s" % (relay_address, relay_port) ) else: reactor.listenTCP( relay_port, relay, interface=relay_address, ) log( "Threshold relay running on %s:%s" % (relay_address, relay_port) ) for net in main.network.keys(): main.network[net].start_bots() modules.counters.setupCounterLoop() if api_enabled: api = API() api.app.run(api_address, api_port) else: reactor.run()