aboutsummaryrefslogtreecommitdiff
path: root/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config
diff options
context:
space:
mode:
authorThomas Lenz <tlenz@iaik.tugraz.at>2015-08-14 13:53:00 +0200
committerThomas Lenz <tlenz@iaik.tugraz.at>2015-08-14 13:53:00 +0200
commit456513332389b2dbb7a6d1461f77dda9b7393050 (patch)
tree4d6799366db46f83bb9eb0f7a611d8a08006b697 /id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config
parent5a15347217fbc8a0b2c1083579f70e527da6f3b5 (diff)
downloadmoa-id-spss-456513332389b2dbb7a6d1461f77dda9b7393050.tar.gz
moa-id-spss-456513332389b2dbb7a6d1461f77dda9b7393050.tar.bz2
moa-id-spss-456513332389b2dbb7a6d1461f77dda9b7393050.zip
use old ConfigTool
Diffstat (limited to 'id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config')
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/ConfigurationProvider.java130
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java370
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java6
3 files changed, 478 insertions, 28 deletions
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/ConfigurationProvider.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/ConfigurationProvider.java
index 0036645cf..849e81967 100644
--- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/ConfigurationProvider.java
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/ConfigurationProvider.java
@@ -29,6 +29,8 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import java.security.KeyStore;
import java.security.KeyStoreException;
@@ -47,19 +49,24 @@ import org.opensaml.DefaultBootstrap;
import org.opensaml.saml2.metadata.provider.HTTPMetadataProvider;
import org.opensaml.xml.parse.BasicParserPool;
import org.opensaml.xml.security.x509.BasicX509Credential;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
-import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.config.ChainingModeType;
-import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.id.commons.ex.MOAHttpProtocolSocketFactoryException;
import at.gv.egovernment.moa.id.commons.utils.MOAHttpProtocolSocketFactory;
+import at.gv.egovernment.moa.id.config.webgui.MOAIDConfigurationModul;
import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationException;
import at.gv.egovernment.moa.id.configuration.Constants;
import at.gv.egovernment.moa.id.configuration.auth.pvp2.MetaDataVerificationFilter;
+import at.gv.egovernment.moa.id.configuration.config.usermanagement.FileBasedUserConfiguration;
import at.gv.egovernment.moa.id.configuration.utils.UserRequestCleaner;
import at.gv.egovernment.moa.util.FileUtils;
import at.gv.egovernment.moa.util.MiscUtil;
+import at.gv.egovernment.moa.id.commons.db.NewConfigurationDBRead;
+
public class ConfigurationProvider {
@@ -82,6 +89,11 @@ public class ConfigurationProvider {
private boolean pvp2logininitialzied = false;
+ private ApplicationContext context = null;
+ private MOAIDConfigurationModul configModule = null;
+ private NewConfigurationDBRead deprecatedDBRead = null;
+ private FileBasedUserConfiguration userManagement = null;
+
public static ConfigurationProvider getInstance() throws ConfigurationException {
if (instance == null) {
@@ -100,34 +112,40 @@ public class ConfigurationProvider {
if (configFileName == null) {
throw new ConfigurationException("config.05");
}
+ try {
+ URI fileURI = new URI(configFileName);
+ File propertiesFile = new File(fileURI);
+
+ // determine the directory of the root config file
+ String rootConfigFileDir = propertiesFile.getParent();
+ configRootDir = new File(rootConfigFileDir).toURI().toURL().toString();;
- // determine the directory of the root config file
- configRootDir = new File(configFileName).getParent();
-
- log.info("Loading MOA-ID-AUTH configuration " + configFileName);
+ log.info("Loading MOA-ID-AUTH configuration " + configFileName);
- //Initial Hibernate Framework
- log.trace("Initializing Hibernate framework.");
+ //Initial Hibernate Framework
+ log.trace("Initializing Hibernate framework.");
- //Load MOAID-2.0 properties file
- File propertiesFile = new File(configFileName);
- FileInputStream fis;
- props = new Properties();
-
-
- try {
- fis = new FileInputStream(propertiesFile);
- props.load(fis);
+ //Load MOAID-2.0 properties file
+
+ FileInputStream fis;
+ props = new Properties();
+
+ fis = new FileInputStream(propertiesFile);
+ props.load(fis);
fis.close();
- // initialize hibernate
- synchronized (ConfigurationProvider.class) {
-
- //Initial config Database
- ConfigurationDBUtils.initHibernate(props);
- }
- log.trace("Hibernate initialization finished.");
+ context = new ClassPathXmlApplicationContext(
+ new String[] { "configuration.beans.xml",
+ "moaid.webgui.beans.xml",
+ "moaid.migration.beans.xml",
+ "moaid.configurationtool.beans.xml"
+ });
+ AutowireCapableBeanFactory acbFactory = context.getAutowireCapableBeanFactory();
+ acbFactory.autowireBean(this);
+
+
+ log.info("Hibernate initialization finished.");
DefaultBootstrap.bootstrap();
log.info("OPENSAML initialized");
@@ -143,15 +161,48 @@ public class ConfigurationProvider {
} catch (IOException e) {
throw new ConfigurationException("config.02", new Object[]{configFileName}, e);
- } catch (MOADatabaseException e) {
- throw new ConfigurationException("config.03", e);
-
} catch (org.opensaml.xml.ConfigurationException e) {
throw new ConfigurationException("config.04", e);
+
+ } catch (URISyntaxException e) {
+ throw new ConfigurationException("config.01", new Object[]{configFileName}, e);
}
}
+ @Autowired(required = true)
+ public void setMOAIDConfigurationModul(MOAIDConfigurationModul module) {
+ this.configModule = module;
+ }
+
+
+
+ /**
+ * @param dbRead the dbRead to set
+ */
+ @Autowired(required = true)
+ public void setDbRead(NewConfigurationDBRead dbRead) {
+ this.deprecatedDBRead = dbRead;
+ }
+
+
+
+ /**
+ * @return the deprecatedDBWrite
+ */
+ public FileBasedUserConfiguration getUserManagement() {
+ return userManagement;
+ }
+
+ /**
+ * @param deprecatedDBWrite the deprecatedDBWrite to set
+ */
+ @Autowired(required = true)
+ public void setUserManagement(FileBasedUserConfiguration userManagement) {
+ this.userManagement = userManagement;
+ }
+
+
public String getPublicUrlPreFix(HttpServletRequest request) {
publicURLPreFix = props.getProperty("general.publicURLContext");
@@ -467,6 +518,29 @@ public class ConfigurationProvider {
}
+ /**
+ * @return the context
+ */
+ public ApplicationContext getContext() {
+ return context;
+ }
+
+ /**
+ * @return the configModule
+ */
+ public MOAIDConfigurationModul getConfigModule() {
+ return configModule;
+ }
+
+
+
+ /**
+ * @return the dbRead
+ */
+ public NewConfigurationDBRead getDbRead() {
+ return deprecatedDBRead;
+ }
+
private void initalPVP2Login() throws ConfigurationException {
try {
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java
new file mode 100644
index 000000000..b1bba7289
--- /dev/null
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java
@@ -0,0 +1,370 @@
+package at.gv.egovernment.moa.id.configuration.config.usermanagement;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.apache.commons.collections4.map.HashedMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egiz.components.configuration.file.PropertiesBasedConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
+import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+
+public class FileBasedUserConfiguration
+ implements UserConfiguration {
+
+ private static final Logger logger = LoggerFactory.getLogger(FileBasedUserConfiguration.class);
+ public static final String CONFIG_FILE_PROPERTY = "user.properties";
+
+ private Configuration userconfig;
+
+ public FileBasedUserConfiguration() {
+ String cfgFile = System.getProperty(CONFIG_FILE_PROPERTY);
+ if(cfgFile == null) {
+ throw new RuntimeException("Please configure " + CONFIG_FILE_PROPERTY + " to provide user database");
+ }
+
+ try {
+ userconfig = new PropertiesBasedConfiguration(new File(cfgFile));
+
+ } catch (IOException | ConfigurationException e) {
+ logger.error("Failed to build configuration in user modul!");
+ throw new RuntimeException(e);
+
+ }
+ }
+
+ /**
+ *
+ * @return
+ */
+ public List<UserDatabase> getAllUsers() {
+ logger.trace("Get All Users from database.");
+
+ // select userdatabase from UserDatabase userdatabase
+ List<UserDatabase> result = new ArrayList<UserDatabase>();
+ try {
+ String[] userIDs = userconfig.getConfigurationIdNextLevel(UserDatabase.PREFIX);
+ for (String userID : userIDs) {
+ String[] userKeys = userconfig.findConfigurationId(UserDatabase.PREFIX + "." + userID + ".*");
+ Map<String, String> keyValue = new HashMap<String, String>();
+ if (userKeys.length > 0) {
+ for (String key : userKeys) {
+ keyValue.put(
+ KeyValueUtils.removePrefixFromKey(
+ key, UserDatabase.PREFIX + "." + userID + "."),
+ userconfig.getStringValue(key));
+ }
+ UserDatabase userDAO = new UserDatabase(keyValue);
+ userDAO.setHjid(userID);
+ result.add(userDAO);
+ }
+ }
+
+ if (result.size() == 0) {
+ logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+
+ } catch (ConfigurationException e) {
+ logger.error("Access UserDatabase FAILED", e);
+ return null;
+
+ }
+ }
+
+ /**
+ *
+ * @return
+ */
+ public List<UserDatabase> getAllOpenUsersRequests() {
+ logger.trace("Get all new Users from Database");
+
+ // select userdatabase from UserDatabase userdatabase
+ // where userdatabase.userRequestTokken is not null
+ // and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '0'
+ List<UserDatabase> result = new ArrayList<UserDatabase>();
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ // TODO check result of query "... userdatabase.userRequestTokken is not null" if Tokken is null -> (null, "NULL", "", ... ?)
+ if ((user.getUserRequestTokken() != null && !user.getUserRequestTokken().isEmpty() && !user.getUserRequestTokken().equals("NULL"))
+ && (user.isIsAdminRequest()) && (!user.isIsMailAddressVerified())) {
+ result.add(user);
+ }
+ }
+
+ if (result.size() == 0) {
+ logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param tokken
+ * @return
+ */
+ public UserDatabase getNewUserWithTokken(String tokken) {
+ logger.trace("Getting Userinformation with Tokken " + tokken + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken = :tokken
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getUserRequestTokken() != null &&
+ user.getUserRequestTokken().equals(tokken)) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param id
+ * @return
+ */
+ public UserDatabase getUsersWithOADBID(long id) {
+ logger.trace("Getting Userinformation with OADBID " + id + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase
+ // inner join userdatabase.onlineApplication oa where oa.hjid = :id
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ boolean quit = false;
+ for (UserDatabase user : nullGuard(allUsers)) {
+
+ for (String oa : user.getOnlineApplication()) {
+
+ if (oa.equals(String.valueOf(id))) {
+ result = user;
+ quit = true;
+ break;
+ }
+ }
+
+ if (quit) {
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param id
+ * @return
+ */
+ public UserDatabase getUserWithID(long id) {
+ logger.trace("Getting Userinformation with ID " + id + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.hjid = :id
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getHjid().equals(String.valueOf(id))) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param username
+ * @return
+ */
+ public UserDatabase getUserWithUserName(String username) {
+ logger.trace("Getting Userinformation with ID " + username + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.username = :username
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getUsername().equals(username)) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param bpkwbpk
+ * @return
+ */
+ public UserDatabase getUserWithUserBPKWBPK(String bpkwbpk) {
+ logger.trace("Getting Userinformation with ID " + bpkwbpk + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.bpk = :bpk
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getBpk() != null &&
+ user.getBpk().equals(bpkwbpk)) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * @return
+ */
+ public List<UserDatabase> getAllNewUsers() {
+ List<UserDatabase> result = new ArrayList<UserDatabase>();
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ // TODO check result of query "... userdatabase.userRequestTokken is not null" if Tokken is null -> (null, "NULL", "", ... ?)
+ if (((user.getUserRequestTokken() == null || user.getUserRequestTokken().isEmpty() || user.getUserRequestTokken().equals("NULL")))
+ && (user.isIsAdminRequest()) && (user.isIsMailAddressVerified())) {
+ result.add(user);
+ }
+ }
+
+ if (result.size() == 0) {
+ logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+ }
+
+
+ /**
+ * @param user
+ */
+ public void saveOrUpdate(UserDatabase user) throws MOADatabaseException{
+ List<UserDatabase> allUsers = getAllUsers();
+
+ if (allUsers == null) {
+ Set<Entry<String, String>> keySet = user.getKeyValuePairs().entrySet();
+ for (Entry<String, String> el : keySet) {
+ try {
+ if (MiscUtil.isNotEmpty(el.getValue())) {
+ userconfig.setStringValue(UserDatabase.PREFIX + ".0." + el.getKey(),
+ el.getValue());
+ }
+
+ } catch (ConfigurationException e) {
+ logger.error("Can not store Userentry with key: " + UserDatabase.PREFIX + ".0." + el.getKey(), e);
+ }
+
+ }
+
+
+ } else {
+ boolean isUpdated = false;
+ for (UserDatabase dbUser : allUsers) {
+ if (dbUser.getHjid().equals(user.getHjid())) {
+ logger.debug("User is already stored -> start update process ...");
+ Set<Entry<String, String>> keySet = user.getKeyValuePairs().entrySet();
+ for (Entry<String, String> el : keySet) {
+ try {
+ if (MiscUtil.isNotEmpty(el.getValue()))
+ userconfig.setStringValue(UserDatabase.PREFIX + "." + user.getHjid() + "." + el.getKey(),
+ el.getValue());
+
+ } catch (ConfigurationException e) {
+ logger.error("Can not store Userentry with key: " + UserDatabase.PREFIX + "." + user.getHjid() + "." + el.getKey(), e);
+ }
+
+ }
+ isUpdated = true;
+ break;
+ }
+ }
+ if (!isUpdated) {
+ try {
+ String[] temp = userconfig.findConfigurationId(UserDatabase.PREFIX + ".*." + UserDatabase.ISACTIVE);
+ int newID = KeyValueUtils.findNextFreeListCounter(temp, UserDatabase.PREFIX);
+
+ logger.debug("Add new User with ID:" + String.valueOf(newID));
+ Set<Entry<String, String>> keySet = user.getKeyValuePairs().entrySet();
+ for (Entry<String, String> el : keySet) {
+ try {
+ if (MiscUtil.isNotEmpty(el.getValue()))
+ userconfig.setStringValue(UserDatabase.PREFIX + "." + String.valueOf(newID) + "." + el.getKey(),
+ el.getValue());
+
+ } catch (ConfigurationException e) {
+ logger.error("Can not store Userentry with key: " + UserDatabase.PREFIX + "." + String.valueOf(newID) + "." + el.getKey(), e);
+ }
+
+ }
+ } catch (ConfigurationException e) {
+ logger.error("Access UserDatabase FAILED", e);
+
+ }
+ }
+ }
+
+ try {
+ userconfig.synchronize();
+
+ } catch (ConfigurationException e) {
+ logger.error("Access UserDatabase FAILED", e);
+ }
+
+ }
+
+ /**
+ * @param dbuser
+ */
+ public void delete(UserDatabase dbuser) {
+ try {
+ logger.debug("Delete User with ID: " + dbuser.getHjid());
+ userconfig.deleteIds(UserDatabase.PREFIX + "." + dbuser.getHjid() + "*");
+ userconfig.synchronize();
+
+ } catch (ConfigurationException e) {
+ logger.error("Access UserManagement Database FAILED!", e);
+
+ }
+
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T extends Iterable<?>> T nullGuard(T item) {
+ if (item == null) {
+ return (T) Collections.emptyList();
+ } else {
+ return item;
+ }
+
+ }
+
+}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java
new file mode 100644
index 000000000..f894b510b
--- /dev/null
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java
@@ -0,0 +1,6 @@
+package at.gv.egovernment.moa.id.configuration.config.usermanagement;
+
+
+public interface UserConfiguration {
+
+}