#!/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 from twisted.internet.ssl import DefaultOpenSSLContextFactory import core.logstash import main import modules.counters 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 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 if __name__ == "__main__": listener = ServerFactory() if main.config["Listener"]["UseSSL"] is True: reactor.listenSSL( main.config["Listener"]["Port"], listener, DefaultOpenSSLContextFactory( main.certPath + main.config["Key"], main.certPath + main.config["Certificate"], ), interface=main.config["Listener"]["Address"], ) log( "Threshold running with SSL on %s:%s" % (main.config["Listener"]["Address"], main.config["Listener"]["Port"]) ) else: reactor.listenTCP( main.config["Listener"]["Port"], listener, interface=main.config["Listener"]["Address"], ) log("Threshold running on %s:%s" % (main.config["Listener"]["Address"], main.config["Listener"]["Port"])) if main.config["RelayAPI"]["Enabled"]: relay = RelayFactory() if main.config["RelayAPI"]["UseSSL"] is True: reactor.listenSSL( main.config["RelayAPI"]["Port"], relay, DefaultOpenSSLContextFactory( main.certPath + main.config["Key"], main.certPath + main.config["Certificate"], ), interface=main.config["RelayAPI"]["Address"], ) log( "Threshold relay running with SSL on %s:%s" % (main.config["RelayAPI"]["Address"], main.config["RelayAPI"]["Port"]) ) else: reactor.listenTCP( main.config["RelayAPI"]["Port"], relay, interface=main.config["RelayAPI"]["Address"], ) log( "Threshold relay running on %s:%s" % (main.config["RelayAPI"]["Address"], main.config["RelayAPI"]["Port"]) ) for net in main.network.keys(): main.network[net].start_bots() modules.counters.setupCounterLoop() reactor.run()