X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fsession%2FHTTPAdapters.java;h=08c82210bdef241b2b93b03ea1df244fc55cfc25;hb=63e0ee1fb8038eb6d8f0190cf38c3b3ab2727216;hp=835ed2dd0611c20f770f2429e53136fc12b485e5;hpb=ecd68765b7b33ec4caf45552fcdc80e6d678fc44;p=mir.git diff --git a/source/mir/session/HTTPAdapters.java b/source/mir/session/HTTPAdapters.java index 835ed2dd..08c82210 100755 --- a/source/mir/session/HTTPAdapters.java +++ b/source/mir/session/HTTPAdapters.java @@ -29,19 +29,19 @@ */ package mir.session; -import java.util.Arrays; -import java.util.List; -import java.util.Vector; +import java.util.*; +import java.net.InetAddress; +import java.net.UnknownHostException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; -import org.apache.commons.fileupload.FileItem; - import mir.util.HTTPParsedRequest; +import org.apache.commons.fileupload.FileItem; public class HTTPAdapters { public static class HTTPRequestAdapter implements Request { private HttpServletRequest request; + private String cachedHostName = null; public HTTPRequestAdapter(HttpServletRequest aRequest) { request = aRequest; @@ -51,6 +51,22 @@ public class HTTPAdapters { if (aHeaderName.equals("ip")) return request.getRemoteAddr(); + if (aHeaderName.equals("hostname")) { + if (aHeaderName.equals("hostname")) { + if (cachedHostName==null) { + try { + cachedHostName = InetAddress.getByName(request.getRemoteAddr()).getHostName(); + } + catch (UnknownHostException e) { + cachedHostName = request.getRemoteAddr(); + } + } + + return cachedHostName; + } + + } + return request.getHeader(aHeaderName); }; @@ -58,8 +74,22 @@ public class HTTPAdapters { return request.getParameter(aName); }; + public List getPrefixedParameterNames(String aPrefix) { + List result = new ArrayList(); + + Enumeration enumeration = request.getParameterNames(); + while (enumeration.hasMoreElements()) { + String name = (String) enumeration.nextElement(); + if (name.startsWith(aPrefix)) { + result.add(name); + } + } + + return result; + }; + public List getUploadedFiles() { - return new Vector(); + return Collections.EMPTY_LIST; }; public List getParameters(String aName) { @@ -73,6 +103,7 @@ public class HTTPAdapters { public static class HTTPParsedRequestAdapter implements Request { private HTTPParsedRequest request; + private String cachedHostName = null; public HTTPParsedRequestAdapter(HTTPParsedRequest aRequest) { request = aRequest; @@ -82,8 +113,21 @@ public class HTTPAdapters { if (aHeaderName.equals("ip")) return request.getRequest().getRemoteAddr(); + if (aHeaderName.equals("hostname")) { + if (cachedHostName==null) { + try { + cachedHostName = InetAddress.getByName(request.getRequest().getRemoteAddr()).getHostName(); + } + catch (UnknownHostException e) { + cachedHostName = request.getRequest().getRemoteAddr(); + } + } + + return cachedHostName; + } + return request.getHeader(aHeaderName); - }; + } public String getParameter(String aName) { return request.getParameter(aName); @@ -93,8 +137,23 @@ public class HTTPAdapters { return request.getParameterList(aName); }; + public List getPrefixedParameterNames(String aPrefix) { + List result = new ArrayList(); + + Iterator i = request.getParameterNames().iterator(); + + while (i.hasNext()) { + String name = (String) i.next(); + if (name.startsWith(aPrefix)) { + result.add(name); + } + } + + return result; + }; + public List getUploadedFiles() { - List result = new Vector(); + List result = new ArrayList(); List files = request.getFiles(); for (int i=0; i