home *** CD-ROM | disk | FTP | other *** search
- package com.bitmechanic.gsp;
-
- import com.bitmechanic.util.EnumerationStack;
- import java.io.BufferedOutputStream;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.FilterOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
- import javax.servlet.ServletContext;
- import javax.servlet.ServletInputStream;
- import javax.servlet.http.Cookie;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
-
- public class GspRequest implements HttpServletRequest {
- private HttpServletRequest request;
- private GspServlet servlet;
- private Hashtable parameters;
- private Form form;
- private String docRoot;
- private String relativePath;
- private String username;
- private Application app;
- private Vector uploadedFiles;
- private long req_time;
- private static final int SEEK_NAME = 1;
- private static final int READ_NAME = 2;
- private static final int SEEK_VALUE = 3;
- private static final int READ_VALUE = 4;
- private static final int READ_FILE = 5;
- private static final int SEEK_BOUNDARY = 6;
- private static final int READ_BOUNDARY = 7;
-
- public GspRequest(GspServlet var1, HttpServletRequest var2, Application var3, String var4, String var5, String var6, long var7) throws IOException {
- this.request = var2;
- this.servlet = var1;
- this.docRoot = var4;
- this.relativePath = var5;
- this.username = var6;
- this.app = var3;
- this.req_time = var7;
- String var9 = this.request.getHeader("content-type");
- if (var9 != null && var9.startsWith("multipart/form-data")) {
- Hashtable var10 = this.parseFileUpload(var9);
- this.setOverrideParameters(var10);
- this.form = new Form(this, var10);
- } else {
- this.form = new Form(this);
- }
- }
-
- public Form getForm() {
- return this.form;
- }
-
- public String getRelativePath() {
- return this.relativePath;
- }
-
- public String getDocumentRoot() {
- return this.docRoot;
- }
-
- public long getRequestTime() {
- return this.req_time;
- }
-
- public String getUsername() {
- return this.username;
- }
-
- public void setOverrideParameters(Hashtable var1) {
- this.parameters = var1;
- }
-
- public Hashtable getOverrideParameters() {
- return this.parameters;
- }
-
- public ServletContext getServletContext() {
- return this.servlet.getServletConfig().getServletContext();
- }
-
- public Object getAttribute(String var1) {
- return this.request.getAttribute(var1);
- }
-
- public int getContentLength() {
- return this.request.getContentLength();
- }
-
- public String getContentType() {
- return this.request.getContentType();
- }
-
- public ServletInputStream getInputStream() throws IOException {
- return this.request.getInputStream();
- }
-
- /** @deprecated */
- public String getParameter(String var1) {
- if (this.parameters != null && this.parameters.containsKey(var1)) {
- Object var2 = this.parameters.get(var1);
- if (var2 == null) {
- return null;
- } else if (var2 instanceof String) {
- return (String)var2;
- } else {
- return var2 instanceof String[] && ((String[])var2).length > 0 ? ((String[])var2)[0] : null;
- }
- } else {
- return this.request.getParameter(var1);
- }
- }
-
- public Enumeration getParameterNames() {
- if (this.parameters != null) {
- EnumerationStack var1 = new EnumerationStack(this.parameters.keys());
- var1.push(this.request.getParameterNames());
- return var1;
- } else {
- return this.request.getParameterNames();
- }
- }
-
- public String getParameterValue(String var1) {
- if (this.parameters != null && this.parameters.containsKey(var1)) {
- Object var3 = this.parameters.get(var1);
- if (var3 == null) {
- return null;
- } else if (var3 instanceof String) {
- return (String)var3;
- } else {
- return var3 instanceof String[] && ((String[])var3).length > 0 ? ((String[])var3)[0] : null;
- }
- } else {
- String[] var2 = this.request.getParameterValues(var1);
- return var2 != null && var2.length >= 1 ? var2[0] : null;
- }
- }
-
- public String[] getParameterValues(String var1) {
- if (this.parameters != null && this.parameters.containsKey(var1)) {
- Object var2 = this.parameters.get(var1);
- if (var2 == null) {
- return null;
- } else if (var2 instanceof String) {
- String[] var3 = new String[]{(String)var2};
- return var3;
- } else {
- return var2 instanceof String[] && ((String[])var2).length > 0 ? (String[])var2 : null;
- }
- } else {
- return this.request.getParameterValues(var1);
- }
- }
-
- public String getProtocol() {
- return this.request.getProtocol();
- }
-
- public BufferedReader getReader() throws IOException {
- return this.request.getReader();
- }
-
- public String getRealPath(String var1) {
- return this.request.getRealPath(var1);
- }
-
- public String getRemoteAddr() {
- return this.request.getRemoteAddr();
- }
-
- public String getRemoteHost() {
- return this.request.getRemoteHost();
- }
-
- public String getScheme() {
- return this.request.getScheme();
- }
-
- public String getServerName() {
- return this.request.getServerName();
- }
-
- public int getServerPort() {
- return this.request.getServerPort();
- }
-
- public String getCharacterEncoding() {
- return this.request.getCharacterEncoding();
- }
-
- public String getAuthType() {
- return this.request.getAuthType();
- }
-
- public Cookie[] getCookies() {
- return this.request.getCookies();
- }
-
- public long getDateHeader(String var1) {
- return this.request.getDateHeader(var1);
- }
-
- public String getHeader(String var1) {
- return this.request.getHeader(var1);
- }
-
- public Enumeration getHeaderNames() {
- return this.request.getHeaderNames();
- }
-
- public int getIntHeader(String var1) {
- return this.request.getIntHeader(var1);
- }
-
- public String getMethod() {
- return this.request.getMethod();
- }
-
- public String getPathInfo() {
- return this.request.getPathInfo();
- }
-
- public String getPathTranslated() {
- return this.request.getPathTranslated();
- }
-
- public String getQueryString() {
- return this.request.getQueryString();
- }
-
- public String getRemoteUser() {
- return this.request.getRemoteUser();
- }
-
- public String getRequestedSessionId() {
- return this.request.getRequestedSessionId();
- }
-
- public String getRequestURI() {
- return this.request.getRequestURI();
- }
-
- public String getServletPath() {
- return this.request.getServletPath();
- }
-
- public HttpSession getSession(boolean var1) {
- HttpSession var2 = this.request.getSession(var1);
- if (var2 != null) {
- this.app.registerSession(var2, this);
- }
-
- return var2;
- }
-
- public boolean isRequestedSessionIdFromCookie() {
- return this.request.isRequestedSessionIdFromCookie();
- }
-
- public boolean isRequestedSessionIdFromUrl() {
- return this.request.isRequestedSessionIdFromUrl();
- }
-
- public boolean isRequestedSessionIdValid() {
- return this.request.isRequestedSessionIdValid();
- }
-
- public Vector getUploadedFiles() {
- return this.uploadedFiles;
- }
-
- private Hashtable parseFileUpload(String var1) throws IOException {
- Hashtable var2 = new Hashtable();
- int var3 = var1.indexOf("boundary=") + 9;
- if (var3 == -1) {
- return var2;
- } else {
- String var4 = var1.substring(var3);
- String var5 = "\r\n" + var4;
- String var6 = "\r\n--" + var4;
- byte var7 = 6;
- byte var8 = 6;
- byte[] var9 = new byte[var6.length() + 1];
- ServletInputStream var10 = this.request.getInputStream();
- int var11 = 0;
- long var12 = 0L;
- int var14 = this.getContentLength();
- String var15 = null;
- StringBuffer var16 = new StringBuffer();
- String var17 = null;
- String var18 = null;
- String var19 = this.servlet.getUploadDir();
- int var20 = 0;
- int var21 = 0;
- int var22 = 0;
- long var23 = this.servlet.getMaxFileSize();
- BufferedOutputStream var25 = null;
-
- while(var12 < (long)var14) {
- var11 = ((InputStream)var10).read();
- ++var12;
- switch (var7) {
- case 1:
- String var26 = this.readLine(var10, var12, var14);
- var12 += (long)var26.length();
- int var27 = var26.indexOf("name=\"");
- int var28 = -1;
- if (var27 != -1) {
- var28 = var26.indexOf(34, var27 + 6);
- }
-
- if (var27 != -1 && var28 != -1) {
- var15 = var26.substring(var27 + 6, var28);
- if (var26.indexOf("filename=\"") != -1) {
- int var29 = var26.indexOf("filename=\"") + 10;
- int var30 = var26.indexOf("\"", var29);
- if (var30 != -1) {
- var18 = var26.substring(var29, var30);
- } else {
- var18 = "";
- }
-
- var7 = 5;
- var26 = this.readLine(var10, var12, var14);
- var12 += (long)var26.length();
- ++var21;
- var17 = var19 + File.separator + var4.substring(var4.length() - 5) + var21 + ".tmp";
- var20 = 0;
- var25 = new BufferedOutputStream(new FileOutputStream(var17));
- if (this.uploadedFiles == null) {
- this.uploadedFiles = new Vector();
- }
-
- this.uploadedFiles.addElement(var17);
- } else {
- var7 = 4;
- var16.setLength(0);
- }
-
- var12 += 2L;
- ((InputStream)var10).skip(2L);
- }
- case 2:
- case 3:
- default:
- break;
- case 4:
- if (var11 == 13) {
- var8 = var7;
- var7 = 7;
- var22 = 1;
- var9[0] = (byte)var11;
- } else {
- var16.append((char)var11);
- }
- break;
- case 5:
- if (var11 == 13) {
- var8 = var7;
- var7 = 7;
- var22 = 1;
- var9[0] = (byte)var11;
- } else {
- ++var20;
- if ((long)var20 < var23) {
- var25.write(var11);
- } else {
- var7 = 6;
- this.servlet.log("GspServlet: attempt to upload file exceeding max allowable size. max size = " + var23 + " -- CONTENT_LENGTH = " + var14);
- ((FilterOutputStream)var25).close();
- }
- }
- break;
- case 6:
- if (var11 == 45) {
- var8 = var7;
- var7 = 7;
- var22 = 3;
- var9[0] = (byte)var11;
- }
- break;
- case 7:
- if (var22 < var6.length() && var11 == var6.charAt(var22) || var22 < var5.length() && var11 == var5.charAt(var22)) {
- if (var11 == var6.charAt(var22) && var6.length() == var22 + 1 || var5.length() == var22 + 1 && var11 == var5.charAt(var22)) {
- if (var8 == 4) {
- this.addVal(var2, var15.toString(), var16.toString());
- } else if (var8 == 5) {
- ((FilterOutputStream)var25).close();
- this.addVal(var2, var15.toString(), var17);
- this.addVal(var2, var15 + "-client", var18);
- }
-
- ((InputStream)var10).skip(2L);
- var12 += 2L;
- var7 = 1;
- } else {
- var9[var22] = (byte)var11;
- ++var22;
- }
- } else {
- var9[var22] = (byte)var11;
- ++var22;
- if (var8 == 4) {
- var16.append(new String(var9, 0, var22));
- } else {
- var25.write(var9, 0, var22);
- }
-
- var22 = 0;
- var7 = var8;
- }
- }
- }
-
- return var2;
- }
- }
-
- private String readLine(InputStream var1, long var2, int var4) throws IOException {
- if (var2 >= (long)var4) {
- return "";
- } else {
- StringBuffer var5 = new StringBuffer(128);
- int var6 = var1.read();
- var5.append((char)var6);
- int var7 = 0;
-
- while(var2 < (long)var4 && var6 != 10 && var7 != 13) {
- var7 = var6;
- var6 = var1.read();
- var5.append((char)var6);
- }
-
- return var5.toString();
- }
- }
-
- private void addVal(Hashtable var1, String var2, String var3) {
- String[] var4 = (String[])var1.get(var2);
- if (var4 == null) {
- var1.put(var2, new String[]{var3});
- } else {
- String[] var5 = new String[var4.length + 1];
-
- for(int var6 = 0; var6 < var4.length; ++var6) {
- var5[var6] = var4[var6];
- }
-
- var5[var4.length] = var3;
- var1.put(var2, var5);
- }
- }
- }
-