dotfiles/files/git/.local/bin/git-server-setup
Ben Grande 9954972df3
fix: POSIX does not support head byte count
Test done on OpenBSD for compatibility with the POSIX specification,
also becoming a new supported system.
2024-04-23 18:34:10 +02:00

46 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
##
## SPDX-License-Identifier: AGPL-3.0-or-later
## Setup git server.
set -eu
if ! test "$(id -u)" = "0"; then
echo "This program requires root." >&2
exit 1
fi
if ! command -v git >/dev/null; then
printf '%s\n' "Missing dependency: git" >&2
exit 1
fi
if ! command -v git-shell >/dev/null; then
printf '%s\n' "Missing dependency: git-shell" >&2
exit 1
fi
git_user="git"
git_home="/var/git"
git_shell="$(command -v git-shell)"
useradd -m "$git_user" -d "$git_home" -s "$git_shell"
mkdir -p "$git_home/src"
mkdir -p "$git_home/.ssh"
chmod 0700 "$git_home/.ssh"
touch "$git_home/.ssh/authorized_keys"
chmod 0600 "$git_home/.ssh/authorized_keys"
mkdir -p "$git_home/git-shell-commands"
cp -r "$git_home/.config/git/shell"/* "$git_home/git-shell-commands"
chmod -R 0755 "$git_home/git-shell-commands"
git config --system receive.updateServerInfo true
git config --system receive.advertisePushOptions true
nonce="$(head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9!#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' | cut -c 1-256)"
git config --system receive.certNonceSeed "$nonce"
chown -R "$git_user":"$git_user" "$git_home"