/* * 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.resolver; import java.util.Arrays; import javax.servlet.http.HttpServletRequest; import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.transport.UploadPack; import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; import org.eclipse.jgit.transport.resolver.UploadPackFactory; /** * Create and configure {@link org.eclipse.jgit.transport.UploadPack} service * instance. *

* Reading by upload-pack is permitted unless {@code http.uploadpack} is * explicitly set to false. */ public class DefaultUploadPackFactory implements UploadPackFactory { private static class ServiceConfig { final boolean enabled; ServiceConfig(Config cfg) { enabled = cfg.getBoolean("http", "uploadpack", true); } } /** {@inheritDoc} */ @Override public UploadPack create(HttpServletRequest req, Repository db) throws ServiceNotEnabledException, ServiceNotAuthorizedException { if (db.getConfig().get(ServiceConfig::new).enabled) { UploadPack up = new UploadPack(db); String header = req.getHeader("Git-Protocol"); //$NON-NLS-1$ if (header != null) { String[] params = header.split(":"); //$NON-NLS-1$ up.setExtraParameters(Arrays.asList(params)); } return up; } throw new ServiceNotEnabledException(); } }