예제 #1
0
def getJsonFileObserver(
        name="nucypher.log.json",
        path=USER_LOG_DIR):  # TODO: More configurable naming here?
    _get_or_create_user_log_dir()
    logfile = DailyLogFile(name, path)
    observer = jsonFileLogObserver(outFile=logfile)
    return observer
예제 #2
0
def startLog(configFile):
    logPath = configFile.get("log_path")
    assert logPath
    if not os.path.exists(logPath):
        os.mkdir(logPath)
    log_name = r'center_server.log'
    log.startLogging(DailyLogFile(log_name, logPath))
예제 #3
0
    def __init__(self, path, queue, name):
        threading.Thread.__init__(self)
        self.queue = queue
        self.writer = DailyLogFile(name, path)

        # Don't want this to float around if the rest of the system goes down
        self.setDaemon(True)
예제 #4
0
def start(application, apps=[]):
    "start a twisted instance"
    dispatcher = Dispatcher(apps)  # we only want one instance
    # attach the service to its parent application
    resource = EvokeResource()
    resource.evokeDispatcher = dispatcher
    # serve gzipped content if we can..
    if has_gzip:
        resource = EncodingResourceWrapper(resource, [GzipEncoderFactory()])
    # set up our server
    fileServer = server.Site(resource)
    # use long session
    fileServer.sessionFactory = LongSession
    # start the service
    port = int(list(dispatcher.apps.values())[0]['Config'].port)
    evokeService = internet.TCPServer(port, fileServer)
    evokeService.setServiceParent(application)

    # logging
    # create log dir if necessary
    try:
        os.mkdir('logs')
    except OSError:
        pass
    logfile = DailyLogFile("twistd.log", "logs")
    application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
예제 #5
0
def makeMobileService(config=None):

    # Set dns service
    dnsService = service.MultiService()
    hostsResolver = hosts.Resolver('/etc/hosts')
    tcpFactory = server.DNSServerFactory([hostsResolver])
    internet.TCPServer(3330, tcpFactory,
                       interface='192.168.0.91').setServiceParent(dnsService)

    # Set log file
    logfile = DailyLogFile("mobile.log", "/tmp")
    #application.setComponent(ILogObserver, FileLogObserver(logfile).emit)

    # Set redis service

    # Proxy Server
    agent = MobileAgent(3333, 2)
    agent.setServiceParent(dnsService)
    mobileFactory = IProxyServerFactory(agent)
    mobileService = internet.TCPServer(3331,
                                       mobileFactory,
                                       interface='192.168.0.91')
    mobileService.setServiceParent(dnsService)

    return dnsService
예제 #6
0
파일: tap.py 프로젝트: TomACPace/apnsd
def makeService(config):
    if config['logfile']:
        use_twisted_logging = False
        if use_twisted_logging:
            logfile_base = os.path.basename(config['logfile'])
            logfile_parent = os.path.dirname(config['logfile'])
            logfile = DailyLogFile(logfile_base, logfile_parent)
            self.application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
        else:
            # logging.basicConfig(level = logging.DEBUG)
            logging.basicConfig(filename = config['logfile'], level = config['loglevel'])
    else:
        logging.basicConfig(level = config['loglevel'])
    
    if not config['config']:
        logging.error("Please specify a config file with the -c option.")
        config.opt_help()

    # which reactor are we using?  does this change with the --poll
    # parameter?
    from twisted.internet import reactor
    logging.info("Reactor Type: " + str(reactor))
    apns_daemon = daemon.APNSDaemon(reactor)
    configs.read_listeners_in_config(config['config'], apns_daemon, config.service)
    configs.read_apps_in_config(config['config'], apns_daemon)
    return config.service
예제 #7
0
파일: log.py 프로젝트: Shadiesna/ooni-probe
def start(logfile=None, application_name="ooniprobe"):
    daily_logfile = None

    if not logfile:
        logfile = config.basic.logfile

    log_folder = os.path.dirname(logfile)
    log_filename = os.path.basename(logfile)

    daily_logfile = DailyLogFile(log_filename, log_folder)

    txlog.msg(
        "Starting %s on %s (%s UTC)" %
        (application_name, otime.prettyDateNow(), otime.utcPrettyDateNow()))
    logging.basicConfig()
    python_logging = txlog.PythonLoggingObserver(application_name)

    if config.advanced.debug:
        python_logging.logger.setLevel(logging.DEBUG)
    else:
        python_logging.logger.setLevel(logging.INFO)

    txlog.startLoggingWithObserver(python_logging.emit)

    txlog.addObserver(txlog.FileLogObserver(daily_logfile).emit)
예제 #8
0
파일: twist.py 프로젝트: howiemac/evoke
def start(application, apps=[]):
    "start a twisted instance"
    dispatcher = Dispatcher(apps)  # we only want one instance
    # attach the service to its parent application
    resource = EvokeResource()
    resource.evokeDispatcher = dispatcher
    # serve gzipped content if we can..
    if has_gzip:
        resource = EncodingResourceWrapper(resource, [GzipEncoderFactory()])
    # this assumes that this is a single apps
    # multiserve having been deprecated
    Session = list(dispatcher.apps.values())[0]['Session']
    # set up our server
    fileServer = EvokeSite(resource, Session, requestFactory=EvokeRequest)

    # start the service
    port = int(list(dispatcher.apps.values())[0]['Config'].port)
    evokeService = internet.TCPServer(port, fileServer)
    evokeService.setServiceParent(application)

    # logging
    # create log dir if necessary
    try:
        #        os.mkdir('../logs')
        os.mkdir('logs')
    except OSError:
        pass
#    logfile = DailyLogFile("twistd.log", "../logs")
    logfile = DailyLogFile("twistd.log", "logs")
    application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
예제 #9
0
def get_json_file_observer(
        name="nucypher.log.json",
        path=USER_LOG_DIR):  # TODO: More configurable naming here?
    _ensure_dir_exists(path)
    logfile = DailyLogFile(name, path)
    observer = jsonFileLogObserver(outFile=logfile)
    return observer
예제 #10
0
    def startFactory(self):
        if not os.path.exists(self.logPath):
            os.mkdir(self.logPath)
        log_name = r'gate_server.log'
        log.startLogging(DailyLogFile(log_name, self.logPath))

        super().startFactory()
        print("Client->Gate-Listener Start!")
예제 #11
0
 def initLog(self, app, env, logdir):
     if env == "production":
         from twisted.python.log import ILogObserver, FileLogObserver
         from twisted.python.logfile import DailyLogFile
         logfile = DailyLogFile("production.log", logdir)
         app.setComponent(ILogObserver, FileLogObserver(logfile).emit)
     else:
         log.FileLogObserver.emit = _emit
예제 #12
0
 def writeLog(self, chan, line):
     line = "{} {}\n".format(self.timePrefix(), line)
     if chan.name not in self.logfiles:
         self.logfiles[chan.name] = DailyLogFile(
             chan.name, self.ircd.servconfig["app_log_dir"])
     logFile = self.logfiles[chan.name]
     if logFile.shouldRotate():
         logFile.rotate()
     logFile.write(line)
예제 #13
0
    def observer(event):
        message = formatEvent(event)
        logType = event.get('type')

        if logType is not None and logType not in customLogs:
            customLogs[logType] = DailyLogFile(logType + '.log', logDir)

        logfile = customLogs.get(logType, consoleLogFile)
        logfile.write(message + '\n')
        logfile.flush()
예제 #14
0
    def logdir_observer(self, event):
        message = formatEvent(event)
        log_type = event.get('type')

        if log_type is not None and log_type not in self.custom_logs:
            self.custom_logs[log_type] = DailyLogFile(log_type + '.log',
                                                      self.logdir)

        logfile = self.custom_logs.get(log_type, self.console_logfile)
        logfile.write(message + '\n')
        logfile.flush()
예제 #15
0
파일: log.py 프로젝트: FleX-iBeL/cuwo
 def on_load(self):
     config = self.server.config.base
     logfile = config.log_name
     if config.rotate_daily:
         create_file_path(logfile)
         logging_file = DailyLogFile(logfile, '.')
     else:
         logging_file = open_create(logfile, 'a')
     self.file_observer = log.FileLogObserver(logging_file)
     log.addObserver(self.file_observer.emit)
     log.msg('cuwo server started on %s' % time.strftime('%c'))
     self.observer = log.startLogging(sys.stdout)  # force twisted logging
예제 #16
0
파일: main.py 프로젝트: sharkrun/ulearf
def main():
    workroot = os.path.dirname(os.path.abspath(__file__))

    logdir = os.path.join(workroot, "trace", 'twisted')
    if not os.path.isdir(logdir):
        os.makedirs(logdir)
    log_file = DailyLogFile("server.log", logdir)
    log.startLogging(log_file)

    port = GetSysConfigInt("server_port", 8885)

    reactor.suggestThreadPoolSize(20)

    webserver = WebService(workroot)
    reactor.listenTCP(port, server.Site(webserver.get_resource(), timeout=10))
    reactor.run()
예제 #17
0
파일: log.py 프로젝트: rrana/ooni-probe
def start(logfile=None, application_name="ooniprobe"):
    daily_logfile = None

    if not logfile:
        logfile = config.basic.logfile

    log_folder = os.path.dirname(logfile)
    log_filename = os.path.basename(logfile)

    daily_logfile = DailyLogFile(log_filename, log_folder)

    txlog.msg("Starting %s on %s (%s UTC)" %  (application_name, otime.prettyDateNow(),
                                                 otime.utcPrettyDateNow()))

    txlog.startLoggingWithObserver(LogWithNoPrefix(sys.stdout).emit)
    txlog.addObserver(txlog.FileLogObserver(daily_logfile).emit)
예제 #18
0
파일: log.py 프로젝트: shivai/ooni-probe
    def start(self, logfile=None, application_name="ooniprobe"):
        from ooni.settings import config

        if not logfile:
            logfile = os.path.expanduser(config.basic.logfile)

        log_folder = os.path.dirname(logfile)
        if (not os.access(log_folder, os.W_OK) or
            (os.path.exists(logfile) and not os.access(logfile, os.W_OK))):
            # If we don't have permissions to write to the log_folder or
            # logfile.
            log_folder = config.running_path
            logfile = os.path.join(log_folder, "ooniprobe.log")

        self.log_filepath = logfile

        mkdir_p(log_folder)

        log_filename = os.path.basename(logfile)
        file_log_level = levels.get(config.basic.loglevel, levels['INFO'])
        stdout_log_level = levels['INFO']
        if config.advanced.debug:
            stdout_log_level = levels['DEBUG']

        if config.basic.rotate == 'daily':
            logfile = DailyLogFile(log_filename, log_folder)
        elif config.basic.rotate == 'length':
            logfile = LogFile(log_filename,
                              log_folder,
                              rotateLength=int(
                                  human_size_to_bytes(
                                      config.basic.rotate_length)),
                              maxRotatedFiles=config.basic.max_rotated_files)
        else:
            logfile = open(os.path.join(log_folder, log_filename), 'a')

        self.fileObserver = MsecLogObserver(logfile, log_level=file_log_level)
        self.stdoutObserver = StdoutStderrObserver(sys.stdout,
                                                   log_level=stdout_log_level)

        tw_log.startLoggingWithObserver(self.fileObserver.emit)
        tw_log.addObserver(self.stdoutObserver.emit)

        tw_log.msg("Starting %s on %s (%s UTC)" %
                   (application_name, otime.prettyDateNow(),
                    otime.prettyDateNowUTC()))
예제 #19
0
    def start_component(config):
        logdir = os.path.join(component.component_root_path(), 'logs')
        if not os.path.exists(logdir):
            os.makedirs(logdir)

        gitignorepath = os.path.join(logdir, '.gitignore')
        if not os.path.isfile(gitignorepath):
            with open(gitignorepath, 'w') as f:
                f.write('*')

        log_file = DailyLogFile('daily.log', logdir)
        # twisted.python.log.addObserver(log_critical)
        twisted.python.log.addObserver(PrintingLogObserver(log_file))

        print(ascii_brand)

        print('Crossbar host is: {}'.format(crossbar_host))
        session = component(config)  # type: CommonSession
        return session
예제 #20
0
def setup_logging(log_level, log_name, log_directory=""):
    """
    Configure the logger to use the specified log file and log level
    """
    log_filter = LogLevelFilterPredicate()
    log_filter.setLogLevelForNamespace(
        "orscanner", LogLevel.levelWithName(log_level.lower()))

    # Set up logging
    log_file = DailyLogFile(log_name, log_directory)
    file_observer = FileLogObserver(log_file, log_event_format)
    console_observer = FileLogObserver(sys.stdout, log_event_format)

    file_filter_observer = FilteringLogObserver(file_observer, (log_filter, ))
    console_filter_observer = FilteringLogObserver(console_observer,
                                                   (log_filter, ))

    globalLogPublisher.addObserver(file_filter_observer)
    globalLogPublisher.addObserver(console_filter_observer)
예제 #21
0
def initLog(log_file, log_path, loglevel=0):
    global log_level, _tracemsg
    log_level = loglevel
    fout = DailyLogFile(log_file, log_path)
    if _tracemsg:
        for msg in _tracemsg:
            fout.write(msg)
            fout.write('\n')
        _tracemsg = None

    class _(log.FileLogObserver):
        log.FileLogObserver.timeFormat = '%m-%d %H:%M:%S.%f'

        def emit(self, eventDict):
            taskinfo = "%r" % stackless.getcurrent()
            eventDict['system'] = taskinfo[9:-2]
            log.FileLogObserver.emit(self, eventDict)

    fl = _(fout)
    log.startLoggingWithObserver(fl.emit)
예제 #22
0
def get_application():
    logfile = DailyLogFile("networktunnel.log", BASE_DIR)

    application = service.Application("networktunnel")
    application.setComponent(ILogObserver, textFileLogObserver(logfile))

    top_service = service.MultiService()

    tunnel_service = TunnelService()
    tunnel_service.setServiceParent(top_service)

    port = conf.getint('remote', 'port', fallback=6778)
    tcp_service = internet.TCPServer(port,
                                     SocksServerFactory(reactor),
                                     interface='0.0.0.0')
    tcp_service.setServiceParent(top_service)

    top_service.setServiceParent(application)

    return application
예제 #23
0
파일: local.py 프로젝트: uees/networktunnel
def get_application():
    logfile = DailyLogFile("local.log", BASE_DIR)

    application = service.Application("Local network tunnel")
    application.setComponent(ILogObserver, textFileLogObserver(logfile))

    top_service = service.MultiService()

    pac_service = PacService(conf.getint('local', 'pac_port', fallback=8080))
    pac_service.setServiceParent(top_service)

    port = conf.getint('local', 'port', fallback=1080)
    tcp_service = internet.TCPServer(port,
                                     TransferServerFactory(reactor),
                                     interface='0.0.0.0')
    tcp_service.setServiceParent(top_service)

    top_service.setServiceParent(application)

    return application
예제 #24
0
    def parse_options(self):
        from optparse import OptionParser

        parser = OptionParser(version="%prog 0.1")
        parser.add_option("-c",
                          "--config",
                          dest="configfile",
                          help="Config file to read application info from.",
                          metavar="CONFIG-FILE")
        parser.add_option("-l",
                          "--logfile",
                          dest="logfile",
                          help="Path of the logfile.",
                          metavar="LOG-FILE")

        print "=" * 80
        (options, args) = parser.parse_args()

        if not options.configfile:
            parser.error(
                "Please specify a valid config filename with the -c option")

        if options.logfile:
            use_twisted_logging = False
            if use_twisted_logging:
                logfile_base = os.path.basename(options.logfile)
                logfile_parent = os.path.dirname(options.logfile)
                logfile = DailyLogFile(logfile_base, logfile_parent)
                self.application.setComponent(ILogObserver,
                                              FileLogObserver(logfile).emit)
            else:
                # logging.basicConfig(level = logging.DEBUG)
                logging.basicConfig(filename=options.logfile,
                                    level=logging.DEBUG)
        else:
            logging.basicConfig(level=logging.DEBUG)

        import configs
        configs.read_listeners_in_config(options.configfile, self.apns_daemon,
                                         self.application)
        configs.read_apps_in_config(options.configfile, self.apns_daemon)
예제 #25
0
def make_application():
    ssetings = settings.get('SERVER')
    port = ssetings['port']

    pkg_size = settings.getint("SEED_PKG_SIZE")
    seed_servie = MemoryBasedSeedsService(pkg_size)
    handler = RequestHandler(seed_servie)
    processor = Scheduler.Processor(handler)

    factory = TTwisted.ThriftServerFactory(processor,
        TBinaryProtocol.TBinaryProtocolFactory())
    tcp_service = internet.TCPServer(port, factory)

    application = service.Application(ssetings['name'])
    logfile = DailyLogFile(settings.get('LOG_FILE'), settings.get('LOG_DIR'))
    application.setComponent(ILogObserver, FileLogObserver(logfile).emit)

    multiService = service.MultiService()
    tcp_service.setServiceParent(multiService)
    multiService.setServiceParent(application)
    return application
예제 #26
0
 def start(self, app):
     """
     启动APP
     :param app:
     :return:
     """
     self.start_time = reactor.seconds()
     if self.mode == MULTI_SERVER_MODE:
         self.create_master()
         servers = Config().servers
         for name in servers.keys():
             self.create_node(name)
     elif self.mode == SINGLE_SERVER_MODE:
         self.create_node(self.node)
     else:
         self.create_master()
     reactor.addSystemEventTrigger('after', 'startup', self.startAfter)
     reactor.addSystemEventTrigger('before', 'shutdown', self.stopBefore)
     if "-y" in sys.argv and "-n" not in sys.argv:
         app.setComponent(log.ILogObserver, log.FileLogObserver(DailyLogFile("logs/master.log", "")).emit)
     self.service.setServiceParent(app)
     GlobalObject().server = self
예제 #27
0
파일: log.py 프로젝트: 0xPoly/ooni-probe
    def start(self, logfile=None, application_name="ooniprobe"):
        from ooni.settings import config

        daily_logfile = None

        if not logfile:
            logfile = os.path.expanduser(config.basic.logfile)

        log_folder = os.path.dirname(logfile)
        log_filename = os.path.basename(logfile)

        daily_logfile = DailyLogFile(log_filename, log_folder)

        txlog.msg("Starting %s on %s (%s UTC)" %
                  (application_name, otime.prettyDateNow(),
                   otime.prettyDateNowUTC()))

        self.fileObserver = txlog.FileLogObserver(daily_logfile)
        self.stdoutObserver = LogWithNoPrefix(sys.stdout)

        txlog.startLoggingWithObserver(self.stdoutObserver.emit)
        txlog.addObserver(self.fileObserver.emit)
예제 #28
0
    def __init__(self, configFile):
        global _coreInstance
        if _coreInstance:
            raise Exception("Instance of app already exists")
        _coreInstance = self

        self._deferredStopList = []

        from rcore.config import config
        config.reload(configFile)
        try:
            logDest = config()['log']['destination']
            if logDest == 'syslog':
                from twisted.python import syslog
                try:
                    prefix = config()['log']['syslogprefix']
                except:
                    prefix = os.path.basename(sys.argv[0])
                syslog.startLogging(prefix)
            elif logDest == 'stdout':
                log.startLogging(sys.stdout)
            else:
                dn = os.path.dirname(logDest)
                if not dn:
                    dn = self.get_default_log_dir()
                if dn and not os.path.exists(dn):
                    os.makedirs(dn, 0o755)
                log.startLogging(DailyLogFile(os.path.basename(logDest), dn))
        except Exception as e:
            log.startLogging(sys.stdout)
            log.msg(
                "Setting log from config file is failed. continue with logging to stdout: "
                + str(e))

        from rcore.alarm import Alarm
        self._rpcServices = {}
        self._users = {}
        self.mainContextId = makeContext(MainContext)
        setCurrentContext(self.mainContextId)
예제 #29
0
    def __init__(self, interface: bytes, config_dict: Dict[str, Any]) -> None:
        # logfile path relative to config dir if not abs path
        log_filename = logfile.get()
        if log_filename.strip():  # catches empty filename
            if not os.path.isabs(log_filename):
                log_filename = os.path.join(config.config_dir, log_filename)
            ensure_dir_exists(log_filename)
            if logging_rotate_daily.get():
                logging_file = DailyLogFile(log_filename, '.')
            else:
                logging_file = open(log_filename, 'a')
            predicate = LogLevelFilterPredicate(
                LogLevel.levelWithName(loglevel.get()))
            observers = [
                FilteringLogObserver(textFileLogObserver(sys.stderr),
                                     [predicate]),
                FilteringLogObserver(textFileLogObserver(logging_file),
                                     [predicate])
            ]
            globalLogBeginner.beginLoggingTo(observers)
            log.info('piqueserver started on %s' % time.strftime('%c'))

        self.config = config_dict
        if random_rotation.get():
            self.map_rotator_type = random_choice_cycle
        else:
            self.map_rotator_type = itertools.cycle
        self.default_time_limit = default_time_limit.get()
        self.default_cap_limit = cap_limit.get()
        self.advance_on_win = int(advance_on_win.get())
        self.win_count = itertools.count(1)
        self.bans = NetworkDict()

        # attempt to load a saved bans list
        try:
            with open(os.path.join(config.config_dir, bans_file.get()),
                      'r') as f:
                self.bans.read_list(json.load(f))
            log.debug("loaded {count} bans", count=len(self.bans))
        except FileNotFoundError:
            log.debug("skip loading bans: file unavailable",
                      count=len(self.bans))
        except IOError as e:
            log.error('Could not read bans.txt: {}'.format(e))
        except ValueError as e:
            log.error('Could not parse bans.txt: {}'.format(e))

        self.hard_bans = set()  # possible DDoS'ers are added here
        self.player_memory = deque(maxlen=100)
        if len(self.name) > MAX_SERVER_NAME_SIZE:
            log.warn('(server name too long; it will be truncated to "%s")' %
                     (self.name[:MAX_SERVER_NAME_SIZE]))
        self.respawn_time = respawn_time_option.get()
        self.respawn_waves = respawn_waves.get()

        # since AoS only supports CTF and TC at a protocol level, we need to get
        # the base game mode if we are using a custom game mode.
        game_mode_name = game_mode.get()
        if game_mode_name == 'ctf':
            self.game_mode = CTF_MODE
        elif game_mode.get() == 'tc':
            self.game_mode = TC_MODE
        elif self.game_mode not in [CTF_MODE, TC_MODE]:
            raise ValueError(
                'invalid game mode: custom game mode "{}" does not set '
                'protocol.game_mode to one of TC_MODE or CTF_MODE. Are '
                'you sure the thing you have specified is a game mode?'.format(
                    game_mode_name))

        self.game_mode_name = game_mode.get().split('.')[-1]
        self.team1_name = team1_name.get()[:9]
        self.team2_name = team2_name.get()[:9]
        self.team1_color = tuple(team1_color.get())
        self.team2_color = tuple(team2_color.get())
        self.friendly_fire = friendly_fire.get()
        self.friendly_fire_on_grief = friendly_fire_on_grief.get()
        self.friendly_fire_time = grief_friendly_fire_time.get()
        self.spade_teamkills_on_grief = spade_teamkills_on_grief.get()
        self.fall_damage = fall_damage.get()
        self.teamswitch_interval = teamswitch_interval.get()
        self.teamswitch_allowed = teamswitch_allowed.get()
        self.max_players = max_players.get()
        self.melee_damage = melee_damage.get()
        self.max_connections_per_ip = max_connections_per_ip.get()
        self.passwords = passwords.get()
        self.server_prefix = server_prefix.get()
        self.time_announcements = time_announcements.get()
        self.balanced_teams = balanced_teams.get()
        self.login_retries = login_retries.get()

        # voting configuration
        self.default_ban_time = default_ban_duration.get()

        self.speedhack_detect = speedhack_detect.get()
        self.rubberband_distance = rubberband_distance.get()
        if user_blocks_only.get():
            self.user_blocks = set()
        self.set_god_build = set_god_build.get()
        self.debug_log = debug_log_enabled.get()
        if self.debug_log:
            # TODO: make this configurable
            pyspades.debug.open_debug_log(
                os.path.join(config.config_dir, 'debug.log'))
        if ssh_enabled.get():
            from piqueserver.ssh import RemoteConsole
            self.remote_console = RemoteConsole(self)
        irc = irc_options.get()
        if irc.get('enabled', False):
            from piqueserver.irc import IRCRelay
            self.irc_relay = IRCRelay(self, irc)
        if status_server_enabled.get():
            from piqueserver.statusserver import StatusServer
            self.status_server = StatusServer(self)
            ensureDeferred(self.status_server.listen())
        if ban_publish.get():
            from piqueserver.banpublish import PublishServer
            self.ban_publish = PublishServer(self, ban_publish_port.get())
        if bans_urls.get():
            from piqueserver import bansubscribe
            self.ban_manager = bansubscribe.BanManager(self)
        self.start_time = time.time()
        self.end_calls = []
        # TODO: why is this here?
        create_console(self)

        for user_type, func_names in rights.get().items():
            for func_name in func_names:
                commands.add_rights(user_type, func_name)

        self.port = port_option.get()
        ServerProtocol.__init__(self, self.port, interface)
        self.host.intercept = self.receive_callback

        try:
            self.set_map_rotation(self.config['rotation'])
        except MapNotFound as e:
            log.critical('Invalid map in map rotation (%s), exiting.' % e.map)
            raise SystemExit

        map_load_d = self.advance_rotation()
        # discard the result of the map advance for now
        map_load_d.addCallback(lambda x: self._post_init())

        ip_getter = ip_getter_option.get()
        if ip_getter:
            ensureDeferred(as_deferred(self.get_external_ip(ip_getter)))

        self.new_release = None
        notify_new_releases = config.option("release_notifications",
                                            default=True)
        if notify_new_releases.get():
            ensureDeferred(as_deferred(self.watch_for_releases()))

        self.vacuum_loop = LoopingCall(self.vacuum_bans)
        # Run the vacuum every 6 hours, and kick it off it right now
        self.vacuum_loop.start(60 * 60 * 6, True)

        reactor.addSystemEventTrigger('before', 'shutdown',
                                      lambda: ensureDeferred(self.shutdown()))
예제 #30
0
파일: logbot.py 프로젝트: orf/logbot
    LOGBOT_CHANNEL = config["server"]["channel"]
    LOGBOT_LOCATION = config["server"]["ip"]
    LOGBOT_PORT = config["server"]["port"]
    LOGBOT_NAME = config["server"]["name"] or platform.node().split(
        ".")[0][:15]
    if not LOGBOT_NAME:
        print "Cannot detect a name for the client (usually means the system hostname cannot be detected)"
        sys.exit(1)

    OPER_CREDENTIALS = (config["server"]["user"], config["server"]["password"])
    TAIL_LOCATION = config["logbot"]["tail_location"][
        platform.system().lower()]

    OTHER_CHANNELS = [
        config["files"][x].get("channel", None) for x in config["files"]
        if config["files"][x].get("channel", None)
    ]

    application = service.Application('LogBot')  #, uid=1, gid=1)
    if not os.path.exists("logs"):
        os.mkdir("logs")
    logfile = DailyLogFile("logbot.log", "logs")
    log_observer = FileLogObserver(logfile).emit
    #application.setComponent(ILogObserver, log_observer)
    log.addObserver(log_observer)
    serviceCollection = service.IServiceCollection(application)
    manager = FileManager(config, serviceCollection)
    for item in config["files"]:
        manager.add_file(
            TailedFile(item, config["files"][item]["path"],
                       config["files"][item].get("channel", None)))