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