231 lines
7.0 KiB
Bash
Executable File
231 lines
7.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 "$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
|