View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
16  //  ========================================================================
17  //
18  
19  package org.eclipse.jetty.ajp;
20  
21  import java.io.IOException;
22  
23  import org.eclipse.jetty.http.HttpSchemes;
24  import org.eclipse.jetty.io.Connection;
25  import org.eclipse.jetty.io.EndPoint;
26  import org.eclipse.jetty.server.Request;
27  import org.eclipse.jetty.server.bio.SocketConnector;
28  import org.eclipse.jetty.util.log.Log;
29  import org.eclipse.jetty.util.log.Logger;
30  
31  /**
32   *
33   *
34   *
35   */
36  public class Ajp13SocketConnector extends SocketConnector
37  {
38      private static final Logger LOG = Log.getLogger(Ajp13SocketConnector.class);
39  
40      static String __secretWord = null;
41      static boolean __allowShutdown = false;
42      public Ajp13SocketConnector()
43      {
44          super.setRequestHeaderSize(Ajp13Packet.MAX_PACKET_SIZE);
45          super.setResponseHeaderSize(Ajp13Packet.MAX_PACKET_SIZE);
46          super.setRequestBufferSize(Ajp13Packet.MAX_PACKET_SIZE);
47          super.setResponseBufferSize(Ajp13Packet.MAX_PACKET_SIZE);
48          // IN AJP protocol the socket stay open, so
49          // by default the time out is set to 0 seconds
50          super.setMaxIdleTime(0);
51      }
52  
53      @Override
54      protected void doStart() throws Exception
55      {
56          super.doStart();
57          LOG.info("AJP13 is not a secure protocol. Please protect port {}",Integer.toString(getLocalPort()));
58      }
59  
60  
61  
62      /* ------------------------------------------------------------ */
63      /* (non-Javadoc)
64       * @see org.eclipse.jetty.server.bio.SocketConnector#customize(org.eclipse.io.EndPoint, org.eclipse.jetty.server.Request)
65       */
66      @Override
67      public void customize(EndPoint endpoint, Request request) throws IOException
68      {
69          super.customize(endpoint,request);
70          if (request.isSecure())
71              request.setScheme(HttpSchemes.HTTPS);
72      }
73  
74      /* ------------------------------------------------------------ */
75      @Override
76      protected Connection newConnection(EndPoint endpoint)
77      {
78          return new Ajp13Connection(this,endpoint,getServer());
79      }
80  
81      /* ------------------------------------------------------------ */
82      // Secured on a packet by packet bases not by connection
83      @Override
84      public boolean isConfidential(Request request)
85      {
86          return ((Ajp13Request) request).isSslSecure();
87      }
88  
89      /* ------------------------------------------------------------ */
90      // Secured on a packet by packet bases not by connection
91      @Override
92      public boolean isIntegral(Request request)
93      {
94          return ((Ajp13Request) request).isSslSecure();
95      }
96  
97      /* ------------------------------------------------------------ */
98      @Deprecated
99      public void setHeaderBufferSize(int headerBufferSize)
100     {
101         LOG.debug(Log.IGNORED);
102     }
103 
104     /* ------------------------------------------------------------ */
105     @Override
106     public void setRequestBufferSize(int requestBufferSize)
107     {
108         LOG.debug(Log.IGNORED);
109     }
110 
111     /* ------------------------------------------------------------ */
112     @Override
113     public void setResponseBufferSize(int responseBufferSize)
114     {
115         LOG.debug(Log.IGNORED);
116     }
117 
118     /* ------------------------------------------------------------ */
119     public void setAllowShutdown(boolean allowShutdown)
120     {
121         LOG.warn("AJP13: Shutdown Request is: " + allowShutdown);
122         __allowShutdown = allowShutdown;
123     }
124 
125     /* ------------------------------------------------------------ */
126     public void setSecretWord(String secretWord)
127     {
128         LOG.warn("AJP13: Shutdown Request secret word is : " + secretWord);
129         __secretWord = secretWord;
130     }
131 
132 }