HSAdmin Backend Domains, E-Mail, Datenbanken
Peter Hormanns
2011-10-21 e280c2a1925036e54279ccc7a20438b69113e84e
pacdomain
4 files modified
55 ■■■■■ changed files
hsarback/src/de/hsadmin/mods/dom/Domain.java 8 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java 10 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java 19 ●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/pac/email_new_pac_account.jtpl 18 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/dom/Domain.java
@@ -160,6 +160,14 @@
        this.dnsMaster = dnsMaster;
    }
    public boolean isPacDomain() {
        if (getUser() != null && getUser().getPac() != null) {
            String pacDomName = getUser().getPac().getName() + ".hostsharing.net";
            return pacDomName.equals(getName());
        }
        return false;
    }
    @Override
    public boolean isNew() {
        return id == 0;
hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java
@@ -99,11 +99,9 @@
            // search for domains superior to dom
            Query domainQuery = em.createQuery("SELECT d FROM Domains d WHERE d.name = :domainName");
            String superior = dom.getName();
            String prefix = null;
            while (superior.contains(".")) {
                prefix = superior.substring(0, superior.indexOf('.'));
                superior = superior.substring(superior.indexOf('.') + 1);
                if ("hostsharing.net".equals(superior) && admin.getName().equals(prefix)) {
                if (dom.isPacDomain()) {
                    break;
                }
                domainQuery.setParameter("domainName", superior);
@@ -144,6 +142,10 @@
    @Override
    public AbstractEntity update(AbstractEntity existingEntity) throws HSAdminException {
        Domain dom = (Domain) existingEntity;
        UnixUser loginUser = getTransaction().getLoginUser();
        if (dom.isPacDomain() && !loginUser.hasHostmasterRole()) {
            throw new AuthorisationException(loginUser, "update", existingEntity);
        }
        if (dom.getName() == null || dom.getName().length() == 0) {
            throw new HSAdminException("domain name required");
        }
@@ -158,7 +160,7 @@
            dom.setUser((UnixUser) query.getSingleResult());
        }
        needsWriteAccessOn(existingEntity, "update");
        throw new AuthorisationException(getTransaction().getLoginUser(), "update", existingEntity);
        throw new AuthorisationException(loginUser, "update", existingEntity);
    }
    @Override
hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
@@ -53,7 +53,6 @@
        for (String queueName : new String[] { "mail1", "mail2", "mail3" }) {
            mainProcessor.appendProcessor(queueName, createMailinSetupProcessor(domName, pac), queueName + ".hostsharing.net");
        }
//        mainProcessor.appendProcessor("backupmx", createBackupMXSetupProcessor(domName), "backupmx.hostsharing.net");
        templateVars = new HashMap<String, String>();
        templateVars.put("PAC", pacName);
        templateVars.put("HIVE", pac.getHiveName());
@@ -88,7 +87,6 @@
            mainProcessor.appendProcessor(queueName, createMailinDeleteProcessor(domName), queueName + ".hostsharing.net");
        }
        mainProcessor.appendProcessor(dom.getHiveName(), createApacheVHostDeleteProcessor(dom), "remove apache vhost");
//        mainProcessor.appendProcessor("backupmx", createBackupMXDeleteProcessor(domName), "backupmx.hostsharing.net");
        return mainProcessor;
    }
@@ -176,24 +174,11 @@
        return mailQueueProcessor;
    }
    private Processor createBackupMXSetupProcessor(String domName) {
        return new ShellProcessor("echo " + domName + " >> /etc/postfix/relaydomains" +
                    " && invoke-rc.d postfix reload");
    }
    private Processor createBackupMXDeleteProcessor(String domName) {
        Processor backupMXSMTPRelayDelProcessor =
            new ShellProcessor("grep -v '^" + domName + "$' /etc/postfix/relaydomains > /etc/postfix/relaydomains.tmp" +
                " && mv /etc/postfix/relaydomains.tmp /etc/postfix/relaydomains" +
                " && invoke-rc.d postfix reload");
        return backupMXSMTPRelayDelProcessor;
    }
    private CompoundProcessor createDomainDirectoriesProcessor(Domain dom, Map<String, String> templateVars) throws ProcessorException {
        UnixUser domUser = dom.getUser();
        String domName = dom.getName();
        Pac pac = domUser.getPac();
        boolean dynamicWeb = pac.isDynamicWeb();
        boolean dynamicWeb = pac.isDynamicWeb() || dom.isPacDomain();
        String pacName = pac.getName();
        String homeDir = domUser.getHomedir();
        String domsDir = homeDir + "/doms";
@@ -287,7 +272,7 @@
        if (domName.equals(pac.getName() + ".hostsharing.net")) {
            return "/de/hsadmin/mods/dom/httpd-vhost-dynamic.jtpl";
        }
        if (pac.isDynamicWeb()) {
        if (pac.isDynamicWeb() || dom.isPacDomain()) {
            return "/de/hsadmin/mods/dom/httpd-vhost-dynamic.jtpl";
        }
        return "/de/hsadmin/mods/dom/httpd-vhost-static.jtpl";
hsarback/src/de/hsadmin/mods/pac/email_new_pac_account.jtpl
@@ -25,20 +25,18 @@
oder mit dem Web-Client unter http://admin.hostsharing.net 
Dokumentation finden Sie unter:
        <http://www.hostsharing.net/dokumentation.html>
        <http://wiki.hostsharing.net/>
Der Webspace des Paketes ist theoretisch ab sofort unter
<http://{PAC}.hostsharing.net/> erreichbar, allerdings kann es durch
DNS-Caches Verzoegerungen geben. Das DocumentRoot ist ~{PAC}/web, wobei
~{PAC}/cgi als /cgi-bin in den Webspace eingeblendet wird. In SW Paketen
darf dieses CGI nur fuer administrative Zwecke verwendet werden.
DNS-Caches Verzoegerungen geben. Das DocumentRoot ist
  ~{PAC}/doms/{PAC}.hostsharing.net/htdocs/  bzw.
  ~{PAC}/doms/{PAC}.hostsharing.net/subs/www/
In SW Paketen darf diese Domain nur fuer administrative Zwecke verwendet
werden.
Die vorgenannte Paket-Subdomain ist jedoch eher zum Testen und Ausprobieren
gedacht und hat mit dem folgenden Domain-Webspace nichts zu tun, der wird
unter ~{PAC}/doms/ angelegt, sobald eine Domain aufgeschaltet wird. Dort gibt
es dann fuer jede Domain ein separates Verzeichnis.
Das Verfahren zum Bestellen von Domains ist auf unserer Website unter
Die vorgenannte Paket-Domain ist zum Testen und Ausprobieren gedacht.
Das Verfahren zum Bestellen weiterer Domains ist auf unserer Website unter
https://wiki.hostsharing.net/index.php?title=Domains
beschrieben.