FileUpload.jsp revision e8721886dbfd32e88cc7077cbee4b6bb1b44b443
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg<%--
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg Copyright (c) 2008 Sun Microsystems Inc. All Rights Reserved
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg The contents of this file are subject to the terms
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg of the Common Development and Distribution License
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg (the License). You may not use this file except in
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg compliance with the License.
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg You can obtain a copy of the License at
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg https://opensso.dev.java.net/public/CDDLv1.0.html or
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg opensso/legal/CDDLv1.0.txt
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg See the License for the specific language governing
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg permission and limitations under the License.
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg When distributing Covered Code, include this CDDL
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg Header Notice in each file and include the License file
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg at opensso/legal/CDDLv1.0.txt.
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg If applicable, add the following below the CDDL Header,
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg with the fields enclosed by brackets [] replaced by
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg your own identifying information:
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg "Portions Copyrighted [year] [name of copyright owner]"
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg $Id: FileUpload.jsp,v 1.4 2009/08/07 23:39:08 asyhuang Exp $
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg--%>
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg<%--
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg Portions Copyrighted 2012 ForgeRock Inc
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg Portions Copyrighted 2012 Open Source Solution Technology Corporation
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg--%>
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg<%@page import="com.iplanet.sso.SSOException"%>
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg<%@page import="com.iplanet.sso.SSOToken"%>
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg<%@page import="com.iplanet.sso.SSOTokenManager"%>
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg<%@page import="java.io.*" %>
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg<%@page import="java.net.*" %>
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg<%@page import="java.util.*" %>
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg<%
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg request.setCharacterEncoding("UTF-8");
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg response.setContentType("text/html; charset=UTF-8");
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg Locale resLocale = request.getLocale();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg if (resLocale == null) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg resLocale = Locale.US;
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg try {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg SSOTokenManager manager = SSOTokenManager.getInstance();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg SSOToken ssoToken = manager.createSSOToken(request);
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg if (!manager.isValidToken(ssoToken)) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg return;
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg } catch (SSOException ssoe) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg String redirectUrl = request.getScheme() + "://" +
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg request.getServerName() + ":" +
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg request.getServerPort() +
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg request.getContextPath();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg response.sendRedirect(redirectUrl);
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg return;
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg InputStream is = null;
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg BufferedReader bos = null;
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg try {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg boolean limitExceeded = false;
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg StringBuffer buff = new StringBuffer();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg is = request.getInputStream();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg bos = new BufferedReader(new InputStreamReader(is));
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg String line = bos.readLine();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg while (line != null) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg buff.append(line).append("\n");
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg line = bos.readLine();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg if (buff.length() > (1024 * 50)) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg limitExceeded = true;
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg break;
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg if (limitExceeded) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg ResourceBundle rb = null;
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg String RB_NAME = "workflowMessages";
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg com.sun.identity.shared.debug.Debug debug =
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg com.sun.identity.shared.debug.Debug.getInstance("workflowMessages");
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg rb = ResourceBundle.getBundle(RB_NAME, resLocale);
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg String data = com.sun.identity.shared.locale.Locale.getString(
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg rb, "file.upload.size.limit.exceeded", debug);
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg out.println("<div id=\"data\">" + "Error: " + data + "</div>");
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg } else {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg // Parses a content-type String for the boundary.
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg String contentType = request.getContentType();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg if (contentType == null) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg contentType = request.getHeader("Content-Type");
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg String boundary = "";
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg if (contentType != null && contentType.lastIndexOf("boundary=") != -1) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg boundary = contentType.substring(contentType.lastIndexOf("boundary=") + 9);
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg if (boundary.endsWith("\n")) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg boundary = boundary.substring(0, boundary.length()-1);
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg String data = buff.toString();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg int idx = data.indexOf("filename=\"");
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg idx = data.indexOf("\n\n", idx);
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg data = data.substring(idx + 2);
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg idx = data.lastIndexOf("\n--" + boundary);
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg data = data.substring(0, idx);
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg data = data.replace("<", "&lt;");
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg data = data.replace(">", "&gt;");
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg out.println("<div id=\"data\">" + data + "</div>");
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg } catch (IOException e) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg } finally {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg try {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg if (bos != null) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg bos.close();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg } catch (IOException e) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg //ignore
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg try {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg if (is != null) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg is.close();
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg } catch (IOException e) {
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg //ignore
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg }
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg%>
b40d4afa431b31f3ac966f1b539e589c79a06512fuankg