From d4ba5df3e5712de0cbcfa9eacd000247fed38ae4 Mon Sep 17 00:00:00 2001 From: Filip Gralinski Date: Sun, 24 Nov 2019 14:39:33 +0100 Subject: [PATCH] Add helper scripts --- helpers/gitolite/fetch_keys.sh | 13 ++++++++++++ helpers/gitolite/get_keys.pl | 32 ++++++++++++++++++++++++++++++ helpers/gitolite/get_keys.sh | 7 +++++++ helpers/gitolite/mark_as_public.sh | 16 +++++++++++++++ helpers/gitolite/notes.md | 5 +++++ 5 files changed, 73 insertions(+) create mode 100755 helpers/gitolite/fetch_keys.sh create mode 100755 helpers/gitolite/get_keys.pl create mode 100755 helpers/gitolite/get_keys.sh create mode 100755 helpers/gitolite/mark_as_public.sh create mode 100644 helpers/gitolite/notes.md diff --git a/helpers/gitolite/fetch_keys.sh b/helpers/gitolite/fetch_keys.sh new file mode 100755 index 0000000..f5677e0 --- /dev/null +++ b/helpers/gitolite/fetch_keys.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +for X in /var/keyswap/*.pub +do + if [[ "$X" != "/var/keyswap/filipg.pub" && "$X" != "/var/keyswap/admin.pub" ]] + then + echo "COPYING $X" + cp "$X" /var/lib/gitolite/.gitolite/keydir/ + fi + +done + +gitolite trigger SSH_AUTHKEYS diff --git a/helpers/gitolite/get_keys.pl b/helpers/gitolite/get_keys.pl new file mode 100755 index 0000000..a4fba86 --- /dev/null +++ b/helpers/gitolite/get_keys.pl @@ -0,0 +1,32 @@ +#!/usr/bin/perl + +use strict; + +use DBI; + +my $dbh = DBI->connect("dbi:Pg:dbname=gonito", "", ""); + +my $sh = $dbh->prepare(qq{SELECT * FROM "user" U, public_key K WHERE U.id = K.user and U.id >= 40}); + +$sh->execute(); + +while (my $key = $sh->fetchrow_hashref()) { + my $local_id = $key->{'local_id'}; + my $pkey = $key->{'pubkey'}; + + if ($pkey =~ /PRIVATE/) { + print STDERR "$local_id has private key!\n"; + } elsif (! defined($local_id) && $local_id !~ /\S/) { + print STDERR "not defined local_id\n"; + } else { + if ($pkey !~ /^ssh-rsa /) { + $pkey = 'ssh-rsa ' . $pkey; + } + + open my $fh, '>', $local_id.".pub"; + print $fh $pkey; + close $fh; + } + + +} diff --git a/helpers/gitolite/get_keys.sh b/helpers/gitolite/get_keys.sh new file mode 100755 index 0000000..d3cee0c --- /dev/null +++ b/helpers/gitolite/get_keys.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# script dumps public_keys from gonito DB and writes them into /var/keyswap +# the keys are read into gitolite by another script (fetch_keys.sh) run for a gitolie user + +cd /var/keyswap +/home/gonito/get_keys.pl diff --git a/helpers/gitolite/mark_as_public.sh b/helpers/gitolite/mark_as_public.sh new file mode 100755 index 0000000..e1f97f1 --- /dev/null +++ b/helpers/gitolite/mark_as_public.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +REPODIR="$1" + +if [[ ! -d "$REPODIR" ]] +then + echo "NO DIRECTORY!" + exit 1 +fi + +chgrp -R git "$REPODIR" +chmod -R g+rX "$REPODIR" + +find "$REPODIR" -type d -exec chmod g+s '{}' ';' + + diff --git a/helpers/gitolite/notes.md b/helpers/gitolite/notes.md new file mode 100644 index 0000000..dd02b8a --- /dev/null +++ b/helpers/gitolite/notes.md @@ -0,0 +1,5 @@ + +* gitolite3 under Ubuntu +* install git-daemon-sysvinit (Ubuntu) +* configure git-daemon (`/etc/default/git-daemon`) +* permission rights to `/var/lib/gitolite3/repositories`