use of net.jforum.exceptions.AttachmentSizeTooBigException in project jforum2 by rafaelsteil.
the class AttachmentCommon method preProcess.
public void preProcess() {
if (!this.canProceed) {
return;
}
String t = this.request.getParameter("total_files");
if (t == null || "".equals(t)) {
return;
}
int total = Integer.parseInt(t);
if (total < 1) {
return;
}
if (total > SystemGlobals.getIntValue(ConfigKeys.ATTACHMENTS_MAX_POST)) {
total = SystemGlobals.getIntValue(ConfigKeys.ATTACHMENTS_MAX_POST);
}
long totalSize = 0;
int userId = SessionFacade.getUserSession().getUserId();
Map extensions = this.am.extensionsForSecurity();
for (int i = 0; i < total; i++) {
FileItem item = (FileItem) this.request.getObjectParameter("file_" + i);
if (item == null) {
continue;
}
if (item.getName().indexOf('\000') > -1) {
logger.warn("Possible bad attachment (null char): " + item.getName() + " - user_id: " + SessionFacade.getUserSession().getUserId());
continue;
}
UploadUtils uploadUtils = new UploadUtils(item);
// Check if the extension is allowed
boolean containsExtension = extensions.containsKey(uploadUtils.getExtension());
boolean denyAll = extensions.containsKey(DENY_ALL);
boolean isAllowed = (!denyAll && !containsExtension) || (containsExtension && extensions.get(uploadUtils.getExtension()).equals(Boolean.TRUE));
if (!isAllowed) {
throw new BadExtensionException(I18n.getMessage("Attachments.badExtension", new String[] { uploadUtils.getExtension() }));
}
// Check comment length:
String comment = this.request.getParameter("comment_" + i);
if (comment.length() > 254) {
throw new AttachmentException("Comment too long.");
}
Attachment a = new Attachment();
a.setUserId(userId);
AttachmentInfo info = new AttachmentInfo();
info.setFilesize(item.getSize());
info.setComment(comment);
info.setMimetype(item.getContentType());
// Get only the filename, without the path (IE does that)
String realName = this.stripPath(item.getName());
info.setRealFilename(realName);
info.setUploadTimeInMillis(System.currentTimeMillis());
AttachmentExtension ext = this.am.selectExtension(uploadUtils.getExtension().toLowerCase());
if (ext.isUnknown()) {
ext.setExtension(uploadUtils.getExtension());
}
info.setExtension(ext);
String savePath = this.makeStoreFilename(info);
info.setPhysicalFilename(savePath);
a.setInfo(info);
filesToSave.put(uploadUtils, a);
totalSize += item.getSize();
}
// Check upload limits
QuotaLimit ql = this.getQuotaLimit(userId);
if (ql != null) {
if (ql.exceedsQuota(totalSize)) {
throw new AttachmentSizeTooBigException(I18n.getMessage("Attachments.tooBig", new Integer[] { new Integer(ql.getSizeInBytes() / 1024), new Integer((int) totalSize / 1024) }));
}
}
}
Aggregations