HSAdmin Backend Domains, E-Mail, Datenbanken
Peter Hormanns
2019-06-18 97bfe29c61481015c6ae5b68a12fd3b662335abb
dont create pac domain
3 files modified
64 ■■■■■ changed files
hsarback/src/de/hsadmin/core/qserv/VelocityProcessor.java 11 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java 6 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java 47 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/core/qserv/VelocityProcessor.java
@@ -33,6 +33,17 @@
    private boolean overwriteTarget;
    private String errorMessage;
    public VelocityProcessor(String templateName, Map<String, Object> templateVars, String targetPath, boolean overwriteTarget) {
        errorMessage = "";
        this.targetPath = targetPath;
        this.overwriteTarget = overwriteTarget;
        VelocityContext context = new VelocityContext();
        for (String key : templateVars.keySet()) {
            context.put(key, templateVars.get(key));
        }
        mergeTemplate(templateName, context);
    }
    public VelocityProcessor(String templateName, Hive hive, String targetPath, boolean overwriteTarget) {
        errorMessage = "";
        this.targetPath = targetPath;
hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java
@@ -19,7 +19,6 @@
import de.hsadmin.hostsharing.BasePacType;
import de.hsadmin.mods.cust.Contact;
import de.hsadmin.mods.cust.Customer;
import de.hsadmin.mods.dom.Domain;
import de.hsadmin.mods.user.UnixUser;
public class PacModuleImpl extends AbstractModuleImpl {
@@ -113,11 +112,6 @@
            admin.setUserId(nUID);
            users.add(admin);
            newPacEntity = super.add(newEntity);
            GenericModuleImpl helperModule = new GenericModuleImpl(getTransaction());
            Domain pacDomain = new Domain();
            pacDomain.setName(pac.getName() + ".hostsharing.net");
            pacDomain.setUser(admin);
            helperModule.add(pacDomain);
        } else {
            newPacEntity = super.add(newEntity);
        }
hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java
@@ -1,8 +1,13 @@
package de.hsadmin.mods.pac;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import de.hsadmin.core.model.AbstractEntity;
import de.hsadmin.core.qserv.CompoundProcessor;
@@ -17,6 +22,7 @@
import de.hsadmin.core.util.PasswordTool;
import de.hsadmin.hostsharing.BasePacType;
import de.hsadmin.hostsharing.QuotaLimit;
import de.hsadmin.mods.dom.Domain;
import de.hsadmin.mods.user.UnixUser;
@@ -38,6 +44,7 @@
                createEtcHostsProc(hive),
                createNetworkInterfacesProc(hive),
                createIPTablesProc(),
                createZonefileProc(em, pac),
                createSudouersProc(hive),
                createProftpdConfProc(hive),
                createMakePacDirectoryStructure(unixUser),
@@ -130,6 +137,46 @@
        return new ShellProcessor("mk-iptables-rules Accounting");
    }
    private Processor createZonefileProc(final EntityManager em, final Pac pac) {
        final Map<String, Object> zonefileTemplateVars = new HashMap<String, Object>();
        zonefileTemplateVars.put("sio", Long.toString(System.currentTimeMillis()/1000L));
        final String domName = pac.getName() + ".hostsharing.net";
        final String zonefileTargetPath = "/etc/bind/pri." + domName;
        final Processor zonefileTemplateProcessor =
            new VelocityProcessor("/de/hsadmin/mods/pac/pac-zonefile.vm", zonefileTemplateVars, zonefileTargetPath, false);
        final Processor zonefileACLProcessor =
            new ShellProcessor("chown root:bind " + zonefileTargetPath + " && chmod 644 " + zonefileTargetPath);
        final String hiveName = pac.getHiveName();
        final Query domsQuery = em.createQuery("SELECT d FROM Domains d WHERE d.user.pac.hive.name = :hivename");
        domsQuery.setParameter("hivename", hiveName);
        final List<?> domsList = domsQuery.getResultList();
        final Set<String> domsNames = new HashSet<>();
        for (final Object obj : domsList) {
            if (obj instanceof Domain) {
                domsNames.add(((Domain) obj).getName());
            }
        }
        final Query pacsQuery = em.createQuery("SELECT p FROM Pacs p WHERE p.hive.name = :hivename");
        domsQuery.setParameter("hivename", hiveName);
        final List<?> pacsList = pacsQuery.getResultList();
        for (final Object obj : pacsList) {
            if (obj instanceof Pac) {
                domsNames.add(((Pac) obj).getName() + ".hostsharing.net");
            }
        }
        final Map<String, Object> namedZonesTemplateVars = new HashMap<String, Object>();
        namedZonesTemplateVars.put("domains", domsNames);
        final Processor prizonesFileProcessor = new CompoundProcessor(
            new VelocityProcessor("/de/hsadmin/mods/dom/named-pri-zones.vm",
                    namedZonesTemplateVars, "/etc/bind/named.pri-zones.tmp", true),
            new ShellProcessor(" ( diff -q /etc/bind/named.pri-zones.tmp /etc/bind/named.pri-zones && rm /etc/bind/named.pri-zones.tmp ) " +
                    "|| ( mv /etc/bind/named.pri-zones.tmp /etc/bind/named.pri-zones && invoke-rc.d bind9 reload )")
        );
        final Processor dnsSetupProcessor =
            new CompoundProcessor(zonefileTemplateProcessor, zonefileACLProcessor, prizonesFileProcessor);
        return dnsSetupProcessor;
    }
    private Processor createSudouersProc(Hive hive) throws ProcessorException {
        return new VelocityProcessor("/de/hsadmin/mods/pac/sudoers-pacs.vm", hive, "/etc/sudoers.d/pacs", true);
    }