Beispiel #1
0
def get_system_infos(db_wrapper):
    pid = os.getpid()
    py = psutil.Process(pid)
    gc.set_threshold(5, 1, 1)

    while not terminate_mad.is_set():
        logger.debug('Starting internal Cleanup')
        logger.debug('Collecting...')
        n = gc.collect()
        logger.debug('Unreachable objects: {} - Remaining garbage: {} - Running threads: {}',
                    str(n), str(gc.garbage), str(active_count()))

        for obj in gc.garbage:
            for ref in find_referring_graphs(obj):
                ref.set_next(None)
                del ref  # remove local reference so the node can be deleted
            del obj  # remove local reference so the node can be deleted

        # Clear references held by gc.garbage
        logger.debug('Clearing gc garbage')
        del gc.garbage[:]

        memoryUse = py.memory_info()[0] / 2. ** 30
        cpuUse = py.cpu_percent()
        logger.info('Instance Name: "{}" - Memory usage: {} - CPU usage: {}',
                    str(args.status_name), str(memoryUse), str(cpuUse))
        collected = None
        if args.stat_gc:
            collected = gc.collect()
            logger.debug("Garbage collector: collected %d objects." % collected)
        zero = datetime.datetime.utcnow()
        unixnow = calendar.timegm(zero.utctimetuple())
        db_wrapper.insert_usage(args.status_name, cpuUse,
                                memoryUse, collected, unixnow)
        time.sleep(args.statistic_interval)
Beispiel #2
0
def file_watcher(db_wrapper, mitm_mapper, ws_server, webhook_worker):
    # We're on a 60-second timer.
    refresh_time_sec = 60
    filename = 'configs/mappings.json'

    while not terminate_mad.is_set():
        # Wait (x-1) seconds before refresh, min. 1s.
        time.sleep(max(1, refresh_time_sec - 1))
        try:
            # Only refresh if the file has changed.
            current_time_sec = time.time()
            file_modified_time_sec = os.path.getmtime(filename)
            time_diff_sec = current_time_sec - file_modified_time_sec

            # File has changed in the last refresh_time_sec seconds.
            if time_diff_sec < refresh_time_sec:
                logger.info(
                    'Change found in {}. Updating device mappings.', filename)
                (device_mappings, routemanagers, auths) = load_mappings(db_wrapper)
                mitm_mapper._device_mappings = device_mappings
                logger.info('Propagating new mappings to all clients.')
                ws_server.update_settings(
                    routemanagers, device_mappings, auths)

                if webhook_worker is not None:
                    webhook_worker.update_settings(routemanagers)
            else:
                logger.debug('No change found in {}.', filename)
        except Exception as e:
            logger.exception(
                'Exception occurred while updating device mappings: {}.', e)
Beispiel #3
0
def delete_old_logs(minutes):
    if minutes == 0:
        log.info('delete_old_logs: Search/Delete logs is disabled')
        return

    while not terminate_mad.is_set():
        log.info('delete_old_logs: Search/Delete logs older than ' +
                 str(minutes) + ' minutes')

        now = time.time()

        logpath = args.log_path

        log.debug('delete_old_logs: Log Folder: ' + str(logpath))
        for file in os.listdir(logpath):
            file_full_path = os.path.join(logpath, file)
            if os.path.isfile(file_full_path):
                # Delete files older than x days
                if os.stat(file_full_path).st_mtime < now - int(minutes) * 60:
                    os.remove(file_full_path)
                    log.info('delete_old_logs: File Removed : ' +
                             file_full_path)

        log.info('delete_old_logs: Search/Delete logs finished')
        time.sleep(3600)
Beispiel #4
0
    def run_worker(self):
        logger.info("Starting webhook worker thread")

        while not terminate_mad.is_set():
            # fetch data and create payload
            full_payload = self.__create_payload()

            # send our payload
            self.__send_webhook(full_payload)

            self.__last_check = int(time.time())
            time.sleep(self.__worker_interval_sec)

        logger.info("Stopping webhook worker thread")
Beispiel #5
0
    def run_worker(self):
        logger.info("Starting webhook worker thread")

        while not terminate_mad.is_set():
            # the payload that is about to be sent
            full_payload = []

            # raids
            raids = self.__prepare_raid_data(
                self.__db_wrapper.get_raids_changed_since(self.__last_check))
            full_payload += raids

            # quest
            if self.__args.quest_webhook:
                quest = self.__prepare_quest_data(
                    self.__db_wrapper.quests_from_db(
                        timestamp=self.__last_check))
                full_payload += quest

            # weather
            if self.__args.weather_webhook:
                weather = self.__prepare_weather_data(
                    self.__db_wrapper.get_weather_changed_since(
                        self.__last_check))
                full_payload += weather

            # gyms
            if self.__args.gym_webhook:
                gyms = self.__prepare_gyms_data(
                    self.__db_wrapper.get_gyms_changed_since(
                        self.__last_check))
                full_payload += gyms

            # mon
            if self.__args.pokemon_webhook:
                mon = self.__prepare_mon_data(
                    self.__db_wrapper.get_mon_changed_since(self.__last_check))
                full_payload += mon

            # send our payload
            self.__send_webhook(full_payload)

            self.__last_check = int(time.time())
            time.sleep(self.__worker_interval_sec)

        logger.info("Stopping webhook worker thread")