server.document-root = "/var/www/htdocs" server.port = 80 server.username = "git" server.groupname = "git" server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", "mod_rewrite", "mod_cgi", "mod_auth", "mod_setenv", ) $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/lighttpd/certs/lighttpd.pem" {% if TROVE_SSL_CA_FILE is defined %} ssl.ca-file = "/etc/lighttpd/certs/ca-certs.pem" {% endif %} } index-file.names = ("index.html") cgi.assign = ("gitano-command.cgi" => "/usr/bin/lua5.1", "gitano-smart-http.cgi" => "/usr/bin/lua5.1", "cgit.cgi" => "" ) cgi.execute-x-only = "enable" mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png", ".css" => "text/css" ) $HTTP["url"] =~ "^/releases(/|$)" { server.dir-listing = "enable" } $HTTP["url"] =~ ".*/gitano-command.cgi$" { setenv.add-environment = ( "HOME" => "/home/git", "GITANO_ROOT" => "/home/git/repos" ) } $HTTP["url"] =~ "^/git/.*$" { alias.url += ( "/git" => "/var/www/htdocs/gitano-smart-http.cgi" ) cgi.assign = ("" => "") setenv.add-environment = ( "GIT_HTTP_EXPORT_ALL" => "", "GIT_PROJECT_ROOT" => "/home/git/repos", "HOME" => "/home/git", "GITANO_ROOT" => "/home/git/repos" ) } # Avoid needlessly long cgit URLs. This must correspond with the # 'virtual-root' setting in /etc/cgitrc. url.rewrite-if-not-file = ( "^/cgit/(.*)$" => "/cgi-bin/cgit.cgi/$1", ) # Allow /baserock and /delta, but redirect them to the proper /cgit/ path. # Troves can contain arbitrary project names, so we can't do this for all # projects, we just special-case the ones for git.baserock.org. $HTTP["url"] =~ "^/(baserock|delta)(/.*)?$" { url.redirect = ( "^/(.*)" => "/cgit/$1" ) } $HTTP["scheme"] == "https" { include "git-auth.conf" $HTTP["querystring"] =~ "service=git-receive-pack" { include "git-auth.conf" } $HTTP["url"] =~ "^/git/.*/git-receive-pack$" { include "git-auth.conf" } }