Index: /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/connector/ConnectorServlet.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/connector/ConnectorServlet.java	(revision 1432)
+++ /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/connector/ConnectorServlet.java	(revision 1433)
@@ -46,6 +46,8 @@
 
 import net.fckeditor.ConfigurationHandler;
+import net.fckeditor.Constants;
 import net.fckeditor.ExtensionsHandler;
 import net.fckeditor.tool.UploadResponse;
+import net.fckeditor.tool.Utils;
 
 import org.apache.commons.fileupload.FileItem;
@@ -86,18 +88,25 @@
 	/**
 	 * Initialize the servlet.<br>
-	 * Retrieve from the servlet configuration the "baseDir" which is the root
-	 * of the file repository.
+	 * The optional init parameters will be read and used to adjust the defaults 
+	 * of the {@link ConfigurationHandler} and the {@link ExtensionsHandler}.
 	 */
-	public void init() throws ServletException {
+	public void init() throws ServletException, IllegalArgumentException {		
 		if (getInitParameter("ForceSingleExtension") != null)
 			ConfigurationHandler.setForceSingleExtension(getInitParameter("ForceSingleExtension"));
 			
-		if (getInitParameter("baseDir") != null)
+		if (getInitParameter("baseDir") != null)  // TODO should we check, if 'baseDir' contains '..' ?? 
 			ConfigurationHandler.setBaseDir(getInitParameter("baseDir"));
-		
-		// TODO add init-params for each file type allowed/discard !!!
-		
-		String realBaseDir = getServletContext().getRealPath(
-				ConfigurationHandler.getBaseDir());
+	
+		setExtension(Constants.FILE_TYPE_FILE, getInitParameter("AllowedExtensionsFile"),
+				getInitParameter("DeniedExtensionsFile"));
+		setExtension(Constants.FILE_TYPE_IMAGE, getInitParameter("AllowedExtensionsImage"),
+				getInitParameter("DeniedExtensionsImage"));
+		setExtension(Constants.FILE_TYPE_FLASH, getInitParameter("AllowedExtensionsFlash"),
+				getInitParameter("DeniedExtensionsFlash"));
+		setExtension(Constants.FILE_TYPE_MEDIA, getInitParameter("AllowedExtensionsMedia"),
+				getInitParameter("DeniedExtensionsMedia"));
+
+		// check, if 'baseDir' exists
+		String realBaseDir = getServletContext().getRealPath(ConfigurationHandler.getBaseDir());
 		File baseFile = new File(realBaseDir);
 		if (!baseFile.exists()) {
@@ -107,5 +116,6 @@
 		logger.info("*** Connector Servlet initialized successfull!");
 	}
-
+	
+	
 	/**
 	 * Manage the Get requests (GetFolders, GetFoldersAndFiles, CreateFolder).<br>
@@ -161,5 +171,5 @@
 		} else if (commandStr.equals("GetFoldersAndFiles")) {
 			getFolders(currentDir, root, document);
-			getFiles(currentDir, root, document);
+			getFiles(typeStr, currentDir, root, document);
 		} else if (commandStr.equals("CreateFolder")) {
 			String newFolderStr = request.getParameter("NewFolderName");
@@ -342,5 +352,5 @@
 	}
 
-	private void getFiles(File dir, Node root, Document doc) {
+	private void getFiles(final String type, File dir, Node root, Document doc) {
 		Element files = doc.createElement("Files");
 		root.appendChild(files);
@@ -349,8 +359,10 @@
 		for (File file : fileList) {
 			Element fileElement = doc.createElement("File");
-			// TODO Check file extension with the ExtensionsHandler !!!
-			fileElement.setAttribute("name", file.getName());
-			fileElement.setAttribute("size", String.valueOf(file.length() / 1024));
-			files.appendChild(fileElement);
+			String extension = FilenameUtils.getExtension(file.getName());
+			if (Utils.isNotEmpty(extension) && ExtensionsHandler.isAllowed(type, extension)) {
+				fileElement.setAttribute("name", file.getName());
+				fileElement.setAttribute("size", String.valueOf(file.length() / 1024));
+				files.appendChild(fileElement);
+			}
 		}
 	}
@@ -380,3 +392,25 @@
 	}
 
+
+	/**
+	 * Initializes the {@link ExtensionsHandler} with the allowed or denied extensions of a file type. 
+	 * 
+	 * @param type
+	 * @param allowedList
+	 * @param deniedList
+	 * @throws IllegalArgumentException if allowed and denied extensions are set.
+	 */
+	private void setExtension(final String type, final String allowedList, final String deniedList) {
+		// if both lists are set, we have to throw an error, because only one list should be set
+		if (Utils.isNotEmpty(allowedList) && Utils.isNotEmpty(deniedList)) {
+			String errorMsg = "Allowed and denied extensions are set for [" + type + "]. Just one of them should be set!";
+			logger.error(errorMsg);
+			throw new IllegalArgumentException(errorMsg);
+		}
+		
+		if (Utils.isNotEmpty(allowedList))
+			ExtensionsHandler.setExtensionsAllowed(type, allowedList);
+		else 
+			ExtensionsHandler.setExtensionsDenied(type, deniedList);
+	}
 }
