/**
* **************************************************************************
*
* Contributor(s):
* C. Heazel (WiSC): Added Fortify adjudication changes
*
***************************************************************************
*/
package com.occamlab.te.web;
import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.occamlab.te.util.ZipUtils;
/**
* Servlet implementation class for Servlet: EmailLogServlet
*
*/
public class EmailLogServlet extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
Config Conf;
public void init() throws ServletException {
Conf = new Config();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
try {
File userdir = new File(Conf.getUsersDir(),
request.getParameter("userId"));
// File userdir = new File(Conf.getUsersDir(), "tester1");
File zipFile = new File(userdir,
request.getParameter("zipFileName"));
if (sendLog(getServletConfig().getInitParameter("mail.smtp.host"),
getServletConfig().getInitParameter("mail.smtp.userid"),
getServletConfig().getInitParameter("mail.smtp.passwd"),
request.getParameter("to"), request.getParameter("from"),
request.getParameter("subject"),
request.getParameter("message"), zipFile)) {
request.setAttribute("emailStatus", "Email sent Succesfully");
} else {
request.setAttribute("emailStatus", "Email failed");
}
RequestDispatcher rd = request
.getRequestDispatcher("emailSent.jsp");
rd.forward(request, response);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
try {
String sessionId = request.getParameter("session");
String zipFileName = sessionId + ".zip";
File userdir = new File(Conf.getUsersDir(), request.getRemoteUser());
// File userdir = new File(Conf.getUsersDir(), "tester1");
File sessiondir = new File(userdir, sessionId);
File zipFile = new File(userdir, zipFileName);
ZipUtils.zipDir(zipFile, sessiondir);
request.setAttribute("zipFileName", zipFileName);
request.setAttribute("to",
getServletConfig().getInitParameter("mail.to"));
RequestDispatcher rd = request.getRequestDispatcher("emailLog.jsp");
rd.forward(request, response);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public boolean sendLog(String host, String userId, String password,
String to, String from, String subject, String message,
File filename) {
boolean success = true;
System.out.println("host: " + host);
System.out.println("userId: " + userId);
// Fortify Mod: commented out clear text password.
// System.out.println("password: " + password);
System.out.println("to: " + to);
System.out.println("from: " + from);
System.out.println("subject: " + subject);
System.out.println("message: " + message);
System.out.println("filename: " + filename.getName());
System.out.println("filename: " + filename.getAbsolutePath());
// create some properties and get the default Session
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
Session session = Session.getInstance(props, null);
session.setDebug(true);
try {
// create a message
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = { new InternetAddress(to) };
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
// create and fill the first message part
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(message);
// create the second message part
MimeBodyPart mbp2 = new MimeBodyPart();
// attach the file to the message
FileDataSource fds = new FileDataSource(filename);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
// create the Multipart and add its parts to it
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
// add the Multipart to the message
msg.setContent(mp);
// set the Date: header
msg.setSentDate(new Date());
// connect to the transport
Transport trans = session.getTransport("smtp");
trans.connect(host, userId, password);
// send the message
trans.sendMessage(msg, msg.getAllRecipients());
// smtphost
trans.close();
} catch (MessagingException mex) {
success = false;
mex.printStackTrace();
Exception ex = null;
if ((ex = mex.getNextException()) != null) {
ex.printStackTrace();
}
}
return success;
}
}