1 16 17 package org.apache.webapp.admin.valve; 18 19 import java.io.IOException ; 20 import java.util.Iterator ; 21 import java.util.List ; 22 import java.util.Locale ; 23 import java.util.ArrayList ; 24 import javax.servlet.ServletException ; 25 import javax.servlet.http.HttpServletRequest ; 26 import javax.servlet.http.HttpServletResponse ; 27 import javax.servlet.http.HttpSession ; 28 import org.apache.struts.action.Action; 29 import org.apache.struts.action.ActionErrors; 30 import org.apache.struts.action.ActionForm; 31 import org.apache.struts.action.ActionForward; 32 import org.apache.struts.action.ActionMapping; 33 import org.apache.struts.util.MessageResources; 34 35 import javax.management.MBeanServer ; 36 import javax.management.ObjectInstance ; 37 import javax.management.ObjectName ; 38 import javax.management.JMException ; 39 40 import org.apache.webapp.admin.ApplicationServlet; 41 import org.apache.webapp.admin.LabelValueBean; 42 import org.apache.webapp.admin.Lists; 43 import org.apache.webapp.admin.TomcatTreeBuilder; 44 45 52 53 public class EditValveAction extends Action { 54 55 56 59 private MBeanServer mBServer = null; 60 61 62 64 79 public ActionForward execute(ActionMapping mapping, 80 ActionForm form, 81 HttpServletRequest request, 82 HttpServletResponse response) 83 throws IOException , ServletException { 84 85 HttpSession session = request.getSession(); 87 Locale locale = getLocale(request); 88 MessageResources resources = getResources(request); 89 90 try { 92 mBServer = ((ApplicationServlet) getServlet()).getServer(); 93 } catch (Throwable t) { 94 throw new ServletException 95 ("Cannot acquire MBeanServer reference", t); 96 } 97 98 ObjectName vname = null; 100 StringBuffer sb = null; 101 try { 102 vname = new ObjectName (request.getParameter("select")); 103 } catch (Exception e) { 104 String message = 105 resources.getMessage(locale, "error.valveName.bad", 106 request.getParameter("select")); 107 getServlet().log(message); 108 response.sendError(HttpServletResponse.SC_BAD_REQUEST, message); 109 return (null); 110 } 111 112 String parent = request.getParameter("parent"); 113 String valveType = null; 114 String attribute = null; 115 116 try { 118 attribute = "className"; 119 String className = (String ) 120 mBServer.getAttribute(vname, attribute); 121 int period = className.lastIndexOf("."); 122 if (period >= 0) 123 valveType = className.substring(period + 1); 124 } catch (Throwable t) { 125 getServlet().log 126 (resources.getMessage(locale, "users.error.attribute.get", 127 attribute), t); 128 response.sendError 129 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 130 resources.getMessage(locale, "users.error.attribute.get", 131 attribute)); 132 return (null); 133 } 134 135 if ("AccessLogValve".equalsIgnoreCase(valveType)) { 137 setUpAccessLogValve(vname, request, response); 138 } else if ("RemoteAddrValve".equalsIgnoreCase(valveType)) { 139 setUpRemoteAddrValve(vname, request, response); 140 } else if ("RemoteHostValve".equalsIgnoreCase(valveType)) { 141 setUpRemoteHostValve(vname, request, response); 142 } else if ("RequestDumperValve".equalsIgnoreCase(valveType)) { 143 setUpRequestDumperValve(vname, request, response); 144 } else if ("SingleSignOn".equalsIgnoreCase(valveType)) { 145 setUpSingleSignOnValve(vname, request, response); 146 } 147 148 149 return (mapping.findForward(valveType)); 150 151 } 152 153 private void setUpAccessLogValve(ObjectName vname, HttpServletRequest request, 154 HttpServletResponse response) 155 throws IOException { 156 HttpSession session = request.getSession(); 158 Locale locale = getLocale(request); 159 MessageResources resources = getResources(request); 160 String parent = request.getParameter("parent"); 161 AccessLogValveForm valveFm = new AccessLogValveForm(); 162 session.setAttribute("accessLogValveForm", valveFm); 163 valveFm.setAdminAction("Edit"); 164 valveFm.setObjectName(vname.toString()); 165 valveFm.setParentObjectName(parent); 166 String valveType = "AccessLogValve"; 167 StringBuffer sb = new StringBuffer (""); 168 String host = vname.getKeyProperty("host"); 169 String context = vname.getKeyProperty("path"); 170 if (host!=null) { 171 sb.append("Host (" + host + ") > "); 172 } 173 if (context!=null) { 174 sb.append("Context (" + context + ") > "); 175 } 176 sb.append("Valve"); 177 valveFm.setNodeLabel(sb.toString()); 178 valveFm.setValveType(valveType); 179 valveFm.setBooleanVals(Lists.getBooleanValues()); 180 String attribute = null; 181 try { 182 183 attribute = "directory"; 185 valveFm.setDirectory 186 ((String ) mBServer.getAttribute(vname, attribute)); 187 attribute = "pattern"; 188 valveFm.setPattern 189 ((String ) mBServer.getAttribute(vname, attribute)); 190 attribute = "prefix"; 191 valveFm.setPrefix 192 ((String ) mBServer.getAttribute(vname, attribute)); 193 attribute = "suffix"; 194 valveFm.setSuffix 195 ((String ) mBServer.getAttribute(vname, attribute)); 196 attribute = "resolveHosts"; 197 valveFm.setResolveHosts 198 (((Boolean ) mBServer.getAttribute(vname, attribute)).toString()); 199 attribute = "rotatable"; 200 valveFm.setRotatable 201 (((Boolean ) mBServer.getAttribute(vname, attribute)).toString()); 202 203 } catch (Throwable t) { 204 getServlet().log 205 (resources.getMessage(locale, "users.error.attribute.get", 206 attribute), t); 207 response.sendError 208 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 209 resources.getMessage(locale, "users.error.attribute.get", 210 attribute)); 211 } 212 } 213 214 private void setUpRequestDumperValve(ObjectName vname, HttpServletRequest request, 215 HttpServletResponse response) 216 throws IOException { 217 HttpSession session = request.getSession(); 219 Locale locale = getLocale(request); 220 MessageResources resources = getResources(request); 221 String parent = request.getParameter("parent"); 222 RequestDumperValveForm valveFm = new RequestDumperValveForm(); 223 session.setAttribute("requestDumperValveForm", valveFm); 224 valveFm.setAdminAction("Edit"); 225 valveFm.setObjectName(vname.toString()); 226 valveFm.setParentObjectName(parent); 227 String valveType = "RequestDumperValve"; 228 StringBuffer sb = new StringBuffer ("Valve ("); 229 sb.append(valveType); 230 sb.append(")"); 231 valveFm.setNodeLabel(sb.toString()); 232 valveFm.setValveType(valveType); 233 String attribute = null; 234 } 235 236 private void setUpSingleSignOnValve(ObjectName vname, HttpServletRequest request, 237 HttpServletResponse response) 238 throws IOException { 239 HttpSession session = request.getSession(); 241 Locale locale = getLocale(request); 242 MessageResources resources = getResources(request); 243 String parent = request.getParameter("parent"); 244 SingleSignOnValveForm valveFm = new SingleSignOnValveForm(); 245 session.setAttribute("singleSignOnValveForm", valveFm); 246 valveFm.setAdminAction("Edit"); 247 valveFm.setObjectName(vname.toString()); 248 valveFm.setParentObjectName(parent); 249 String valveType = "SingleSignOn"; 250 StringBuffer sb = new StringBuffer ("Valve ("); 251 sb.append(valveType); 252 sb.append(")"); 253 valveFm.setNodeLabel(sb.toString()); 254 valveFm.setValveType(valveType); 255 String attribute = null; 256 } 257 258 259 private void setUpRemoteAddrValve(ObjectName vname, HttpServletRequest request, 260 HttpServletResponse response) 261 throws IOException { 262 HttpSession session = request.getSession(); 264 Locale locale = getLocale(request); 265 MessageResources resources = getResources(request); 266 String parent = request.getParameter("parent"); 267 RemoteAddrValveForm valveFm = new RemoteAddrValveForm(); 268 session.setAttribute("remoteAddrValveForm", valveFm); 269 valveFm.setAdminAction("Edit"); 270 valveFm.setObjectName(vname.toString()); 271 valveFm.setParentObjectName(parent); 272 String valveType = "RemoteAddrValve"; 273 StringBuffer sb = new StringBuffer ("Valve ("); 274 sb.append(valveType); 275 sb.append(")"); 276 valveFm.setNodeLabel(sb.toString()); 277 valveFm.setValveType(valveType); 278 String attribute = null; 279 try { 280 281 attribute = "allow"; 283 valveFm.setAllow 284 ((String ) mBServer.getAttribute(vname, attribute)); 285 attribute = "deny"; 286 valveFm.setDeny 287 ((String ) mBServer.getAttribute(vname, attribute)); 288 289 } catch (Throwable t) { 290 getServlet().log 291 (resources.getMessage(locale, "users.error.attribute.get", 292 attribute), t); 293 response.sendError 294 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 295 resources.getMessage(locale, "users.error.attribute.get", 296 attribute)); 297 } 298 } 299 300 private void setUpRemoteHostValve(ObjectName vname, HttpServletRequest request, 301 HttpServletResponse response) 302 throws IOException { 303 HttpSession session = request.getSession(); 305 Locale locale = getLocale(request); 306 MessageResources resources = getResources(request); 307 String parent = request.getParameter("parent"); 308 RemoteHostValveForm valveFm = new RemoteHostValveForm(); 309 session.setAttribute("remoteHostValveForm", valveFm); 310 valveFm.setAdminAction("Edit"); 311 valveFm.setObjectName(vname.toString()); 312 valveFm.setParentObjectName(parent); 313 String valveType = "RemoteHostValve"; 314 StringBuffer sb = new StringBuffer ("Valve ("); 315 sb.append(valveType); 316 sb.append(")"); 317 valveFm.setNodeLabel(sb.toString()); 318 valveFm.setValveType(valveType); 319 String attribute = null; 320 try { 321 322 attribute = "allow"; 324 valveFm.setAllow 325 ((String ) mBServer.getAttribute(vname, attribute)); 326 attribute = "deny"; 327 valveFm.setDeny 328 ((String ) mBServer.getAttribute(vname, attribute)); 329 330 } catch (Throwable t) { 331 getServlet().log 332 (resources.getMessage(locale, "users.error.attribute.get", 333 attribute), t); 334 response.sendError 335 (HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 336 resources.getMessage(locale, "users.error.attribute.get", 337 attribute)); 338 } 339 } 340 341 } 342 | Popular Tags |