package org.subethamail.core.admin;
import java.util.logging.Level;
import javax.annotation.security.RolesAllowed;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import javax.mail.Session;
import lombok.extern.java.Log;
import org.subethamail.core.admin.i.Eegor;
import org.subethamail.core.post.OutboundMTA;
import org.subethamail.core.smtp.SMTPService;
import com.caucho.remote.HessianService;
/**
* Implements some basic plumbing methods for testing.
*
* @author Jeff Schnitzer
* @author Scott Hernandez
*/
@Singleton
@Named("eegor")
@HessianService(urlPattern="/api/Eegor")
@Log
public class EegorBean implements Eegor
{
/** */
@Inject @OutboundMTA Session mailSession;
String mailSmtpHost;
String mailSmtpPort;
/** Needed to get/set the fallback host */
@Inject SMTPService smtpService;
/* (non-Javadoc)
* @see org.subethamail.core.admin.i.EegorBringMeAnotherBrain#log(java.lang.String)
*/
public void log(String msg)
{
log.info(msg);
}
/*
* (non-Javadoc)
*/
@RolesAllowed("siteAdmin")
public void enableTestMode(String mtaHost)
{
log.log(Level.FINE,"#### Enabling test mode to {0}", mtaHost);
if (!this.isTestModeEnabled())
{
this.mailSmtpHost = this.mailSession.getProperties().getProperty("mail.smtp.host");
this.mailSmtpPort = this.mailSession.getProperties().getProperty("mail.smtp.port");
}
// If there was a port, separate the two
String[] parts = mtaHost.split(":");
String newHost = parts[0];
String newPort = (parts.length > 1) ? parts[1] : "25";
//store old value, and update the overrides
this.mailSession.getProperties().setProperty("mail.smtp.host", newHost);
this.mailSession.getProperties().setProperty("mail.smtp.port", newPort);
}
/*
* (non-Javadoc)
*/
@RolesAllowed("siteAdmin")
public void disableTestMode()
{
//if (!this.isTestModeEnabled())
if (this.mailSmtpHost == null)
{
log.warning("Test mode already disabled");
}
else
{
log.info("Restoring base mail configuration");
this.mailSession.getProperties().setProperty("mail.smtp.host", this.mailSmtpHost);
this.mailSession.getProperties().setProperty("mail.smtp.port", this.mailSmtpPort);
this.mailSmtpHost = null;
this.mailSmtpPort = null;
}
}
/** */
public boolean isTestModeEnabled()
{
return this.mailSmtpHost != null;
//return true;
}
/* (non-Javadoc)
* @see org.subethamail.core.admin.i.Eegor#setFallbackHost(java.lang.String)
*/
@Override
public void setFallbackHost(String host)
{
this.smtpService.setFallbackHost(host);
}
}