From 7be61f856c8ea466b2c70cccdcd49768a554b737 Mon Sep 17 00:00:00 2001 From: Purodha Blissenbach Date: Fri, 21 Sep 2012 14:30:03 +0200 Subject: [PATCH 1/4] Default domain options for newly created domain - greylisting on, anything else not set. --- hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java | 8 ++++++++ hsarback/test/de/hsadmin/remote/DomainTest.java | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java b/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java index 2e7038d..e075d94 100644 --- a/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java +++ b/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java @@ -1,6 +1,7 @@ package de.hsadmin.mods.dom; import java.util.Date; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -90,6 +91,13 @@ public class DomainModuleImpl extends AbstractModuleImpl { if (admin == null || admin.getName() == null || admin.getName().length() == 0) { throw new HSAdminException("domain admin required"); } + // Standard domainoptions setzen. TODO: Alle defaults über eigene Klasse aus der Datenbank holen. + HashSet domainOptions = new HashSet(); + DomainOption domainOption = new DomainOption(); + domainOption.setName("greylisting"); + domainOptions.add(domainOption); + dom.setDomainoptions(domainOptions); + EntityManager em = getTransaction().getEntityManager(); UnixUser loginUser = getTransaction().getLoginUser(); diff --git a/hsarback/test/de/hsadmin/remote/DomainTest.java b/hsarback/test/de/hsadmin/remote/DomainTest.java index fbd57cb..c7ee4f9 100644 --- a/hsarback/test/de/hsadmin/remote/DomainTest.java +++ b/hsarback/test/de/hsadmin/remote/DomainTest.java @@ -88,7 +88,7 @@ public class DomainTest { } @Test - public void testCreate() { + public void testCreate() throws UnknownHostException, IOException { int count = getDomsCount(); String user = "aaa00"; String grantingTicketURL = cas.getGrantingTicketURL(user); @@ -105,6 +105,9 @@ public class DomainTest { fail(e.getMessage()); } assertEquals(count + 1, getDomsCount()); + // TODO die beiden folgenden Tests sind etwas spezifisch für Version 2.2 + assertEquals("eine neue Domain sollte nur die Domainoption 'greylisting' haben.",1,getDomOptionsCount()); + testGreylistingOnOff(true, "sollte bei neuer Domain eingeschaltet sein"); } @Test From 48c8d2777374b99ff2b55ac377980033d9c9c91a Mon Sep 17 00:00:00 2001 From: Michael Hierweck Date: Fri, 21 Sep 2012 14:58:36 +0200 Subject: [PATCH 2/4] Fixed migration code: pac domain to subdomain --- .../mods/dom/DomainProcessorFactory.java | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java b/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java index dc7652f..4e4e983 100644 --- a/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java +++ b/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java @@ -370,17 +370,32 @@ public class DomainProcessorFactory implements EntityProcessorFactory { String domDir = pacDir + "/doms/" + pac.getName() + ".hostsharing.net"; String[] sourceDirs = new String[] { "web", "web-ssl", "cgi", "cgi-ssl", "fastcgi", "fastcgi-ssl" } ; String[] targetDirs = new String[] { "htdocs", "htdocs-ssl", "cgi", "cgi-ssl", "fastcgi", "fastcgi-ssl" } ; - CompoundProcessor processor = new CompoundProcessor( - new ShellProcessor("rm -rf " + domDir + "/subs " + domDir + "/htdocs/.htaccess " - + domDir + "/subs-ssl " + domDir + "/htdocs-ssl/.htaccess ")); + CompoundProcessor processor = new CompoundProcessor(); + for (int idx = 0; idx < targetDirs.length; idx++) { + processor.appendProcessor( + new ShellProcessor("rm -rf " + domDir + targetDirs[idx])); + } for (int idx = 0; idx < sourceDirs.length; idx++) { processor.appendProcessor( new ShellProcessor("shopt -s dotglob && ls " + pacDir + "/" + sourceDirs[idx] + " >/dev/null 2>&1" + - " && mv " + pacDir + "/" + sourceDirs[idx] + "/* " + domDir + "/" + targetDirs[idx] + "/ " + - " && ( rmdir " + pacDir + "/" + sourceDirs[idx] + " || rm " + pacDir + "/" + sourceDirs[idx] + " ) " + + " && mv " + pacDir + "/" + sourceDirs[idx] + domDir + "/" + targetDirs[idx] + " || echo 'directory " + pacDir + "/" + sourceDirs[idx] + " not found'")); - } - return processor; + } + processor.appendProcessor( + new ShellProcessor("test -L " + domDir + "/htdocs" + + " && `stat -c '%N' " + domDir + "/htdocs |sed -e's/^.*`//' -e\"s/'$//\"` = web-ssl " + + " && cd " + domDir + + " && rm " + domDir + "/htdocs" + + " && ln -sf htdocs-ssl htdocs" + + " && chown -h " + pac + ":" + pac + " " + domDir + "/htdocs")); + processor.appendProcessor( + new ShellProcessor("test -L " + domDir + "/htdocs-ssl" + + " && `stat -c '%N' " + domDir + "/htdocs-ssl |sed -e's/^.*`//' -e\"s/'$//\"` = web " + + " && cd " + domDir + + " && rm " + domDir + "/htdocs-ssl" + + " && ln -sf htdocs htdocs-ssl" + + " && chown -h " + pac + ":" + pac + " " + domDir + "/htdocs-ssl")); + return processor; } private String selectVHostTemplate(Domain dom) { From e0ee6fe431d42d7025244ba06bda71f754f1a500 Mon Sep 17 00:00:00 2001 From: Purodha Blissenbach Date: Fri, 21 Sep 2012 15:18:17 +0200 Subject: [PATCH 3/4] values of where-paremeters named "id" are now treated as numbers when reading from command line client. This is a guess-based trial. --- .../cliClientConnector/CLIClientConnectorServlet.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hsarback/src/de/hsadmin/cliClientConnector/CLIClientConnectorServlet.java b/hsarback/src/de/hsadmin/cliClientConnector/CLIClientConnectorServlet.java index f70e74f..63e475a 100644 --- a/hsarback/src/de/hsadmin/cliClientConnector/CLIClientConnectorServlet.java +++ b/hsarback/src/de/hsadmin/cliClientConnector/CLIClientConnectorServlet.java @@ -213,9 +213,12 @@ public class CLIClientConnectorServlet extends HttpServlet { while (wkeys.hasNext()) { String k = (String) wkeys.next(); String kname = hasGetter(eType, k); + String kvalue = ( (k.equals("id")) + ? ( AbstractEntity.escapeString(where.get(k)) ) + : ( "'" + AbstractEntity.escapeString(where.get(k)) + "'" ) ); if (kname != null) { rval += (first ? "" : " and ") - + "(obj." + AbstractEntity.escapeString(kname) + " = '" + AbstractEntity.escapeString(where.get(k)) + "')"; + + "(obj." + AbstractEntity.escapeString(kname) + " = " + kvalue + ")"; first = false; } else { throw new ServletException("illegal input (unknown field: " + k + ")"); From 001946a6d0ce76cfa8524d0f0c37f4c8a0b334fa Mon Sep 17 00:00:00 2001 From: Purodha Blissenbach Date: Fri, 21 Sep 2012 16:16:55 +0200 Subject: [PATCH 4/4] Fix fatal error setting default domain options for newly created domain. --- .../src/de/hsadmin/mods/dom/DomainModuleImpl.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java b/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java index e075d94..83b6762 100644 --- a/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java +++ b/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java @@ -96,10 +96,20 @@ public class DomainModuleImpl extends AbstractModuleImpl { DomainOption domainOption = new DomainOption(); domainOption.setName("greylisting"); domainOptions.add(domainOption); + EntityManager em = getTransaction().getEntityManager(); + Query q = em.createQuery("SELECT opt FROM " + + DomainOption.class.getAnnotation(javax.persistence.Entity.class).name() + + " opt WHERE opt.name=:optName"); + for (DomainOption opt : domainOptions) { + q.setParameter("optName", opt.getName()); + List list = q.getResultList(); + if (list.size() != 1) { + throw new HSAdminException("invalid domain option: " + opt.getName()); + } else { + opt.setId(((DomainOption) list.get(0)).getId()); + } dom.setDomainoptions(domainOptions); - EntityManager em = getTransaction().getEntityManager(); - UnixUser loginUser = getTransaction().getLoginUser(); if (!loginUser.hasHostmasterRole()) { // search for domains superior to dom