/*
* Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.synapse.commons.throttle.module;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.transport.http.HTTPConstants;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.*;
public class TestMessageContext extends MessageContext {
private static String[] TEST_REMOTE_HOSTS = {"www.abc.com", "www.wso2.org", "www.test.com/lk"};
private static String[] TEST_IPS = {"10.100.1.162", "10.100.2.161", "10.100.5.105"};
private static String[] TEST_OAUTH_HEADERS = {
"oauth_consumer_key=\"nq21LN39VlKe6OezcOndBx\", " +
"oauth_signature_method=\"HMAC-SHA1\", " +
"oauth_signature=\"DZKyT75hiOIdtMGCU%2BbITArs4sU%3D\", " +
"oauth_timestamp=\"1328590467\", oauth_nonce=\"7031216264696\", " +
"oauth_version=\"1.0\"",
"oauth_consumer_key=\"kkkkksdsds22222444BASS\", " +
"oauth_signature_method=\"HMAC-SHA1\", " +
"oauth_signature=\"DZKyT75hiOIdtMGCU%2BbITArs4sU%3D\", " +
"oauth_timestamp=\"1328590467\", oauth_nonce=\"7031216264696\", " +
"oauth_version=\"1.0\"",
"oauth_consumer_key=\"assds222323sasdadadFFF\", " +
"oauth_signature_method=\"HMAC-SHA1\", " +
"oauth_signature=\"DZKyT75hiOIdtMGCU%2BbITArs4sU%3D\", " +
"oauth_timestamp=\"1328590467\", oauth_nonce=\"7031216264696\", " +
"oauth_version=\"1.0\"",
"oauth_consumer_key=\"11111111ds22222444BASS\", " +
"oauth_signature_method=\"HMAC-SHA1\", " +
"oauth_signature=\"DZKyT75hiOIdtMGCU%2BbITArs4sU%3D\", " +
"oauth_timestamp=\"1328590467\", oauth_nonce=\"7031216264696\", " +
"oauth_version=\"1.0\"",
};
public static void setTestIPs(String[] ips) {
TEST_IPS = ips;
}
public static void setTestRemoteHosts(String[] hosts) {
TEST_REMOTE_HOSTS = hosts;
}
public Object getPropertyNonReplicable(java.lang.String key) {
HttpServletRequest request = null;
if (key.equals(HTTPConstants.MC_HTTP_SERVLETREQUEST)) {
request = new HttpServletRequest() {
public String getAuthType() {
return null;
}
public Cookie[] getCookies() {
return new Cookie[0];
}
public long getDateHeader(String s) {
return 0;
}
public String getHeader(String s) {
Random rnd = new Random();
return TEST_OAUTH_HEADERS[rnd.nextInt(TEST_OAUTH_HEADERS.length)];
// return "oauth_consumer_key=\"nq21LN39VlKe6OezcOndBx\",
// oauth_signature_method=\"HMAC-SHA1\", oauth_signature=\"DZKyT75hiOIdtMGCU%2BbITArs4sU%3D\",
// oauth_timestamp=\"1328590467\", oauth_nonce=\"7031216264696\", oauth_version=\"1.0\"";
}
public Enumeration getHeaders(String s) {
return null;
}
public Enumeration getHeaderNames() {
return null;
}
public int getIntHeader(String s) {
return 0;
}
public String getMethod() {
return null;
}
public String getPathInfo() {
return null;
}
public String getPathTranslated() {
return null;
}
public String getContextPath() {
return null;
}
public String getQueryString() {
return null;
}
public String getRemoteUser() {
return null;
}
public boolean isUserInRole(String s) {
return false;
}
public Principal getUserPrincipal() {
return null;
}
public String getRequestedSessionId() {
return null;
}
public String getRequestURI() {
return null;
}
public StringBuffer getRequestURL() {
return null;
}
public String getServletPath() {
return null;
}
public HttpSession getSession(boolean b) {
return null;
}
public HttpSession getSession() {
return null;
}
public boolean isRequestedSessionIdValid() {
return false;
}
public boolean isRequestedSessionIdFromCookie() {
return false;
}
public boolean isRequestedSessionIdFromURL() {
return false;
}
public boolean isRequestedSessionIdFromUrl() {
return false;
}
public boolean authenticate(HttpServletResponse httpServletResponse)
throws IOException, ServletException {
return false; //To change body of implemented methods use File |
// Settings | File Templates.
}
public void login(String s, String s1) throws ServletException {
//To change body of implemented methods use File | Settings | File Templates.
}
public void logout() throws ServletException {
//To change body of implemented methods use File | Settings | File Templates.
}
public Collection<Part> getParts() throws IOException, ServletException {
return null; //To change body of implemented methods use File | Settings
// | File Templates.
}
public Part getPart(String s) throws IOException, ServletException {
return null; //To change body of implemented methods use File | Settings
// | File Templates.
}
public Object getAttribute(String s) {
return null;
}
public Enumeration getAttributeNames() {
return null;
}
public String getCharacterEncoding() {
return null;
}
public void setCharacterEncoding(String s) throws UnsupportedEncodingException {
}
public int getContentLength() {
return 0;
}
public String getContentType() {
return null;
}
public ServletInputStream getInputStream() throws IOException {
return null;
}
public String getParameter(String s) {
return null;
}
public Enumeration getParameterNames() {
return null;
}
public String[] getParameterValues(String s) {
return new String[0];
}
public Map getParameterMap() {
return null;
}
public String getProtocol() {
return null;
}
public String getScheme() {
return null;
}
public String getServerName() {
return null;
}
public int getServerPort() {
return 0;
}
public BufferedReader getReader() throws IOException {
return null;
}
public String getRemoteAddr() {
return null;
}
public String getRemoteHost() {
Random rnd = new Random();
return TEST_REMOTE_HOSTS[rnd.nextInt(TEST_REMOTE_HOSTS.length)];
}
public void setAttribute(String s, Object o) {
}
public void removeAttribute(String s) {
}
public Locale getLocale() {
return null;
}
public Enumeration getLocales() {
return null;
}
public boolean isSecure() {
return false;
}
public RequestDispatcher getRequestDispatcher(String s) {
return null;
}
public String getRealPath(String s) {
return null;
}
public int getRemotePort() {
return 0; //To change body of implemented methods use File | Settings
// | File Templates.
}
public String getLocalName() {
return null; //To change body of implemented methods use File | Settings |
// File Templates.
}
public String getLocalAddr() {
return null; //To change body of implemented methods use File | Settings |
// File Templates.
}
public int getLocalPort() {
return 0; //To change body of implemented methods use File | Settings |
// File Templates.
}
public ServletContext getServletContext() {
return null; //To change body of implemented methods use File | Settings |
// File Templates.
}
public AsyncContext startAsync() throws IllegalStateException {
return null; //To change body of implemented methods use File | Settings |
// File Templates.
}
public AsyncContext startAsync(ServletRequest servletRequest,
ServletResponse servletResponse)
throws IllegalStateException {
return null; //To change body of implemented methods use File |
// Settings | File Templates.
}
public boolean isAsyncStarted() {
return false; //To change body of implemented methods use File |
// Settings | File Templates.
}
public boolean isAsyncSupported() {
return false; //To change body of implemented methods use File |
// Settings | File Templates.
}
public AsyncContext getAsyncContext() {
return null; //To change body of implemented methods use File |
// Settings | File Templates.
}
public DispatcherType getDispatcherType() {
return null; //To change body of implemented methods use File |
// Settings | File Templates.
}
};
}
return request;
}
public java.lang.Object getProperty(java.lang.String key) {
if (MessageContext.REMOTE_ADDR.equals(key)) {
Random rnd = new Random();
return TEST_IPS[rnd.nextInt(TEST_IPS.length)];
}
return null;
}
public static void main(String[] args) {
TestMessageContext.setTestIPs(new String[]{"10.192.1.10", "10.199.1.1", "10.100.5.1",
"10.101.15.1"});
for (String s : TEST_OAUTH_HEADERS) {
System.out.println(s);
}
TestMessageContext msgCtxt = new TestMessageContext();
HttpServletRequest request =
(HttpServletRequest) msgCtxt.getPropertyNonReplicable(
HTTPConstants.MC_HTTP_SERVLETREQUEST);
System.out.println(request.getRemoteHost());
System.out.println(request.getRemoteHost());
System.out.println(request.getRemoteHost());
System.out.println(request.getRemoteHost());
System.out.println(request.getRemoteHost());
System.out.println(request.getRemoteHost());
System.out.println(request.getRemoteHost());
System.out.println(request.getRemoteHost());
System.out.println(request.getRemoteHost());
System.out.println(msgCtxt.getProperty(MessageContext.REMOTE_ADDR));
System.out.println(msgCtxt.getProperty(MessageContext.REMOTE_ADDR));
System.out.println(msgCtxt.getProperty(MessageContext.REMOTE_ADDR));
System.out.println(msgCtxt.getProperty(MessageContext.REMOTE_ADDR));
System.out.println(msgCtxt.getProperty(MessageContext.REMOTE_ADDR));
System.out.println(msgCtxt.getProperty(MessageContext.REMOTE_ADDR));
System.out.println(msgCtxt.getProperty(MessageContext.REMOTE_ADDR));
System.out.println(msgCtxt.getProperty(MessageContext.REMOTE_ADDR));
System.out.println(msgCtxt.getProperty(MessageContext.REMOTE_ADDR));
System.out.println(msgCtxt.getProperty(MessageContext.REMOTE_ADDR));
}
}