/* * Copyright (C) 2009-2010, Google Inc. and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.http.server; import java.util.Enumeration; import jakarta.servlet.Filter; import jakarta.servlet.FilterConfig; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import org.eclipse.jgit.http.server.glue.MetaServlet; import org.eclipse.jgit.http.server.resolver.AsIsFileService; import org.eclipse.jgit.transport.resolver.ReceivePackFactory; import org.eclipse.jgit.transport.resolver.RepositoryResolver; import org.eclipse.jgit.transport.resolver.UploadPackFactory; /** * Handles Git repository access over HTTP. *
* Applications embedding this servlet should map a directory path within the * application to this servlet, for example: * *
* <servlet> * <servlet-name>GitServlet</servlet-name> * <servlet-class>org.eclipse.jgit.http.server.GitServlet</servlet-class> * <init-param> * <param-name>base-path</param-name> * <param-value>/var/srv/git</param-value> * </init-param> * <init-param> * <param-name>export-all</param-name> * <param-value>0</param-value> * </init-param> * </servlet> * <servlet-mapping> * <servlet-name>GitServlet</servlet-name> * <url-pattern>/git/*</url-pattern> * </servlet-mapping> ** *
* Applications may wish to add additional repository action URLs to this * servlet by taking advantage of its extension from * {@link org.eclipse.jgit.http.server.glue.MetaServlet}. Callers may register * their own URL suffix translations through {@link #serve(String)}, or their * regex translations through {@link #serveRegex(String)}. Each translation * should contain a complete filter pipeline which ends with the HttpServlet * that should handle the requested action. */ public class GitServlet extends MetaServlet { private static final long serialVersionUID = 1L; private final GitFilter gitFilter; /** * New servlet that will load its base directory from {@code web.xml}. *
* The required parameter {@code base-path} must be configured to point to
* the local filesystem directory where all served Git repositories reside.
*/
public GitServlet() {
super(new GitFilter());
gitFilter = (GitFilter) getDelegateFilter();
}
/**
* New servlet configured with a specific resolver.
*
* @param resolver
* the resolver to use when matching URL to Git repository. If
* null the {@code base-path} parameter will be looked for in the
* parameter table during init, which usually comes from the
* {@code web.xml} file of the web application.
*/
public void setRepositoryResolver(RepositoryResolver