diff --git a/hsarback/conf/META-INF/prod-context.xml b/hsarback/conf/META-INF/prod-context.xml
index e84ba48..4ccd702 100644
--- a/hsarback/conf/META-INF/prod-context.xml
+++ b/hsarback/conf/META-INF/prod-context.xml
@@ -65,6 +65,16 @@
global="jms/hsadminSystem-h52"
type="javax.jms.Queue"/>
+
+
+
+
+
+
+
+
+
+
Container
Shareable
+
+ jms/hsadminSystem-h53
+ javax.jms.Queue
+ Container
+ Shareable
+
+
+ jms/hsadminSystem-h54
+ javax.jms.Queue
+ Container
+ Shareable
+
jms/hsadminSystem-h55
javax.jms.Queue
@@ -253,6 +265,24 @@
Container
Shareable
+
+ jms/hsadminSystem-h59
+ javax.jms.Queue
+ Container
+ Shareable
+
+
+ jms/hsadminSystem-h60
+ javax.jms.Queue
+ Container
+ Shareable
+
+
+ jms/hsadminSystem-h61
+ javax.jms.Queue
+ Container
+ Shareable
+
jms/hsadminSystem-dns1
javax.jms.Queue
diff --git a/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java b/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
index d329536..8b92cf5 100644
--- a/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
+++ b/hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
@@ -39,7 +39,7 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
Domain dom = (Domain) entity;
UnixUser domUser = dom.getUser();
Pac pac = domUser.getPac();
- WaitingTasksProcessor mainProcessor = new WaitingTasksProcessor(createHiveDNSSetupProcessor(dom));
+ WaitingTasksProcessor mainProcessor = new WaitingTasksProcessor(createHiveDNSSetupProcessor(em, dom));
mainProcessor.appendProcessor(hiveName, createHiveEMailSetupProcessor(em, dom), "Setup EMail");
Config config = Config.getInstance();
for (String queueName : config.getProperty("queues.dns").split(",")) {
@@ -82,7 +82,19 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
return mainProcessor;
}
- private Processor createHiveDNSSetupProcessor(Domain dom) throws ProcessorException {
+ private Processor createDNSServerConfigProcessor(EntityManager em) {
+ Query query = em.createQuery("SELECT d FROM Domains d");
+ HashMap templateVars = new HashMap();
+ templateVars.put("domains", query.getResultList());
+ return new CompoundProcessor(
+ new VelocityProcessor("/de/hsadmin/mods/dom/named-hsh-conf.vm",
+ templateVars, "/etc/bind/named-hsh.conf.tmp", true),
+ new ShellProcessor(" ( diff -q /etc/bind/named-hsh.conf.tmp /etc/bind/named-hsh.conf && rm /etc/bind/named-hsh.conf.tmp ) " +
+ "|| ( mv /etc/bind/named-hsh.conf.tmp /etc/bind/named-hsh.conf && invoke-rc.d bind9 reload )")
+ );
+ }
+
+ private Processor createHiveDNSSetupProcessor(EntityManager em, Domain dom) throws ProcessorException {
Map templateVars = new HashMap();
templateVars.put("sio", Long.toString(System.currentTimeMillis()/1000L));
String domName = dom.getName();
@@ -91,14 +103,18 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
new VelocityProcessor("/de/hsadmin/mods/dom/zonefile.vm", templateVars, dom, zonefileTargetPath, false);
Processor zonefileACLProcessor =
new ShellProcessor("chown root:bind " + zonefileTargetPath + " && chmod 644 " + zonefileTargetPath);
- // TODO Use templates and regenerate the file.
- Processor prizonesFileProcessor =
- new ShellProcessor("echo 'zone \"" + domName + "\" { type master; file \"pri." + domName + "\"; };' >>/etc/bind/named.pri-zones" +
- " && sort /etc/bind/named.pri-zones | uniq >/etc/bind/named.pri-zones.tmp" +
- " && mv /etc/bind/named.pri-zones.tmp /etc/bind/named.pri-zones");
- Processor dnsReloadProcessor = new ShellProcessor("invoke-rc.d bind9 reload");
+ Query query = em.createQuery("SELECT d FROM Domains d WHERE d.user.pac.hive.name = :hivename");
+ query.setParameter("hivename", dom.getUser().getHiveName());
+ templateVars = new HashMap();
+ templateVars.put("domains", query.getResultList());
+ Processor prizonesFileProcessor = new CompoundProcessor(
+ new VelocityProcessor("/de/hsadmin/mods/dom/named-pri-zones.vm",
+ templateVars, dom, "/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 )")
+ );
Processor dnsSetupProcessor =
- new CompoundProcessor(zonefileTemplateProcessor, zonefileACLProcessor, prizonesFileProcessor, dnsReloadProcessor);
+ new CompoundProcessor(zonefileTemplateProcessor, zonefileACLProcessor, prizonesFileProcessor);
return dnsSetupProcessor;
}
@@ -124,18 +140,6 @@ public class DomainProcessorFactory implements EntityProcessorFactory {
return emailAdrProcessor;
}
- private Processor createDNSServerConfigProcessor(EntityManager em) {
- Query query = em.createQuery("SELECT d FROM Domains d");
- HashMap templateVars = new HashMap();
- templateVars.put("domains", query.getResultList());
- return new CompoundProcessor(
- new VelocityProcessor("/de/hsadmin/mods/dom/named-hsh-conf.vm",
- templateVars, "/etc/bind/named-hsh.conf.tmp", true),
- new ShellProcessor(" ( diff -q /etc/bind/named-hsh.conf.tmp /etc/bind/named-hsh.conf && rm /etc/bind/named-hsh.conf.tmp ) " +
- "|| ( mv /etc/bind/named-hsh.conf.tmp /etc/bind/named-hsh.conf && invoke-rc.d bind9 reload )")
- );
- }
-
private Processor createMailinSetupProcessor(EntityManager em, Domain dom, Pac pac) throws ProcessorException {
String inetAddr = pac.getCurINetAddr().getInetAddr();
CompoundProcessor cp = new CompoundProcessor(
diff --git a/hsarback/src/de/hsadmin/mods/dom/htaccess.vm b/hsarback/src/de/hsadmin/mods/dom/htaccess.vm
index dd5e6d3..8473496 100644
--- a/hsarback/src/de/hsadmin/mods/dom/htaccess.vm
+++ b/hsarback/src/de/hsadmin/mods/dom/htaccess.vm
@@ -1 +1 @@
-Redirect permanent / ${protocol}://www.${domain.name}/
+Redirect permanent / ${protocol}://www.${dom.name}/
diff --git a/hsarback/src/de/hsadmin/mods/dom/httpd-vhost.vm b/hsarback/src/de/hsadmin/mods/dom/httpd-vhost.vm
index 709794b..ee021b5 100644
--- a/hsarback/src/de/hsadmin/mods/dom/httpd-vhost.vm
+++ b/hsarback/src/de/hsadmin/mods/dom/httpd-vhost.vm
@@ -51,7 +51,7 @@
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond %{REQUEST_URI} !^/fastcgi-bin/
- RewriteCond %{HTTP_HOST} ^(.+)\.${dom.name}\.?(:[0-9]+)?\$ [novary]
+ RewriteCond %{HTTP_HOST} ^(.+)\.${dom.name}\.?(:[0-9]+)?$ [novary]
RewriteCond /home/doms/${dom.name}/subs/#[[${tolower:%1} ]]# -d
RewriteRule ^(.*) /home/doms/${dom.name}/subs/#[[${tolower:%1}$1 ]]# [last]
diff --git a/hsarback/src/de/hsadmin/mods/dom/named-hsh-conf.vm b/hsarback/src/de/hsadmin/mods/dom/named-hsh-conf.vm
index 09a553c..be4f101 100644
--- a/hsarback/src/de/hsadmin/mods/dom/named-hsh-conf.vm
+++ b/hsarback/src/de/hsadmin/mods/dom/named-hsh-conf.vm
@@ -4,5 +4,5 @@
//
#foreach( $domain in ${domains} )
-zone "${domain.name}" { type slave; file "sec.${domain.name}"; masters { ${domain.user.pac.hive.inetaddr}; }; };
-#end
\ No newline at end of file
+zone "${domain.name}" { type slave; file "sec.${domain.name}"; masters { ${domain.user.pac.hive.inetAddr.inetAddr}; }; };
+#end
diff --git a/hsarback/src/de/hsadmin/mods/dom/named-pri-zones.vm b/hsarback/src/de/hsadmin/mods/dom/named-pri-zones.vm
new file mode 100644
index 0000000..ba2286d
--- /dev/null
+++ b/hsarback/src/de/hsadmin/mods/dom/named-pri-zones.vm
@@ -0,0 +1,8 @@
+//
+// This file is managed by HSAdmin.
+// Do not edit manually. Changes will be overwritten.
+//
+
+#foreach( $domain in ${domains} )
+zone "${domain.name}" { type master; file "pri.${domain.name}"; };
+#end
diff --git a/hsarjcli/scripting/package_dump.js b/hsarjcli/scripting/package_dump.js
index 134a87a..628747e 100644
--- a/hsarjcli/scripting/package_dump.js
+++ b/hsarjcli/scripting/package_dump.js
@@ -29,14 +29,12 @@ function shadowdump(pac) {
+ "|gzip --best|secat --user=" + pac + " --group=" + pac + " --umask=007 --output=" + dump;
runbash(cmd);
}
-function mysqlpasswddump(pac) {
+function mysqlaclsdump(pac) {
var dump = "/home/pacs/" + pac + "/.bak/mysql_passwd.gz";
- var sql = "select concat('update user set Password=\\\'', Password, '\\\' where User=\\\'', User, '\\\';')"
- + " as update_passwd from user where user like '" + pac + "%';";
- var cmd = "( ( echo \"" + sql + "\"|mysql mysql ) ; echo \"flush privileges;\" )"
- + "|sed '1d'|gzip --best|secat --user=" + pac + " --group=" + pac + " --umask=007 --output=" + dump;
+ var cmd = "mysqldump --no-create-db --skip-opt --no-create-info --replace --where=\"user like '" + pac + "%'\" mysql --tables user > " + dump
+ + " && mysqldump --no-create-db --skip-opt --no-create-info --replace --where=\"db like '" + pac + "%'\" mysql --tables db tables_priv proc >>" + dump;
runbash(cmd);
-}
+}
function pgsqlpasswddump(pac) {
var dump = "/home/pacs/" + pac + "/.bak/pgsql_passwd.gz";
var cmd = "export PGUSER=postgres; pg_dumpall -r | grep ^ALTER | grep " + pac
@@ -129,7 +127,7 @@ if (pacs.length == 1 && hive != 'undef') {
file.write('target: [\n');
if (addresses[idx]['target']) {
for (jdx=0; jdx