From bea447f643c2ca8f6c2d770b826f84b840488a54 Mon Sep 17 00:00:00 2001 From: tlenz Date: Thu, 8 Feb 2018 12:56:43 +0100 Subject: add Servlet to ask for TSL client status --- .../moa/spss/server/init/SystemInitializer.java | 3 +- .../server/monitoring/ServiceStatusContainer.java | 32 +++++++++++++++ .../moa/spss/tsl/TSLServiceFactory.java | 12 +++++- .../moa/spss/tsl/timer/TSLUpdaterTimerTask.java | 15 ++++++++ .../server/service/TSLClientStatusServlet.java | 45 ++++++++++++++++++++++ moaSig/moa-sig/src/main/webapp/WEB-INF/web.xml | 11 ++++++ 6 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java create mode 100644 moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java index 7d7d372..d023d18 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java @@ -41,6 +41,7 @@ import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.api.common.TSLConfiguration; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator; +import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer; import at.gv.egovernment.moa.spss.server.service.RevocationArchiveCleaner; import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory; import at.gv.egovernment.moa.spss.tsl.timer.TSLUpdaterTimerTask; @@ -158,7 +159,7 @@ public class SystemInitializer { Logger.info(new LogMsg(msg.getMessage("config.41", null))); TSLServiceFactory.initialize(tslConfig); Logger.info("TSL-Service client initialization finished"); - + //initialize TSL Update Task initTSLUpdateTask(moaSPTslConfig); diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java new file mode 100644 index 0000000..88e6474 --- /dev/null +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java @@ -0,0 +1,32 @@ +package at.gv.egovernment.moa.spss.server.monitoring; + +import at.gv.egovernment.moaspss.util.StringUtils; + +public class ServiceStatusContainer { + + public static final String STATUS_NOT_SET = "no status message"; + public static final String STATUS_OK = "ok"; + + private static boolean TSLStatusValid = false; + private static String TSLStatusMsg = STATUS_NOT_SET; + + + public static boolean getStatus() { + return TSLStatusValid; + + } + + public static String getStatusMsg() { + return TSLStatusMsg; + + } + + public static void setStatus(boolean currentStatus) { + TSLStatusValid = currentStatus; + } + + public static void setStatusMsg(String msg) { + TSLStatusMsg = msg; + } + +} diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java index 6463745..bc902f2 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java @@ -5,6 +5,7 @@ import at.gv.egovernment.moa.sig.tsl.api.ITslService; import at.gv.egovernment.moa.sig.tsl.config.TslConfigurationImpl; import at.gv.egovernment.moa.sig.tsl.exception.TslException; import at.gv.egovernment.moa.sig.tsl.pki.chaining.ChainingTrustStoreHandler; +import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer; import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moaspss.logging.LogMsg; import at.gv.egovernment.moaspss.logging.Logger; @@ -23,9 +24,18 @@ public class TSLServiceFactory { TrustStoreFactory.addTrustStoreHandler(new ChainingTrustStoreHandler()); + //set global TSL client status + ServiceStatusContainer.setStatus(true); + ServiceStatusContainer.setStatusMsg(ServiceStatusContainer.STATUS_OK); + } catch (TslException e) { Logger.fatal(new LogMsg(MessageProvider.getInstance().getMessage("init.05", new Object[]{e.getMessage()})), e); - + + //set global TSL client status + ServiceStatusContainer.setStatus(false); + ServiceStatusContainer.setStatusMsg( + new LogMsg(MessageProvider.getInstance().getMessage("init.05", new Object[]{e.getMessage()})).toString()); + } } else { diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java index 300bcae..b5a7a8c 100644 --- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java +++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java @@ -30,6 +30,7 @@ import at.gv.egovernment.moa.spss.server.config.TrustProfile; import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator; import at.gv.egovernment.moa.spss.server.iaik.pki.store.truststore.TrustStoreProfileImpl; import at.gv.egovernment.moa.spss.server.logging.TransactionId; +import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer; import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory; import at.gv.egovernment.moa.spss.util.MessageProvider; import at.gv.egovernment.moaspss.logging.LogMsg; @@ -47,14 +48,28 @@ public class TSLUpdaterTimerTask extends TimerTask { TSLServiceFactory.getTSLServiceClient().updateTSLInformation(); Logger.info("Finished TSL Update"); + //set global TSL client status + ServiceStatusContainer.setStatus(true); + ServiceStatusContainer.setStatusMsg(ServiceStatusContainer.STATUS_OK); + } catch (TslUpdateException e) { MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e); + //set global TSL client status + ServiceStatusContainer.setStatus(false); + ServiceStatusContainer.setStatusMsg( + new LogMsg(msg.getMessage("tsl.00", null)).toString()); + } catch (TslException e) { MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e); + //set global TSL client status + ServiceStatusContainer.setStatus(false); + ServiceStatusContainer.setStatusMsg( + new LogMsg(msg.getMessage("tsl.00", null)).toString()); + } } diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java new file mode 100644 index 0000000..7bb7217 --- /dev/null +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java @@ -0,0 +1,45 @@ +package at.gv.egovernment.moa.spss.server.service; + +import java.io.IOException; +import java.io.PrintWriter; +import java.text.MessageFormat; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer; + +public class TSLClientStatusServlet extends HttpServlet { + + /** + * + */ + private static final long serialVersionUID = 1L; + + + public static final String STATUS_RESP = "{\"TSLStatus\":\"{0}\", \"TSLStatusMsg\":\"{1}\"}"; + + public void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + + if (ServiceStatusContainer.getStatus()) + response.setStatus(200); + else + response.setStatus(500); + + response.setContentType("application/json"); + PrintWriter out = response.getWriter(); + out.println(MessageFormat.format(STATUS_RESP, + new Object[] { + String.valueOf(ServiceStatusContainer.getStatus()), + ServiceStatusContainer.getStatusMsg() + })); + out.flush(); + out.close(); + + } + +} diff --git a/moaSig/moa-sig/src/main/webapp/WEB-INF/web.xml b/moaSig/moa-sig/src/main/webapp/WEB-INF/web.xml index 910c037..ca3b69f 100644 --- a/moaSig/moa-sig/src/main/webapp/WEB-INF/web.xml +++ b/moaSig/moa-sig/src/main/webapp/WEB-INF/web.xml @@ -22,6 +22,12 @@ at.gv.egovernment.moa.spss.server.service.CertificateProviderServlet 1 + + TSLClientStatusServlet + MOA TSLClient Status-Check Servlet + at.gv.egovernment.moa.spss.server.service.TSLClientStatusServlet + 1 + AxisServlet /services/* @@ -36,6 +42,11 @@ CertificateProviderServlet /Certificate + + TSLClientStatusServlet + /TSLStatusCheck + + -- cgit v1.2.3