From defceef8afef538555c13d33e344a89a828a3d97 Mon Sep 17 00:00:00 2001 From: Thomas Lenz Date: Fri, 20 Dec 2013 12:35:28 +0100 Subject: inital --- .../config/EgovUtilPropertiesConfiguration.java | 381 +++++++++++++++++++++ 1 file changed, 381 insertions(+) create mode 100644 src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java (limited to 'src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java') diff --git a/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java b/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java new file mode 100644 index 0000000..7de17aa --- /dev/null +++ b/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java @@ -0,0 +1,381 @@ +/* + * Copyright 2011 Federal Chancellery Austria and + * Graz University of Technology + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package at.gv.util.config; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.util.MiscUtil; +import at.gv.util.ssl.JaxWsSSLConfiguration; +import at.gv.util.ssl.JaxWsSSLConfigurationPropertiesImpl; +import at.gv.util.xsd.szr.pvp.Param; +import at.gv.util.xsd.szr.pvp.PvpTokenType; +import at.gv.util.xsd.szr.pvp.PvpTokenType.Authenticate; +import at.gv.util.xsd.szr.pvp.PvpTokenType.Authenticate.UserPrincipal; +import at.gv.util.xsd.szr.pvp.PvpTokenType.Authorize; +import at.gv.util.xsd.szr.pvp.Role; + +/** + * ZUSE-Util configuration implementation based on Java properties. + * + * @author Arne Tauber + * + */ +public class EgovUtilPropertiesConfiguration implements EgovUtilConfiguration { + + Logger log = LoggerFactory.getLogger(EgovUtilPropertiesConfiguration.class); + + private Properties props; + private String configDir = null; + private JaxWsSSLConfigurationPropertiesImpl moaSPSSsslConfiguration = null; + private JaxWsSSLConfigurationPropertiesImpl moaIDsslConfiguration = null; + private JaxWsSSLConfigurationPropertiesImpl moaZSsslConfiguration = null; + private JaxWsSSLConfigurationPropertiesImpl szrsslConfiguration = null; + private JaxWsSSLConfigurationPropertiesImpl ursslConfiguration = null; + private JaxWsSSLConfigurationPropertiesImpl missslConfiguration = null; + private JaxWsSSLConfigurationPropertiesImpl mmssslConfiguration = null; + private JaxWsSSLConfigurationPropertiesImpl uspsslConfiguration = null; + private JaxWsSSLConfigurationPropertiesImpl clearingsslConfiguration = null; + private JaxWsSSLConfigurationPropertiesImpl storkMISsslConfiguration = null; + private JaxWsSSLConfigurationPropertiesImpl ersbsslConfiguration = null; + + public EgovUtilPropertiesConfiguration(String propertiesFileName) throws IOException { + if (propertiesFileName == null) { + throw new NullPointerException("Parameter propertiesFile must not be null."); + } + File propertiesFile = new File(propertiesFileName); + FileInputStream fis = new FileInputStream(propertiesFile); + this.configDir = propertiesFile.getParentFile().getAbsolutePath(); + log.trace("EgovUtil Configuration directory: " + this.configDir); + this.props = new Properties(); + props.load(fis); + + initialize(); + } + + public EgovUtilPropertiesConfiguration(Properties props, String configDir) { + if (props == null) { + throw new NullPointerException("Parameter props must not be null."); + } + if (configDir == null) { + throw new NullPointerException("Argument 'configDir' must not be null."); + } + this.configDir = configDir; + this.props = props; + + initialize(); + } + + private void initialize() { + moaSPSSsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.moaspss"); + moaIDsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.moaid"); + moaZSsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.moazs"); + szrsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.szr"); + ursslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.ur"); + missslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.mis"); + mmssslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.mms"); + clearingsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.zuserech"); + uspsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.usp"); + storkMISsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.misstork"); + ersbsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.ersb"); + } + + public JaxWsSSLConfiguration getMOASPSSsslConfiguration() { + return moaSPSSsslConfiguration; + } + + public JaxWsSSLConfiguration getMOAIDsslConfiguration() { + return moaIDsslConfiguration; + } + + + public JaxWsSSLConfiguration getSZRsslConfiguration() { + return szrsslConfiguration; + } + + + public JaxWsSSLConfiguration getURsslConfiguration() { + return ursslConfiguration; + } + + public JaxWsSSLConfiguration getMISSTORKsslConfiguration() { + return storkMISsslConfiguration; + } + + public boolean isMISSTORKEnvironment() { + try { + return Boolean.parseBoolean(this.props.getProperty("egovutil.misstork.test")); + + } catch(Exception e) { + return false; + } + } + + public String getMISSTORKProductionEnvironmentURL() { + return this.props.getProperty("egovutil.misstork.prod.url"); + } + + public String getMISSTORKTestEnvironmentURL() { + return this.props.getProperty("egovutil.misstork.test.url"); + } + + public boolean isSZRTestEnvironment() { + try { + return Boolean.parseBoolean(this.props.getProperty("egovutil.szr.test")); + } catch(Exception e) { + return false; + } + } + + + public boolean isURTestEnvironment() { + try { + return Boolean.parseBoolean(this.props.getProperty("egovutil.ur.test")); + } catch(Exception e) { + return false; + } + } + + + public PvpTokenType getPVPToken() { + return getPVPToken("szr"); + } + + + public PvpTokenType getURPVPToken() { + return getPVPToken("ur"); + } + + public PvpTokenType getPVPToken(String prefix) { + PvpTokenType token = new PvpTokenType(); + // set version + String version = props.getProperty("egovutil." + prefix + ".token.version"); + MiscUtil.assertNotNull(version, "PVP version in configuration"); + + // read other information + String participantId = props.getProperty("egovutil." + prefix + ".token.participantid"); + MiscUtil.assertNotNull(participantId, "Participant ID in configuration"); + + String gvOuDomain = props.getProperty("egovutil." + prefix + ".token.gvoudomain"); + MiscUtil.assertNotNull(gvOuDomain, "GvOuDomain in configuration"); + + String userId = props.getProperty("egovutil." + prefix + ".token.userid"); + MiscUtil.assertNotNull(userId, "User ID in configuration"); + + String cn = props.getProperty("egovutil." + prefix + ".token.cn"); + MiscUtil.assertNotNull(cn, "CN in configuration"); + + String gvOuId = props.getProperty("egovutil." + prefix + ".token.gvouid"); + MiscUtil.assertNotNull(gvOuId, "GvOuId in configuration"); + + String ou = props.getProperty("egovutil." + prefix + ".token.ou"); + MiscUtil.assertNotNull(ou, "GvOuId in configuration"); + + String secClassString = props.getProperty("egovutil." + prefix + ".token.gvsecclass"); + MiscUtil.assertNotNull(secClassString, "SecClass in configuration"); + BigInteger secClass = new BigInteger(secClassString); + + String gvGid = props.getProperty("egovutil." + prefix + ".token.gvgid"); + MiscUtil.assertNotNull(gvGid, "GvGid in configuration"); + + String gvFunction = props.getProperty("egovutil." + prefix + ".token.gvfunction"); + MiscUtil.assertNotNull(gvFunction, "GvFunction in configuration"); + + String roleString = props.getProperty("egovutil." + prefix + ".roles"); + MiscUtil.assertNotNull(roleString, "Roles in configuration"); + + String[] roles = roleString.split(","); + + token.setVersion(version); + + // create authentication information + Authenticate authenticate = new Authenticate(); + authenticate.setParticipantId(participantId); + authenticate.setGvOuDomain(gvOuDomain); + UserPrincipal up = new UserPrincipal(); + up.setCn(cn); + up.setGvFunction(gvFunction); + up.setGvGid(gvGid); + up.setGvOuId(gvOuId); + up.setGvSecClass(secClass); + up.setOu(ou); + up.setUserId(userId); + authenticate.setUserPrincipal(up); + token.setAuthenticate(authenticate); + + // set roles + Authorize authorize = new Authorize(); + + for (String cRole : roles) { + //split role parameters + String roleValue = null; + Map roleparam = new HashMap(); + if (cRole.contains("(")) { + roleValue = cRole.substring(0, cRole.indexOf("(")); + String[] roleParams = cRole.substring(cRole.indexOf("(") + 1, cRole.length()-1).split(","); + for(String param: roleParams) { + String[] values = param.split("="); + if ((values.length % 2) != 0) + throw new NullPointerException("RoleAttributes has no valid format"); + + roleparam.put(values[0], values[1]); + } + + } else { + roleValue = cRole; + } + + Role role = new Role(); + role.setValue(roleValue); + + if (!roleparam.isEmpty()) { + List params = role.getParam(); + if (params == null) + params = new ArrayList(); + + Set entryset = roleparam.keySet(); + for (String entry : entryset) { + Param param = new Param(); + param.setKey(entry); + param.setValue(roleparam.get(entry)); + params.add(param); + } + } + + role.setDummy(null); + authorize.getRole().add(role); + } + token.setAuthorize(authorize); + return token; + } + + + public String getSZRProductionEnvironmentURL() { + return this.props.getProperty("egovutil.szr.prod.url"); + } + + + public String getSZRTestEnvironmentURL() { + return this.props.getProperty("egovutil.szr.test.url"); + } + + + public String getURProductionEnvironmentURL() { + return this.props.getProperty("egovutil.ur.prod.url"); + } + + + public String getURTestEnvironmentURL() { + return this.props.getProperty("egovutil.ur.test.url"); + } + + + public JaxWsSSLConfiguration getMISsslConfiguration() { + return missslConfiguration; + } + + + public JaxWsSSLConfiguration getMMSsslConfiguration() { + return mmssslConfiguration; + } + + + public JaxWsSSLConfiguration getMOAZSsslConfiguration() { + return moaZSsslConfiguration; + } + + + public JaxWsSSLConfiguration getClearingsslConfiguration() { + return clearingsslConfiguration; + } + + + public boolean isUSPTestEnvironment() { + try { + return Boolean.parseBoolean(this.props.getProperty("egovutil.usp.test")); + } catch(Exception e) { + return false; + } + } + + + public String getUSPTestEnvironmentURL() { + return this.props.getProperty("egovutil.usp.test.url"); + } + + + public String getUSPProductionEnvironmentURL() { + return this.props.getProperty("egovutil.usp.prod.url"); + } + + + public String getUSPApplicationId() { + return this.props.getProperty("egovutil.usp.appid"); + } + + + public JaxWsSSLConfiguration getUSPsslConfiguration() { + return uspsslConfiguration; + } + + public PvpTokenType getUSPPVPToken() { + return getPVPToken("usp"); + } + + public int getHTTPRequestTimeout() { + return Integer.parseInt(this.props.getProperty("egovutil.usp.http.timeout","60000")); + } + + public JaxWsSSLConfiguration getERsBsslConfiguration() { + return ersbsslConfiguration; + } + + + public boolean isERsBTestEnvironment() { + try { + return Boolean.parseBoolean(this.props.getProperty("egovutil.ersb.test")); + + } catch(Exception e) { + return false; + } + } + + public PvpTokenType getERsBPVPToken() { + return getPVPToken("ersb"); + } + + public String getERsBProductionEnvironmentURL() { + return this.props.getProperty("egovutil.ersb.prod.url"); + } + + public String getERsBTestEnvironmentURL() { + return this.props.getProperty("egovutil.ersb.test.url"); + } + +} -- cgit v1.2.3