#!/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 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 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() if main.config["API"]["Enabled"]: api = API() api.app.run(main.config["API"]["Address"], main.config["API"]["Port"]) else: reactor.run()