diff options
author | mail_redacted_for_web | 2025-03-23 08:02:00 +0100 |
---|---|---|
committer | mail_redacted_for_web | 2025-03-23 08:02:00 +0100 |
commit | d637f80eb84c7962dfd78cb4a9b6fbe9bc31858f (patch) | |
tree | 6be0beedfb2fcb4900432d6def62bfcd64b0f516 | |
parent | d191e029e5151581beeb1ddd625cfc93f62ae44d (diff) | |
download | packages.lirion.de-d637f80eb84c7962dfd78cb4a9b6fbe9bc31858f.tar.bz2 |
Introduce GPG ID as parameter to createrepo wrapper
-rwxr-xr-x | createrepo/bin/createrepo-lirionde | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/createrepo/bin/createrepo-lirionde b/createrepo/bin/createrepo-lirionde index e1356db..bc3329a 100755 --- a/createrepo/bin/createrepo-lirionde +++ b/createrepo/bin/createrepo-lirionde @@ -1,17 +1,20 @@ #!/usr/bin/env bash declare -a REPOS +declare GPGID REPOSDEF=( 'all' 'el' 'suse' ) function hayulp { - printf 'USAGE: %b [ -r repo [ -r repo ... ] ]\n' "$(basename "$0")" + printf 'USAGE: %b -g GPG_ID [ -r REPO [ -r REPO ... ] ]\n' "$(basename "$0")" printf '\n' ( printf -- '-r,\n' printf -- '--repos;Repo to be published.\n' printf ';Specify multiple times for multiple repositores.\n' printf ';Default: all, el, suse\n' + printf -- '-g,\n' + printf -- '--gpg-id;GPG key ID with which to sign the repository metadata file\n' )|column -ts\; } @@ -22,6 +25,11 @@ while [[ $# -gt 0 ]]; do shift # past argument shift # past value ;; + "-g"|"--gpg") + GPGID="$2" + shift + shift + ;; "-"*) hayulp printf '\nUnknown option: %b\n' "$1" >&2 @@ -40,6 +48,21 @@ if [ "${#REPOS[@]}" -lt 1 ]; then # if we can't be sure that indexes are sequential ints: # for idx in "${!REPOSDEF[@]}"; do REPOS["$idx"]="${REPOSDEF[$idx]}"; done fi +if [ -z "$GPGID" ]; then + # We do not accept that, we mandate here that repositories have to be GPG signed. + # You actually can set up repositories without GPG signatures - we don't, it's + # insecure and bad practice. + hayulp + printf '\nNo GPG ID supplied, exiting.\n' >&2 + exit 101 +fi + +# test signature creation +printf 'Testing GPG signing: ' +MYTMP="$(mktemp -p /tmp createrepo-lirionde.XXXXXX)" || exit 110 +gpg --local-user "$GPGID" --detach-sign --armour "$MYTMP" || exit 111 +rm -f "$MYTMP" "${MYTMP}.asc" || exit 112 +printf 'done.\n' for repo in "${REPOS[@]}"; do faketime "$(date -I) 13:37:08" createrepo_c --update "/var/cache/rpm/$repo" &&\ |