DefaultUploadPackFactory.java

  1. /*
  2.  * Copyright (C) 2009-2010, Google Inc. and others
  3.  *
  4.  * This program and the accompanying materials are made available under the
  5.  * terms of the Eclipse Distribution License v. 1.0 which is available at
  6.  * https://www.eclipse.org/org/documents/edl-v10.php.
  7.  *
  8.  * SPDX-License-Identifier: BSD-3-Clause
  9.  */

  10. package org.eclipse.jgit.http.server.resolver;

  11. import java.util.Arrays;

  12. import javax.servlet.http.HttpServletRequest;

  13. import org.eclipse.jgit.lib.Config;
  14. import org.eclipse.jgit.lib.Repository;
  15. import org.eclipse.jgit.transport.UploadPack;
  16. import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException;
  17. import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
  18. import org.eclipse.jgit.transport.resolver.UploadPackFactory;

  19. /**
  20.  * Create and configure {@link org.eclipse.jgit.transport.UploadPack} service
  21.  * instance.
  22.  * <p>
  23.  * Reading by upload-pack is permitted unless {@code http.uploadpack} is
  24.  * explicitly set to false.
  25.  */
  26. public class DefaultUploadPackFactory implements
  27.         UploadPackFactory<HttpServletRequest> {
  28.     private static class ServiceConfig {
  29.         final boolean enabled;

  30.         ServiceConfig(Config cfg) {
  31.             enabled = cfg.getBoolean("http", "uploadpack", true);
  32.         }
  33.     }

  34.     /** {@inheritDoc} */
  35.     @Override
  36.     public UploadPack create(HttpServletRequest req, Repository db)
  37.             throws ServiceNotEnabledException, ServiceNotAuthorizedException {
  38.         if (db.getConfig().get(ServiceConfig::new).enabled) {
  39.             UploadPack up = new UploadPack(db);
  40.             String header = req.getHeader("Git-Protocol"); //$NON-NLS-1$
  41.             if (header != null) {
  42.                 String[] params = header.split(":"); //$NON-NLS-1$
  43.                 up.setExtraParameters(Arrays.asList(params));
  44.             }
  45.             return up;
  46.         }
  47.         throw new ServiceNotEnabledException();
  48.     }
  49. }