ReportManager.java 1.78 KB
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
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<IReporter> 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");
}
}
}
}