bloritsch    01/10/31 09:23:02

  Modified:    src/org/apache/jmeter/protocol/http/proxy Admin.java
                        HttpRequestHdr.java Proxy.java
  Log:
  Remove all deprecation warnings
  
  Revision  Changes    Path
  1.3       +109 -109  
jakarta-jmeter/src/org/apache/jmeter/protocol/http/proxy/Admin.java
  
  Index: Admin.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/proxy/Admin.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Admin.java        2001/07/26 00:34:48     1.2
  +++ Admin.java        2001/10/31 17:23:01     1.3
  @@ -15,114 +15,114 @@
   
   public class Admin extends Thread
   {
  -     //
  -     // Member variables
  -     //
  -
  -     ServerSocket adminSocket = null;
  -     Socket appletSocket = null;
  -     String passwordCandidate = null;
  -     DataInputStream in = null;
  -     DataOutputStream out = null;
  -     Config config = null;
  -     Cache cache;
  -
  -
  -     //
  -     // Public methods
  -     //
  -
  -     //
  -     // Constructor
  -     //
  -     Admin(Config configObject, Cache cacheManager)
  -     {
  -             try
  -             {
  -                     config = configObject;
  -                     cache = cacheManager;
  -                     adminSocket = new ServerSocket(0);
  -                     config.setAdminPort(adminSocket.getLocalPort());
  -             }
  -             catch (IOException e)
  -             {
  -                     System.out.println("Error opening admin socket");
  -             }
  -     }
  -
  -
  -     //
  -     // Handle communications with remote administrator
  -     //
  -     public void run()
  -     {
  -             while(true)
  -             {
  -                     try
  -                     {
  -                             appletSocket = adminSocket.accept();
  -                             in = new 
DataInputStream(appletSocket.getInputStream());
  -                             out = new 
DataOutputStream(appletSocket.getOutputStream());
  -
  -                             do
  -                             {
  -                                     // Read password candidate sent by applet
  -                                     String passwordCandidate = in.readLine();
  -
  -                                     // Send applet ack/nack on password
  -                                     if 
(config.getPassword().equals(passwordCandidate))
  -                                     {
  -                                             out.writeBytes("ACCEPT\n");
  -                                             break;
  -                                     }
  -                                     else
  -                                     {
  -                                             out.writeBytes("REJECT\n");
  -                                     }
  -                                     out.flush();
  -                             }
  -                             while (true);
  -
  -                             //
  -                             // Password is OK, so let's send the administrator the
  -                             // parameters values and read his new values
  -                             //
  -                             while(true)
  -                             {
  -                                     out.writeBytes(config.toString());
  -                                     out.flush();
  -
  -                                     config.parse(in.readLine());
  -                                     System.out.println("Configuration changed by 
administrator.");
  -
  -                                     // Administrator wants to clean the cache
  -                                     if (config.getCleanCache())
  -                                     {
  -                                             cache.clean();
  -                                             config.setCleanCache(false); //no need 
to clean again
  -                                     }
  -                             }
  -                     }
  -                     catch (Exception e)
  -                     {
  -                             //
  -                             // This line was reached because the administrator 
closed
  -                             // the connection with the proxy. That's fine, we are 
now
  -                             // available for another administrator to log in.
  -                             //
  -                             System.out.println("Connection with administrator 
closed.");
  -                     }
  -                     finally
  -                     {
  -                             try
  -                             {
  -                                     out.close();
  -                                     in.close();
  -                             }
  -                             catch(Exception exc)
  -                             {}
  -                     }
  -             }//while
  -     }
  +    //
  +    // Member variables
  +    //
  +
  +    ServerSocket adminSocket = null;
  +    Socket appletSocket = null;
  +    String passwordCandidate = null;
  +    BufferedReader in = null;
  +    DataOutputStream out = null;
  +    Config config = null;
  +    Cache cache;
  +
  +
  +    //
  +    // Public methods
  +    //
  +
  +    //
  +    // Constructor
  +    //
  +    Admin(Config configObject, Cache cacheManager)
  +    {
  +        try
  +        {
  +            config = configObject;
  +            cache = cacheManager;
  +            adminSocket = new ServerSocket(0);
  +            config.setAdminPort(adminSocket.getLocalPort());
  +        }
  +        catch (IOException e)
  +        {
  +            System.out.println("Error opening admin socket");
  +        }
  +    }
  +
  +
  +    //
  +    // Handle communications with remote administrator
  +    //
  +    public void run()
  +    {
  +        while(true)
  +        {
  +            try
  +            {
  +                appletSocket = adminSocket.accept();
  +                in = new BufferedReader(new InputStreamReader(new 
DataInputStream(appletSocket.getInputStream())));
  +                out = new DataOutputStream(appletSocket.getOutputStream());
  +
  +                do
  +                {
  +                    // Read password candidate sent by applet
  +                    String passwordCandidate = in.readLine();
  +
  +                    // Send applet ack/nack on password
  +                    if (config.getPassword().equals(passwordCandidate))
  +                    {
  +                        out.writeBytes("ACCEPT\n");
  +                        break;
  +                    }
  +                    else
  +                    {
  +                        out.writeBytes("REJECT\n");
  +                    }
  +                    out.flush();
  +                }
  +                while (true);
  +
  +                //
  +                // Password is OK, so let's send the administrator the
  +                // parameters values and read his new values
  +                //
  +                while(true)
  +                {
  +                    out.writeBytes(config.toString());
  +                    out.flush();
  +
  +                    config.parse(in.readLine());
  +                    System.out.println("Configuration changed by administrator.");
  +
  +                    // Administrator wants to clean the cache
  +                    if (config.getCleanCache())
  +                    {
  +                        cache.clean();
  +                        config.setCleanCache(false); //no need to clean again
  +                    }
  +                }
  +            }
  +            catch (Exception e)
  +            {
  +                //
  +                // This line was reached because the administrator closed
  +                // the connection with the proxy. That's fine, we are now
  +                // available for another administrator to log in.
  +                //
  +                System.out.println("Connection with administrator closed.");
  +            }
  +            finally
  +            {
  +                try
  +                {
  +                    out.close();
  +                    in.close();
  +                }
  +                catch(Exception exc)
  +                {}
  +            }
  +        }//while
  +    }
   }
   
  
  
  
  1.3       +324 -322  
jakarta-jmeter/src/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java
  
  Index: HttpRequestHdr.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HttpRequestHdr.java       2001/07/26 00:34:48     1.2
  +++ HttpRequestHdr.java       2001/10/31 17:23:02     1.3
  @@ -6,6 +6,8 @@
   
   import java.io.InputStream;
   import java.io.DataInputStream;
  +import java.io.BufferedReader;
  +import java.io.InputStreamReader;
   import java.util.StringTokenizer;
   
   //
  @@ -16,76 +18,76 @@
   public class HttpRequestHdr
   {
   
  -     /**
  -      * Http Request method. Such as get or post.
  -      */
  -     public  String method = new String();
  -
  -     /**
  -      * The requested url. The universal resource locator that
  -      * hopefully uniquely describes the object or service the
  -      * client is requesting.
  -      */
  -     public String url   = new String();
  -
  -     /**
  -      * Version of http being used. Such as HTTP/1.0
  -      */
  -     public String version           = new String();
  -
  -     /**
  -      * The client's browser's name.
  -      */
  -     public String userAgent         = new String();
  -
  -     /**
  -      * The requesting documents that contained the url link.
  -      */
  -     public String referer           = new String();
  -
  -     /**
  -      * A internet address date of the remote copy.
  -      */
  -     public String ifModifiedSince   = new String();
  -
  -     /**
  -      * A list of mime types the client can accept.
  -      */
  -     public String accept            = new String();
  -
  -     /**
  -      * The clients authorization. Don't belive it.
  -      */
  -
  -     public String authorization     = new String();
  -     /**
  -      * The type of content following the request header.
  -      * Normally there is no content and this is blank, however
  -      * the post method usually does have a content and a content
  -      * length.
  -      */
  -     public String contentType       = new String();
  -     /**
  -      * The length of the content following the header. Usually
  -      * blank.
  -      */
  -     public int    contentLength     = -1;
  -     /**
  -      * The content length of a remote copy of the requested object.
  -      */
  -     public int    oldContentLength  = -1;
  -     /**
  -      * Anything in the header that was unrecognized by this class.
  -      */
  -     public String unrecognized      = new String();
  -     /**
  -      * Indicates that no cached versions of the requested object are
  -      * to be sent. Usually used to tell proxy not to send a cached copy.
  -      * This may also effect servers that are front end for data bases.
  -      */
  -     public boolean pragmaNoCache    = false;
  +    /**
  +     * Http Request method. Such as get or post.
  +     */
  +    public  String method = new String();
  +
  +    /**
  +     * The requested url. The universal resource locator that
  +     * hopefully uniquely describes the object or service the
  +     * client is requesting.
  +     */
  +    public String url   = new String();
  +
  +    /**
  +     * Version of http being used. Such as HTTP/1.0
  +     */
  +    public String version           = new String();
  +
  +    /**
  +     * The client's browser's name.
  +     */
  +    public String userAgent         = new String();
  +
  +    /**
  +     * The requesting documents that contained the url link.
  +     */
  +    public String referer           = new String();
  +
  +    /**
  +     * A internet address date of the remote copy.
  +     */
  +    public String ifModifiedSince   = new String();
  +
  +    /**
  +     * A list of mime types the client can accept.
  +     */
  +    public String accept            = new String();
  +
  +    /**
  +     * The clients authorization. Don't belive it.
  +     */
  +
  +    public String authorization     = new String();
  +    /**
  +     * The type of content following the request header.
  +     * Normally there is no content and this is blank, however
  +     * the post method usually does have a content and a content
  +     * length.
  +     */
  +    public String contentType       = new String();
  +    /**
  +     * The length of the content following the header. Usually
  +     * blank.
  +     */
  +    public int    contentLength     = -1;
  +    /**
  +     * The content length of a remote copy of the requested object.
  +     */
  +    public int    oldContentLength  = -1;
  +    /**
  +     * Anything in the header that was unrecognized by this class.
  +     */
  +    public String unrecognized      = new String();
  +    /**
  +     * Indicates that no cached versions of the requested object are
  +     * to be sent. Usually used to tell proxy not to send a cached copy.
  +     * This may also effect servers that are front end for data bases.
  +     */
  +    public boolean pragmaNoCache    = false;
   
  -     static String CR ="\r\n";
  +    static String CR ="\r\n";
   
   
   /**
  @@ -95,260 +97,260 @@
    * @return    true if parsing sucsessfull.
    */
   public boolean parse(InputStream In)
  -     {
  -              String CR ="\r\n";
  +    {
  +         String CR ="\r\n";
   
  -              /*
  -               * Read by lines
  -               */
  -              DataInputStream lines;
  -              StringTokenizer tz;
  -              try
  -             {
  -                       lines = new DataInputStream(In);
  -                       tz = new StringTokenizer(lines.readLine());
  -              }
  -             catch (Exception e)
  -             {
  -                       return false;
  -              }
  -
  -              /*
  -               * HTTP COMMAND LINE < <METHOD==get> <URL> <HTTP_VERSION> >
  -               */
  -              method = getToken(tz).toUpperCase();
  -              url    = getToken(tz);
  -              version= getToken(tz);
  -
  -              while (true)
  -             {
  -                       try
  -                     {
  -                                     tz = new StringTokenizer(lines.readLine());
  -                       }
  -                     catch (Exception e)
  -                     {
  -                                     return false;
  -                       }
  -                       String Token = getToken(tz);
  -
  -                       // look for termination of HTTP command
  -                       if (0 == Token.length())
  -                                     break;
  -
  -                       if (Token.equalsIgnoreCase("USER-AGENT:")) {
  -                                     // line =<User-Agent: <Agent Description>>
  -                                     userAgent = getRemainder(tz);
  -                       } else if (Token.equalsIgnoreCase("ACCEPT:")) {
  -                                     // line=<Accept: <Type>/<Form>
  -                                     // examp: Accept image/jpeg
  -                                     accept += " " + getRemainder(tz);
  -
  -                       } else if (Token.equalsIgnoreCase("REFERER:")) {
  -                                     // line =<Referer: <URL>>
  -                                     referer = getRemainder(tz);
  -
  -                       } else if (Token.equalsIgnoreCase("PRAGMA:")) {
  -                                     // Pragma: <no-cache>
  -                                     Token = getToken(tz);
  -
  -                                     if (Token.equalsIgnoreCase("NO-CACHE"))
  -                                              pragmaNoCache = true;
  -                                     else
  -                                              unrecognized += "Pragma:" + Token + " 
"
  -                                                       +getRemainder(tz) +"\n";
  -                       } else if (Token.equalsIgnoreCase("AUTHORIZATION:")) {
  -                                     // Authenticate: Basic UUENCODED
  -                                     authorization=  getRemainder(tz);
  -
  -                       } else if (Token.equalsIgnoreCase("IF-MODIFIED-SINCE:")) {
  -                                     // line =<If-Modified-Since: <http date>
  -                                     // *** Conditional GET replaces HEAD method ***
  -                                     String str = getRemainder(tz);
  -                               int index = str.indexOf(";");
  -                               if (index == -1) {
  -                                              ifModifiedSince  =str;
  -                                     } else {
  -                                              ifModifiedSince  
=str.substring(0,index);
  -
  -                                             index = str.indexOf("=");
  -                                             if (index != -1) {
  -                                                      str = str.substring(index+1);
  -                                                      oldContentLength 
=Integer.parseInt(str);
  -                                             }
  -                               }
  -                       } else if (Token.equalsIgnoreCase("CONTENT-LENGTH:")) {
  -                                     Token = getToken(tz);
  -                                     contentLength =Integer.parseInt(Token);
  -                       } else if (Token.equalsIgnoreCase("CONTENT-TYPE:")) {
  -                                     contentType = getRemainder(tz);
  -                       } else {
  -                                     unrecognized += Token + " " + getRemainder(tz) 
+ CR;
  -                       }
  -              }
  -              return true;
  -     }
  -
  -     /*
  -      * Rebuilds the header in a string
  -      * @returns      The header in a string.
  -      */
  -     public String toString(boolean sendUnknowen) {
  -              String Request;
  -
  -              if (0 == method.length())
  -                             method = "GET";
  -
  -              Request = method +" "+ url + " HTTP/1.0" + CR;
  -
  -              if (0 < userAgent.length())
  -                       Request +="User-Agent:" + userAgent + CR;
  -
  -              if (0 < referer.length())
  -                       Request+= "Referer:"+ referer  + CR;
  -
  -              if (pragmaNoCache)
  -                       Request+= "Pragma: no-cache" + CR;
  -
  -              if (0 < ifModifiedSince.length())
  -                       Request+= "If-Modified-Since: " + ifModifiedSince + CR;
  -
  -              // ACCEPT TYPES //
  -              if (0 < accept.length())
  -                       Request += "Accept: " + accept + CR;
  -              else
  -                       Request += "Accept: */"+"* \r\n";
  -
  -              if (0 < contentType.length())
  -                       Request += "Content-Type: " + contentType   + CR;
  -
  -              if (0 < contentLength)
  -                       Request += "Content-Length: " + contentLength + CR;
  -
  -
  -              if (0 != authorization.length())
  -                       Request += "Authorization: " + authorization + CR;
  -
  -              if (sendUnknowen) {
  -                       if (0 != unrecognized.length())
  -                                     Request += unrecognized;
  -              }
  -
  -              Request += CR;
  -
  -              return Request;
  -     }
  -
  -
  -     /**
  -      * (Re)builds the header in a string.
  -      *
  -      * @returns      The header in a string.
  -      */
  -     public String toString() {
  -              return toString(true);
  -     }
  -
  -     /**
  -      *  Returns the next token in a string
  -      *
  -      * @param   tk String that is partially tokenized.
  -      * @returns The remainder
  -      */
  -     String  getToken(StringTokenizer tk){
  -              String str ="";
  -              if  (tk.hasMoreTokens())
  -                       str =tk.nextToken();
  -              return str;
  -     }
  -
  -     /**
  -      *  Returns the remainder of a tokenized string
  -      *
  -      * @param   tk String that is partially tokenized.
  -      * @returns The remainder
  -      */
  -     String  getRemainder(StringTokenizer tk){
  -              String str ="";
  -              if  (tk.hasMoreTokens())
  -                       str =tk.nextToken();
  -              while (tk.hasMoreTokens()){
  -                       str +=" " + tk.nextToken();
  -              }
  -              return str;
  -     }
  -
  -             //
  -     // Parsing Methods
  -     //
  -
  -      /**
  -       * Find the //server.name from an url.
  -       *
  -       * @return Servers internet name
  -       */
  -      public String serverName()
  -     {
  -               // chop to "server.name:x/thing"
  -               String str = url;
  -               int i = str.indexOf("//");
  -               if (i< 0) return "";
  -               str = str.substring(i+2);
  -
  -               // chop to  server.name:xx
  -               i = str.indexOf("/");
  -               if (0 < i) str = str.substring(0,i);
  -
  -               // chop to server.name
  -               i = str.indexOf(":");
  -               if (0 < i) str = str.substring(0,i);
  -
  -               return str;
  -      }
  -
  -      /**
  -       * Find the :PORT form http://server.ect:PORT/some/file.xxx
  -       *
  -       * @return Servers internet name
  -       */
  -      public int serverPort()
  -     {
  -               String str = url;
  -               // chop to "server.name:x/thing"
  -               int i = str.indexOf("//");
  -               if (i< 0) return 80;
  -               str = str.substring(i+2);
  -
  -               // chop to  server.name:xx
  -               i = str.indexOf("/");
  -               if (0 < i) str = str.substring(0,i);
  -
  -               // chop XX
  -               i = str.indexOf(":");
  -               if (0 < i)
  -             {
  -                             return Integer.parseInt(str.substring(i+1).trim());
  -               }
  -
  -               return 80;
  -      }
  -
  -      /**
  -       * Find the /some/file.xxxx form http://server.ect:PORT/some/file.xxx
  -       *
  -       * @return the deproxied url
  -       */
  -      public String serverUrl()
  -     {
  -               String str = url;
  -               int i = str.indexOf("//");
  -               if (i< 0) return str;
  -
  -               str = str.substring(i+2);
  -               i = str.indexOf("/");
  -               if (i< 0) return str;
  +         /*
  +          * Read by lines
  +          */
  +         BufferedReader lines;
  +         StringTokenizer tz;
  +         try
  +        {
  +              lines = new BufferedReader(new InputStreamReader(new 
DataInputStream(In)));
  +              tz = new StringTokenizer(lines.readLine());
  +         }
  +        catch (Exception e)
  +        {
  +              return false;
  +         }
  +
  +         /*
  +          * HTTP COMMAND LINE < <METHOD==get> <URL> <HTTP_VERSION> >
  +          */
  +         method = getToken(tz).toUpperCase();
  +         url    = getToken(tz);
  +         version= getToken(tz);
  +
  +         while (true)
  +        {
  +              try
  +            {
  +                    tz = new StringTokenizer(lines.readLine());
  +              }
  +            catch (Exception e)
  +            {
  +                    return false;
  +              }
  +              String Token = getToken(tz);
  +
  +              // look for termination of HTTP command
  +              if (0 == Token.length())
  +                    break;
  +
  +              if (Token.equalsIgnoreCase("USER-AGENT:")) {
  +                    // line =<User-Agent: <Agent Description>>
  +                    userAgent = getRemainder(tz);
  +              } else if (Token.equalsIgnoreCase("ACCEPT:")) {
  +                    // line=<Accept: <Type>/<Form>
  +                    // examp: Accept image/jpeg
  +                    accept += " " + getRemainder(tz);
  +
  +              } else if (Token.equalsIgnoreCase("REFERER:")) {
  +                    // line =<Referer: <URL>>
  +                    referer = getRemainder(tz);
  +
  +              } else if (Token.equalsIgnoreCase("PRAGMA:")) {
  +                    // Pragma: <no-cache>
  +                    Token = getToken(tz);
  +
  +                    if (Token.equalsIgnoreCase("NO-CACHE"))
  +                         pragmaNoCache = true;
  +                    else
  +                         unrecognized += "Pragma:" + Token + " "
  +                              +getRemainder(tz) +"\n";
  +              } else if (Token.equalsIgnoreCase("AUTHORIZATION:")) {
  +                    // Authenticate: Basic UUENCODED
  +                    authorization=  getRemainder(tz);
  +
  +              } else if (Token.equalsIgnoreCase("IF-MODIFIED-SINCE:")) {
  +                    // line =<If-Modified-Since: <http date>
  +                    // *** Conditional GET replaces HEAD method ***
  +                    String str = getRemainder(tz);
  +                  int index = str.indexOf(";");
  +                  if (index == -1) {
  +                         ifModifiedSince  =str;
  +                    } else {
  +                         ifModifiedSince  =str.substring(0,index);
  +
  +                        index = str.indexOf("=");
  +                        if (index != -1) {
  +                             str = str.substring(index+1);
  +                             oldContentLength =Integer.parseInt(str);
  +                        }
  +                  }
  +              } else if (Token.equalsIgnoreCase("CONTENT-LENGTH:")) {
  +                    Token = getToken(tz);
  +                    contentLength =Integer.parseInt(Token);
  +              } else if (Token.equalsIgnoreCase("CONTENT-TYPE:")) {
  +                    contentType = getRemainder(tz);
  +              } else {
  +                    unrecognized += Token + " " + getRemainder(tz) + CR;
  +              }
  +         }
  +         return true;
  +    }
  +
  +    /*
  +     * Rebuilds the header in a string
  +     * @returns      The header in a string.
  +     */
  +    public String toString(boolean sendUnknowen) {
  +         String Request;
  +
  +         if (0 == method.length())
  +                method = "GET";
  +
  +         Request = method +" "+ url + " HTTP/1.0" + CR;
  +
  +         if (0 < userAgent.length())
  +              Request +="User-Agent:" + userAgent + CR;
  +
  +         if (0 < referer.length())
  +              Request+= "Referer:"+ referer  + CR;
  +
  +         if (pragmaNoCache)
  +              Request+= "Pragma: no-cache" + CR;
  +
  +         if (0 < ifModifiedSince.length())
  +              Request+= "If-Modified-Since: " + ifModifiedSince + CR;
  +
  +         // ACCEPT TYPES //
  +         if (0 < accept.length())
  +              Request += "Accept: " + accept + CR;
  +         else
  +              Request += "Accept: */"+"* \r\n";
  +
  +         if (0 < contentType.length())
  +              Request += "Content-Type: " + contentType   + CR;
  +
  +         if (0 < contentLength)
  +              Request += "Content-Length: " + contentLength + CR;
  +
  +
  +         if (0 != authorization.length())
  +              Request += "Authorization: " + authorization + CR;
  +
  +         if (sendUnknowen) {
  +              if (0 != unrecognized.length())
  +                    Request += unrecognized;
  +         }
  +
  +         Request += CR;
  +
  +         return Request;
  +    }
  +
  +
  +    /**
  +     * (Re)builds the header in a string.
  +     *
  +     * @returns      The header in a string.
  +     */
  +    public String toString() {
  +         return toString(true);
  +    }
  +
  +    /**
  +     *  Returns the next token in a string
  +     *
  +     * @param   tk String that is partially tokenized.
  +     * @returns The remainder
  +     */
  +    String  getToken(StringTokenizer tk){
  +         String str ="";
  +         if  (tk.hasMoreTokens())
  +              str =tk.nextToken();
  +         return str;
  +    }
  +
  +    /**
  +     *  Returns the remainder of a tokenized string
  +     *
  +     * @param   tk String that is partially tokenized.
  +     * @returns The remainder
  +     */
  +    String  getRemainder(StringTokenizer tk){
  +         String str ="";
  +         if  (tk.hasMoreTokens())
  +              str =tk.nextToken();
  +         while (tk.hasMoreTokens()){
  +              str +=" " + tk.nextToken();
  +         }
  +         return str;
  +    }
  +
  +        //
  +    // Parsing Methods
  +    //
  +
  +     /**
  +      * Find the //server.name from an url.
  +      *
  +      * @return Servers internet name
  +      */
  +     public String serverName()
  +    {
  +          // chop to "server.name:x/thing"
  +          String str = url;
  +          int i = str.indexOf("//");
  +          if (i< 0) return "";
  +          str = str.substring(i+2);
  +
  +          // chop to  server.name:xx
  +          i = str.indexOf("/");
  +          if (0 < i) str = str.substring(0,i);
  +
  +          // chop to server.name
  +          i = str.indexOf(":");
  +          if (0 < i) str = str.substring(0,i);
  +
  +          return str;
  +     }
  +
  +     /**
  +      * Find the :PORT form http://server.ect:PORT/some/file.xxx
  +      *
  +      * @return Servers internet name
  +      */
  +     public int serverPort()
  +    {
  +          String str = url;
  +          // chop to "server.name:x/thing"
  +          int i = str.indexOf("//");
  +          if (i< 0) return 80;
  +          str = str.substring(i+2);
  +
  +          // chop to  server.name:xx
  +          i = str.indexOf("/");
  +          if (0 < i) str = str.substring(0,i);
  +
  +          // chop XX
  +          i = str.indexOf(":");
  +          if (0 < i)
  +        {
  +                return Integer.parseInt(str.substring(i+1).trim());
  +          }
  +
  +          return 80;
  +     }
  +
  +     /**
  +      * Find the /some/file.xxxx form http://server.ect:PORT/some/file.xxx
  +      *
  +      * @return the deproxied url
  +      */
  +     public String serverUrl()
  +    {
  +          String str = url;
  +          int i = str.indexOf("//");
  +          if (i< 0) return str;
  +
  +          str = str.substring(i+2);
  +          i = str.indexOf("/");
  +          if (i< 0) return str;
   
  -               return str.substring(i);
  -      }
  +          return str.substring(i);
  +     }
   
   }
  
  
  
  1.6       +348 -348  
jakarta-jmeter/src/org/apache/jmeter/protocol/http/proxy/Proxy.java
  
  Index: Proxy.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/proxy/Proxy.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Proxy.java        2001/10/07 16:46:50     1.5
  +++ Proxy.java        2001/10/31 17:23:02     1.6
  @@ -75,353 +75,353 @@
    */
   public class Proxy extends Thread
   {
  -     //
  -     // Member variables
  -     //
  -     Socket ClientSocket = null;
  -     // Socket to client
  -     Socket SrvrSocket = null;
  -     // Socket to web server
  -     Cache cache = null;
  -     // Static cache manager object
  -     String localHostName = null;
  -     // Local machine name
  -     String localHostIP = null;
  -     // Local machine IP address
  -     String adminPath = null;
  -     // Path of admin applet
  -     Config config = null;
  -     // Config object
  -     UrlConfig urlConfig = null;
  -     // UrlConfig object for saving test cases
  -     ProxyControl target;
  -
  -
  -     //
  -     // Public member methods
  -     //
  -
  -     //
  -     // Constructor
  -     //
  -     Proxy(Socket clientSocket, Cache CacheManager, Config 
configObject,ProxyControl target)
  -     {
  -             //
  -             // Initialize member variables
  -             //
  -             this.target = target;
  -             config = configObject;
  -             ClientSocket = clientSocket;
  -             cache = CacheManager;
  -             localHostName = config.getLocalHost();
  -             localHostIP = config.getLocalIP();
  -             adminPath = config.getAdminPath();
  -     }
  -
  -
  -     //
  -     // run - Main work is done here:
  -     //
  -     /**
  -      *  Main processing method for the Proxy object
  -      */
  -     public void run()
  -     {
  -             String serverName = "";
  -             URL url;
  -
  -             byte line[];
  -             HttpRequestHdr request = new HttpRequestHdr();
  -             HttpReplyHdr reply = new HttpReplyHdr();
  -             FileInputStream fileInputStream = null;
  -             FileOutputStream fileOutputStream = null;
  -             boolean TakenFromCache = false;
  -             boolean isCachable = false;
  -
  -             try
  -             {
  -                     //
  -                     // Read HTTP Request from client
  -                     //
  -                     request.parse(ClientSocket.getInputStream());
  -                     createUrlConfig(request);
  -                     config.increaseFilesCached();
  -                     url = new URL(request.url);
  -                     System.out.println("Request = " + url);
  -
  -                     //
  -                     // Send Web page with applet to administrator
  -                     //
  -                     if (url.getFile().equalsIgnoreCase("/admin") &&
  -                                     (url.getHost().equalsIgnoreCase(localHostName) 
||
  -                                     url.getHost().equalsIgnoreCase(localHostIP)))
  -                     {
  -                             sendAppletWebPage();
  -                             return;
  -                     }
  -
  -                     //
  -                     // Send Applet Files to administrator
  -                     //
  -                     if ((url.getHost().equalsIgnoreCase(localHostName) ||
  -                                     url.getHost().equalsIgnoreCase(localHostIP)))
  -                     {
  -                             sendAppletClass(url.getFile());
  -                             return;
  -                     }
  -
  -                     //
  -                     // Check if accessing the URL is allowed by administrator
  -                     //
  -                     String[] denied = config.getDeniedHosts();
  -                     for (int i = 0; i < denied.length; i++)
  -                     {
  -                             if (url.toString().indexOf(denied[i]) != -1)
  -                             {
  -                                     System.out.println("Access not allowed...");
  -                                     DataOutputStream out =
  -                                                     new 
DataOutputStream(ClientSocket.getOutputStream());
  -                                     out.writeBytes(reply.formNotAllowed());
  -                                     out.flush();
  -                                     ClientSocket.close();
  -                                     return;
  -                             }
  -                     }
  -
  -                     serverName = url.getHost();
  -                     System.out.println("Miss! Forwarding to server " +
  -                                     serverName + "...");
  -                     config.increaseMisses();
  -                     SrvrSocket = new Socket(request.serverName(),
  -                                     request.serverPort());
  -                     request.url = request.serverUrl();
  -
  -                     DataOutputStream srvOut =
  -                                     new 
DataOutputStream(SrvrSocket.getOutputStream());
  -
  -                     //
  -                     // Send the url to web server (or father proxy)
  -                     //
  -                     srvOut.writeBytes(request.toString(true));
  -                     srvOut.flush();
  -
  -                     //
  -                     // Send data to server (needed for post method)
  -                     //
  -                     StringBuffer buff = new StringBuffer();
  -                     int readValue;
  -                     for (int i = 0; i < request.contentLength; i++)
  -                     {
  -                             readValue = ClientSocket.getInputStream().read();
  -                             buff.append((char)readValue);
  -                             SrvrSocket.getOutputStream().write(readValue);
  -                     }
  -                     SrvrSocket.getOutputStream().flush();
  -                     urlConfig.parseArguments(buff.toString());
  -                     target.deliverUrlConfig(urlConfig);
  -
  -                     // Third, check reply headers (we must read first
  -                     //         line of headers for that).
  -                     DataInputStream Din =
  -                                     new 
DataInputStream(SrvrSocket.getInputStream());
  -                     DataOutputStream Dout =
  -                                     new 
DataOutputStream(ClientSocket.getOutputStream());
  -                     String str = Din.readLine();
  -                     StringTokenizer s = new StringTokenizer(str);
  -                     String retCode = s.nextToken();
  -                     // first token is HTTP protocol
  -                     retCode = s.nextToken();
  -                     // second is return code
  -
  -                     //
  -                     // First line was read - send it to client and cache it
  -                     //
  -                     String tempStr = new String(str + "\r\n");
  -                     Dout.writeBytes(tempStr);
  -
  -                     //
  -                     // Read next lines in reply header, send them to
  -                     // client and cache them
  -                     //
  -                     if (str.length() > 0)
  -                     {
  -                             while (true)
  -                             {
  -                                     str = Din.readLine();
  -                                     tempStr = new String(str + "\r\n");
  -
  -                                     // Send bits to client
  -                                     Dout.writeBytes(tempStr);
  -
  -                                     if (str.length() <= 0)
  -                                     {
  -                                             break;
  -                                     }
  -                             }
  -                     }
  -                     Dout.flush();
  -
  -                     //
  -                     // With the HTTP reply body do:
  -                     //   (1) Send it to client.
  -                     //   (2) Cache it.
  -                     //
  -                     InputStream in = SrvrSocket.getInputStream();
  -                     OutputStream out = ClientSocket.getOutputStream();
  -
  -                     byte data[] = new byte[2000];
  -                     int count;
  -                     while ((count = in.read(data)) > 0)
  -                     {
  -                             // Send bits to client
  -                             out.write(data, 0, count);
  -                     }
  -                     out.flush();
  -             }
  -
  -             catch (UnknownHostException uhe)
  -             {
  -                     //
  -                     // Requested Server could not be located
  -                     //
  -                     System.out.println("Server Not Found.");
  -
  -                     try
  -                     {
  -                             // Notify client that server not found
  -                             DataOutputStream out =
  -                                             new 
DataOutputStream(ClientSocket.getOutputStream());
  -                             out.writeBytes(reply.formServerNotFound());
  -                             out.flush();
  -                     }
  -                     catch (Exception uhe2)
  -                     {
  -                     }
  -             }
  -
  -             catch (Exception e)
  -             {
  -                     e.printStackTrace();
  -                     try
  -                     {
  -                             if (TakenFromCache)
  -                             {
  -                                     fileInputStream.close();
  -                             }
  -                             else if (isCachable)
  -                             {
  -                                     fileOutputStream.close();
  -                             }
  -
  -                             // Notify client that internal error accured in proxy
  -                             DataOutputStream out =
  -                                             new 
DataOutputStream(ClientSocket.getOutputStream());
  -                             out.writeBytes(reply.formTimeout());
  -                             out.flush();
  -
  -                     }
  -                     catch (Exception uhe2)
  -                     {
  -                     }
  -             }
  -
  -             finally
  -             {
  -                     try
  -                     {
  -                             ClientSocket.getOutputStream().flush();
  -                             ClientSocket.close();
  -                     }
  -                     catch (Exception e)
  -                     {
  -                     }
  -             }
  -     }
  -
  -
  -     //
  -     // Private methods
  -     //
  -
  -     //
  -     // Send to administrator web page containing reference to applet
  -     //
  -     private void sendAppletWebPage()
  -     {
  -             System.out.println("Sending the applet...");
  -             String page = "";
  -             try
  -             {
  -                     File appletHtmlPage = new File(config.getAdminPath() +
  -                                     File.separator + "Admin.html");
  -                     BufferedReader in = new BufferedReader(new 
InputStreamReader(new FileInputStream(appletHtmlPage)));
  -
  -                     String s = null;
  -
  -                     while ((s = in.readLine()) != null)
  -                     {
  -                             page += s;
  -                     }
  -
  -                     page = page.substring(0, page.indexOf("PORT")) +
  -                                     config.getAdminPort() +
  -                                     page.substring(page.indexOf("PORT") + 4);
  -
  -                     in.close();
  -                     DataOutputStream out = new 
DataOutputStream(ClientSocket.getOutputStream());
  -                     out.writeBytes(page);
  -                     out.flush();
  -                     out.close();
  -             }
  -             catch (Exception e)
  -             {
  -                     System.out.println("Error: can't open applet html page");
  -             }
  -
  -     }
  -
  -
  -     //
  -     // Send the applet to administrator
  -     //
  -     private void sendAppletClass(String className)
  -     {
  -             try
  -             {
  -                     byte data[] = new byte[2000];
  -                     int count;
  -                     HttpReplyHdr reply = new HttpReplyHdr();
  -                     File appletFile = new File(adminPath + File.separatorChar + 
className);
  -                     long length = appletFile.length();
  -
  -                     FileInputStream in = new FileInputStream(appletFile);
  -                     DataOutputStream out = new 
DataOutputStream(ClientSocket.getOutputStream());
  -
  -                     out.writeBytes(reply.formOk("application/octet-stream", 
length));
  -
  -                     while (-1 < (count = in.read(data)))
  -                     {
  -                             out.write(data, 0, count);
  -                     }
  -                     out.flush();
  -                     in.close();
  -                     out.close();
  -             }
  -             catch (Exception e)
  -             {
  -             }
  -     }
  -
  -     private void createUrlConfig(HttpRequestHdr request)
  -     {
  -             System.out.println("Everything = " + request.toString(true));
  -             urlConfig = UrlConfig.createConfig(request.contentType);
  -             urlConfig.setDomain(request.serverName());
  -             urlConfig.setMethod(request.method);
  -             urlConfig.setPath(request.serverUrl());
  -             urlConfig.setName(urlConfig.getPath());
  -             urlConfig.setProtocol(request.url.substring(0, 
request.url.indexOf(":")));
  -             urlConfig.setPort(request.serverPort());
  +    //
  +    // Member variables
  +    //
  +    Socket ClientSocket = null;
  +    // Socket to client
  +    Socket SrvrSocket = null;
  +    // Socket to web server
  +    Cache cache = null;
  +    // Static cache manager object
  +    String localHostName = null;
  +    // Local machine name
  +    String localHostIP = null;
  +    // Local machine IP address
  +    String adminPath = null;
  +    // Path of admin applet
  +    Config config = null;
  +    // Config object
  +    UrlConfig urlConfig = null;
  +    // UrlConfig object for saving test cases
  +    ProxyControl target;
  +
  +
  +    //
  +    // Public member methods
  +    //
  +
  +    //
  +    // Constructor
  +    //
  +    Proxy(Socket clientSocket, Cache CacheManager, Config configObject,ProxyControl 
target)
  +    {
  +        //
  +        // Initialize member variables
  +        //
  +        this.target = target;
  +        config = configObject;
  +        ClientSocket = clientSocket;
  +        cache = CacheManager;
  +        localHostName = config.getLocalHost();
  +        localHostIP = config.getLocalIP();
  +        adminPath = config.getAdminPath();
  +    }
  +
  +
  +    //
  +    // run - Main work is done here:
  +    //
  +    /**
  +     *  Main processing method for the Proxy object
  +     */
  +    public void run()
  +    {
  +        String serverName = "";
  +        URL url;
  +
  +        byte line[];
  +        HttpRequestHdr request = new HttpRequestHdr();
  +        HttpReplyHdr reply = new HttpReplyHdr();
  +        FileInputStream fileInputStream = null;
  +        FileOutputStream fileOutputStream = null;
  +        boolean TakenFromCache = false;
  +        boolean isCachable = false;
  +
  +        try
  +        {
  +            //
  +            // Read HTTP Request from client
  +            //
  +            request.parse(ClientSocket.getInputStream());
  +            createUrlConfig(request);
  +            config.increaseFilesCached();
  +            url = new URL(request.url);
  +            System.out.println("Request = " + url);
  +
  +            //
  +            // Send Web page with applet to administrator
  +            //
  +            if (url.getFile().equalsIgnoreCase("/admin") &&
  +                    (url.getHost().equalsIgnoreCase(localHostName) ||
  +                    url.getHost().equalsIgnoreCase(localHostIP)))
  +            {
  +                sendAppletWebPage();
  +                return;
  +            }
  +
  +            //
  +            // Send Applet Files to administrator
  +            //
  +            if ((url.getHost().equalsIgnoreCase(localHostName) ||
  +                    url.getHost().equalsIgnoreCase(localHostIP)))
  +            {
  +                sendAppletClass(url.getFile());
  +                return;
  +            }
  +
  +            //
  +            // Check if accessing the URL is allowed by administrator
  +            //
  +            String[] denied = config.getDeniedHosts();
  +            for (int i = 0; i < denied.length; i++)
  +            {
  +                if (url.toString().indexOf(denied[i]) != -1)
  +                {
  +                    System.out.println("Access not allowed...");
  +                    DataOutputStream out =
  +                            new DataOutputStream(ClientSocket.getOutputStream());
  +                    out.writeBytes(reply.formNotAllowed());
  +                    out.flush();
  +                    ClientSocket.close();
  +                    return;
  +                }
  +            }
  +
  +            serverName = url.getHost();
  +            System.out.println("Miss! Forwarding to server " +
  +                    serverName + "...");
  +            config.increaseMisses();
  +            SrvrSocket = new Socket(request.serverName(),
  +                    request.serverPort());
  +            request.url = request.serverUrl();
  +
  +            DataOutputStream srvOut =
  +                    new DataOutputStream(SrvrSocket.getOutputStream());
  +
  +            //
  +            // Send the url to web server (or father proxy)
  +            //
  +            srvOut.writeBytes(request.toString(true));
  +            srvOut.flush();
  +
  +            //
  +            // Send data to server (needed for post method)
  +            //
  +            StringBuffer buff = new StringBuffer();
  +            int readValue;
  +            for (int i = 0; i < request.contentLength; i++)
  +            {
  +                readValue = ClientSocket.getInputStream().read();
  +                buff.append((char)readValue);
  +                SrvrSocket.getOutputStream().write(readValue);
  +            }
  +            SrvrSocket.getOutputStream().flush();
  +            urlConfig.parseArguments(buff.toString());
  +            target.deliverUrlConfig(urlConfig);
  +
  +            // Third, check reply headers (we must read first
  +            //         line of headers for that).
  +            BufferedReader Din = new BufferedReader( new InputStreamReader(
  +                    new DataInputStream(SrvrSocket.getInputStream())));
  +            DataOutputStream Dout =
  +                    new DataOutputStream(ClientSocket.getOutputStream());
  +            String str = Din.readLine();
  +            StringTokenizer s = new StringTokenizer(str);
  +            String retCode = s.nextToken();
  +            // first token is HTTP protocol
  +            retCode = s.nextToken();
  +            // second is return code
  +
  +            //
  +            // First line was read - send it to client and cache it
  +            //
  +            String tempStr = new String(str + "\r\n");
  +            Dout.writeBytes(tempStr);
  +
  +            //
  +            // Read next lines in reply header, send them to
  +            // client and cache them
  +            //
  +            if (str.length() > 0)
  +            {
  +                while (true)
  +                {
  +                    str = Din.readLine();
  +                    tempStr = new String(str + "\r\n");
  +
  +                    // Send bits to client
  +                    Dout.writeBytes(tempStr);
  +
  +                    if (str.length() <= 0)
  +                    {
  +                        break;
  +                    }
  +                }
  +            }
  +            Dout.flush();
  +
  +            //
  +            // With the HTTP reply body do:
  +            //   (1) Send it to client.
  +            //   (2) Cache it.
  +            //
  +            InputStream in = SrvrSocket.getInputStream();
  +            OutputStream out = ClientSocket.getOutputStream();
  +
  +            byte data[] = new byte[2000];
  +            int count;
  +            while ((count = in.read(data)) > 0)
  +            {
  +                // Send bits to client
  +                out.write(data, 0, count);
  +            }
  +            out.flush();
  +        }
  +
  +        catch (UnknownHostException uhe)
  +        {
  +            //
  +            // Requested Server could not be located
  +            //
  +            System.out.println("Server Not Found.");
  +
  +            try
  +            {
  +                // Notify client that server not found
  +                DataOutputStream out =
  +                        new DataOutputStream(ClientSocket.getOutputStream());
  +                out.writeBytes(reply.formServerNotFound());
  +                out.flush();
  +            }
  +            catch (Exception uhe2)
  +            {
  +            }
  +        }
  +
  +        catch (Exception e)
  +        {
  +            e.printStackTrace();
  +            try
  +            {
  +                if (TakenFromCache)
  +                {
  +                    fileInputStream.close();
  +                }
  +                else if (isCachable)
  +                {
  +                    fileOutputStream.close();
  +                }
  +
  +                // Notify client that internal error accured in proxy
  +                DataOutputStream out =
  +                        new DataOutputStream(ClientSocket.getOutputStream());
  +                out.writeBytes(reply.formTimeout());
  +                out.flush();
  +
  +            }
  +            catch (Exception uhe2)
  +            {
  +            }
  +        }
  +
  +        finally
  +        {
  +            try
  +            {
  +                ClientSocket.getOutputStream().flush();
  +                ClientSocket.close();
  +            }
  +            catch (Exception e)
  +            {
  +            }
  +        }
  +    }
  +
  +
  +    //
  +    // Private methods
  +    //
  +
  +    //
  +    // Send to administrator web page containing reference to applet
  +    //
  +    private void sendAppletWebPage()
  +    {
  +        System.out.println("Sending the applet...");
  +        String page = "";
  +        try
  +        {
  +            File appletHtmlPage = new File(config.getAdminPath() +
  +                    File.separator + "Admin.html");
  +            BufferedReader in = new BufferedReader(new InputStreamReader(new 
FileInputStream(appletHtmlPage)));
  +
  +            String s = null;
  +
  +            while ((s = in.readLine()) != null)
  +            {
  +                page += s;
  +            }
  +
  +            page = page.substring(0, page.indexOf("PORT")) +
  +                    config.getAdminPort() +
  +                    page.substring(page.indexOf("PORT") + 4);
  +
  +            in.close();
  +            DataOutputStream out = new 
DataOutputStream(ClientSocket.getOutputStream());
  +            out.writeBytes(page);
  +            out.flush();
  +            out.close();
  +        }
  +        catch (Exception e)
  +        {
  +            System.out.println("Error: can't open applet html page");
  +        }
  +
  +    }
  +
  +
  +    //
  +    // Send the applet to administrator
  +    //
  +    private void sendAppletClass(String className)
  +    {
  +        try
  +        {
  +            byte data[] = new byte[2000];
  +            int count;
  +            HttpReplyHdr reply = new HttpReplyHdr();
  +            File appletFile = new File(adminPath + File.separatorChar + className);
  +            long length = appletFile.length();
  +
  +            FileInputStream in = new FileInputStream(appletFile);
  +            DataOutputStream out = new 
DataOutputStream(ClientSocket.getOutputStream());
  +
  +            out.writeBytes(reply.formOk("application/octet-stream", length));
  +
  +            while (-1 < (count = in.read(data)))
  +            {
  +                out.write(data, 0, count);
  +            }
  +            out.flush();
  +            in.close();
  +            out.close();
  +        }
  +        catch (Exception e)
  +        {
  +        }
  +    }
  +
  +    private void createUrlConfig(HttpRequestHdr request)
  +    {
  +        System.out.println("Everything = " + request.toString(true));
  +        urlConfig = UrlConfig.createConfig(request.contentType);
  +        urlConfig.setDomain(request.serverName());
  +        urlConfig.setMethod(request.method);
  +        urlConfig.setPath(request.serverUrl());
  +        urlConfig.setName(urlConfig.getPath());
  +        urlConfig.setProtocol(request.url.substring(0, request.url.indexOf(":")));
  +        urlConfig.setPort(request.serverPort());
   
  -     }
  +    }
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to