| | |
| | | import de.hsadmin.core.qserv.ShellProcessor; |
| | | import de.hsadmin.core.qserv.WaitingTasksProcessor; |
| | | import de.hsadmin.core.util.Config; |
| | | import de.hsadmin.mods.pac.Pac; |
| | | |
| | | public class EMailAddressProcessorFactory implements EntityProcessorFactory { |
| | | |
| | | public <T extends AbstractEntity> Processor createCreateProcessor(EntityManager em, T entity) { |
| | | // TODO: combine both keys in a single call (optimization) |
| | | EMailAddress email = (EMailAddress) entity; |
| | | Pac pac = email.getDomain().getUser().getPac(); |
| | | CompoundProcessor cp = new CompoundProcessor(); |
| | | cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix/virtual", |
| | | cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix-mailin/virtual", |
| | | email.getFullDomain() + " -" ) ); |
| | | cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix/virtual", |
| | | cp.appendProcessor(new ShellProcessor( "postmap -r -i /etc/postfix-mailin/virtual", |
| | | email.getEMailAddress() + " " + email.getTarget() ) ); |
| | | if (emailAddressCount(em, email) < 2) { |
| | | WaitingTasksProcessor waitingTasksProcessor = new WaitingTasksProcessor(cp); |
| | | String pacName = email.getDomain().getUser().getPac().getName(); |
| | | String domName = email.getDomain().getName(); |
| | | Config config = Config.getInstance(); |
| | | for (String queueName : config.getProperty("queues.mail").split(",")) { |
| | | waitingTasksProcessor.appendProcessor(queueName, createMailinSetupProcessor(domName, pacName), queueName + ".hostsharing.net"); |
| | | waitingTasksProcessor.appendProcessor(queueName, createMailinSetupProcessor(domName, pac), queueName + ".hostsharing.net"); |
| | | } |
| | | return waitingTasksProcessor; |
| | | } else { |
| | |
| | | CompoundProcessor cp = new CompoundProcessor(); |
| | | EMailAddress email = (EMailAddress) entity; |
| | | cp.appendProcessor( |
| | | new ShellProcessor( "postmap -d '" + email.getEMailAddress() + "' /etc/postfix/virtual" ) ); |
| | | new ShellProcessor( "postmap -d '" + email.getEMailAddress() + "' /etc/postfix-mailin/virtual" ) ); |
| | | int emailAddressCount = emailAddressCount(em, email); |
| | | if (emailAddressCount == 0) { |
| | | // remove the domain from virtual.db |
| | | String fullDomain = email.getFullDomain(); |
| | | cp.appendProcessor( |
| | | new ShellProcessor( "postmap -d '" + fullDomain + "' /etc/postfix/virtual" ) ); |
| | | new ShellProcessor( "postmap -d '" + fullDomain + "' /etc/postfix-mailin/virtual" ) ); |
| | | WaitingTasksProcessor waitingTasksProcessor = new WaitingTasksProcessor(cp); |
| | | Config config = Config.getInstance(); |
| | | for (String queueName : config.getProperty("queues.mail").split(",")) { |
| | |
| | | return result.size(); |
| | | } |
| | | |
| | | private Processor createMailinSetupProcessor(String domName, String pacName) { |
| | | private Processor createMailinSetupProcessor(String domName, Pac pac) { |
| | | String inetAddr = pac.getCurINetAddr().getInetAddr(); |
| | | return |
| | | new ShellProcessor("postmap -r -i /etc/postfix-mailin/transport", |
| | | domName + " smtp:[" + pacName + ".hostsharing.net]\n" + |
| | | "." + domName + " smtp:[" + pacName + ".hostsharing.net]\n"); |
| | | domName + " smtp:" + inetAddr + ":225\n" + |
| | | "." + domName + " smtp:" + inetAddr + ":225\n"); |
| | | } |
| | | |
| | | private Processor createMailinDeleteProcessor(String domName) { |