From 9a219290a4b5a81fb2e7e24ba83980606caf3a89 Mon Sep 17 00:00:00 2001 From: Michael Hierweck Date: Thu, 20 Sep 2012 17:12:52 +0200 Subject: [PATCH] (Re)generate /etc/apache2/virtual.conf on pac.add and pac.delete. --- .../mods/dom/DomainProcessorFactory.java | 10 ++++----- .../hsadmin/mods/pac/PacProcessorFactory.java | 21 +++++++++++++++++-- .../de/hsadmin/mods/pac/httpd-virtual.jtpl | 12 +++++------ 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java b/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java index 5214daa..58e1bef 100644 --- a/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java +++ b/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java @@ -313,15 +313,15 @@ public class DomainProcessorFactory implements EntityProcessorFactory { createDomainDirectoriesProcessor(dom, templateVars), new CreateFileProcessor(selectVHostTemplate(dom), templateVars, "/etc/apache2/sites-available/" + domName + ".tmp", "root", "root", "644", true), new ShellProcessor("ls /etc/apache2/pems/" + pac + ".pem >/dev/null 2>&1 " + - "&& sed -i '/SSLCertificate.*default/d' " + "/etc/apache2/sites-available/" + domName + ".tmp" + - " && (ls /etc/apache2/pems/" + pac + ".chain.pem >/dev/null 2>&1 || sed -i '/SSLCertificateChain.*" + pac + "/d' " + "/etc/apache2/sites-available/" + domName + ")" + + " && sed -i '/SSLCertificate.*default/d' " + "/etc/apache2/sites-available/" + domName + ".tmp" + + " && (ls /etc/apache2/pems/" + pac + ".chain.pem >/dev/null 2>&1 || sed -i '/SSLCertificateChain.*" + pac + "/d' " + "/etc/apache2/sites-available/" + domName + ".tmp)" + " || sed -i '/SSLCertificate.*" + pac + "/d' " + "/etc/apache2/sites-available/" + domName + ".tmp"), new ShellProcessor( - " ( diff -q /etc/apache2/sites-available/" + domName + ".tmp /etc/apache2/sites-available/" + domName + " && rm /etc/apache2/sites-available/" + domName + ".tmp ) " + - " || ( mv /etc/apache2/sites-available/" + domName + ".tmp /etc/apache2/sites-available/" + domName + + " (diff -q /etc/apache2/sites-available/" + domName + ".tmp /etc/apache2/sites-available/" + domName + " && rm /etc/apache2/sites-available/" + domName + ".tmp ) " + + " || (mv /etc/apache2/sites-available/" + domName + ".tmp /etc/apache2/sites-available/" + domName + " && rm -f /etc/apache2/sites-enabled/" + linkPrefix + "-" + domName + " && ln -sf /etc/apache2/sites-available/" + domName + " /etc/apache2/sites-enabled/" + linkPrefix + "-" + domName + - " && invoke-rc.d apache2 reload >/dev/null 2>&1 ) ") + " && invoke-rc.d apache2 reload >/dev/null 2>&1)") ); return domSetupProcessor; } diff --git a/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java b/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java index 9ded029..d729873 100644 --- a/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java +++ b/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java @@ -16,6 +16,7 @@ import de.hsadmin.core.qserv.Processor; import de.hsadmin.core.qserv.ProcessorException; import de.hsadmin.core.qserv.ShellProcessor; import de.hsadmin.core.qserv.TemplateProcessor; +import de.hsadmin.core.qserv.CreateFileProcessor; import de.hsadmin.core.qserv.WaitingTasksProcessor; import de.hsadmin.core.util.Config; import de.hsadmin.core.util.PasswordTool; @@ -44,12 +45,27 @@ public class PacProcessorFactory implements EntityProcessorFactory { createSudouersProc(hiveValues, pacValuesList), createProftpdConfProc(hiveValues, pacValuesList), createMakePacDirectoryStructure(unixUser), - createIfUp(pacName)); + createIfUp(pacName), + createHttpdVirtualProc(pacName, pacValuesList)); WaitingTasksProcessor secProcessor = new WaitingTasksProcessor(priProcessor); // secProcessor.appendProcessor(pac.getHiveName(), createSendEMailProc(pacName, customerEMail, emailVars), "send email to customer"); return secProcessor; } + private Processor createHttpdVirtualProc( + String pacName, List> pacValuesList) throws ProcessorException { + Processor domSetupProcessor = new CompoundProcessor( + new CreateFileProcessor("/de/hsadmin/mods/pac/httpd-virtual.jtpl", new HashMap(), pacValuesList.iterator(), "/etc/apache2/virtual.conf.tmp", "root", "root", "644", true), + new ShellProcessor("ls /etc/apache2/pems/" + pacName + ".pem >/dev/null 2>&1 " + "&& sed -i '/SSLCertificate.*default/d' " + "/etc/apache2/apache.conf.tmp" + + " && (ls /etc/apache2/pems/" + pacName + ".chain.pem >/dev/null 2>&1" + + " || sed -i '/SSLCertificateChain.*" + pacName + "/d' "/etc/apache2/virtual.conf.tmp)" + + " || sed -i '/SSLCertificate.*" + pacName"/d' " + "/etc/apache2/virtual.conf.tmp"), + new ShellProcessor("(diff -q /etc/apache2/apache.conf.tmp /etc/apache2/apache.conf" + + " && rm /etc/apache2/apache.conf.tmp)" + + " || invoke-rc.d apache2 reload >/dev/null 2>&1")); + return domSetupProcessor; + } + @Override public Processor createUpdateProcessor(EntityManager em, T entity) throws ProcessorException { @@ -68,7 +84,8 @@ public class PacProcessorFactory implements EntityProcessorFactory { createEtcHostsProc(hiveValues, pacValuesList), createNetworkInterfacesProc(hiveValues, pacValuesList), createSudouersProc(hiveValues, pacValuesList), - createProftpdConfProc(hiveValues, pacValuesList))); + createProftpdConfProc(hiveValues, pacValuesList), + createHttpdVirtualProc(pac.getName(), pacValuesList))); waitingProcessor.appendProcessor(pac.getHiveName(), createDelUserProc(pac.getName()), "remove packet"); return waitingProcessor; } diff --git a/hsarback/src/de/hsadmin/mods/pac/httpd-virtual.jtpl b/hsarback/src/de/hsadmin/mods/pac/httpd-virtual.jtpl index 9dba391..719f1db 100644 --- a/hsarback/src/de/hsadmin/mods/pac/httpd-virtual.jtpl +++ b/hsarback/src/de/hsadmin/mods/pac/httpd-virtual.jtpl @@ -3,18 +3,17 @@ # Do not edit manually. Changes will be overwritten. # -NameVirtualHost {PAC_IPNUMBER}:80 -NameVirtualHost {PAC_IPNUMBER_EX}:80 -NameVirtualHost {PAC_IPNUMBER}:443 -NameVirtualHost {PAC_IPNUMBER_EX}:443 + +NameVirtualHost {PAC_IP}:80 +NameVirtualHost {PAC_IP}:443 - + Redirect 404 / - + SSLEngine On SSLCertificateFile /etc/apache2/pems/default.pem @@ -25,4 +24,5 @@ NameVirtualHost {PAC_IPNUMBER_EX}:443 Redirect 404 / + \ No newline at end of file