6263: Pass through environment variables needed by gitolite-shell.
[arvados.git] / services / arv-git-httpd / server.go
1 package main
2
3 import (
4         "net/http"
5         "net/http/cgi"
6
7         "git.curoverse.com/arvados.git/sdk/go/httpserver"
8 )
9
10 type server struct {
11         httpserver.Server
12 }
13
14 func (srv *server) Start() error {
15         gitHandler := &cgi.Handler{
16                 Path: theConfig.GitCommand,
17                 Dir:  theConfig.Root,
18                 Env: []string{
19                         "GIT_PROJECT_ROOT=" + theConfig.Root,
20                         "GIT_HTTP_EXPORT_ALL=",
21                         "SERVER_ADDR=" + theConfig.Addr,
22                 },
23                 InheritEnv: []string{
24                         "PATH",
25                         // Needed if GitCommand is gitolite-shell:
26                         "GITOLITE_HTTP_HOME",
27                         "GL_BYPASS_ACCESS_CHECKS",
28                 },
29                 Args:       []string{"http-backend"},
30         }
31         mux := http.NewServeMux()
32         mux.Handle("/", &authHandler{gitHandler})
33         srv.Handler = mux
34         srv.Addr = theConfig.Addr
35         return srv.Server.Start()
36 }