diff options
-rwxr-xr-x | src/99-emergency-addkey.sh | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/99-emergency-addkey.sh b/src/99-emergency-addkey.sh new file mode 100755 index 0000000..d488798 --- /dev/null +++ b/src/99-emergency-addkey.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# what/why: re-establish gitolite admin access when admin key(s) lost +# where: on server (NOT client!) + +# pre-req: shell access to the server (even with password is fine) +# pre-work: - make yourself a new keypair on your workstation +# - copy the pubkey and this script to the server + +# usage: $0 admin_name client_host_shortname pubkeyfile +# notes: - admin_name should already have RW or RW+ access to the +# gitolite-admin repo +# - client_host_shortname is any simple word; see example below + +# WARNING: ABSOLUTELY NO ARGUMENT CHECKING DONE +# WARNING: NEWER GITS ONLY ON SERVER SIDE (for now) + +# example: $0 sitaram laptop /tmp/sitaram.pub +# result: a new keyfile named sitaram@laptop.pub would be added + +# ENDHELP + +[[ -z $1 ]] && { perl -pe "s(\\\$0)($0); last if /ENDHELP/" < $0; exit 1; } + +set -e + +cd +REPO_BASE=$( perl -e 'do ".gitolite.rc"; print $REPO_BASE' ) +GL_ADMINDIR=$(perl -e 'do ".gitolite.rc"; print $GL_ADMINDIR') + +cd; cd $GL_ADMINDIR/keydir; pwd +cp -v $3 $1@$2.pub + +cd; cd $REPO_BASE/gitolite-admin.git; pwd +# XXX FIXME TODO -- fix this to work with older gits also +GIT_WORK_TREE=$GL_ADMINDIR git add keydir +GIT_WORK_TREE=$GL_ADMINDIR git commit -m "emergency add $1@$2.pub" + +cd $GL_ADMINDIR +src/gl-compile-conf |