96 lines
3.0 KiB
Bash
Executable File
96 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
|
|
urequire prefixes apache webobjects java wosign
|
|
|
|
function display_help() {
|
|
uecho "$scriptname: signer les jars d'un bundle
|
|
|
|
USAGE
|
|
$scriptname <app.woa|fwk.framework|file.jar>
|
|
|
|
OPTIONS
|
|
-f Forcer la (re)signature des jars
|
|
-d Enlever la signature des jars originaux
|
|
-s Signer les jar du bundle [PAR DEFAUT]
|
|
--init
|
|
Initialiser les fichiers de configuration pour la signature des bundles.
|
|
--sudo
|
|
Si le répertoire de destination des fichiers de configuration n'est
|
|
accessible en écriture, relancer le script en root."
|
|
}
|
|
|
|
sign=
|
|
unsign=
|
|
resign=
|
|
init=
|
|
default=1
|
|
parse_opts "${PRETTYOPTS[@]}" \
|
|
--help '$exit_with display_help' \
|
|
-f resign=1 \
|
|
-d '$default=; unsign=1' \
|
|
-s '$default=; sign=1' \
|
|
--init '$default=; init=1' \
|
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
|
|
|
[ -n "$default" ] && sign=1
|
|
|
|
compute_apache_prefixes
|
|
compute_webobjects_prefixes
|
|
|
|
create_wodirs_maybe
|
|
|
|
if [ -n "$init" ]; then
|
|
wosign_setup_maybe
|
|
if ! mkdir -p "$WOSIGN_CONFDIR" 2>/dev/null; then
|
|
enote "$(ppath "$WOSIGN_CONFDIR"): Impossible de créer le répertoire."
|
|
estep "Tentative de lancement du script avec les droits root."
|
|
run_as_root --init "$@"
|
|
elif [ ! -w "$WOSIGN_CONFDIR" ]; then
|
|
enote "$(ppath "$WOSIGN_CONFDIR"): Impossible d'écrire dans le répertoire."
|
|
estep "Tentative de lancement du script avec les droits root."
|
|
run_as_root --init "$@"
|
|
fi
|
|
|
|
if [ -f "$WOSIGN_CONF" ]; then
|
|
eimportant "$(ppath "$WOSIGN_CONF"): Ce fichier existe déjà."
|
|
ask_yesno "Voulez-vous l'écraser?" N || die
|
|
fi
|
|
|
|
echo "# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
|
|
# chemin complet vers le keystore qui convient la clé utilisée pour signer les
|
|
# jars
|
|
keystore=
|
|
# mot de passe pour accéder à la clé dans le keystore
|
|
storepass=
|
|
# alias de la clé dans le keystore
|
|
keyalias=" >"$WOSIGN_CONF" &&
|
|
chmod 644 "$WOSIGN_CONF" &&
|
|
eimportant "Le fichier
|
|
$(ppath "$WOSIGN_CONF")
|
|
a été créé avec les droits 644.
|
|
Vérifiez les autorisations pour protéger ce fichier des accès inapropriés."
|
|
|
|
else
|
|
[ -n "$1" ] || die "Il faut spécifier le bundle ou le jar à signer"
|
|
wosign_setup_maybe || die "Pour pouvoir signer les jars, il faut installer la configuration des signatures
|
|
dans $WOCONFIGURATION/Signatures
|
|
Essayer avec l'option --init"
|
|
select_java_any || die "Java est requis pour utiliser $scriptname"
|
|
|
|
for bundle in "$@"; do
|
|
if reason="$(wosignable "$bundle")"; then
|
|
if [ -f "$bundle" ]; then
|
|
etitle -s "Signature de $(ppath "$bundle")"
|
|
else
|
|
etitle -s "Signature des jars de $(ppath "$bundle")"
|
|
fi
|
|
wosign ${sign:+-s }${unsign:+-d }${resign:+-f }"$bundle"
|
|
eend
|
|
else
|
|
die "Impossible de signer les jars pour $(ppath "$bundle"): $reason"
|
|
fi
|
|
done
|
|
fi
|