def get_system_tags(system_id='local'): """Retrieves the list of system tags Args: system_id (str) : The system_id of the system which you want to get the information Returns: success (bool) : True if successful, False elsewhere tag_list (list) : A list containing all the system tags. """ tags = [] success, is_professional = system_is_professional(system_id=system_id) if not success: return False, [] if is_professional: tags.append('USM') else: tags.append('OSSIM') success, is_trial = system_is_trial(system_id=system_id) if not success: return False, [] if is_trial: tags.append('TRIAL') else: tags.append('NO-TRIAL') if apimethod_is_otx_enabled(): tags.append('OTX') else: tags.append('NO-OTX') return tags
def monitor_download_pulses_ha(): """Monitor for new pulses (HA Environments) Returns: True if successful, False otherwise """ rt = False ha_enabled = False try: is_otx_enabled = apimethod_is_otx_enabled() if is_otx_enabled is True: system_id = get_system_id_from_local()[1] success, system_info = system_status(system_id) if success is False: APICannotRetrieveSystems() if 'ha_status' in system_info and system_info['ha_status'] == 'up': logger.info("Monitor MonitorDownloadPulses [HA] started") ha_enabled = True monitor = MonitorDownloadPulses() rt = monitor.start() except: rt = False if ha_enabled is True: logger.info("Monitor MonitorDownloadPulses [HA] stopped") return rt
def start(self): """ Starts the monitor activity """ try: # Remove the previous monitor data. self.remove_monitor_data() monitor_data = {} success, system_id = get_system_id_from_local() if not success: return False # Now now = int(time.time()) # Firstly, wizard data! wizard_dict = {} success, start_welcome_wizard, welcome_wizard_date = get_wizard_data( ) if not success: api_log.error("There was an error retrieving the wizard data") wizard_shown = True if start_welcome_wizard == 2: # if difference between now and welcome_wizard_date is less # than a week, display message if (now - welcome_wizard_date) < 420: wizard_shown = False wizard_dict['wizard_shown'] = wizard_shown monitor_data[ self.__WEB_MESSAGES['MESSAGE_WIZARD_SHOWN']] = wizard_dict # Time to look for orphan sensors orphan_sensors_dict = {} success, message = check_any_orphan_sensor() orphan_sensors = False if not success: api_log.error(message) orphan_sensors = True orphan_sensors_dict['orphan_sensors'] = orphan_sensors monitor_data[self.__WEB_MESSAGES[ 'MESSAGE_SENSOR_NOT_INSERTED']] = orphan_sensors_dict # Has the trial version expired? success, expires, message = get_trial_expiration_date() trial_expired = False trial_expires_7days = False trial_expires_2days = False if not success: rc, pro = system_is_professional() if rc: if pro: # OK, we have an error here api_log.error(message) else: pass else: # expire=9999-12-31 expiration_date = expires.split('=')[1] if expiration_date: mktime_expression = datetime.datetime.strptime( expiration_date, "%Y-%m-%d").timetuple() expires = int(time.mktime(mktime_expression)) one_week_left = now - 604800 two_days_left = now - 172800 if expires < one_week_left: trial_expires_7days = True elif expires < two_days_left: trial_expires_2days = True elif expires < now: trial_expired = True else: pass else: if os.path.isfile("/etc/ossim/ossim.lic"): api_log.warning( "Valid license but no web admin user found!") else: api_log.debug( "Expiration date can't be determined: License file not found" ) monitor_data[self.__WEB_MESSAGES["MESSAGE_TRIAL_EXPIRED"]] = { 'trial_checked': success, 'trial_expired': trial_expired } monitor_data[ self.__WEB_MESSAGES["MESSAGE_TRIAL_EXPIRES_7DAYS"]] = { 'trial_checked': success, 'trial_expired': trial_expires_7days } monitor_data[ self.__WEB_MESSAGES["MESSAGE_TRIAL_EXPIRES_2DAYS"]] = { 'trial_checked': success, 'trial_expired': trial_expires_2days } # Check max number of assets assets = len(get_asset_list()) contracted_devices = get_license_devices() over_assets = False exceeding_assets = 0 #if assets > contracted_devices: # exceeding_assets = assets - contracted_devices # over_assets = True monitor_data[self.__WEB_MESSAGES["MESSAGE_LICENSE_VIOLATION"]] = { 'over_assets': over_assets, 'exceeding_assets': exceeding_assets } # OTX contribution otx_enabled = apimethod_is_otx_enabled() monitor_data[self.__WEB_MESSAGES["MESSAGE_OTX_CONNECTION"]] = { 'otx_enabled': otx_enabled } # Backup in progress? success, running, message = check_backup_process_running() if not success: api_log.error(message) monitor_data[self.__WEB_MESSAGES["MESSAGE_BACKUP_RUNNING"]] = { 'backup_check': success, 'backup_running': running } # Save monitor data self.save_data(system_id, ComponentTypes.SYSTEM, self.get_json_message(monitor_data)) except Exception as err: api_log.error( "Error processing WebUIData monitor information: %s" % str(err)) return False return True
def start(self): """ Starts the monitor activity """ try: # Remove the previous monitor data. self.remove_monitor_data() monitor_data = {} success, system_id = get_system_id_from_local() if not success: return False # Now now = int(time.time()) # Firstly, wizard data! wizard_dict = {} success, start_welcome_wizard, welcome_wizard_date = get_wizard_data() if not success: api_log.error("There was an error retrieving the wizard data") wizard_shown = True if start_welcome_wizard == 2: # if difference between now and welcome_wizard_date is less # than a week, display message if (now - welcome_wizard_date) < 420: wizard_shown = False wizard_dict['wizard_shown'] = wizard_shown monitor_data[self.__WEB_MESSAGES['MESSAGE_WIZARD_SHOWN']] = wizard_dict # Time to look for orphan sensors orphan_sensors_dict = {} success, message = check_any_orphan_sensor() orphan_sensors = False if not success: api_log.error(message) orphan_sensors = True orphan_sensors_dict['orphan_sensors'] = orphan_sensors monitor_data[self.__WEB_MESSAGES['MESSAGE_SENSOR_NOT_INSERTED']] = orphan_sensors_dict # Has the trial version expired? success, expires, message = get_trial_expiration_date() trial_expired = False trial_expires_7days = False trial_expires_2days = False if not success: rc, pro = system_is_professional() if rc: if pro: # OK, we have an error here api_log.error(message) else: pass else: # expire=9999-12-31 expiration_date = expires.split('=')[1] if expiration_date: mktime_expression = datetime.datetime.strptime(expiration_date, "%Y-%m-%d").timetuple() expires = int(time.mktime(mktime_expression)) one_week_left = now - 604800 two_days_left = now - 172800 if expires < one_week_left: trial_expires_7days = True elif expires < two_days_left: trial_expires_2days = True elif expires < now: trial_expired = True else: pass else: if os.path.isfile("/etc/ossim/ossim.lic"): api_log.warning("Valid license but no web admin user found!") else: api_log.debug("Expiration date can't be determined: License file not found") monitor_data[self.__WEB_MESSAGES["MESSAGE_TRIAL_EXPIRED"]] = {'trial_checked': success, 'trial_expired': trial_expired} monitor_data[self.__WEB_MESSAGES["MESSAGE_TRIAL_EXPIRES_7DAYS"]] = {'trial_checked': success, 'trial_expired': trial_expires_7days} monitor_data[self.__WEB_MESSAGES["MESSAGE_TRIAL_EXPIRES_2DAYS"]] = {'trial_checked': success, 'trial_expired': trial_expires_2days} # Check max number of assets assets = len(get_asset_list()) contracted_devices = get_license_devices() over_assets = False exceeding_assets = 0 #if assets > contracted_devices: # exceeding_assets = assets - contracted_devices # over_assets = True monitor_data[self.__WEB_MESSAGES["MESSAGE_LICENSE_VIOLATION"]] = {'over_assets': over_assets, 'exceeding_assets': exceeding_assets} # OTX contribution otx_enabled = apimethod_is_otx_enabled() monitor_data[self.__WEB_MESSAGES["MESSAGE_OTX_CONNECTION"]] = {'otx_enabled': otx_enabled} # Backup in progress? success, running, message = check_backup_process_running() if not success: api_log.error(message) monitor_data[self.__WEB_MESSAGES["MESSAGE_BACKUP_RUNNING"]] = {'backup_check': success, 'backup_running': running} # Save monitor data self.save_data(system_id, ComponentTypes.SYSTEM, self.get_json_message(monitor_data)) except Exception as err: api_log.error("Error processing WebUIData monitor information: %s" % str(err)) return False return True