001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019 package org.apache.geronimo.tomcat.connector; 020 021 import java.util.Map; 022 023 import org.apache.geronimo.gbean.GBeanInfo; 024 import org.apache.geronimo.gbean.GBeanInfoBuilder; 025 import org.apache.geronimo.management.geronimo.WebManager; 026 import org.apache.geronimo.system.serverinfo.ServerInfo; 027 import org.apache.geronimo.tomcat.TomcatContainer; 028 029 public class Http11APRConnectorGBean extends BaseHttp11ConnectorGBean implements Http11APRProtocol { 030 031 private String certificateFile; 032 private String certificateKeyFile; 033 private String caCertificateFile; 034 private String caCertificatePath; 035 private String certificateChainFile; 036 private String revocationPath; 037 private String revocationFile; 038 039 public Http11APRConnectorGBean(String name, Map initParams, String host, int port, TomcatContainer container, ServerInfo serverInfo) throws Exception { 040 super(name, initParams, "org.apache.coyote.http11.Http11AprProtocol", host, port, container, serverInfo); 041 } 042 043 @Override 044 public int getDefaultPort() { 045 return 80; 046 } 047 048 @Override 049 public String getGeronimoProtocol() { 050 return WebManager.PROTOCOL_HTTP; 051 } 052 053 public int getPollTime() { 054 Object value = connector.getAttribute("pollTime"); 055 return value == null ? 2000 : new Integer(value.toString()).intValue(); 056 } 057 058 public int getPollerSize() { 059 Object value = connector.getAttribute("pollerSize"); 060 return value == null ? 8192 : new Integer(value.toString()).intValue(); 061 } 062 063 public int getSendfileSize() { 064 Object value = connector.getAttribute("sendfileSize"); 065 return value == null ? 8192 : new Integer(value.toString()).intValue(); 066 } 067 068 public String getSslCACertificateFile() { 069 return caCertificateFile; 070 } 071 072 public String getSslCACertificatePath() { 073 return caCertificatePath; 074 } 075 076 public String getSslCertificateChainFile() { 077 return certificateChainFile; 078 } 079 080 public String getSslCertificateFile() { 081 return certificateFile; 082 } 083 084 public String getSslCertificateKeyFile() { 085 return certificateKeyFile; 086 } 087 088 public String getSslCipherSuite() { 089 return (String) connector.getAttribute("SSLCipherSuite"); 090 } 091 092 public String getSslProtocol() { 093 return (String) connector.getAttribute("SSLProtocol"); 094 } 095 096 public String getSslCARevocationFile() { 097 return revocationFile; 098 } 099 100 public String getSslCARevocationPath() { 101 return revocationPath; 102 } 103 104 public String getSslVerifyClient() { 105 return (String) connector.getAttribute("SSLVerifyClient"); 106 } 107 108 public int getSslVerifyDepth() { 109 Object value = connector.getAttribute("SSLVerifyDepth"); 110 return value == null ? 10 : new Integer(value.toString()).intValue(); 111 } 112 113 public boolean getUseSendfile() { 114 Object value = connector.getAttribute("useSendfile"); 115 return value == null ? true : new Boolean(value.toString()).booleanValue(); 116 } 117 118 public void setPollTime(int pollTime) { 119 connector.setAttribute("pollTime", pollTime); 120 } 121 122 public void setPollerSize(int pollerSize) { 123 connector.setAttribute("pollerSize", pollerSize); 124 } 125 126 public void setSendfileSize(int sendfileSize) { 127 connector.setAttribute("sendfileSize", sendfileSize); 128 } 129 130 public void setSslCACertificateFile(String sslCACertificateFile) { 131 if (sslCACertificateFile != null && sslCACertificateFile.equals("")) 132 sslCACertificateFile = null; 133 caCertificateFile = sslCACertificateFile; 134 if (caCertificateFile == null) 135 connector.setAttribute("SSLCACertificateFile", null); 136 else 137 connector.setAttribute("SSLCACertificateFile", serverInfo.resolveServerPath(caCertificateFile)); 138 } 139 140 public void setSslCACertificatePath(String sslCACertificatePath) { 141 if (sslCACertificatePath != null && sslCACertificatePath.equals("")) 142 sslCACertificatePath = null; 143 caCertificatePath = sslCACertificatePath; 144 if (caCertificatePath == null) 145 connector.setAttribute("SSLCACertificatePath", null); 146 else 147 connector.setAttribute("SSLCACertificatePath", serverInfo.resolveServerPath(caCertificatePath)); 148 } 149 150 public void setSslCertificateChainFile(String sslCertificateChainFile) { 151 if (sslCertificateChainFile != null && sslCertificateChainFile.equals("")) 152 sslCertificateChainFile = null; 153 certificateChainFile = sslCertificateChainFile; 154 if (certificateChainFile == null) 155 connector.setAttribute("SSLCertificateChainFile", null); 156 else 157 connector.setAttribute("SSLCertificateChainFile", serverInfo.resolveServerPath(certificateChainFile)); 158 } 159 160 public void setSslCertificateFile(String sslCertificateFile) { 161 if (sslCertificateFile != null && sslCertificateFile.equals("")) 162 sslCertificateFile = null; 163 certificateFile = sslCertificateFile; 164 if (certificateFile == null) 165 connector.setAttribute("SSLCertificateFile", null); 166 else 167 connector.setAttribute("SSLCertificateFile", serverInfo.resolveServerPath(certificateFile)); 168 } 169 170 public void setSslCertificateKeyFile(String sslCertificateKeyFile) { 171 if (sslCertificateKeyFile != null && sslCertificateKeyFile.equals("")) 172 sslCertificateKeyFile = null; 173 certificateKeyFile = sslCertificateKeyFile; 174 if (certificateKeyFile == null) 175 connector.setAttribute("SSLCertificateKeyFile", null); 176 else 177 connector.setAttribute("SSLCertificateKeyFile", serverInfo.resolveServerPath(certificateKeyFile)); 178 } 179 180 public void setSslCipherSuite(String sslCipherSuite) { 181 connector.setAttribute("SSLCipherSuite", sslCipherSuite); 182 } 183 184 public void setSslPassword(String sslPassword) { 185 if (sslPassword != null && sslPassword.equals("")) 186 sslPassword = null; 187 connector.setAttribute("SSLPassword", sslPassword); 188 } 189 190 public void setSslProtocol(String sslProtocol) { 191 connector.setAttribute("SSLProtocol", sslProtocol); 192 } 193 194 public void setSslCARevocationFile(String sslCARevocationFile) { 195 if (sslCARevocationFile!= null && sslCARevocationFile.equals("")) 196 sslCARevocationFile = null; 197 revocationFile = sslCARevocationFile; 198 if (revocationFile == null) 199 connector.setAttribute("SSLCARevocationFile", null); 200 else 201 connector.setAttribute("SSLCARevocationFile", serverInfo.resolveServerPath(revocationFile)); 202 } 203 204 public void setSslCARevocationPath(String sslCARevocationPath) { 205 if (sslCARevocationPath!= null && sslCARevocationPath.equals("")) 206 sslCARevocationPath = null; 207 revocationPath = sslCARevocationPath; 208 if (revocationPath == null) 209 connector.setAttribute("SSLCARevocationPath", null); 210 else 211 connector.setAttribute("SSLCARevocationPath", serverInfo.resolveServerPath(revocationPath)); 212 213 } 214 215 public void setSslVerifyClient(String sslVerifyClient) { 216 connector.setAttribute("SSLVerifyClient", sslVerifyClient); 217 } 218 219 public void setSslVerifyDepth(int sslVerifyDepth) { 220 connector.setAttribute("SSLVerifyDepth", sslVerifyDepth); 221 } 222 223 public void setUseSendfile(boolean useSendfile) { 224 connector.setAttribute("useSendfile", useSendfile); 225 } 226 227 public static final GBeanInfo GBEAN_INFO; 228 229 static { 230 GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Tomcat Connector HTTP APR", Http11APRConnectorGBean.class, BaseHttp11ConnectorGBean.GBEAN_INFO); 231 infoFactory.addInterface(Http11APRProtocol.class, 232 new String[] { 233 //APR Attributes 234 "pollTime", 235 "pollerSize", 236 "useSendfile", 237 "sendfileSize", 238 //SSL Attributes 239 "sslProtocol", 240 "sslCipherSuite", 241 "sslCertificateFile", 242 "sslCertificateKeyFile", 243 "sslPassword", 244 "sslVerifyClient", 245 "sslVerifyDepth", 246 "sslCACertificateFile", 247 "sslCACertificatePath", 248 "sslCertificateChainFile", 249 "sslCARevocationFile", 250 "sslCARevocationPath" 251 }, 252 new String[] { 253 //APR Attributes 254 "pollTime", 255 "pollerSize", 256 "useSendfile", 257 "sendfileSize", 258 //SSL Attributes 259 "sslProtocol", 260 "sslCipherSuite", 261 "sslCertificateFile", 262 "sslCertificateKeyFile", 263 "sslPassword", 264 "sslVerifyClient", 265 "sslVerifyDepth", 266 "sslCACertificateFile", 267 "sslCACertificatePath", 268 "sslCertificateChainFile", 269 "sslCARevocationFile", 270 "sslCARevocationPath" 271 } 272 ); 273 infoFactory.setConstructor(new String[] { "name", "initParams", "host", "port", "TomcatContainer", "ServerInfo"}); 274 GBEAN_INFO = infoFactory.getBeanInfo(); 275 } 276 277 public static GBeanInfo getGBeanInfo() { 278 return GBEAN_INFO; 279 } 280 281 }