Skip to content
Snippets Groups Projects
Commit 868924f5 authored by srosse's avatar srosse
Browse files

OO-1804: prevent bot to send feedback errors

parent cceef5b2
No related branches found
No related tags found
No related merge requests found
...@@ -33,11 +33,11 @@ import javax.servlet.http.HttpServletRequest; ...@@ -33,11 +33,11 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.BaseSecurity;
import org.olat.core.CoreSpringFactory;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.core.logging.LogFileParser; import org.olat.core.logging.LogFileParser;
import org.olat.core.logging.OLog; import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing; import org.olat.core.logging.Tracing;
import org.olat.core.util.StringHelper;
import org.olat.core.util.WebappHelper; import org.olat.core.util.WebappHelper;
import org.olat.core.util.mail.MailBundle; import org.olat.core.util.mail.MailBundle;
import org.olat.core.util.mail.MailManager; import org.olat.core.util.mail.MailManager;
...@@ -53,6 +53,25 @@ import org.olat.core.util.mail.MailManager; ...@@ -53,6 +53,25 @@ import org.olat.core.util.mail.MailManager;
public class ErrorFeedbackMailer implements Dispatcher { public class ErrorFeedbackMailer implements Dispatcher {
private static final OLog log = Tracing.createLoggerFor(ErrorFeedbackMailer.class); private static final OLog log = Tracing.createLoggerFor(ErrorFeedbackMailer.class);
private MailManager mailManager;
private BaseSecurity securityManager;
/**
* [used by Spring]
* @param mailManager
*/
public void setMailManager(MailManager mailManager) {
this.mailManager = mailManager;
}
/**
* [used by spring]
* @param securityManager
*/
public void setSecurityManager(BaseSecurity securityManager) {
this.securityManager = securityManager;
}
/** /**
* send email to olat support with user submitted error informaition * send email to olat support with user submitted error informaition
...@@ -64,27 +83,26 @@ public class ErrorFeedbackMailer implements Dispatcher { ...@@ -64,27 +83,26 @@ public class ErrorFeedbackMailer implements Dispatcher {
String errorNr = request.getParameter("fx_errnum"); String errorNr = request.getParameter("fx_errnum");
String username = request.getParameter("username"); String username = request.getParameter("username");
try { try {
BaseSecurity im = CoreSpringFactory.getImpl(BaseSecurity.class); if(StringHelper.containsNonWhitespace(username)) {
Identity ident = im.findIdentityByName(username); Identity ident = securityManager.findIdentityByName(username);
// if null, user may crashed befor getting a valid session, try with Collection<String> logFileEntries = LogFileParser.getErrorToday(errorNr, false);
// guest user instead StringBuilder out = new StringBuilder(2048);
if (ident == null) out.append(feedback)
ident = im.findIdentityByName("guest"); .append("\n------------------------------------------\n\n --- from user: ").append(username).append(" ---");
Collection<String> logFileEntries = LogFileParser.getErrorToday(errorNr, false); if (logFileEntries != null) {
StringBuilder out = new StringBuilder(2048); for (Iterator<String> iter = logFileEntries.iterator(); iter.hasNext();) {
out.append(feedback) out.append(iter.next());
.append("\n------------------------------------------\n\n --- from user: ").append(username).append(" ---"); }
if (logFileEntries != null) {
for (Iterator<String> iter = logFileEntries.iterator(); iter.hasNext();) {
out.append(iter.next());
} }
MailBundle bundle = new MailBundle();
bundle.setFromId(ident);
bundle.setTo(WebappHelper.getMailConfig("mailError"));
bundle.setContent("Feedback from Error Nr.: " + errorNr, out.toString());
mailManager.sendExternMessage(bundle, null);
} else {
log.error("Try to send a feedback without identity");
} }
MailBundle bundle = new MailBundle();
bundle.setFromId(ident);
bundle.setTo(WebappHelper.getMailConfig("mailError"));
bundle.setContent("Feedback from Error Nr.: " + errorNr, out.toString());
CoreSpringFactory.getImpl(MailManager.class).sendExternMessage(bundle, null);
} catch (Exception e) { } catch (Exception e) {
handleException(request, e); handleException(request, e);
return; return;
......
...@@ -68,7 +68,10 @@ ...@@ -68,7 +68,10 @@
<bean id="oauthcallback" class="org.olat.login.oauth.OAuthDispatcher" /> <bean id="oauthcallback" class="org.olat.login.oauth.OAuthDispatcher" />
<!-- send bug report dispatcher --> <!-- send bug report dispatcher -->
<bean id="errorMailBean" class="org.olat.core.dispatcher.ErrorFeedbackMailer" /> <bean id="errorMailBean" class="org.olat.core.dispatcher.ErrorFeedbackMailer">
<property name="mailManager" ref="mailManager"/>
<property name="securityManager" ref="baseSecurityManager"/>
</bean>
<!-- all olat dispatchers --> <!-- all olat dispatchers -->
<bean id="dmzbean" class="org.olat.dispatcher.DMZDispatcher"> <bean id="dmzbean" class="org.olat.dispatcher.DMZDispatcher">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment