private ServletContextHandler smart(final String path) { GitServlet gs = new GitServlet(); gs.setRepositoryResolver(new RepositoryResolver<HttpServletRequest>() { public Repository open(HttpServletRequest req, String name) throws RepositoryNotFoundException, ServiceNotEnabledException { if (!name.equals(nameOf(db))) throw new RepositoryNotFoundException(name); db.incrementOpen(); return db; } }); ServletContextHandler ctx = server.addContext(path); ctx.addServlet(new ServletHolder(gs), "/*"); return ctx; }
private void handleRegularGitRequest(HttpServletRequest request, HttpServletResponse response, Repository repository) throws ServletException, IOException { if (repositoryRequestListenerUtil.callListeners(request, response, repository)) { super.service(request, response); } else if (logger.isDebugEnabled()) { logger.debug("request aborted by repository request listener"); } }
@Override public void destroy() { super.destroy(); }
private GitServlet createGitServlet() { final GitServlet gitServlet = new GitServlet(); gitServlet.setRepositoryResolver((req, name) -> { String trimmedName = name.endsWith(SUFFIX) ? name.substring(0, name.length() - SUFFIX.length()) : name; trimmedName = trimmedName.substring(trimmedName.lastIndexOf('/') + 1); if (repositories.containsKey(trimmedName)) { final LazilyLoadedRepository lazilyLoadedRepository = repositories.get(trimmedName); synchronized (gitServlet) { lazilyLoadedRepository.cloneRepository(); final Repository repository = lazilyLoadedRepository.get(); enableInsecureReceiving(repository); repository.incrementOpen(); return repository; } } else { throw new RepositoryNotFoundException("Repository " + name + "does not exist"); } }); gitServlet.addReceivePackFilter(new AfterReceivePackResetFilter(repositories.values())); return gitServlet; }
@Override public void init(ServletConfig config) throws ServletException { super.init(config); try { counter = new SharedCount(curator, ZkPath.GIT_TRIGGER.getPath(), 0); counter.start(); } catch (Exception ex) { LOGGER.error("Error starting SharedCount", ex); throw new ServletException("Error starting SharedCount", ex); } }
/** * New servlet that will load its base directory from {@code web.xml}. * <p> * 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(); }
@Override public void init(final ServletConfig config) throws ServletException { gitFacade = GitFacade.getSingleton(); validateGitFacade(); String basePath = gitFacade.getRootGitDirectory().getAbsoluteFile().getParentFile().getAbsolutePath(); System.out.println("Exposing git base path at: " + basePath); final Hashtable<String,String> initParams = new Hashtable<>(); initParams.put("base-path", basePath); initParams.put("repository-root", basePath); initParams.put("export-all", "true"); ServletConfig gitConfig = new ServletConfig() { @Override public String getServletName() { return config.getServletName(); } @Override public ServletContext getServletContext() { return config.getServletContext(); } @Override public String getInitParameter(String paramName) { return initParams.get(paramName); } @Override public Enumeration<String> getInitParameterNames() { return initParams.keys(); } }; super.init(gitConfig); }
/** * New servlet that will load its base directory from {@code web.xml}. * <p> * 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(); }
@Override public void init(ServletConfig config) throws ServletException { super.init(config); serveRegex("^/(.*?)/?$").with(new HttpServlet() { @Override protected void doGet(HttpServletRequest req, HttpServletResponse rsp) throws IOException { String pc; try { pc = getProject(req); } catch (ServiceNotEnabledException e) { rsp.sendError(HttpServletResponse.SC_NOT_FOUND); return; } StringBuilder r = new StringBuilder(); r.append(urlProvider.get()); rsp.sendRedirect(r.toString()); } }); }
private ServletContextHandler smart(String path) { GitServlet gs = new GitServlet(); gs.setRepositoryResolver(new RepositoryResolver<HttpServletRequest>() { @Override public Repository open(HttpServletRequest req, String name) throws RepositoryNotFoundException, ServiceNotEnabledException { if (!name.equals(nameOf(db))) throw new RepositoryNotFoundException(name); db.incrementOpen(); return db; } }); ServletContextHandler ctx = server.addContext(path); ctx.addServlet(new ServletHolder(gs), "/*"); return ctx; }
@Override protected void service(HttpServletRequest req, HttpServletResponse rsp) throws ServletException, IOException { String user = userManager.getRemoteUsername(req); if (user == null) { rsp.setHeader("WWW-Authenticate", "Basic realm=\"Speakeasy git server\""); rsp.sendError(HttpServletResponse.SC_UNAUTHORIZED, ""); } else { createIfNecessary(req); super.service(req, rsp); } }
@Override public void destroy() { super.destroy(); try { counter.close(); } catch (IOException ex) { LOGGER.warn("Error closing SharedCount due to: " + ex + ". This exception is ignored."); } }
@Override public void init(ServletConfig config) throws ServletException { super.init(config); try { counter = new SharedCount(curator, ZkPath.GIT_TRIGGER.getPath(), 0); counter.start(); } catch (Exception ex) { handleException(ex); } }
super.service(req, res); LOGGER.debug("GitHttp service res={}", res);
@Override public void destroy() { super.destroy(); try { counter.close(); } catch (IOException ex) { LOGGER.warn("Error closing SharedCount due to: " + ex + ". This exception is ignored."); } }
@Override public void init(ServletConfig config) throws ServletException { addUploadPackFilter(new UploadPackFilter()); setReceivePackFactory(receive); setRepositoryResolver(speakeasyRepositoryResolver); super.init(config); }
super.service(req, res); LOGGER.debug("GitHttp service res={}", res);