X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plc.d%2Fgpg;h=9576c4093d222113f25e97cfc8ebc979cf0219d1;hb=facac6604dd7a4dd781fff92ebf6f9cc3315ac33;hp=48c643e4b67d80f90af52e77cff0964badd79ccd;hpb=c397708d9e9a3a2dbb80856630ace4da0af85e7a;p=myplc.git diff --git a/plc.d/gpg b/plc.d/gpg index 48c643e..9576c40 100755 --- a/plc.d/gpg +++ b/plc.d/gpg @@ -1,21 +1,34 @@ #!/bin/bash # -# priority: 500 +# priority: 400 # # Generate GPG keys # # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: gpg,v 1.5 2006/05/17 22:52:09 mlhuang Exp $ -# # Source function library and configuration . /etc/plc.d/functions . /etc/planetlab/plc_config +# Be verbose +set -x + case "$1" in start) + # Make temporary GPG home directory + homedir=$(mktemp -d /tmp/gpg.XXXXXX) + + # in case a previous gpg invocation failed in some weird way + # and left behind a zero length gpg key (pub or priv). + if [ -f $PLC_ROOT_GPG_KEY_PUB -a ! -s $PLC_ROOT_GPG_KEY_PUB ] ; then + rm -f $PLC_ROOT_GPG_KEY_PUB + fi + if [ -f $PLC_ROOT_GPG_KEY -a ! -s $PLC_ROOT_GPG_KEY ] ; then + rm -f $PLC_ROOT_GPG_KEY + fi + if [ ! -f $PLC_ROOT_GPG_KEY_PUB -o ! -f $PLC_ROOT_GPG_KEY ] ; then # Generate new GPG keyring MESSAGE=$"Generating GPG keys" @@ -26,10 +39,22 @@ case "$1" in # Temporarily replace /dev/random with /dev/urandom to # avoid running out of entropy. - rm -f /dev/random - mknod /dev/random c 1 9 - gpg --homedir=/root --no-tty --yes \ - --batch --gen-key <"/etc/pki/rpm-gpg/RPM-GPG-KEY-$PLC_NAME" check if rpm -q gpg-pubkey ; then rpm --allmatches -e gpg-pubkey check fi - rpm --import /etc/pki/rpm-gpg/* + # starting with rpm-4.6, this fails when run a second time + # it would be complex to do this properly based on the filename, + # as /etc/pki/rpm-gpg/ typically has many symlinks to the same file + # see also http://fedoranews.org/tchung/gpg/ + # so just ignore the result + rpm --import /etc/pki/rpm-gpg/* || : check + # Make GPG key readable by apache so that the API can sign peer requests + chown apache $PLC_ROOT_GPG_KEY + chmod 644 $PLC_ROOT_GPG_KEY_PUB + chmod 600 $PLC_ROOT_GPG_KEY + check + + # Cleanup + rm -rf $homedir + result "$MESSAGE" ;; esac