diff options
6 files changed, 116 insertions, 2 deletions
| 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 @@  		<servlet-class>at.gv.egovernment.moa.spss.server.service.CertificateProviderServlet</servlet-class>  		<load-on-startup>1</load-on-startup>  	</servlet> +	<servlet> +		<servlet-name>TSLClientStatusServlet</servlet-name> +		<display-name>MOA TSLClient Status-Check Servlet</display-name> +		<servlet-class>at.gv.egovernment.moa.spss.server.service.TSLClientStatusServlet</servlet-class> +		<load-on-startup>1</load-on-startup> +	</servlet>  	<servlet-mapping>  		<servlet-name>AxisServlet</servlet-name>  		<url-pattern>/services/*</url-pattern> @@ -36,6 +42,11 @@  		<servlet-name>CertificateProviderServlet</servlet-name>  		<url-pattern>/Certificate</url-pattern>  	</servlet-mapping> +	<servlet-mapping> +		<servlet-name>TSLClientStatusServlet</servlet-name> +		<url-pattern>/TSLStatusCheck</url-pattern> +	</servlet-mapping> +  	<security-constraint>  		<web-resource-collection> | 
