From 3f2032efba5469589d5317b1796a0aec74457847 Mon Sep 17 00:00:00 2001 From: Thomas <> Date: Tue, 16 Mar 2021 15:13:22 +0100 Subject: update MOA-SPSS initialization to mitigate suspect behavior in EAAF-Components module --- .../gv/egovernment/moa/spss/api/Configurator.java | 16 +++++++-- .../moa/spss/server/init/ConfiguratorImpl.java | 31 ++++++++++++---- .../server/init/StartupConfigurationHolder.java | 42 ++++++++++++++++++++++ .../moa/spss/server/init/SystemInitializer.java | 34 +++++++++++++----- 4 files changed, 105 insertions(+), 18 deletions(-) create mode 100644 moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java (limited to 'moaSig/moa-sig-lib/src/main/java/at/gv/egovernment') 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. @@ -61,15 +62,24 @@ public abstract class Configurator { return instance; } + /** + * Get current configuration object. + * + * @return Configuration or null 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 * update() 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 init(). * + * @return Updated Configuration holder, or null 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 Configurator. @@ -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 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 null of it was not configurated yet + */ + public static ConfigurationData getIaikConfiguration() { + return iaikConfiguration; + } private static void initTSLUpdateTask(TSLConfiguration tslconfig) { -- cgit v1.2.3