3 # userv-git-daemon service script
5 # This was written by Tony Finch <dot@dotat.at>
6 # You may do anything with it, at your own risk.
7 # http://creativecommons.org/publicdomain/zero/1.0/
14 my $service = $ENV{"USERV_SERVICE"};
15 $service =~ s|^git-||;
17 ${$cf::{$_}} = $ENV{"USERV_U_$_"}
18 for grep s/^USERV_U_//, keys %ENV;
20 openlog 'userv-git-daemon/$service', 'pid', 'daemon';
23 syslog 'err', "$cf::client @_";
30 our $check_export = 0;
31 our ($dir,$repo,$client);
37 fail "no repository configured for $uri" unless defined $repo;
38 fail "no directory configured for $uri" unless defined $dir;
40 my $home = (getpwuid $<)[7];
41 $dir = "$home/$dir" if $dir =~ m|^[^/]|
45 fail "bad repository in $uri"
46 if $check_repo and $repo !~ /^[0-9A-Za-z._-]+[.]git$/;
47 fail "repository not exported for $uri"
48 if $check_export and not -e "$dir/git-daemon-export-ok";
50 my @cmd = ('git', $service, '--strict', '--timeout=30', $dir);
51 no warnings; # suppress errors to stderr
52 exec @cmd or fail "exec @cmd: $!";