HSAdmin Backend Domains, E-Mail, Datenbanken
Peter Hormanns
2012-09-21 3f23cec1c2830549010b925249ed533915bb1309
Merge branch 'master' of ssh://hsh04-source@hsh04.hostsharing.net/home/doms/source.hostsharing.net/source/hsadmin.git/
4 files modified
59 ■■■■ changed files
hsarback/src/de/hsadmin/cliClientConnector/CLIClientConnectorServlet.java 5 ●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java 20 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java 29 ●●●● patch | view | raw | blame | history
hsarback/test/de/hsadmin/remote/DomainTest.java 5 ●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/cliClientConnector/CLIClientConnectorServlet.java
@@ -213,9 +213,12 @@
        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 + ")");
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;
@@ -89,8 +90,25 @@
        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<DomainOption> domainOptions = new HashSet<DomainOption>();
        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);
        UnixUser loginUser = getTransaction().getLoginUser();
        if (!loginUser.hasHostmasterRole()) {
            // search for domains superior to dom
hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
@@ -375,17 +375,32 @@
        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) {
hsarback/test/de/hsadmin/remote/DomainTest.java
@@ -88,7 +88,7 @@
    }
    @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 @@
            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