view src/nabble/view/web/mailing_list/Subscribe.jtp @ 19:18cf4872fd7f

remove anonymous posting
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 29 May 2020 22:58:25 -0600
parents 7ecd1a4ef557
children
line wrap: on
line source

<%
package nabble.view.web.mailing_list;

import fschmidt.util.mail.Mail;
import fschmidt.util.servlet.ServletUtils;
import nabble.model.Init;
import nabble.model.ListServer;
import nabble.model.MailingList;
import nabble.model.ModelHome;
import nabble.model.Executors;
import nabble.model.Node;
import nabble.model.User;
import nabble.view.lib.Jtp;
import nabble.view.lib.SubscribeDefaultsMail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.concurrent.TimeUnit;


public final class Subscribe extends HttpServlet {

	private static final Logger logger = LoggerFactory.getLogger(Subscribe.class);

	private final static long secondsUntilDeliveryOffMail = Init.get("secondsUntilDeliveryOffMail",20*60);  // why so long?

	protected void service(HttpServletRequest request,HttpServletResponse response)
		throws ServletException, IOException
	{
		User user = Jtp.getUser(request);
		if (user == null) {
			Jtp.login("You must login to be able to subscribe to a list.",request,response);
			return;
		}
		Node forum = Jtp.getSiteNotNull(request).getNode(Long.parseLong(request.getParameter("forum")));
		MailingList mailingList = forum.getAssociatedMailingList();
		Mail userSubscribeMail = mailingList.subscribeMail(user);
		ModelHome.send(userSubscribeMail);
		logger.info("subscription request from "+user.getEmail()+" to "+mailingList.getListAddress());

		if (mailingList.getListServer().needsDefaults() && mailingList.getListServer() != ListServer.google) {
			String url = ServletUtils.getContextURL(request) + "/mailing_list/SubscribeDefaults.jtp?forum="+forum.getId()+"&k="+mailingList.getPassword(user);
			final Mail mail = SubscribeDefaultsMail.newMail(user.getEmail(), mailingList, url);
			Executors.schedule(
				new Runnable(){public void run(){
					ModelHome.send(mail);
				}}, secondsUntilDeliveryOffMail, TimeUnit.SECONDS
			);
		}
		response.sendRedirect("Subscribe2.jtp?forum="+forum.getId());
	}
}
%>