Revision: 4183
Author:   solomax666
Date:     Sun Sep  4 06:59:47 2011
Log: - configuration parameter for maxUploadSize is added (defaulted to 1GB)
http://code.google.com/p/openmeetings/source/detail?r=4183

Added:
 /trunk/singlewebapp/src/app/org/openmeetings/utils/ImportHelper.java
Modified:
/trunk/singlewebapp/src/app/org/openmeetings/app/installation/ImportInitvalues.java /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/CalendarServlet.java /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/FileExplorerUploadHandler.java /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/HttpServletRequestEx.java /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/Import.java /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/UploadHandler.java
 /trunk/singlewebapp/src/app/org/openmeetings/utils/StoredFile.java
 /trunk/singlewebapp/src/app/org/openmeetings/utils/image/ZipUtility.java

=======================================
--- /dev/null
+++ /trunk/singlewebapp/src/app/org/openmeetings/utils/ImportHelper.java Sun Sep 4 06:59:47 2011
@@ -0,0 +1,30 @@
+package org.openmeetings.utils;
+
+import org.openmeetings.app.data.basic.Configurationmanagement;
+import org.openmeetings.app.persistence.beans.basic.Configuration;
+import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.red5.logging.Red5LoggerFactory;
+
+public class ImportHelper {
+       private static final org.slf4j.Logger log = Red5LoggerFactory.getLogger(
+                       ImportHelper.class, 
ScopeApplicationAdapter.webAppRootKey);
+ public static final int DEFAULT_MAX_UPLOAD_SIZE = 1024 * 1024 * 1024; //1GB
+
+ public static final int getMaxUploadSize(Configurationmanagement cfgManagement) {
+               return getMaxUploadSize(cfgManagement, 3L);
+       }
+
+ public static final int getMaxUploadSize(Configurationmanagement cfgManagement, Long userLevel) {
+               Configuration cfg = cfgManagement.getConfKey(userLevel, 
"cfgManagement");
+               int result = DEFAULT_MAX_UPLOAD_SIZE;
+               if (cfg != null) {
+                       String val = cfg.getConf_value();
+                       try {
+                               result = (int)Math.min(Long.parseLong(val), 
(long)Integer.MAX_VALUE);
+                       } catch (Exception e) {
+                               log.error("Invalid value saved for maxUploadSize: 
" + val, e);
+                       }
+               }
+               return result;
+       }
+}
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/app/installation/ImportInitvalues.java Tue Aug 30 13:17:16 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/app/installation/ImportInitvalues.java Sun Sep 4 06:59:47 2011
@@ -24,6 +24,7 @@
 import org.openmeetings.app.data.user.Usermanagement;
 import org.openmeetings.app.persistence.beans.basic.OmTimeZone;
 import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.utils.ImportHelper;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -467,6 +468,9 @@
                                                null,
"Display name of the user who draw the current object (User Name auto-disapper after 3 seconds.");

+ cfgManagement.addConfByKey(3, "max_upload_size", new Integer(ImportHelper.DEFAULT_MAX_UPLOAD_SIZE).toString(), null,
+                               "Maximum size of upload file (bytes)"); 
//defaults to 1GB
+
        }

        public void loadDefaultRooms() {
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java Sun Sep 4 05:39:55 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/BackupImport.java Sun Sep 4 06:59:47 2011
@@ -70,6 +70,7 @@
 import org.openmeetings.app.persistence.beans.user.UserSipData;
 import org.openmeetings.app.persistence.beans.user.Users;
 import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.utils.ImportHelper;
 import org.openmeetings.utils.math.CalendarPatterns;
 import org.openmeetings.utils.stringhandlers.StringComparer;
 import org.red5.logging.Red5LoggerFactory;
@@ -175,7 +176,7 @@
                                        }

                                        ServletMultipartRequest upload = new 
ServletMultipartRequest(
-                                                       httpServletRequest, 1000 * 1024 * 
1024, "UTF8"); // max 1000MB
+ httpServletRequest, ImportHelper.getMaxUploadSize(cfgManagement, user_level), "UTF8");
                                        InputStream is = 
upload.getFileContents("Filedata");

                                        String fileSystemName = 
upload.getBaseFilename("Filedata");
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/CalendarServlet.java Thu Sep 1 07:57:50 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/CalendarServlet.java Sun Sep 4 06:59:47 2011
@@ -233,8 +233,9 @@
                                        appointment.setAppointmentEndtime(new 
Date(appointment
                                                        
.getAppointmentEndtime().getTime() + offset));

-                                       int dayAsInt = 
appointment.getAppointmentStarttime()
-                                                       .getDate();
+                                       Calendar appStart = 
Calendar.getInstance();
+                                       
appStart.setTime(appointment.getAppointmentStarttime());
+                                       int dayAsInt = 
appStart.get(Calendar.DATE);

                                        if (previousDay != dayAsInt) {

@@ -244,7 +245,7 @@

                                        }

-                                       if 
(appointment.getAppointmentStarttime().getMonth() + 1 == Integer
+                                       if (appStart.get(Calendar.MONTH) + 1 == 
Integer
                                                        .parseInt(monthStr)) {

                                                Element event = 
day.addElement("event");
@@ -279,36 +280,29 @@
                                                Element start = 
event.addElement("start");

                                                start.addAttribute("year", ""
-                                                               + 
(appointment.getAppointmentStarttime()
-                                                                               
.getYear() + 1900));
+                                                               + 
appStart.get(Calendar.YEAR));
                                                start.addAttribute("month", ""
-                                                               + 
(appointment.getAppointmentStarttime()
-                                                                               
.getMonth() + 1));
+                                                               + 
(appStart.get(Calendar.MONTH) + 1));
                                                start.addAttribute("day", ""
-                                                               + 
appointment.getAppointmentStarttime()
-                                                                               
.getDate());
+                                                               + 
appStart.get(Calendar.DATE));
                                                start.addAttribute("hour", ""
-                                                               + 
appointment.getAppointmentStarttime()
-                                                                               
.getHours());
+                                                               + 
appStart.get(Calendar.HOUR_OF_DAY));
                                                start.addAttribute("minute", ""
-                                                               + 
appointment.getAppointmentStarttime()
-                                                                               
.getMinutes());
-
+                                                               + 
appStart.get(Calendar.MINUTE));
+
+                                               Calendar appEnd = 
Calendar.getInstance();
+                                               
appEnd.setTime(appointment.getAppointmentEndtime());
                                                Element end = 
event.addElement("end");
                                                end.addAttribute("year", ""
-                                                               + 
(appointment.getAppointmentEndtime()
-                                                                               
.getYear() + 1900));
+                                                               + 
appEnd.get(Calendar.YEAR));
                                                end.addAttribute("month", ""
-                                                               + 
(appointment.getAppointmentEndtime()
-                                                                               
.getMonth() + 1));
+                                                               + 
(appEnd.get(Calendar.MONTH) + 1));
                                                end.addAttribute("day", ""
-                                                               + 
appointment.getAppointmentEndtime().getDate());
+                                                               + 
appEnd.get(Calendar.DATE));
                                                end.addAttribute("hour", ""
-                                                               + 
appointment.getAppointmentEndtime()
-                                                                               
.getHours());
+                                                               + 
appEnd.get(Calendar.HOUR));
                                                end.addAttribute("minute", ""
-                                                               + 
appointment.getAppointmentEndtime()
-                                                                               
.getMinutes());
+                                                               + 
appEnd.get(Calendar.MINUTE));

                                                Element category = 
event.addElement("category");
                                                category.addAttribute("value", 
""
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/FileExplorerUploadHandler.java Thu Sep 1 07:41:20 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/FileExplorerUploadHandler.java Sun Sep 4 06:59:47 2011
@@ -9,9 +9,11 @@
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;

+import org.openmeetings.app.data.basic.Configurationmanagement;
 import org.openmeetings.app.data.file.FileProcessor;
 import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
 import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.utils.ImportHelper;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.context.ApplicationContext;
@@ -49,6 +51,19 @@
                }
                return null;
        }
+
+       public Configurationmanagement getCfgManagement() {
+               try {
+                       if (ScopeApplicationAdapter.initComplete) {
+                               ApplicationContext context = 
WebApplicationContextUtils
+                                               
.getWebApplicationContext(getServletContext());
+                               return (Configurationmanagement) 
context.getBean("cfgManagement");
+                       }
+               } catch (Exception err) {
+                       log.error("[getUserManagement]", err);
+               }
+               return null;
+       }

        @Override
        protected void fileService(HttpServletRequest httpServletRequest,
@@ -85,8 +100,7 @@
                String current_dir = getServletContext().getRealPath("/");

                ServletMultipartRequest upload = new ServletMultipartRequest(
-                               httpServletRequest, 104857600 * 5, // max 500 mb
-                               "utf-8");
+ httpServletRequest, ImportHelper.getMaxUploadSize(getCfgManagement()), "UTF8");
                InputStream is = upload.getFileContents("Filedata");
                String fileSystemName = upload.getBaseFilename("Filedata");
                log.debug("fileSystemName: " + fileSystemName);
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/HttpServletRequestEx.java Tue Aug 30 13:17:16 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/HttpServletRequestEx.java Sun Sep 4 06:59:47 2011
@@ -61,11 +61,11 @@
                }
        }

-       public Map getParameterMap() {
+       public Map<String, String> getParameterMap() {
                return new HashMap<String, String>(requestParams_);
        }

-       public Enumeration getParameterNames() {
+       public Enumeration<String> getParameterNames() {
                return Collections.enumeration(requestParams_.keySet());
        }

=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/Import.java Sun Sep 4 05:39:55 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/Import.java Sun Sep 4 06:59:47 2011
@@ -13,12 +13,14 @@
 import javax.servlet.http.HttpServletResponse;

 import org.openmeetings.app.data.basic.AuthLevelmanagement;
+import org.openmeetings.app.data.basic.Configurationmanagement;
 import org.openmeetings.app.data.basic.Sessionmanagement;
 import org.openmeetings.app.data.user.Usermanagement;
 import org.openmeetings.app.data.user.dao.UsersDaoImpl;
 import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
 import org.openmeetings.app.xmlimport.LanguageImport;
 import org.openmeetings.app.xmlimport.UserImport;
+import org.openmeetings.utils.ImportHelper;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.context.ApplicationContext;
@@ -54,6 +56,19 @@
                }
                return null;
        }
+
+       public Configurationmanagement getCfgManagement() {
+               try {
+                       if (ScopeApplicationAdapter.initComplete) {
+                               ApplicationContext context = 
WebApplicationContextUtils
+                                               
.getWebApplicationContext(getServletContext());
+                               return (Configurationmanagement) 
context.getBean("cfgManagement");
+                       }
+               } catch (Exception err) {
+                       log.error("[getUserManagement]", err);
+               }
+               return null;
+       }

        public UsersDaoImpl getUsersDao() {
                try {
@@ -157,7 +172,7 @@
                        // if (user_level!=null && user_level > 0) {
                        if 
(getAuthLevelManagement().checkAdminLevel(user_level)) {
                                ServletMultipartRequest upload = new 
ServletMultipartRequest(
-                                               httpServletRequest, 100 * 1024 * 1024, 
"UTF8"); // max 100MB
+ httpServletRequest, ImportHelper.getMaxUploadSize(getCfgManagement(), user_level), "UTF8");
                                InputStream is = 
upload.getFileContents("Filedata");

                                if (moduleName.equals("users")) {
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java Thu Sep 1 07:57:50 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/ScreenServlet.java Sun Sep 4 06:59:47 2011
@@ -32,6 +32,7 @@
 import org.openmeetings.app.persistence.beans.recording.RoomClient;
 import org.openmeetings.app.remote.red5.ClientListManager;
 import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.utils.ImportHelper;
 import org.openmeetings.utils.image.ImageUtility;
 import org.openmeetings.utils.image.ZipUtility;
 import org.openmeetings.utils.stringhandlers.StringComparer;
@@ -183,9 +184,8 @@

                        log.debug("record: " + record);

-                       @SuppressWarnings("deprecation")
                        ServletMultipartRequest upload = new 
ServletMultipartRequest(
-                                       httpServletRequest, 104857600); // max 
100 mb
+ httpServletRequest, ImportHelper.getMaxUploadSize(getCfgManagement()), "UTF8");

                        Long users_id = 
getSessionManagement().checkSession(sid);
                        Long user_level = 
getUserManagement().getUserLevelByID(users_id);
@@ -529,15 +529,14 @@
                                                return;

                                        // entzippen
-                                       Object o = 
ZipUtility.byteArraytoObject(ba);
-                                       ArrayList al = (ArrayList) o;
-
-                                       byte[] temps = (byte[]) al.get(0);
+ ArrayList<byte[]> al = ZipUtility.<ArrayList<byte[]>>byteArraytoObject(ba);
+
+                                       byte[] temps = al.get(0);
                                        BufferedImage bi = 
ImageUtility.read(temps);

                                        // trim whitespace
                                        String fileSystemName = 
StringUtils.deleteWhitespace(upload
-                                                       
.getFileSystemName("Filedata"));
+                                                       
.getBaseFilename("Filedata"));

                                        String newFileSystemName = 
StringComparer.getInstance()
                                                        .compareForRealPaths(
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/UploadHandler.java Wed Aug 31 10:02:46 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/servlet/outputhandler/UploadHandler.java Sun Sep 4 06:59:47 2011
@@ -16,6 +16,7 @@
 import javax.servlet.http.HttpServletResponse;

 import org.apache.commons.lang.StringUtils;
+import org.openmeetings.app.data.basic.Configurationmanagement;
 import org.openmeetings.app.data.basic.Sessionmanagement;
 import org.openmeetings.app.data.user.Usermanagement;
 import org.openmeetings.app.data.user.dao.UsersDaoImpl;
@@ -24,6 +25,7 @@
 import org.openmeetings.app.documents.GenerateThumbs;
 import org.openmeetings.app.persistence.beans.user.Users;
 import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.utils.ImportHelper;
 import org.openmeetings.utils.StoredFile;
 import org.openmeetings.utils.stringhandlers.StringComparer;
 import org.red5.logging.Red5LoggerFactory;
@@ -133,6 +135,19 @@
                }
                return null;
        }
+
+       public Configurationmanagement getCfgManagement() {
+               try {
+                       if (ScopeApplicationAdapter.initComplete) {
+                               ApplicationContext context = 
WebApplicationContextUtils
+                                               
.getWebApplicationContext(getServletContext());
+                               return (Configurationmanagement) 
context.getBean("cfgManagement");
+                       }
+               } catch (Exception err) {
+                       log.error("[getUserManagement]", err);
+               }
+               return null;
+       }

        @Override
        protected void service(HttpServletRequest httpServletRequest,
@@ -208,12 +223,11 @@
                boolean userProfile = moduleName.equals("userprofile");

                ServletMultipartRequest upload = new ServletMultipartRequest(
-                               httpServletRequest, 104857600, "utf-8"); // max 
100 mb
+ httpServletRequest, ImportHelper.getMaxUploadSize(getCfgManagement()), "UTF8");
                InputStream is = upload.getFileContents("Filedata");

                // trim whitespace
-               @SuppressWarnings("deprecation")
-               String fileSystemName = upload.getFileSystemName("Filedata");
+               String fileSystemName = upload.getBaseFilename("Filedata");
                fileSystemName = StringUtils.deleteWhitespace(fileSystemName);

                // Flash cannot read the response of an upload
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/utils/StoredFile.java Fri Jul 1 00:47:55 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/utils/StoredFile.java Sun Sep 4 06:59:47 2011
@@ -37,7 +37,7 @@
             Arrays.asList(new String[] { "jpg", "xchart" }));

     private final String name;
-    private final String ext;
+       private final String ext;

     public StoredFile(String name, String ext) {
         this.name = name;
@@ -94,4 +94,8 @@
     public boolean isAsIs() {
         return asIsExtensions.contains(ext);
     }
-}
+
+    public String getName() {
+               return name;
+       }
+}
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/utils/image/ZipUtility.java Mon Oct 12 02:51:43 2009 +++ /trunk/singlewebapp/src/app/org/openmeetings/utils/image/ZipUtility.java Sun Sep 4 06:59:47 2011
@@ -13,12 +13,13 @@

 public class ZipUtility {

-    public static Object byteArraytoObject(byte[] data) throws Exception {
+    @SuppressWarnings("unchecked")
+       public static <T> T byteArraytoObject(byte[] data) throws Exception {
         ByteArrayInputStream bais = new ByteArrayInputStream(data);
         ObjectInputStream ois = new ObjectInputStream(bais);
         ois.close();
         bais.close();
-        return ois.readObject();
+        return (T)ois.readObject();
      }

     public static byte[] objecttoByteArray(Object obj) throws IOException {

--
You received this message because you are subscribed to the Google Groups 
"OpenMeetings developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/openmeetings-dev?hl=en.

Reply via email to