diff options
author | Thomas <> | 2021-03-16 15:13:22 +0100 |
---|---|---|
committer | Thomas <> | 2021-03-16 15:13:22 +0100 |
commit | 3f2032efba5469589d5317b1796a0aec74457847 (patch) | |
tree | d29037f82f76d14e7e8c23e680322703a9eca79c /moaSig | |
parent | 6bf6f4b99ed3829768fe67c3cd13fdedfc2663c6 (diff) | |
download | moa-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
Diffstat (limited to 'moaSig')
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 |