| | |
| | | |
| | | public class DomainModuleImpl extends AbstractModuleImpl { |
| | | |
| | | public static final String DOMOPT_GREYLISTING = "greylisting"; |
| | | public static final String DOMOPT_MULTIVIEWS = "multiviews"; |
| | | public static final String DOMOPT_INDEXES = "indexes"; |
| | | public static final String DOMOPT_HTDOCSFALLBACK = "htdocsfallback"; |
| | | public static final String DOMOPT_INCLUDES = "includes"; |
| | | public static final String DOMOPT_BACKUPFOREXTERNALMX = "backupmxforexternalmx"; |
| | | |
| | | public static final String[] ALL_DOMOPTS = new String[] { DOMOPT_GREYLISTING, DOMOPT_MULTIVIEWS, |
| | | DOMOPT_INDEXES, DOMOPT_HTDOCSFALLBACK, DOMOPT_INCLUDES, DOMOPT_BACKUPFOREXTERNALMX }; |
| | | public static final String[] DEFAULT_DOMOPTS = new String[] { DOMOPT_GREYLISTING, DOMOPT_MULTIVIEWS, |
| | | DOMOPT_INDEXES, DOMOPT_HTDOCSFALLBACK, DOMOPT_INCLUDES }; |
| | | |
| | | @Override |
| | | public AbstractEntity initialize(AbstractEntity newEntity) throws AuthorisationException { |
| | | AbstractEntity newDom = super.initialize(newEntity); |
| | |
| | | dom.setUser((UnixUser) adminQuery.getSingleResult()); |
| | | needsWriteAccessOn(newEntity, "add"); |
| | | em.persist(dom); |
| | | Query q = em.createQuery("SELECT opt FROM " + |
| | | DomainOption.class.getAnnotation(javax.persistence.Entity.class).name() + |
| | | " opt WHERE opt.name=:optName"); |
| | | HashSet<DomainOption> domainOptions = new HashSet<DomainOption>(); |
| | | q.setParameter("optName", "greylisting"); |
| | | List<?> list = q.getResultList(); |
| | | if (list.size() != 1) { |
| | | throw new HSAdminException("invalid domain option: " + "greylisting"); |
| | | } else { |
| | | domainOptions.add((DomainOption) list.get(0)); |
| | | for (String domOpt : DEFAULT_DOMOPTS) { |
| | | Query q = em.createQuery("SELECT opt FROM " + |
| | | DomainOption.class.getAnnotation(javax.persistence.Entity.class).name() + |
| | | " opt WHERE opt.name=:optName"); |
| | | q.setParameter("optName", domOpt); |
| | | List<?> list = q.getResultList(); |
| | | if (list.size() == 1) { |
| | | domainOptions.add((DomainOption) list.get(0)); |
| | | } else { |
| | | throw new HSAdminException("invalid domain option: " + domOpt); |
| | | } |
| | | } |
| | | dom.setDomainoptions(domainOptions); |
| | | if (dom.isPacDomain()) { |
| | |
| | | if (dom.isPacDomain() && !dom.getUser().getName().equals(domPac.getName())) { |
| | | throw new AuthorisationException(loginUser, method, dom); |
| | | } |
| | | if (dom.isPacDomain() && !isHostmaster && !"add".equals(method)) { |
| | | throw new AuthorisationException(loginUser, method, dom); |
| | | if (dom.isPacDomain() && !isHostmaster) { |
| | | if (!"add".equals(method) && !"update".equals(method)) { |
| | | throw new AuthorisationException(loginUser, method, dom); |
| | | } |
| | | } |
| | | } else { |
| | | throw new AuthorisationException(loginUser, method, entity); |