예제 #1
0
파일: sensor.py 프로젝트: alienfault/ossim
def get_newest_plugin_system():
    """
        Get the current stored plugin packages version. Check all sensor
        and compared with all sensors. Return the newest information. Here we can have several
        scenarios we have to manage. This function can be called in a system with framework and without
        sensors - no sense, but this scenario can exists in a instalation -, we must be sure that
    """
    current_sensors = get_monitor_data(MONITOR_PLUGINS_VERSION)
    system_id = None
    md5 = None
    max_sensor = None
    system_id = None
    if current_sensors is not None:
        system_id = current_sensors[0]['component_id']
        monitor_data = json.loads(current_sensors[0]['data'])
        md5 = monitor_data['md5']
        version = monitor_data['version']
        for sensor in current_sensors[1:]:
            check_monitor_data = json.loads(sensor['data'])
            check_version = check_monitor_data['version']
            if compare_dpkg_version(check_version, version) == "greater":
                result, system_id = get_system_id_from_sensor_id(sensor['component_id'])
                if result:
                    md5 = check_monitor_data['md5']
                    version = check_version
                else:
                    system_id = None
                    md5 = None

    return (system_id, md5)
예제 #2
0
def get_newest_plugin_system():
    """
        Get the current stored plugin packages version. Check all sensor
        and compared with all sensors. Return the newest information. Here we can have several
        scenarios we have to manage. This function can be called in a system with framework and without
        sensors - no sense, but this scenario can exists in a instalation -, we must be sure that
    """
    current_sensors = get_monitor_data(MONITOR_PLUGINS_VERSION)
    system_id = None
    md5 = None
    max_sensor = None
    system_id = None
    if current_sensors is not None:
        system_id = current_sensors[0]['component_id']
        monitor_data = json.loads(current_sensors[0]['data'])
        md5 = monitor_data['md5']
        version = monitor_data['version']
        for sensor in current_sensors[1:]:
            check_monitor_data = json.loads(sensor['data'])
            check_version = check_monitor_data['version']
            if compare_dpkg_version(check_version, version) == "greater":
                result, system_id = get_system_id_from_sensor_id(
                    sensor['component_id'])
                if result:
                    md5 = check_monitor_data['md5']
                    version = check_version
                else:
                    system_id = None
                    md5 = None

    return (system_id, md5)
예제 #3
0
    def start(self):
        """
            Start monitor
        """
        rt = True
        try:
            self.remove_monitor_data()
            logger.info("Monitor %s Working..." % self.monitor_id)
            rc, sensor_list = get_systems(system_type="Sensor")
            (success, version) = get_plugin_package_info_local()
            if not success:
                raise Exception(str(version))
            (success, local_version) = get_plugin_package_info_local()
            for (system_id, _) in sensor_list:
                (success, sensor_id) = get_sensor_id_from_system_id(system_id)
                #logger.info("INFO => " + str(sensor_id))
                if success:
                    if sensor_id == '':
                        logger.warning("Sensor (%s) ID not found" % sensor_id)
                        continue
                    (success,
                     info) = get_plugin_package_info_from_sensor_id(sensor_id)
                    if success:
                        if info['version'] != '':
                            data_sensor = {
                                'version':
                                info['version'],
                                'md5':
                                info['md5'],
                                'comparison':
                                compare_dpkg_version(info['version'],
                                                     local_version['version'])
                            }
                        else:
                            data_sensor = {
                                'version': info['version'],
                                'md5': info['md5'],
                                'comparison': ''
                            }
                        if not self.save_data(
                                sensor_id, ComponentTypes.SENSOR,
                                self.get_json_message(data_sensor)):
                            logger.error(
                                "Can't save monitor info for sensor '%s'" %
                                sensor_id)
                    else:
                        logger.warning(
                            "Can't obtain plugin version for sensor '%s'",
                            sensor_id)
                else:
                    logger.warning("Can't obtain sensor_id for system_id '%s'",
                                   system_id)

        except Exception, e:
            logger.error(
                "Something wrong happen while running the monitor..%s, %s" %
                (self.get_monitor_id(), str(e)))
            rt = False
예제 #4
0
    def start(self):
        """
            Start monitor
        """
        rt = True
        try:
            self.remove_monitor_data()
            logger.info("Monitor %s Working..." % self.monitor_id)
            rc, sensor_list = get_systems(system_type="Sensor")
            (success, version) = get_plugin_package_info_local()
            if not success:
                raise Exception(str(version))
            (success, local_version) = get_plugin_package_info_local()
            for (system_id, _) in sensor_list:
                (success, sensor_id) = get_sensor_id_from_system_id(system_id)
                #logger.info("INFO => " + str(sensor_id))
                if success:
                    if sensor_id == '':
                        logger.warning("Sensor (%s) ID not found" % sensor_id)
                        continue
                    (success, info) = get_plugin_package_info_from_sensor_id(sensor_id)
                    if success:
                        if info['version'] != '':
                            data_sensor = {'version': info['version'],
                                           'md5': info['md5'],
                                           'comparison': compare_dpkg_version(info['version'], local_version['version'])}
                        else:
                            data_sensor = {'version': info['version'],
                                           'md5': info['md5'],
                                           'comparison': ''}
                        if not self.save_data(sensor_id, ComponentTypes.SENSOR, self.get_json_message(data_sensor)):
                            logger.error("Can't save monitor info for sensor '%s'" % sensor_id)
                    else:
                        logger.warning("Can't obtain plugin version for sensor '%s'", sensor_id)
                else:
                        logger.warning("Can't obtain sensor_id for system_id '%s'", system_id)

        except Exception, e:
            logger.error("Something wrong happen while running the monitor..%s, %s" % (self.get_monitor_id(),
                         str(e)))
            rt = False