From b9f140d19d20d0ae4972dc675e1dfe09c3156250 Mon Sep 17 00:00:00 2001
From: Peter Hormanns <peter.hormanns@jalin.de>
Date: Thu, 16 Aug 2012 15:47:20 +0200
Subject: [PATCH] Domain createprocessor works with domainoptions

---
 hsarback/src/de/hsadmin/mods/dom/httpd-vhost-static.jtpl     |    6 +-
 hsarback/.gitignore                                          |    2 +
 hsarback/.classpath                                          |    2 +
 hsarback/src/de/hsadmin/core/qserv/CreateFileProcessor.java  |   15 ++++++-
 hsarback/src/de/hsadmin/mods/dom/httpd-vhost-dynamic.jtpl    |    6 +-
 hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java |   28 ++++++++++----
 hsarback/test/de/hsadmin/remote/DomainTest.java              |    6 +-
 7 files changed, 46 insertions(+), 19 deletions(-)

diff --git a/hsarback/.classpath b/hsarback/.classpath
index d5d5365..0fc2432 100644
--- a/hsarback/.classpath
+++ b/hsarback/.classpath
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="test"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="lib" path="lib/activemq-core-5.4.2.jar"/>
 	<classpathentry kind="lib" path="lib/commons-beanutils-1.8.3.jar"/>
@@ -26,5 +27,6 @@
 	<classpathentry kind="lib" path="lib/xmlrpc-client-3.1.3.jar"/>
 	<classpathentry kind="lib" path="lib/xmlrpc-common-3.1.3.jar"/>
 	<classpathentry kind="lib" path="lib/xmlrpc-server-3.1.3.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/hsarback/.gitignore b/hsarback/.gitignore
new file mode 100644
index 0000000..3f99a46
--- /dev/null
+++ b/hsarback/.gitignore
@@ -0,0 +1,2 @@
+/build
+/webapp
diff --git a/hsarback/src/de/hsadmin/core/qserv/CreateFileProcessor.java b/hsarback/src/de/hsadmin/core/qserv/CreateFileProcessor.java
index 147d352..fda5ab8 100644
--- a/hsarback/src/de/hsadmin/core/qserv/CreateFileProcessor.java
+++ b/hsarback/src/de/hsadmin/core/qserv/CreateFileProcessor.java
@@ -1,20 +1,31 @@
 package de.hsadmin.core.qserv;
 
+import java.util.Iterator;
 import java.util.Map;
 
 public class CreateFileProcessor extends AbstractProcessor {
 
 	private static final long serialVersionUID = -2947609532975712444L;
 
-	private CompoundProcessor compoundProcessor;
+	private Processor compoundProcessor;
 	
 	public CreateFileProcessor(String templateName, Map<String, String> templateValues, String targetPath, String owner, String group, String modeMask, boolean overwriteTarget) throws ProcessorException {
 		TemplateProcessor templateProcessor = new TemplateProcessor(templateName, templateValues, targetPath, overwriteTarget);
+		compoundProcessor = createCompound(targetPath, owner, group, modeMask, templateProcessor);
+	}
+
+	public CreateFileProcessor(String templateName, Map<String, String> templateValues, Iterator<Map<String, String>> iterateValues, String targetPath, String owner, String group, String modeMask, boolean overwriteTarget) throws ProcessorException {
+		TemplateProcessor templateProcessor = new TemplateProcessor(templateName, templateValues, iterateValues, targetPath, overwriteTarget);
+		compoundProcessor = createCompound(targetPath, owner, group, modeMask, templateProcessor);
+	}
+
+	private Processor createCompound(String targetPath, String owner, String group,
+			String modeMask, TemplateProcessor templateProcessor) {
 		ShellProcessor shellProcessor = 
 			new ShellProcessor(
 				"chown " + owner + ":" + group + " " + targetPath + " && " +
 				"chmod " + modeMask + " " + targetPath);
-		compoundProcessor = new CompoundProcessor(templateProcessor, shellProcessor);
+		return new CompoundProcessor(templateProcessor, shellProcessor);
 	}
 	
 	@Override
diff --git a/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java b/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
index 79eac77..24c9afe 100644
--- a/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
+++ b/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
@@ -66,7 +66,7 @@
 		templateVars.put("DOM_IPNUMBEREX", getOldIPAddress(pac));
 		templateVars.put("DOMAIN", domName);
 		templateVars.put("USER_NAME", domUser.getComment());
-		mainProcessor.appendProcessor(hiveName, createApacheVHostSetupProcessor(dom, templateVars), "Setup Apache VHost");
+		mainProcessor.appendProcessor(hiveName, createApacheVHostSetupProcessor(em, dom, templateVars), "Setup Apache VHost");
 		if (dom.isPacDomain()) {
 			mainProcessor.appendProcessor(hiveName, createMovePacDomainContent(em, dom), "Move pac domain content");
 		}
@@ -167,14 +167,18 @@
 		ArrayList<Map<String, String>> domsMaps = new ArrayList<Map<String, String>>();
 		Query query = em.createQuery("SELECT d FROM Domains d WHERE d.domainoptions.name = :option");
 		query.setParameter("option", "nogreylisting");
-		List<Domain> result = query.getResultList();
-		for (Domain dom : result) {
-			HashMap<String, String> hashMap = new HashMap<String, String>();
-			domsMaps.add(hashMap);
+		List<?> result = query.getResultList();
+		for (Object dom : result) {
+			if (dom instanceof Domain) {
+				HashMap<String, String> hashMap = new HashMap<String, String>();
+				hashMap.put("DOM", ((Domain) dom).getName());
+				domsMaps.add(hashMap);
+			}
 		}
 		return new CompoundProcessor(
-			new TemplateProcessor("/de/hdsadmin/mods/dom/postgrey-whitelist-recipients.jtpl",
-									hashMap, domsMaps.iterator(), "/etc/postgeay/whitelist_recipients", true),
+			new TemplateProcessor("/de/hsadmin/mods/dom/postgrey-whitelist-recipients.jtpl",
+						new HashMap<String, String>(), 
+						domsMaps.iterator(), "/etc/postgrey/whitelist_recipients", true),
 			new ShellProcessor("invoke-rc.d postgrey reload"),
 			new ShellProcessor("postmap -r -i /etc/postfix-mailin/relaydomains", 
 						domName + " anything\n" +
@@ -263,12 +267,20 @@
 		return domDirsProcessor;
 	}
 
-	private Processor createApacheVHostSetupProcessor(Domain dom, Map<String, String> templateVars) 
+	private Processor createApacheVHostSetupProcessor(EntityManager em, Domain dom, Map<String, String> templateVars) 
 				throws ProcessorException {
 		String domName = dom.getName();
 		int level = domName.split("\\.").length;
 		String linkPrefix = Integer.toString(100 - level);
 		String pac = dom.getUser().getPac().getName();
+		Query query = em.createQuery("SELECT d FROM Domains d WHERE d.domainoptions.name = :option AND d.name = :domname");
+		query.setParameter("option", "nohtdocsfallback");
+		query.setParameter("domname", dom.getName());
+		List<?> result = query.getResultList();
+		List<Map<String, String>> iterateMaps = new ArrayList<Map<String, String>>();
+		if (!result.isEmpty()) {
+			iterateMaps.add(new HashMap<String, String>());
+		}
 		Processor domSetupProcessor = new CompoundProcessor(
 			createDomainDirectoriesProcessor(dom, templateVars),
 			new CreateFileProcessor(selectVHostTemplate(dom), templateVars, "/etc/apache2/sites-available/" + domName, "root", "root", "644", true),
diff --git a/hsarback/src/de/hsadmin/mods/dom/httpd-vhost-dynamic.jtpl b/hsarback/src/de/hsadmin/mods/dom/httpd-vhost-dynamic.jtpl
index ea86656..3598247 100644
--- a/hsarback/src/de/hsadmin/mods/dom/httpd-vhost-dynamic.jtpl
+++ b/hsarback/src/de/hsadmin/mods/dom/httpd-vhost-dynamic.jtpl
@@ -38,13 +38,13 @@
     RewriteCond /home/doms/{DOM_HOSTNAME}/subs/${tolower:%1} -d
     RewriteRule ^(.*) /home/doms/{DOM_HOSTNAME}/subs/${tolower:%1}$1 [last]
 
-<!-- BEGIN: nosubdomainfallbackforhttp -->    RewriteCond %{REQUEST_URI} !^/cgi-bin/
+<!-- BEGIN: iterate -->    RewriteCond %{REQUEST_URI} !^/cgi-bin/
     RewriteCond %{REQUEST_URI} !^/fastcgi-bin/
     RewriteCond %{HTTP_HOST} ^(.+)\.{DOM_HOSTNAME}\.?(:80)?$ [novary]
     RewriteCond /home/doms/{DOM_HOSTNAME}/subs/${tolower:%1} !-d
     RewriteRule ^(.*) - [redirect=404,last]
-
-<!-- END: nosubdomainfallbackforhttp -->    AddType application/x-httpd-php .php .php5 .php4 .php3
+<!-- END: iterate -->
+    AddType application/x-httpd-php .php .php5 .php4 .php3
     Action application/x-httpd-php /fastcgi-bin/phpstub
 
 </VirtualHost>
diff --git a/hsarback/src/de/hsadmin/mods/dom/httpd-vhost-static.jtpl b/hsarback/src/de/hsadmin/mods/dom/httpd-vhost-static.jtpl
index 8db34fc..c6982a4 100644
--- a/hsarback/src/de/hsadmin/mods/dom/httpd-vhost-static.jtpl
+++ b/hsarback/src/de/hsadmin/mods/dom/httpd-vhost-static.jtpl
@@ -31,11 +31,11 @@
     RewriteCond /home/doms/{DOM_HOSTNAME}/subs/${tolower:%1} -d
     RewriteRule ^(.*) /home/doms/{DOM_HOSTNAME}/subs/${tolower:%1}$1 [last]
 
-<!-- BEGIN: nosubdomainfallbackforhttp -->    RewriteCond %{HTTP_HOST} ^(.+)\.{DOM_HOSTNAME}\.?(:80)?$ [novary]
+<!-- BEGIN: iterate -->    RewriteCond %{HTTP_HOST} ^(.+)\.{DOM_HOSTNAME}\.?(:80)?$ [novary]
     RewriteCond /home/doms/{DOM_HOSTNAME}/subs/${tolower:%1} !-d
     RewriteRule ^(.*) - [redirect=404,last]
-
-<!-- END: nosubdomainfallbackforhttp --></VirtualHost>
+<!-- END: iterate -->
+</VirtualHost>
 
 <VirtualHost {DOM_IPNUMBER}:443 {DOM_IPNUMBEREX}:443>
 
diff --git a/hsarback/test/de/hsadmin/remote/DomainTest.java b/hsarback/test/de/hsadmin/remote/DomainTest.java
index 57fe078..f72e591 100644
--- a/hsarback/test/de/hsadmin/remote/DomainTest.java
+++ b/hsarback/test/de/hsadmin/remote/DomainTest.java
@@ -155,7 +155,7 @@
 		Map<String, Object> setParams = new HashMap<String, Object>();
 		Map<String, String> whereParams = new HashMap<String, String>();
 		List<String> optionslist = new ArrayList<String>();
-		optionslist.add("greylisting");
+		optionslist.add("nogreylisting");
 		setParams.put("domainoptions", optionslist);
 		whereParams.put("name", "example01.org");
 		Object[] params = new Object[] { user, 
@@ -176,8 +176,8 @@
 		Map<String, Object> setParams = new HashMap<String, Object>();
 		Map<String, String> whereParams = new HashMap<String, String>();
 		List<String> optionslist = new ArrayList<String>();
-		optionslist.add("htdocsfallback");
-		optionslist.add("greylisting");
+		optionslist.add("nohtdocsfallback");
+		optionslist.add("nogreylisting");
 		setParams.put("domainoptions", optionslist);
 		whereParams.put("name", "example01.org");
 		Object[] params = new Object[] { user, 

--
Gitblit v1.9.3