GOTD.CONF(5) | File Formats Manual | GOTD.CONF(5) |
gotd.conf
— gotd
configuration file
gotd.conf
is the run-time configuration
file for gotd(8).
The file format is line-based, with one configuration directive per line. Any lines beginning with a ‘#’ are treated as comments and ignored.
The available global configuration directives are as follows:
connection
optionThe connection
directive may be
specified multiple times, and multiple option
arguments may be specified within curly braces:
connection
{...}
Each option should only be specified once. If a given option is listed multiple times, the last line which sets this option wins.
Valid connection options are:
request
timeout
secondsThe timeout value may also have a suffix indicating its unit of measure. Supported suffixes are:
The default timeout is 1h (3600 seconds, one hour). This should only be changed if legitimate requests are exceeding the default timeout for some reason, such as the server spending an extraordinary amount of time generating a pack file.
limit
user
identity
numberThe default per-user limit is 4. This should only be changed if concurrent connections from a given user are expected to exceed the default limit, for example if an anonymous user is granted read access and many concurrent connections will share this anonymous user identity.
listen
on
pathuser
userAt least one repository context must exist for
gotd(8) to function. For each repository, access rules
must be configured using the permit
and
deny
configuration directives. Multiple access rules
can be specified, and the last matching rule determines the action taken. If
no rule matches, access to the repository is denied.
A repository context is declared with a unique name, followed by repository-specific configuration directives inside curly braces:
repository
name
{...}
got(1) and git(1) clients can connect to a repository by including the repository's unique name in the request URL. Clients appending the string “.git” to the name will also be accepted.
If desired, the name may contain path-separators, “/”, to expose repositories as part of a virtual client-visible directory hierarchy.
The available repository configuration directives are as follows:
deny
identitypath
pathpermit
mode identityro
for read-only access, or
rw
for read-write access. Group names may be
matched by prepending a colon (‘:’) to
identity. Numeric IDs are also accepted.protect
{...}protect
directive may be used to protect
branches and tags in a repository from being overwritten by potentially
destructive client-side commands, such as when got send
-f
and git push -f
are used to change the
history of a branch.
To build a set of protected branches and tags, multiple
protect
directives may be specified per
repository and multiple protect
directive
parameters may be specified within curly braces.
The available protect
parameters are
as follows:
branch
nameIf the name does not already begin with “refs/heads/” it will be looked up in the “refs/heads/” reference namespace.
branch
namespace
namespaceThe namespace argument must be absolute, starting with “refs/”.
tag
namespace
namespaceThe namespace argument must be absolute, starting with “refs/”.
The special reference namespaces “refs/got/” and
“refs/remotes/” do not need to be listed in
gotd.conf
. These namespaces are always protected
and even attempts to create new references in these namespaces will
always be denied.
gotd.conf
configuration file.# Run as the default user: user _gotd # Listen on the default socket: listen on "/var/run/gotd.sock" # This repository can be accessed via ssh://user@example.com/src repository "src" { path "/var/git/src.git" permit rw flan_hacker permit rw :developers permit ro anonymous protect branch "main" protect tag namespace "refs/tags/" } # This repository can be accessed via # ssh://user@example.com/openbsd/ports repository "openbsd/ports" { path "/var/git/ports.git" permit rw :porters permit ro anonymous deny flan_hacker protect { branch "main" tag namespace "refs/tags/" } } # Use a larger request timeout value: connection request timeout 2h # Some users are granted a higher concurrent connection limit: connection { limit user flan_hacker 16 limit user anonymous 32 }
January 31, 2025 | Debian |