#!/bin/bash archlinux=true archlinux_arm=true archlinux_git=true local=false parabola=true wishlist=true while [ $# -gt 0 ]; do case "x$1" in 'x-l') local=true ;; 'x--no-archlinux') archlinux=false ;; 'x--no-archlinux-arm') archlinux_arm=false ;; 'x--no-archlinux-git') archlinux_git=false ;; 'x--no-parabola') parabola=false ;; 'x--no-wishlist') wishlist=false ;; *) >&2 printf 'unknown parameter %s\n' "$1" >&2 printf 'known parameters:\n' >&2 printf ' -%s %s\n' \ 'l' 'update local keyring' >&2 printf ' --no-%s\n do not update keys from/mentioned in\n %s\n' \ 'archlinux' 'locally running archlinux keyring' \ 'archlinux-arm' 'archlinuxarm keyring package' \ 'archlinux-git' 'archlinux sources (PKGBUILDs) git repository' \ 'parabola' 'parabola keyring package sources' \ 'wishlist' 'our keyserver'"'"'s wishlist' exit 1 ;; esac shift done if ${parabola}; then parabola_keyring_version=$( curl -Ss 'https://repo.parabola.nu/other/parabola-keyring/' \ | sed ' s@^.*.*$@\1@ t d ' \ | sort -V \ | tail -n1 ) parabola_keyring="https://repo.parabola.nu/other/parabola-keyring/parabola-keyring-${parabola_keyring_version}.tar.gz" fi if ${archlinux_arm}; then archlinuxarm_keyring=$( curl -Ss 'https://arch.eckner.net/archlinuxarm/arm/core/' \ | sed ' s@^.*.*$@\1@ t d ' \ | sort -V \ | tail -n1 \ | sed ' s@^.*$@https://arch.eckner.net/archlinuxarm/arm/core/archlinuxarm-keyring-\0-any.pkg.tar.xz@ ' ) fi { { if ${archlinux_git}; then find \ /usr/src/archlinux/{packages,community}/ \ /usr/src/archlinux32/packages/ \ ~/eigeneSkripte/archPackages/ \ -type f -name PKGBUILD \ -exec sed -n ' /^\s*validpgpkeys=.*)/p /^\s*validpgpkeys=[^)]\+$/,/)/p ' {} + 2>/dev/null \ | sed ' s/#.*$// s/^\s*validpgpkeys=(// s/).*$// ' \ | tr -d '" \t'"'" fi curl -Ss 'https://archlinux32.org/key-wishlist' { if ${archlinux_arm}; then curl -Ss "${archlinuxarm_keyring}" \ | bsdtar -Oxf - usr/share/pacman/keyrings/archlinuxarm-{trusted,revoked} fi if ${parabola}; then curl -Ss "${parabola_keyring}" \ | bsdtar -Oxf - parabola-keyring-${parabola_keyring_version}/parabola-{trusted,revoked} fi } \ | cut -d: -f1 } \ | sort -u \ | grep -x '[0-9a-fA-F]\{16,40\}' \ | while read -r key_id; do key=$(gpg -a --export "${key_id}" 2>/dev/null) if [ -z "${key}" ]; then /usr/src/skripte/gpg-safe-import/gpg-safe-import --recv-keys "${key_id}" key=$(gpg -a --export "${key_id}" 2>/dev/null) fi if [ -z "${key}" ]; then >&2 printf 'key "%s" is unknown\n' "${key_id}" continue fi printf '%s\n' "${key}" done if ${archlinux}; then gpg --homedir /etc/pacman.d/gnupg -a --export fi if ${archlinux_arm}; then curl -Ss "${archlinuxarm_keyring}" \ | bsdtar -Oxf - usr/share/pacman/keyrings/archlinuxarm.gpg fi if ${parabola}; then curl -Ss "${parabola_keyring}" \ | bsdtar -Oxf - parabola-keyring-${parabola_keyring_version}/parabola.gpg fi } \ | if ${local}; then sudo su http -s /bin/bash -c 'gpg --import' else ssh archlinux32 "sudo su http -s /bin/bash -c 'gpg --import'" fi