nutools/lib/ulib/support/woinst2s

231 lines
6.9 KiB
Bash
Executable File

#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$1" || exit 1 # pour avoir la définition de ULIBDIR
source "$ULIBDIR/ulib" || exit 1
urequire DEFAULTS prefixes apache webobjects wosign
is_root || die "Ce script doit être lancé avec les droits de root"
set_defaults WOServices
urequire wondermonitor
compute_apache_prefixes
compute_webobjects_prefixes
source "$1" # relire les éventuelles valeurs forcées pour les préfixes
create_wodirs_maybe
wosign_setup_maybe
function rm_ifexists() {
if [ -d "$1" ]; then
/bin/rm -rf "$1"
fi
}
################################################################################
if [ -z "$webinst" ]; then
# récupérer les informations sur le mapping bundle -> application
wom_getApplications appinfos
# Calculer les instances à relancer, en fonctions des applications et des
# frameworks à déployer
apps_to_restart=("${applications[@]}" "${frameworks[@]}")
array_map apps_to_restart basename
etitle "Calcul des instances à relancer" \
compute_apps apps_to_restart appinfos "${apps_to_restart[@]}"
if [ -z "$bounce" ]; then
# Arrêter les instances
disable_autorecover=1
stop_apps -a apps_to_start "" "" "${apps_to_restart[@]}"
fi
fi
################################################################################
# Déployer les frameworks
if [ -n "${frameworks[*]}" ]; then
etitle -s "Déploiement des frameworks"
destdir="$WOFRAMEWORKS"
webdestdir="$HTDOCSDIR/WebObjects/Frameworks"
for bundle in "${frameworks[@]}"; do
fwkname="$(basename "$bundle")"
fwkbasename="${fwkname%.framework}"
fwkdesc=
oldfwkname="$fwkname.orig"
etitle -s "$fwkname${fwkdesc:+: $fwkdesc}"
if [ -z "$webinst" ]; then
ebegin "Correction de la casse du jar principal"
jar="$(awk <"$bundle/Resources/Info.plist" '
/<key>NSJavaPathClient<\/key>/ {
getline
gsub("^.*<string>", "")
gsub("</string>.*$", "")
print
}
')"
if [ -n "$jar" ]; then
lower_jar="$bundle/Resources/Java/$(echo "$jar" | awk '{print tolower($0)}')"
jar="$bundle/Resources/Java/$jar"
if [ ! -f "$jar" -a -f "$lower_jar" ]; then
/bin/mv "$lower_jar" "$jar"; edot
fi
fi
eend
fi
if reason="$(wosignable "$bundle")"; then
estep "Signature des jars"
wosign -d -s "$bundle"
fi
if [ -d "$destdir/$fwkname" ]; then
ebegin "Suppression de l'ancienne installation"
if [ -z "$webinst" ]; then
rm_ifexists "$destdir/$oldfwkname"; edot
/bin/mv "$destdir/$fwkname" "$destdir/$oldfwkname"; edot
fi
rm_ifexists "$webdestdir/$oldfwkname"; edot
if [ -d "$webdestdir/$fwkname" ]; then
/bin/mv "$webdestdir/$fwkname" "$webdestdir/$oldfwkname"; edot
fi
eend
fi
if [ -z "$webinst" ]; then
# copie des fichiers
ebegin "Copie des fichiers"
mkdir -p "$destdir"; edot
cpdir "$bundle" "$destdir/$fwkname" &
ewait $!
eend
# permissions
ebegin "Ajustement des permission"
chown -R root: "$destdir/$fwkname"; edot
chmod -R u=rwX,g=rX,o=rX "$destdir/$fwkname"; edot
eend
fi
if [ -d "$bundle/WebServerResources" ]; then
# copie des fichiers pour le web
ebegin "Copie des ressources web"
cpdir "$bundle/WebServerResources" "$webdestdir/$fwkname/WebServerResources" &
ewait $!
eend
# permissions
ebegin "Ajustement des permission"
chown -R root: "$webdestdir/$fwkname"; edot
chmod -R u=rwX,g=rX,o=rX "$webdestdir/$fwkname"; edot
eend
fi
eend
done
eend
fi
################################################################################
# Déployer les applications
if [ -n "${applications[*]}" ]; then
etitle -s "Déploiement des applications"
destdir="$WOAPPLICATIONS"
webdestdir="$HTDOCSDIR/WebObjects"
for bundle in "${applications[@]}"; do
appname="$(basename "$bundle")"
appbasename="${appname%.woa}"
appdesc=
oldappname="$appname.orig"
etitle -s "$appname${appdesc:+: $appdesc}"
if [ -z "$webinst" ]; then
estep "Correction éventuelle de la casse des jars"
fix_jars_case "$bundle"
fi
estep "Vérification du bundle"
verifix_bundle "$bundle"
if reason="$(wosignable "$bundle")"; then
estep "Signature des jars"
wosign -d -s "$bundle"
fi
if [ -d "$destdir/$appname" ]; then
ebegin "Suppression de l'ancienne installation"
if [ -z "$webinst" ]; then
rm_ifexists "$destdir/$oldappname"; edot
/bin/mv "$destdir/$appname" "$destdir/$oldappname"; edot
fi
rm_ifexists "$webdestdir/$oldappname"; edot
if [ -d "$webdestdir/$appname" ]; then
/bin/mv "$webdestdir/$appname" "$webdestdir/$oldappname"; edot
fi
eend
fi
if [ -z "$webinst" ]; then
# copie des fichiers
ebegin "Copie des fichiers"
mkdir -p "$destdir"; edot
cpdir "$bundle" "$destdir/$appname" &
ewait $!
eend
# permissions
ebegin "Ajustement des permission"
chown -R root: "$destdir/$appname"; edot
chmod -R u=rwX,g=rX,o=rX "$destdir/$appname"; edot
eend
fi
if [ -d "$bundle/Contents/WebServerResources" ]; then
# copie des fichiers pour le web
ebegin "Copie des ressources web"
cpdir "$bundle/Contents/WebServerResources" "$webdestdir/$appname/Contents/WebServerResources" &
ewait $!
eend
# permissions
ebegin "Ajustement des permission"
chown -R root: "$webdestdir/$appname"; edot
chmod -R u=rwX,g=rX,o=rX "$webdestdir/$appname"; edot
eend
fi
eend
done
eend
fi
################################################################################
if [ -z "$webinst" ]; then
if [ -z "$bounce" ]; then
# Démarrer les instances
enable_autorecover=1
start_apps "" "" "${apps_to_start[@]}"
else
# Relancer les applications en mode bounce
bounce_apps "" "" "${apps_to_restart[@]}"
fi
fi
################################################################################
# Lancer les scripts
for script in "${scripts[@]}"; do
eval "$script"
done