delete pac
This commit is contained in:
parent
be69a332b7
commit
ac52ad8cdf
@ -1,5 +1,12 @@
|
|||||||
package de.hsadmin.core.qserv;
|
package de.hsadmin.core.qserv;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import net.sf.jtpl.Template;
|
||||||
|
|
||||||
import de.hsadmin.core.model.HSAdminException;
|
import de.hsadmin.core.model.HSAdminException;
|
||||||
import de.hsadmin.core.util.Config;
|
import de.hsadmin.core.util.Config;
|
||||||
|
|
||||||
@ -17,6 +24,24 @@ public class MailerProcessor extends AbstractProcessor {
|
|||||||
this.aBody = aBody;
|
this.aBody = aBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MailerProcessor(String aTo, String aSubject, String templateName, Map<String, String> templateValues) throws ProcessorException {
|
||||||
|
this.aTo = aTo;
|
||||||
|
this.aSubject = aSubject;
|
||||||
|
try {
|
||||||
|
InputStream stream = MailerProcessor.class.getClassLoader().getResourceAsStream(templateName);
|
||||||
|
Template template = new Template(new InputStreamReader(stream));
|
||||||
|
for (String key : templateValues.keySet()) {
|
||||||
|
template.assign(key, templateValues.get(key));
|
||||||
|
}
|
||||||
|
template.parse("main");
|
||||||
|
this.aBody = template.out();
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
throw new ProcessorException(e);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ProcessorException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Object process() throws ProcessorException {
|
public Object process() throws ProcessorException {
|
||||||
try {
|
try {
|
||||||
Config config = Config.getInstance();
|
Config config = Config.getInstance();
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
package de.hsadmin.mods.pac;
|
package de.hsadmin.mods.pac;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -12,7 +9,6 @@ import java.util.Set;
|
|||||||
|
|
||||||
import javax.persistence.EntityManager;
|
import javax.persistence.EntityManager;
|
||||||
|
|
||||||
import net.sf.jtpl.Template;
|
|
||||||
import de.hsadmin.core.model.AbstractEntity;
|
import de.hsadmin.core.model.AbstractEntity;
|
||||||
import de.hsadmin.core.qserv.CompoundProcessor;
|
import de.hsadmin.core.qserv.CompoundProcessor;
|
||||||
import de.hsadmin.core.qserv.EntityProcessorFactory;
|
import de.hsadmin.core.qserv.EntityProcessorFactory;
|
||||||
@ -44,37 +40,82 @@ public class PacProcessorFactory implements EntityProcessorFactory {
|
|||||||
Pac pac = (Pac) entity;
|
Pac pac = (Pac) entity;
|
||||||
String pacName = pac.getName();
|
String pacName = pac.getName();
|
||||||
String customerEMail = pac.getCustomer().getContractualContact().getEmail();
|
String customerEMail = pac.getCustomer().getContractualContact().getEmail();
|
||||||
UnixUser unixUser = null;
|
|
||||||
Set<UnixUser> unixUserSet = pac.getUnixUser();
|
|
||||||
if (unixUserSet.size() == 1) {
|
|
||||||
unixUser = unixUserSet.iterator().next();
|
|
||||||
}
|
|
||||||
Hive hive = pac.getHive();
|
Hive hive = pac.getHive();
|
||||||
Map<String, String> hiveValues = new HashMap<String, String>();
|
UnixUser unixUser = getPacAdminUser(pac);
|
||||||
hiveValues.put("HIVE", hive.getName());
|
|
||||||
String hiveIP = hive.getInetAddr().getInetAddr();
|
|
||||||
hiveValues.put("HIVE_IP", hiveIP);
|
|
||||||
hiveValues.put("HIVE_GATEWAY", hiveIP.substring(0, hiveIP.lastIndexOf('.')) + ".1");
|
|
||||||
List<Map<String, String>> pacValuesList = new ArrayList<Map<String, String>>();
|
|
||||||
Set<Pac> pacsSet = hive.getPacs();
|
|
||||||
for (Pac p : pacsSet) {
|
|
||||||
HashMap<String, String> pacValues = new HashMap<String, String>();
|
|
||||||
pacValues.put("PAC", p.getName());
|
|
||||||
pacValues.put("PAC_IP", p.getCurINetAddr().getInetAddr());
|
|
||||||
pacValuesList.add(pacValues);
|
|
||||||
}
|
|
||||||
Processor hostsAppender = new TemplateProcessor("/de/hsadmin/mods/pac/hosts.jtpl", hiveValues, pacValuesList.iterator(), "/etc/hosts", true);
|
|
||||||
Processor interfacesAppender = new TemplateProcessor("/de/hsadmin/mods/pac/interfaces.jtpl", hiveValues, pacValuesList.iterator(), "/etc/network/interfaces", true);
|
|
||||||
Processor sudoersAppender = new TemplateProcessor("/de/hsadmin/mods/pac/sudoers.jtpl", hiveValues, pacValuesList.iterator(), "/etc/sudoers", true);
|
|
||||||
Processor ftpdconfAppender = new TemplateProcessor("/de/hsadmin/mods/pac/proftpd-conf.jtpl", hiveValues, pacValuesList.iterator(), "/etc/proftpd/proftpd.conf", true);
|
|
||||||
String password = PwGenerator.generatePassword(7, flagBuilder.build(), 100, random);
|
String password = PwGenerator.generatePassword(7, flagBuilder.build(), 100, random);
|
||||||
Processor newUsersProc = new ShellProcessor(
|
Map<String, String> hiveValues = fillHiveValues(hive);
|
||||||
|
List<Map<String, String>> pacValuesList = fillPacValuesList(hive);
|
||||||
|
Map<String, String> emailVars = fillEMailValues(pacName, customerEMail, password);
|
||||||
|
Processor priProcessor = new CompoundProcessor(
|
||||||
|
createAddUserProc(pacName, unixUser, password),
|
||||||
|
createEtcHostsProc(hiveValues, pacValuesList),
|
||||||
|
createNetworkInterfacesProc(hiveValues, pacValuesList),
|
||||||
|
createSudouersProc(hiveValues, pacValuesList),
|
||||||
|
createProftpdConfProc(hiveValues, pacValuesList),
|
||||||
|
createMakePacDirectoryStructure(unixUser));
|
||||||
|
WaitingTasksProcessor secProcessor = new WaitingTasksProcessor(priProcessor);
|
||||||
|
secProcessor.appendProcessor(pac.getHiveName(), createSendEMailProc(pacName, customerEMail, emailVars), "send email to customer");
|
||||||
|
return secProcessor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T extends AbstractEntity> Processor createUpdateProcessor(EntityManager em, T entity)
|
||||||
|
throws ProcessorException {
|
||||||
|
Pac pac = (Pac) entity;
|
||||||
|
Hive hive = pac.getHive();
|
||||||
|
UnixUser unixUser = getPacAdminUser(pac);
|
||||||
|
Map<String, String> hiveValues = fillHiveValues(hive);
|
||||||
|
List<Map<String, String>> pacValuesList = fillPacValuesList(hive);
|
||||||
|
return new CompoundProcessor(
|
||||||
|
createEtcHostsProc(hiveValues, pacValuesList),
|
||||||
|
createNetworkInterfacesProc(hiveValues, pacValuesList),
|
||||||
|
createSudouersProc(hiveValues, pacValuesList),
|
||||||
|
createProftpdConfProc(hiveValues, pacValuesList),
|
||||||
|
createMakePacDirectoryStructure(unixUser));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T extends AbstractEntity> Processor createDeleteProcessor(
|
||||||
|
EntityManager em, T entity) throws ProcessorException {
|
||||||
|
throw new ProcessorException("pac.delete not implemented");
|
||||||
|
}
|
||||||
|
|
||||||
|
private TemplateProcessor createEtcHostsProc(
|
||||||
|
Map<String, String> hiveValues,
|
||||||
|
List<Map<String, String>> pacValuesList) throws ProcessorException {
|
||||||
|
return new TemplateProcessor("/de/hsadmin/mods/pac/hosts.jtpl", hiveValues, pacValuesList.iterator(), "/etc/hosts", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TemplateProcessor createNetworkInterfacesProc(
|
||||||
|
Map<String, String> hiveValues,
|
||||||
|
List<Map<String, String>> pacValuesList) throws ProcessorException {
|
||||||
|
return new TemplateProcessor("/de/hsadmin/mods/pac/interfaces.jtpl", hiveValues, pacValuesList.iterator(), "/etc/network/interfaces", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TemplateProcessor createSudouersProc(
|
||||||
|
Map<String, String> hiveValues,
|
||||||
|
List<Map<String, String>> pacValuesList) throws ProcessorException {
|
||||||
|
return new TemplateProcessor("/de/hsadmin/mods/pac/sudoers.jtpl", hiveValues, pacValuesList.iterator(), "/etc/sudoers", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TemplateProcessor createProftpdConfProc(
|
||||||
|
Map<String, String> hiveValues,
|
||||||
|
List<Map<String, String>> pacValuesList) throws ProcessorException {
|
||||||
|
return new TemplateProcessor("/de/hsadmin/mods/pac/proftpd-conf.jtpl", hiveValues, pacValuesList.iterator(), "/etc/proftpd/proftpd.conf", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ShellProcessor createAddUserProc(String pacName, UnixUser unixUser,
|
||||||
|
String password) {
|
||||||
|
return new ShellProcessor(
|
||||||
"newusers", pacName + ":" + password + ":"
|
"newusers", pacName + ":" + password + ":"
|
||||||
+ unixUser.getUserId() + ":" + unixUser.getUserId()
|
+ unixUser.getUserId() + ":" + unixUser.getUserId()
|
||||||
+ ":" + unixUser.getComment() + ":" + unixUser.getHomedir()
|
+ ":" + unixUser.getComment() + ":" + unixUser.getHomedir()
|
||||||
+ ":" + unixUser.getShell() + "\n");
|
+ ":" + unixUser.getShell() + "\n");
|
||||||
Processor mkdirsProc = new ShellProcessor("chmod 711 " + unixUser.getHomedir() + " && " +
|
}
|
||||||
"su -l " + unixUser.getName() + " -s \"/bin/bash\" -c \"mkdir " +
|
|
||||||
|
private ShellProcessor createMakePacDirectoryStructure(UnixUser unixUser) {
|
||||||
|
return new ShellProcessor("chmod 711 " + unixUser.getHomedir() + " && " +
|
||||||
|
"su -l " + unixUser.getName() + " -s \"/bin/bash\" -c \"mkdir -p " +
|
||||||
unixUser.getHomedir() + "/doms " +
|
unixUser.getHomedir() + "/doms " +
|
||||||
unixUser.getHomedir() + "/etc " +
|
unixUser.getHomedir() + "/etc " +
|
||||||
unixUser.getHomedir() + "/users " +
|
unixUser.getHomedir() + "/users " +
|
||||||
@ -84,48 +125,59 @@ public class PacProcessorFactory implements EntityProcessorFactory {
|
|||||||
"chmod 1550 " + unixUser.getHomedir() + "/doms && " +
|
"chmod 1550 " + unixUser.getHomedir() + "/doms && " +
|
||||||
"chmod 2700 " + unixUser.getHomedir() + "/etc && " +
|
"chmod 2700 " + unixUser.getHomedir() + "/etc && " +
|
||||||
"chmod 2750 " + unixUser.getHomedir() + "/var && " +
|
"chmod 2750 " + unixUser.getHomedir() + "/var && " +
|
||||||
"chmod 2750 " + unixUser.getHomedir() + "/users"
|
"chmod 2755 " + unixUser.getHomedir() + "/users"
|
||||||
);
|
);
|
||||||
try {
|
}
|
||||||
InputStream stream = TemplateProcessor.class.getClassLoader().getResourceAsStream("/de/hsadmin/mods/pac/email_new_pac_account.jtpl");
|
|
||||||
Template template = new Template(new InputStreamReader(stream));
|
private Processor createSendEMailProc(String pacName,
|
||||||
template.assign("PAC", pacName);
|
String customerEMail, Map<String, String> emailVars) throws ProcessorException {
|
||||||
template.assign("PASSWORD", password);
|
return new MailerProcessor(
|
||||||
template.assign("CUST_EMAIL", customerEMail);
|
customerEMail,
|
||||||
template.parse("main");
|
"Zugangsdaten des neue Hostsharing Pakets " + pacName,
|
||||||
Processor emailPasswordProc = new WaitingTasksProcessor(
|
"/de/hsadmin/mods/pac/email_new_pac_account.jtpl",
|
||||||
new MailerProcessor(
|
emailVars
|
||||||
customerEMail,
|
);
|
||||||
"Zugangsdaten des neue Hostsharing Pakets " + pacName,
|
}
|
||||||
template.out())
|
|
||||||
);
|
private UnixUser getPacAdminUser(Pac pac) throws ProcessorException {
|
||||||
Processor priProcessor = new CompoundProcessor(
|
UnixUser unixUser = null;
|
||||||
newUsersProc,
|
Set<UnixUser> unixUserSet = pac.getUnixUser();
|
||||||
hostsAppender,
|
if (unixUserSet.size() == 1) {
|
||||||
interfacesAppender,
|
unixUser = unixUserSet.iterator().next();
|
||||||
sudoersAppender,
|
} else {
|
||||||
ftpdconfAppender,
|
throw new ProcessorException("package contains users");
|
||||||
mkdirsProc);
|
|
||||||
WaitingTasksProcessor secProcessor = new WaitingTasksProcessor(priProcessor);
|
|
||||||
secProcessor.appendProcessor(pac.getHiveName(), emailPasswordProc, "send email to customer");
|
|
||||||
return secProcessor;
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
throw new ProcessorException(e);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new ProcessorException(e);
|
|
||||||
}
|
}
|
||||||
|
return unixUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private Map<String, String> fillHiveValues(Hive hive) {
|
||||||
public <T extends AbstractEntity> Processor createUpdateProcessor(
|
Map<String, String> hiveValues = new HashMap<String, String>();
|
||||||
EntityManager em, T newEntity) throws ProcessorException {
|
hiveValues.put("HIVE", hive.getName());
|
||||||
throw new ProcessorException("pac.update not implemented");
|
String hiveIP = hive.getInetAddr().getInetAddr();
|
||||||
|
hiveValues.put("HIVE_IP", hiveIP);
|
||||||
|
hiveValues.put("HIVE_GATEWAY", hiveIP.substring(0, hiveIP.lastIndexOf('.')) + ".1");
|
||||||
|
return hiveValues;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private List<Map<String, String>> fillPacValuesList(Hive hive) {
|
||||||
public <T extends AbstractEntity> Processor createDeleteProcessor(
|
List<Map<String, String>> pacValuesList = new ArrayList<Map<String, String>>();
|
||||||
EntityManager em, T entity) throws ProcessorException {
|
Set<Pac> pacsSet = hive.getPacs();
|
||||||
throw new ProcessorException("pac.delete not implemented");
|
for (Pac p : pacsSet) {
|
||||||
|
HashMap<String, String> pacValues = new HashMap<String, String>();
|
||||||
|
pacValues.put("PAC", p.getName());
|
||||||
|
pacValues.put("PAC_IP", p.getCurINetAddr().getInetAddr());
|
||||||
|
pacValuesList.add(pacValues);
|
||||||
|
}
|
||||||
|
return pacValuesList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, String> fillEMailValues(String pacName,
|
||||||
|
String customerEMail, String password) {
|
||||||
|
Map<String, String> emailVars = new HashMap<String, String>();
|
||||||
|
emailVars.put("PAC", pacName);
|
||||||
|
emailVars.put("PASSWORD", password);
|
||||||
|
emailVars.put("CUST_EMAIL", customerEMail);
|
||||||
|
return emailVars;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user