package edu.auth.od_pcap_mcod.report; import edu.auth.od_pcap_mcod.model.Data; import edu.auth.od_pcap_mcod.webapp.DetectionAPIParameters; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author thanasis */ public class ReportManager { private List reporters; private Logger logger; public ReportManager(DetectionAPIParameters params) { logger = Logger.getLogger(ReportManager.class.getName()); logger.setLevel(Level.INFO); reporters = new ArrayList<>(); if(!params.getRsyslogServer().equals("")){ reporters.add(new RsyslogHandler(params.getRsyslogServer(), params.getRsyslogPort())); } else if(System.getenv("RSYSLOG_SERVER") != null){ int rsyslogPort = 514; String port = System.getenv("RSYSLOG_PORT"); if (port != null){ rsyslogPort = Integer.parseInt(port); } reporters.add(new RsyslogHandler(System.getenv("RSYSLOG_SERVER"), rsyslogPort)); } reporters.add(new TimescaleDbHandler(params.getTimeDbHost(), Integer.parseInt(params.getTimeDbPort()), params.getTimeDbUsername(), params.getTimeDbPassword(), Boolean.parseBoolean(params.getTimeDbSsl()), params.getResutlsDB(), params.getResultsTable())); } public void reportOutlier(Data outlier, String label){ logger.fine("Reporting Outlier"); for (IReporter reporter : reporters){ try { reporter.reportOutlier(outlier, label); } catch(Exception ex) { logger.severe("Couldn't report to Timescale"); } } } }