James Moger
2011-10-23 fe326255202dcfac8b0991ca9d28e3cf4bcc4fe6
src/com/gitblit/RpcFilter.java
@@ -57,28 +57,41 @@
      HttpServletRequest httpRequest = (HttpServletRequest) request;
      HttpServletResponse httpResponse = (HttpServletResponse) response;
      if (!GitBlit.getBoolean(Keys.web.enableRpcServlet, false)) {
      String fullUrl = getFullUrl(httpRequest);
      RpcRequest requestType = RpcRequest.fromName(httpRequest.getParameter("req"));
      if (requestType == null) {
         httpResponse.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);
         return;
      }
      boolean adminRequest = requestType.exceeds(RpcRequest.LIST_REPOSITORIES);
      // conditionally reject all rpc requests
      if (!GitBlit.getBoolean(Keys.web.enableRpcServlet, true)) {
         logger.warn(Keys.web.enableRpcServlet + " must be set TRUE for rpc requests.");
         httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN);
         return;
      }
      String fullUrl = getFullUrl(httpRequest);
      RpcRequest requestType = RpcRequest.fromName(httpRequest.getParameter("req"));
      boolean adminRequest = requestType.exceeds(RpcRequest.LIST_REPOSITORIES);
      boolean authenticateView = GitBlit.getBoolean(Keys.web.authenticateViewPages, false);
      boolean authenticateAdmin = GitBlit.getBoolean(Keys.web.authenticateAdminPages, true);
      // Wrap the HttpServletRequest with the RpcServletnRequest which
      // Wrap the HttpServletRequest with the RpcServletRequest which
      // overrides the servlet container user principal methods.
      AuthenticatedRequest authenticatedRequest = new AuthenticatedRequest(httpRequest);
      UserModel user = getUser(httpRequest);
      if (user != null) {
         authenticatedRequest.setUser(user);
      }
      // conditionally reject rpc management/administration requests
      if (adminRequest && !GitBlit.getBoolean(Keys.web.enableRpcManagement, false)) {
         logger.warn(Keys.web.enableRpcManagement
               + " must be set TRUE for management/administrative rpc requests.");
         httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN);
         return;
      }
      // BASIC authentication challenge and response processing
      if ((adminRequest && authenticateAdmin) || (!adminRequest && authenticateView)) {
         if (user == null) {