package mircoders.servlet;
-import gnu.regexp.RE;
-import gnu.regexp.REMatch;
import mir.bundle.Bundle;
import mir.generator.Generator;
import mir.misc.StringUtil;
+import mir.module.ModuleExc;
import mir.servlet.ServletModule;
import mir.servlet.ServletModuleExc;
import mir.servlet.ServletModuleFailure;
import mir.servlet.ServletModuleUserExc;
-import mir.session.HTTPAdapters;
-import mir.session.Request;
-import mir.session.Session;
-import mir.session.SessionHandler;
-import mir.session.SimpleResponse;
+import mir.session.*;
import mir.util.FileRoutines;
import mir.util.HTTPParsedRequest;
import mir.util.HTTPRequestParser;
import mir.util.StringRoutines;
-import mir.module.ModuleExc;
import mircoders.entity.EntityContent;
import mircoders.global.CacheKey;
import mircoders.global.MirGlobal;
+import mircoders.localizer.MirLocalizerExc;
+import mircoders.localizer.MirOpenPostingLocalizer;
import mircoders.module.ModuleContent;
import mircoders.pdf.PDFGenerator;
-import mircoders.search.AudioSearchTerm;
-import mircoders.search.ContentSearchTerm;
-import mircoders.search.ImagesSearchTerm;
-import mircoders.search.KeywordSearchTerm;
-import mircoders.search.TextSearchTerm;
-import mircoders.search.TopicMatrixSearchTerm;
-import mircoders.search.TopicSearchTerm;
-import mircoders.search.UnIndexedSearchTerm;
-import mircoders.search.VideoSearchTerm;
+import mircoders.search.*;
import mircoders.storage.DatabaseTopics;
-import mircoders.localizer.MirLocalizerExc;
import org.apache.commons.net.smtp.SMTPClient;
import org.apache.commons.net.smtp.SMTPReply;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.store.FSDirectory;
+import org.apache.oro.text.regex.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
+import javax.servlet.ServletOutputStream;
+import java.io.*;
+import java.util.*;
+
+import com.sun.image.codec.jpeg.JPEGCodec;
+import com.sun.image.codec.jpeg.JPEGImageEncoder;
/*
*/
/**
* Method to return an out of service notice when open postings are disabled
- *
- * @param aRequest
- * @param aResponse
- * @throws ServletModuleExc
- * @throws ServletModuleUserExc
- * @throws ServletModuleFailure
*/
public void openPostingDisabled(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
deliver(aRequest, aResponse, null, null, getConfiguration().getString("ServletModule.OpenIndy.PostingDisabledTemplate"));
}
}
+ public void captcha(HttpServletRequest aRequest, HttpServletResponse aResponse)
+ throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {
+ try {
+ MirOpenPostingLocalizer.Captcha captcha = MirGlobal.localizer().openPostings().generateCaptcha(aRequest.getSession().getId());
+ aRequest.getSession().setAttribute("captcha", captcha);
+
+ // the output stream to render the captcha image as jpeg into
+ ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
+ JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(jpegOutputStream);
+ jpegEncoder.encode(captcha.getChallenge());
+
+ aResponse.setHeader("Cache-Control", "no-store");
+ aResponse.setHeader("Pragma", "no-cache");
+ aResponse.setDateHeader("Expires", 0);
+ aResponse.setContentType("image/jpeg");
+
+ ServletOutputStream responseOutputStream = aResponse.getOutputStream();
+
+ responseOutputStream.write(jpegOutputStream.toByteArray());
+ responseOutputStream.flush();
+ responseOutputStream.close();
+ }
+ catch (IOException e) {
+ throw new ServletModuleFailure(e);
+ }
+ }
+
/**
* Method for preparing and sending a content as an email message
*/
}
else {
try {
- Searcher searcher = null;
+ Searcher searcher;
try {
searcher = new IndexSearcher(FSDirectory.getDirectory(indexFile,false));
String ID_REQUEST_PARAM = "id";
int maxArticlesInNewsleter = 15; // it is nice not to be dos'ed
try {
- String idParam = aRequest.getParameter(ID_REQUEST_PARAM);
- if (idParam != null) {
- RE re = new RE("[0-9]+");
-
- REMatch[] idMatches = re.getAllMatches(idParam);
- String cacheSelector = "";
-
- for (int i = 0; i < idMatches.length; i++) {
- cacheSelector = cacheSelector + "," + idMatches[i].toString();
+ String idParameterValue = aRequest.getParameter(ID_REQUEST_PARAM);
+ if (idParameterValue != null) {
+ Pattern idPattern = new Perl5Compiler().compile("[0-9]+");
+ PatternMatcher matcher = new Perl5Matcher();
+ PatternMatcherInput input = new PatternMatcherInput(idParameterValue);
+ List ids = new ArrayList();
+ while (matcher.contains(input, idPattern)) {
+ ids.add(matcher.getMatch().toString());
}
String cacheType = "pdf";
- CacheKey theCacheKey = new CacheKey(cacheType, cacheSelector);
+ CacheKey theCacheKey = new CacheKey(cacheType, idParameterValue);
byte[] thePDF;
ByteArrayOutputStream out = new ByteArrayOutputStream();
PDFGenerator pdfMaker = new PDFGenerator(out);
- if (idMatches.length > 1) {
+ if (ids.size() > 1) {
pdfMaker.addLine();
- for (int i = 0; i < idMatches.length && i < maxArticlesInNewsleter; i++) {
- REMatch aMatch = idMatches[i];
- String id = aMatch.toString();
- EntityContent contentEnt = (EntityContent) contentModule.getById(id);
-
+ for (int i = 0; i < ids.size() && i < maxArticlesInNewsleter; i++) {
+ EntityContent contentEnt = (EntityContent) contentModule.getById((String) ids.get(i));
pdfMaker.addIndexItem(contentEnt);
}
}
- for (int i = 0; i < idMatches.length; i++) {
- REMatch aMatch = idMatches[i];
- String id = aMatch.toString();
- EntityContent article = (EntityContent) contentModule.getById(id);
+ for (int i = 0; i < ids.size(); i++) {
+ EntityContent article = (EntityContent) contentModule.getById((String) ids.get(i));
if (!MirGlobal.localizer().openPostings().allowArticlePublication(article)) {
throw new ServletModuleExc("Illegal article");