⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 negociationhandler.java

📁 Tomcat 4.1与WebServer集成组件的源代码包.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation.  All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. The end-user documentation included with the redistribution, if *    any, must include the following acknowlegement: *       "This product includes software developed by the *        Apache Software Foundation (http://www.apache.org/)." *    Alternately, this acknowlegement may appear in the software itself, *    if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *    Foundation" must not be used to endorse or promote products derived *    from this software without prior written permission. For written *    permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache" *    nor may "Apache" appear in their names without prior written *    permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation.  For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * [Additional notices, if required by prior licensing conditions] * */package org.apache.ajp;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.util.Enumeration;import java.security.*;import org.apache.tomcat.util.http.*;import org.apache.tomcat.util.buf.*;/** * Handler for the protocol negotiation. It will authenticate and  * exchange information about supported messages on each end. *  *  * @author Henri Gomez [hgomez@slib.fr] * @author Dan Milstein [danmil@shore.net] * @author Keith Wannamaker [Keith@Wannamaker.org] * @author Costin Manolache */public class NegociationHandler extends AjpHandler{    public static final byte JK_AJP13_SHUTDOWN=7;	    // Initial Login Phase (web server -> servlet engine)    public static final byte JK_AJP14_LOGINIT_CMD=0x10;        // Second Login Phase (servlet engine -> web server), md5 seed is received    public static final byte JK_AJP14_LOGSEED_CMD=0x11;        // Third Login Phase (web server -> servlet engine),    // md5 of seed + secret is sent    public static final byte JK_AJP14_LOGCOMP_CMD=0x12;        // Login Accepted (servlet engine -> web server)    public static final byte JK_AJP14_LOGOK_CMD=0x13;    // Login Rejected (servlet engine -> web server), will be logged    public static final byte JK_AJP14_LOGNOK_CMD=0x14;        // Context Query (web server -> servlet engine),    // which URI are handled by servlet engine ?    public static final byte JK_AJP14_CONTEXT_QRY_CMD=0x15;        // Context Info (servlet engine -> web server), URI handled response    public static final byte JK_AJP14_CONTEXT_INFO_CMD= 0x16;        // Context Update (servlet engine -> web server), status of context changed    public static final byte JK_AJP14_CONTEXT_UPDATE_CMD= 0x17;        // Servlet Engine Status (web server -> servlet engine),    // what's the status of the servlet engine ?    public static final byte JK_AJP14_STATUS_CMD= 0x18;        // Secure Shutdown command (web server -> servlet engine),    //please servlet stop yourself.    public static final byte JK_AJP14_SHUTDOWN_CMD= 0x19;        // Secure Shutdown command Accepted (servlet engine -> web server)    public static final byte JK_AJP14_SHUTOK_CMD= 0x1A;        // Secure Shutdown Rejected (servlet engine -> web server)    public static final byte JK_AJP14_SHUTNOK_CMD= 0x1B;        // Context Status (web server -> servlet engine),    //what's the status of the context ?    public static final byte JK_AJP14_CONTEXT_STATE_CMD= 0x1C;        // Context Status Reply (servlet engine -> web server), status of context    public static final byte JK_AJP14_CONTEXT_STATE_REP_CMD = 0x1D;        // Unknown Packet Reply (web server <-> servlet engine),    //when a packet couldn't be decoded    public static final byte JK_AJP14_UNKNOW_PACKET_CMD = 0x1E;    // -------------------- Other constants --------------------     // Entropy Packet Size    public static final int AJP14_ENTROPY_SEED_LEN= 32;    public static final int AJP14_COMPUTED_KEY_LEN= 32;        // web-server want context info after login    public static final int AJP14_CONTEXT_INFO_NEG= 0x80000000;        // web-server want context updates    public static final int AJP14_CONTEXT_UPDATE_NEG= 0x40000000;        // web-server want compressed stream    public static final int AJP14_GZIP_STREAM_NEG= 0x20000000;        // web-server want crypted DES56 stream with secret key    public static final int AJP14_DES56_STREAM_NEG= 0x10000000;        // Extended info on server SSL vars    public static final int AJP14_SSL_VSERVER_NEG= 0x08000000;        // Extended info on client SSL vars    public static final int AJP14_SSL_VCLIENT_NEG= 0x04000000;        // Extended info on crypto SSL vars    public static final int AJP14_SSL_VCRYPTO_NEG= 0x02000000;        // Extended info on misc SSL vars    public static final int  AJP14_SSL_VMISC_NEG= 0x01000000;        // mask of protocol supported    public static final int  AJP14_PROTO_SUPPORT_AJPXX_NEG=0x00FF0000;        // communication could use AJP14    public static final int  AJP14_PROTO_SUPPORT_AJP14_NEG=0x00010000;        // communication could use AJP15    public static final int  AJP14_PROTO_SUPPORT_AJP15_NEG=0x00020000;        // communication could use AJP16    public static final int  AJP14_PROTO_SUPPORT_AJP16_NEG=0x00040000;        // Some failure codes    public static final int AJP14_BAD_KEY_ERR= 0xFFFFFFFF;    public static final int AJP14_ENGINE_DOWN_ERR = 0xFFFFFFFE;    public static final int AJP14_RETRY_LATER_ERR = 0xFFFFFFFD;    public static final int AJP14_SHUT_AUTHOR_FAILED_ERR = 0xFFFFFFFC;        // Some status codes    public static final byte AJP14_CONTEXT_DOWN= 0x01;    public static final byte AJP14_CONTEXT_UP= 0x02;    public static final byte AJP14_CONTEXT_OK= 0x03;    // -------------------- Parameters --------------------    String  containerSignature="Ajp14-based container";    String  seed="seed";// will use random    String  password;    int	webserverNegociation=0;    //    String  webserverName;        public NegociationHandler() {        setSeed("myveryrandomentropy");	setPassword("myverysecretkey");    }    public void setContainerSignature( String s ) {	containerSignature=s;    }    // -------------------- State --------------------    //     public String getWebserverName() {    // 	return webserverName;    //     }        // -------------------- Parameters --------------------        /**     * Set the original entropy seed     */    public void setSeed(String pseed)     {	String[] credentials = new String[1];	credentials[0] = pseed;	seed = digest(credentials, "md5");    }    /**     * Get the original entropy seed     */    public String getSeed()    {	return seed;    }    /**     * Set the secret password     */    public void setPassword(String ppwd)     {	password = ppwd;    }        /**     * Get the secret password     */    public String getPassword()    {	return password;    }    // -------------------- Initialization --------------------    public void init( Ajp13 ajp14 ) {        super.init(ajp14);	// register incoming message handlers	ajp14.registerMessageType( JK_AJP14_LOGINIT_CMD,"JK_AJP14_LOGINIT_CMD",				   this, null); //	ajp14.registerMessageType( JK_AJP14_LOGCOMP_CMD,"JK_AJP14_LOGCOMP_CMD",				   this, null); //	ajp14.registerMessageType( JK_AJP13_SHUTDOWN,"JK_AJP13_SHUTDOWN",				   this, null); //	ajp14.registerMessageType( JK_AJP14_CONTEXT_QRY_CMD,				   "JK_AJP14_CONTEXT_QRY_CMD",				   this, null); //	ajp14.registerMessageType( JK_AJP14_STATUS_CMD,"JK_AJP14_STATUS_CMD",				   this, null); //	ajp14.registerMessageType( JK_AJP14_SHUTDOWN_CMD,                                   "JK_AJP14_SHUTDOWN_CMD",				   this, null); //	ajp14.registerMessageType( JK_AJP14_CONTEXT_STATE_CMD,				   "JK_AJP14_CONTEXT_STATE_CMD",				   this, null); //	ajp14.registerMessageType( JK_AJP14_UNKNOW_PACKET_CMD,				   "JK_AJP14_UNKNOW_PACKET_CMD",				   this, null); //		// register outgoing messages handler	ajp14.registerMessageType( JK_AJP14_LOGNOK_CMD,"JK_AJP14_LOGNOK_CMD",				   this,null );	    }            // -------------------- Dispatch --------------------    public int handleAjpMessage( int type, Ajp13 ch, Ajp13Packet hBuf,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -