From e280c2a1925036e54279ccc7a20438b69113e84e Mon Sep 17 00:00:00 2001
From: Peter Hormanns <peter.hormanns@hostsharing.net>
Date: Fri, 21 Oct 2011 16:10:41 +0200
Subject: [PATCH] pacdomain

---
 hsarback/src/de/hsadmin/mods/pac/email_new_pac_account.jtpl  |   18 ++++++++----------
 hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java       |   10 ++++++----
 hsarback/src/de/hsadmin/mods/dom/Domain.java                 |    8 ++++++++
 hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java |   19 ++-----------------
 4 files changed, 24 insertions(+), 31 deletions(-)

diff --git a/hsarback/src/de/hsadmin/mods/dom/Domain.java b/hsarback/src/de/hsadmin/mods/dom/Domain.java
index 832f07d..451a5bb 100644
--- a/hsarback/src/de/hsadmin/mods/dom/Domain.java
+++ b/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;
diff --git a/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java b/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java
index 81abc1a..36f34be 100644
--- a/hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java
+++ b/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
diff --git a/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java b/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
index 3fbad4b..19aaaec 100644
--- a/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
+++ b/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";
diff --git a/hsarback/src/de/hsadmin/mods/pac/email_new_pac_account.jtpl b/hsarback/src/de/hsadmin/mods/pac/email_new_pac_account.jtpl
index cf4497b..7865e97 100644
--- a/hsarback/src/de/hsadmin/mods/pac/email_new_pac_account.jtpl
+++ b/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.
 

--
Gitblit v1.9.3