aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas <>2021-03-16 15:13:22 +0100
committerThomas <>2021-03-16 15:13:22 +0100
commit3f2032efba5469589d5317b1796a0aec74457847 (patch)
treed29037f82f76d14e7e8c23e680322703a9eca79c
parent6bf6f4b99ed3829768fe67c3cd13fdedfc2663c6 (diff)
downloadmoa-sig-3f2032efba5469589d5317b1796a0aec74457847.tar.gz
moa-sig-3f2032efba5469589d5317b1796a0aec74457847.tar.bz2
moa-sig-3f2032efba5469589d5317b1796a0aec74457847.zip
update MOA-SPSS initialization to mitigate suspect behavior in EAAF-Components module
-rw-r--r--moaSig/common/src/test/java/console/SchemaValidationTest.java52
-rw-r--r--moaSig/common/src/test/resources/zuse/msg.xml7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java16
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java31
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java42
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java34
-rw-r--r--moaSig/moa-sig/src/main/resources/log4j.properties13
-rw-r--r--moaSig/moa-sig/src/main/resources/logback.xml49
8 files changed, 220 insertions, 24 deletions
diff --git a/moaSig/common/src/test/java/console/SchemaValidationTest.java b/moaSig/common/src/test/java/console/SchemaValidationTest.java
new file mode 100644
index 0000000..db3041b
--- /dev/null
+++ b/moaSig/common/src/test/java/console/SchemaValidationTest.java
@@ -0,0 +1,52 @@
+package console;
+
+import java.io.InputStream;
+
+import org.w3c.dom.Element;
+
+import at.gv.egovernment.moaspss.util.DOMUtils;
+
+public class SchemaValidationTest {
+
+ public static final String SCHEMA_ROOT = "/config/zuseSchema";
+
+ public static final String XML_NS_URI = "http://www.w3.org/XML/1998/namespace";
+ public static final String XML_SCHEMA_LOCATION = SCHEMA_ROOT + "xml.xsd";
+
+ public static final String XSI_NS_URI = "http://www.w3.org/2001/XMLSchema-instance";
+ public static final String XSI_SCHEMA_LOCATION = SCHEMA_ROOT + "XMLSchema-instance.xsd";
+
+ public static final String eDELIVERY20 = "http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#";
+ public static final String eDELIVERY20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_p2.xsd";
+
+ public static final String eDELIVERY_PERSON_20 = "http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#";
+ public static final String eDELIVERY_PERSON_20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_mypersondata_en_p2.xsd";
+
+ private static final String ZUSE_SCHEMAS =
+ (XML_NS_URI + " " + XML_SCHEMA_LOCATION + " ")
+ + (XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " ")
+ + (eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION + " ")
+ + (eDELIVERY_PERSON_20 + " " + eDELIVERY_PERSON_20_SCHEMA_LOCATION);
+
+ /**
+ * Simple test.
+ *
+ * @param args not used yet
+ * @throws Exception in case of an error
+ */
+ public static void main(String[] args) throws Exception {
+
+ InputStream is = SchemaValidationTest.class.getResourceAsStream("/zuse/msg.xml");
+
+
+ Element result = DOMUtils.parseXmlValidating(is);
+
+// Document result = DOMUtils.parseDocument(is,
+// true, ZUSE_SCHEMAS, null, new MOASPSSEntityResolver(), new MOAErrorHandler());
+
+
+ System.out.print(DOMUtils.serializeNode(result));
+
+ }
+
+}
diff --git a/moaSig/common/src/test/resources/zuse/msg.xml b/moaSig/common/src/test/resources/zuse/msg.xml
new file mode 100644
index 0000000..200950a
--- /dev/null
+++ b/moaSig/common/src/test/resources/zuse/msg.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?><ns2:DeliveryRequest xmlns="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:ns2="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#">
+ <ns2:Receiver>
+ <Identification>
+ <Value>urn:publicid:gv.at:ecdid+ZUSETNVZ+ZU</Value>
+ </Identification>
+ </ns2:Receiver>
+</ns2:DeliveryRequest>
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java
index 59db7b5..bc0acbe 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java
@@ -26,6 +26,7 @@ package at.gv.egovernment.moa.spss.api;
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.server.init.ConfiguratorImpl;
+import at.gv.egovernment.moa.spss.server.init.StartupConfigurationHolder;
/**
* Configures the SP/SS API.
@@ -62,14 +63,23 @@ public abstract class Configurator {
}
/**
+ * Get current configuration object.
+ *
+ * @return Configuration or <code>null</code> if it was not initialized yet
+ */
+ public abstract StartupConfigurationHolder getCurrentConfiguration();
+
+ /**
* Initialize the SP/SS configuration.
*
* Only a single call to this method will have an effect. Use
* <code>update()</code> for reflecting changes in the configuration instead.
*
+ * @return Configuration holder
+ *
* @throws MOAException An error occurred updating the SP/SS configuration.
*/
- public abstract void init() throws MOAException;
+ public abstract StartupConfigurationHolder init() throws MOAException;
/**
* Update the SP/SS configuration.
@@ -77,8 +87,10 @@ public abstract class Configurator {
* This will only have an effect after the system has been initialized once
* using <code>init()</code>.
*
+ * @return Updated Configuration holder, or <code>null</code> if it was not initialized
+ *
* @throws MOAException An error occurred updating the SP/SS configuration.
*/
- public abstract void update() throws MOAException;
+ public abstract StartupConfigurationHolder update() throws MOAException;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java
index 8ab01d6..32654d4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java
@@ -29,6 +29,7 @@ import at.gv.egovernment.moa.spss.api.Configurator;
import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator;
+import iaik.server.ConfigurationData;
/**
* Default implementation of <code>Configurator</code>.
@@ -40,26 +41,42 @@ public class ConfiguratorImpl extends Configurator {
/** whether the configuration has been initialized */
private boolean initialized = false;
- public void init() throws MOAException {
+ StartupConfigurationHolder result;
+
+ public StartupConfigurationHolder getCurrentConfiguration() {
+ return result;
+
+ }
+
+ public StartupConfigurationHolder init() throws MOAException {
if (!initialized) {
- SystemInitializer.init();
+ result = SystemInitializer.init();
initialized = true;
+
}
+
+ return result;
+
}
- public void update() throws MOAException {
+ public StartupConfigurationHolder update() throws MOAException {
if (!initialized) {
- return;
+ return null;
}
- try {
+ try {
// reconfigure the system
ConfigurationProvider config = ConfigurationProvider.reload();
- new IaikConfigurator().configure(config);
+ ConfigurationData iaikConfig = new IaikConfigurator().configure(config);
+ result = new StartupConfigurationHolder(config, iaikConfig);
+ return result;
+
} catch (MOAException e) {
throw e;
+
} catch (Throwable t) {
- throw new ConfigurationException("", null, t);
+ throw new ConfigurationException("MOA-SPSS initialization FAILED with a generic error", null, t);
+
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java
new file mode 100644
index 0000000..229a8b2
--- /dev/null
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java
@@ -0,0 +1,42 @@
+package at.gv.egovernment.moa.spss.server.init;
+
+import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
+import iaik.server.ConfigurationData;
+
+public class StartupConfigurationHolder {
+
+ private final ConfigurationProvider moaSpssConfig;
+ private final ConfigurationData iaikConfiguration;
+
+ /**
+ * Holder for IAIK and MOA-SPSS related configuration object.
+ *
+ * @param config MOA-SPSS specific configuration
+ * @param iaikConfig Internal IAIK module configuration
+ */
+ public StartupConfigurationHolder(ConfigurationProvider config, ConfigurationData iaikConfig) {
+ this.moaSpssConfig = config;
+ this.iaikConfiguration = iaikConfig;
+ }
+
+ /**
+ * Get MOA-SPSS configuration object from start-up process.
+ *
+ * @return MOA-SPSS configuration
+ */
+ public ConfigurationProvider getMoaSpssConfig() {
+ return moaSpssConfig;
+ }
+
+ /**
+ * Get configuration object for IAIK modules from start-up process.
+ *
+ * @return IAIK module configuration
+ */
+ public ConfigurationData getIaikConfiguration() {
+ return iaikConfiguration;
+ }
+
+
+
+}
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 6ef9c57..25bb6d9 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
@@ -51,6 +51,7 @@ import at.gv.egovernment.moaspss.logging.LoggingContextManager;
import at.gv.egovernment.moaspss.util.Constants;
import at.gv.egovernment.moaspss.util.DOMUtils;
import iaik.asn1.ObjectID;
+import iaik.server.ConfigurationData;
import iaik.utils.RFC2253NameParser;
/**
@@ -71,6 +72,8 @@ public class SystemInitializer {
private static ServiceLoader<ExternalInitializer> initializerServices =
ServiceLoader.load(ExternalInitializer.class);
+ private static ConfigurationData iaikConfiguration;
+ private static ConfigurationProvider config;
private static void runInitializer(ConfigurationProvider configurationProvider) {
@@ -84,8 +87,9 @@ public class SystemInitializer {
/**
* Initialize the MOA SP/SS webservice.
+ * @return
*/
- public static void init() {
+ public static StartupConfigurationHolder init() {
logger.info("##############################################################################");
logger.info("##############################################################################");
@@ -141,7 +145,7 @@ public class SystemInitializer {
// initialize configuration
try {
Logger.info("Initialize MOA-SP/SS configuration ... ");
- ConfigurationProvider config = ConfigurationProvider.getInstance();
+ config = ConfigurationProvider.getInstance();
//initialize TSL module
TSLConfiguration moaSPTslConfig = config.getTSLConfiguration();
@@ -168,25 +172,23 @@ public class SystemInitializer {
Logger.info("Building IAIK-MOA configuration ... ");
- new IaikConfigurator().configure(config);
+ iaikConfiguration = new IaikConfigurator().configure(config);
runInitializer(config);
Logger.info(new LogMsg(msg.getMessage("init.01", null)));
+
} catch (MOAException e) {
Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e);
+ throw new RuntimeException(e);
} catch (Throwable e) {
Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e);
throw new RuntimeException(e);
- } finally {
- logger.info("Configuration initialized");
- }
-
-
-
+ }
+
// CHANGE IXSIL to XSECT
// set IXSIL debug output
//IXSILInit.setPrintDebugLog(
@@ -207,6 +209,20 @@ public class SystemInitializer {
logger.info("==============================================================================");
logger.info("=== CONFIGURATION DONE ===");
logger.info("==============================================================================");
+
+
+ return new StartupConfigurationHolder(config, iaikConfiguration);
+
+ }
+
+ /**
+ * Get configuration object from IAIK modules.
+ *
+ * @return Configuration or <code>null</code> of it was not configurated yet
+ */
+ public static ConfigurationData getIaikConfiguration() {
+ return iaikConfiguration;
+
}
private static void initTSLUpdateTask(TSLConfiguration tslconfig) {
diff --git a/moaSig/moa-sig/src/main/resources/log4j.properties b/moaSig/moa-sig/src/main/resources/log4j.properties
index 8cd351c..d7522a7 100644
--- a/moaSig/moa-sig/src/main/resources/log4j.properties
+++ b/moaSig/moa-sig/src/main/resources/log4j.properties
@@ -6,15 +6,16 @@
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
# Configure root logger and loggers for moa-spss
-log4j.rootLogger=warn, stdout
-log4j.logger.moa.spss.server=info, stdout, moaspss
-log4j.logger.iaik.server=info, stdout, moaspss
-log4j.logger.at.gv.egovernment.moa.spss=TRACE, stdout, moaspss
+log4j.rootLogger=warn,stdout
+#log4j.logger.moa.spss.server=debug,moaspss
+#log4j.logger.iaik.server=debug,moaspss
+#log4j.logger.iaik.pki=debug,moaspss
+#log4j.logger.at.gv.egovernment.moa.spss=debug, moaspss
# Configure the 'stdout' appender to write logging output to the console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n
+log4j.appender.stdout.layout.ConversionPattern=log4j | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n
# Configure the 'moaspss' appender to write moa-spss related logging output
# to the file '${catalina.base}/logs/moa-spss.log'. The file is rolled over every 1000KB,
@@ -24,7 +25,7 @@ log4j.appender.moaspss.File=${catalina.base}/logs/moa-spss.log
log4j.appender.moaspss.MaxFileSize=1000KB
log4j.appender.moaspss.MaxBackupIndex=10
log4j.appender.moaspss.layout=org.apache.log4j.PatternLayout
-log4j.appender.moaspss.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n
+log4j.appender.moaspss.layout.ConversionPattern=log4j | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n
# Configure the jdbc appender 'JDBC' to write logging output
# to the given PostgreSQL database
diff --git a/moaSig/moa-sig/src/main/resources/logback.xml b/moaSig/moa-sig/src/main/resources/logback.xml
new file mode 100644
index 0000000..501c1a6
--- /dev/null
+++ b/moaSig/moa-sig/src/main/resources/logback.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- For assistance related to logback-translator or configuration -->
+<!-- files in general, please contact the logback user mailing list -->
+<!-- at http://www.qos.ch/mailman/listinfo/logback-user -->
+<!-- -->
+<!-- For professional support please see -->
+<!-- http://www.qos.ch/shop/products/professionalSupport -->
+<!-- -->
+<configuration>
+ <appender name="moaspss" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
+ <File>${catalina.base}/logs/moa-spss.log</File>
+ <encoder>
+ <pattern>logback | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n</pattern>
+ </encoder>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <maxIndex>10</maxIndex>
+ <FileNamePattern>${catalina.base}/logs/moa-spss.log.%i</FileNamePattern>
+ </rollingPolicy>
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <MaxFileSize>1000KB</MaxFileSize>
+ </triggeringPolicy>
+ </appender>
+ <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>logback | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n</pattern>
+ </encoder>
+ </appender>
+ <logger name="moa.spss.server" level="debug">
+ <appender-ref ref="moaspss"/>
+ <appender-ref ref="stdout"/>
+ </logger>
+ <logger name="iaik.pki" level="debug">
+ <appender-ref ref="moaspss"/>
+ <appender-ref ref="stdout"/>
+ </logger>
+ <logger name="at.gv.egovernment.moa.spss" level="debug">
+ <appender-ref ref="moaspss"/>
+ <appender-ref ref="stdout"/>
+ </logger>
+ <logger name="iaik.server" level="error">
+ <appender-ref ref="moaspss"/>
+ <appender-ref ref="stdout"/>
+ </logger>
+ <root level="warn">
+ <appender-ref ref="stdout"/>
+ </root>
+</configuration> \ No newline at end of file