Intégration de la branche release-4.4.0

This commit is contained in:
Jephté Clain 2016-04-15 12:04:38 +04:00
commit c52b40c063
27 changed files with 173 additions and 44 deletions

View File

@ -1,3 +1,15 @@
## Version 4.4.0 du 15/04/2016-12:04
73391a9 awkrun: ajout d'un champ field à cqsql
2f60fec git_track_branch(): support de git >= 1.8.x
130b4d1 tenir compte du fichier /etc/debian_chroot pour initialiser UTOOLS_CHROOT
48c0420 ne pas afficher d'erreur si apache n'est pas installé
5e1a6cf Intégration de la branche rumount
1ad804b implémentation initiale de rumount
f460399 améliorer le calcul du répertoire destination avec pclone/pcrone
6411e63 configurer la valeur de l'umask
eb4362d apacheconfig: déploiement pour plusieurs systèmes à partir des mêmes sources
## Version 4.3.0 du 07/04/2016-14:57 ## Version 4.3.0 du 07/04/2016-14:57
d021c97 support de on_debian() avec des arguments d021c97 support de on_debian() avec des arguments

View File

@ -1 +1 @@
4.3.0 4.4.0

View File

@ -139,13 +139,18 @@ function __template_updatef_dhost() {
[ -n "$ips" ] || __template_set_var ips "" [ -n "$ips" ] || __template_set_var ips ""
} }
DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr
DEFAULT_CERTSDIR=1507-renater
DEFAULT_CANAME=1507-DigiCertCA.crt
set_defaults apacheconfig
TEMPLATECTL_NAME=apacheconfig TEMPLATECTL_NAME=apacheconfig
TEMPLATECTL_SRCDIRS=(apacheconfig) TEMPLATECTL_SRCDIRS=(apacheconfig)
TEMPLATECTL_CONFIG="$TEMPLATECTL_NAME" TEMPLATECTL_CONFIG="$TEMPLATECTL_NAME"
TEMPLATECTL_DEFAULTS=( TEMPLATECTL_DEFAULTS=(
admin=supervision-gdrsi@listes.univ-reunion.fr admin="$DEFAULT_ADMIN"
certsdir=1507-renater certsdir="$DEFAULT_CERTSDIR"
caname=1507-DigiCertCA.crt caname="$DEFAULT_CANAME"
) )
TEMPLATECTL_VARS=() TEMPLATECTL_VARS=()
@ -205,13 +210,7 @@ fi
__template_set_var sysname "$sysname" __template_set_var sysname "$sysname"
__template_set_var sysdist "$sysdist" __template_set_var sysdist "$sysdist"
__template_set_var sysver "$sysver" __template_set_var sysver "$sysver"
if check_sysinfos --vars sysname sysdist sysver bits -d debian -v jessie+; then #check_sysinfos --vars sysname sysdist sysver bits "${templatectl_suffix[@]}
array_add TEMPLATECTL_SRCDIRS apacheconfig8
elif check_sysinfos --vars sysname sysdist sysver bits -d debian; then
array_add TEMPLATECTL_SRCDIRS apacheconfig7
else
ewarn "$(get_sysinfos_desc sysname sysdist sysver): système non supporté pour le déploiement"
fi
################################################################################ ################################################################################
if [ "$action" == create ]; then if [ "$action" == create ]; then

6
lib/default/apacheconfig Normal file
View File

@ -0,0 +1,6 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
# Valeurs par défaut du template apacheconfig
#DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr
#DEFAULT_CERTSDIR=1507-renater
#DEFAULT_CANAME=1507-DigiCertCA.crt

View File

@ -2,7 +2,9 @@
# Ce fichier contient des informations à charger systématiquement par nutools, # Ce fichier contient des informations à charger systématiquement par nutools,
# et qui doivent prendre la précédence sur toute valeur autodétectée. # et qui doivent prendre la précédence sur toute valeur autodétectée.
# Ce "système" est-is dans un CHROOT? # Ce "système" est-is dans un CHROOT? Le module base.init initialise cette
# variable au contenu du fichier /etc/debian_chroot s'il existe, mais il est
# possible de forcer la valeur sur une machine non debian.
#export UTOOLS_CHROOT=1 #export UTOOLS_CHROOT=1
# Si oui, les valeurs suivantes peuvent être forcées pour les données systèmes: # Si oui, les valeurs suivantes peuvent être forcées pour les données systèmes:

View File

@ -7,6 +7,13 @@ if [ -n "$UTOOLS_BASH_PROMPT" ]; then
else else
DEFAULT_PS1="$USER"'(\u)@\h \w \$ ' DEFAULT_PS1="$USER"'(\u)@\h \w \$ '
fi fi
if [ -z "$UTOOLS_CHROOT" ]; then
if [ -n "$debian_chroot" ]; then
UTOOLS_CHROOT="$debian_chroot"
elif [ -r /etc/debian_chroot ]; then
UTOOLS_CHROOT="$(</etc/debian_chroot)"
fi
fi
if [ "$UTOOLS_CHROOT" == "1" ]; then if [ "$UTOOLS_CHROOT" == "1" ]; then
DEFAULT_PS1="[CHROOT] $DEFAULT_PS1" DEFAULT_PS1="[CHROOT] $DEFAULT_PS1"
elif [ -n "$UTOOLS_CHROOT" ]; then elif [ -n "$UTOOLS_CHROOT" ]; then

View File

@ -11,7 +11,7 @@
: "${UTOOLS_AUTO:=1}" : "${UTOOLS_AUTO:=1}"
export UTOOLS_AUTO export UTOOLS_AUTO
# Activer le mode offline de git. Par exemple, les modifications ne sont pas # Activer le mode offline de git. Par exemple, les modifications ne sont pas
# pousser automatiquement vers l'origine. # poussées automatiquement vers l'origine.
: "${UTOOLS_VCS_OFFLINE:=}" : "${UTOOLS_VCS_OFFLINE:=}"
export UTOOLS_VCS_OFFLINE export UTOOLS_VCS_OFFLINE
@ -93,6 +93,9 @@ if [ -n "$UTOOLS_USSH_ALIAS" ]; then
} }
fi fi
# Configuration de l'umask
umask "${UTOOLS_UMASK:-0022}"
# Configuration # Configuration
__uaddpath "@@dest@@" PATH __uaddpath "@@dest@@" PATH
__uaddpath "@@dest@@" UINCPATH __uaddpath "@@dest@@" UINCPATH

View File

@ -21,6 +21,9 @@
# Désactiver l'affichage en couleur pour les fonctions e* # Désactiver l'affichage en couleur pour les fonctions e*
#export UTOOLS_NO_COLORS=1 #export UTOOLS_NO_COLORS=1
# Valeur de l'umask à configurer
#export UTOOLS_UMASK=0022
# Editeur à utiliser # Editeur à utiliser
#export EDITOR=vim #export EDITOR=vim

View File

@ -1 +1 @@
012002000 012003000

View File

@ -51,7 +51,7 @@ function get_default_apachebin_prefix() {
function get_default_apacheversion_prefix() { function get_default_apacheversion_prefix() {
[ -n "$APACHEBIN" ] || return [ -n "$APACHEBIN" ] || return
local version="$($APACHEBIN -v | grep version:)" local version="$($APACHEBIN -v 2>/dev/null | grep version:)"
if [[ "$version" == *1.3* ]]; then if [[ "$version" == *1.3* ]]; then
echo "" echo ""
elif [[ "$version" == *2.0* ]]; then elif [[ "$version" == *2.0* ]]; then

View File

@ -155,6 +155,17 @@ OPTIONS
return 0 return 0
} }
__APACHE_AUTOCONF_SUFFIXES=(d8 d)
__APACHE_AUTOCONF_SUFFIX_d8=(-d debian -v jessie+)
__APACHE_AUTOCONF_SUFFIX_d=(-d debian)
function __apache_autoconf_check_suffix() {
array_contains __APACHE_AUTOCONF_SUFFIXES "$1" || return 1
local sysinfos="__APACHE_AUTOCONF_SUFFIX_${1}[@]"
check_sysinfos --vars sysname sysdist sysver bits "${!sysinfos}"
}
function __apache_autoconf_filter_suffix_files() {
grep -vF ..
}
function __apache_autoconf_setup() { function __apache_autoconf_setup() {
if ! check_sysinfos --vars sysname sysdist sysver bits -s linux64 linux32 linux -d debian; then if ! check_sysinfos --vars sysname sysdist sysver bits -s linux64 linux32 linux -d debian; then
eerror "apache_autoconf n'est supporté que sur Debian linux" eerror "apache_autoconf n'est supporté que sur Debian linux"
@ -182,17 +193,33 @@ function __apache_autoconf_fillcopy() {
# script sed $FILLSCRIPT. Le fichier temporaire $FILLTEMP est utilisé pour # script sed $FILLSCRIPT. Le fichier temporaire $FILLTEMP est utilisé pour
# le remplacement des valeurs. $3 contient le cas échéant des commandes sed # le remplacement des valeurs. $3 contient le cas échéant des commandes sed
# supplémentaires # supplémentaires
# Si des fichiers suffixes existent, ne faire la copie que si un fichier
# approprié correspondant au système courant est trouvé
local src="$1" dest="$2" sedscript="$3" perms="${4:-go+rX}" local src="$1" dest="$2" sedscript="$3" perms="${4:-go+rX}"
local var found # vérifier les fichiers suffixe
local suffix have_suffix found_suffix
for suffix in "${__APACHE_AUTOCONF_SUFFIXES[@]}"; do
if [ -f "$src..$suffix" ]; then
have_suffix=1
if __apache_autoconf_check_suffix "$suffix"; then
found_suffix=1
src="$src..$suffix"
break
fi
fi
done
[ -n "$have_suffix" -a -z "$found_suffix" ] && return 1
# valeurs à remplacer dans le fichier
local var found_var
for var in "${FILLVARS[@]}"; do for var in "${FILLVARS[@]}"; do
if quietgrep "@@${var}@@" "$1"; then if quietgrep "@@${var}@@" "$src"; then
found=1 found_var=1
break break
fi fi
done done
if [ "$found_var" ]; then
if [ "$found" ]; then
sed "$FILLSCRIPT sed "$FILLSCRIPT
$sedscript" <"$src" >"$FILLTEMP" $sedscript" <"$src" >"$FILLTEMP"
src="$FILLTEMP" src="$FILLTEMP"
@ -272,10 +299,14 @@ function apache_autoconf() {
bits="$MYBITS" bits="$MYBITS"
fi fi
__apache_autoconf_setup || return 1 __apache_autoconf_setup || return 1
if check_sysinfos --vars sysname sysdist sysver bits -d debian -v jessie+; then if __apache_autoconf_check_suffix d8; then
confdefault=000-default.conf
confdefaultssl=default-ssl.conf
destconfsdir="$APACHECONFDIR/conf-available" destconfsdir="$APACHECONFDIR/conf-available"
a2xconf=1 a2xconf=1
elif check_sysinfos --vars sysname sysdist sysver bits -d debian; then elif __apache_autoconf_check_suffix d; then
confdefault=default
confdefaultssl=default-ssl
destconfsdir="$APACHECONFDIR/conf.d" destconfsdir="$APACHECONFDIR/conf.d"
fi fi
@ -347,7 +378,7 @@ function apache_autoconf() {
local -a confs local -a confs
local conf local conf
etitle "Installation des configurations" etitle "Installation des configurations"
array_from_lines confs "$(list_files "$confsdir" "*.conf")" array_from_lines confs "$(list_files "$confsdir" "*.conf" | __apache_autoconf_filter_suffix_files)"
for conf in "${confs[@]}"; do for conf in "${confs[@]}"; do
[ -z "$oneconf" -o "$conf" == "$oneconf" ] || continue [ -z "$oneconf" -o "$conf" == "$oneconf" ] || continue
@ -364,7 +395,7 @@ function apache_autoconf() {
local -a confs local -a confs
local conf local conf
etitle "Installation des configurations des modules" etitle "Installation des configurations des modules"
array_from_lines confs "$(list_files "$modulesdir" "*.conf")" array_from_lines confs "$(list_files "$modulesdir" "*.conf" | __apache_autoconf_filter_suffix_files)"
for conf in "${confs[@]}"; do for conf in "${confs[@]}"; do
[ -z "$onemodule" -o "$conf" == "$onemodule" ] || continue [ -z "$onemodule" -o "$conf" == "$onemodule" ] || continue
@ -397,9 +428,9 @@ function apache_autoconf() {
local -a confs local -a confs
local conf confname destconf certsconf local conf confname destconf certsconf
etitle "Installation des sites" etitle "Installation des sites"
array_lsfiles confs "$sitesdir" "*.conf" array_from_lines confs "$(list_files "$sitesdir" "*.conf" | __apache_autoconf_filter_suffix_files)"
for conf in "${confs[@]}"; do for confname in "${confs[@]}"; do
confname="$(basename "$conf")" conf="$sitesdir/$confname"
[ -z "$onesite" -o "$confname" == "$onesite" ] || continue [ -z "$onesite" -o "$confname" == "$onesite" ] || continue
certsconf= certsconf=
@ -411,8 +442,8 @@ function apache_autoconf() {
fi fi
fi fi
case "$confname" in case "$confname" in
default.conf) destconf=default;; default.conf) destconf="$confdefault";;
default.ssl.conf) destconf=default-ssl;; default.ssl.conf) destconf="$confdefaultssl";;
*) destconf="$confname";; *) destconf="$confname";;
esac esac
@ -446,12 +477,10 @@ s#@@ca@@#$APACHESSLCERTSDIR/$(basename "$ca")#g
local -a confs local -a confs
local conf local conf
etitle "Configuration de base" etitle "Configuration de base"
array_from_lines confs "$(list_files "$confdir")" array_add ignores confs.conf modules.conf sites.conf
array_from_lines confs "$(list_files "$confdir" | __apache_autoconf_filter_suffix_files)"
for conf in "${confs[@]}"; do for conf in "${confs[@]}"; do
array_contains ignores "$conf" && continue array_contains ignores "$conf" && continue
case "$conf" in
confs.conf|modules.conf|sites.conf) continue;;
esac
estep "$conf" estep "$conf"
__apache_autoconf_fillcopy \ __apache_autoconf_fillcopy \
"$confdir/$conf" \ "$confdir/$conf" \
@ -490,7 +519,7 @@ s#@@ca@@#$APACHESSLCERTSDIR/$(basename "$ca")#g
done done
fi fi
if [ -f "$confdir/sites.conf" ]; then if [ -f "$confdir/sites.conf" ]; then
local -a sitesconfs; local sitesconf local -a sitesconfs; local sitesconf enable
array_from_lines sitesconfs "$(<"$confdir/sites.conf" filter_conf)" array_from_lines sitesconfs "$(<"$confdir/sites.conf" filter_conf)"
if [ ${#sitesconfs[*]} -gt 0 ]; then if [ ${#sitesconfs[*]} -gt 0 ]; then
# si une configuration existe, ignorer la configuration # si une configuration existe, ignorer la configuration
@ -499,14 +528,25 @@ s#@@ca@@#$APACHESSLCERTSDIR/$(basename "$ca")#g
disablesites=() disablesites=()
for sitesconf in "${sitesconfs[@]}"; do for sitesconf in "${sitesconfs[@]}"; do
if [ "${sitesconf#+}" != "$sitesconf" ]; then if [ "${sitesconf#+}" != "$sitesconf" ]; then
array_del disablesites "${sitesconf#+}" enable=1
array_add enablesites "${sitesconf#+}" sitesconf="${sitesconf#+}"
elif [ "${sitesconf#-}" != "$sitesconf" ]; then elif [ "${sitesconf#-}" != "$sitesconf" ]; then
array_del enablesites "${sitesconf#-}" enable=
array_add disablesites "${sitesconf#-}" sitesconf="${sitesconf#-}"
else else
enable=1
fi
case "$sitesconf" in
default.conf) sitesconf="$confdefault";;
default.ssl.conf) sitesconf="$confdefaultssl";;
esac
if [ -n "$enable" ]; then
array_del disablesites "$sitesconf" array_del disablesites "$sitesconf"
array_add enablesites "$sitesconf" array_add enablesites "$sitesconf"
else
array_del enablesites "$sitesconf"
array_add disablesites "$sitesconf"
fi fi
done done
fi fi

View File

@ -1918,8 +1918,8 @@ function qsql(s) {'"
gsub(/'/, \"''\", s) gsub(/'/, \"''\", s)
return \"'\" s \"'\" return \"'\" s \"'\"
"'} "'}
function cqsql(s) { function cqsql(s, field) {
return "," qsql(s) return "," qsql(s) (field != ""? " " field: "")
} }
function unquote_mysqlcsv(s) { function unquote_mysqlcsv(s) {
gsub(/\\n/, "\n", s) gsub(/\\n/, "\n", s)

View File

@ -36,6 +36,7 @@ export TMPDIR="${TMPDIR:-${TMP:-${TEMP:-/tmp}}}"
# note: ajouter 'true' après le chargement de *nutoolsrc pour éviter que le # note: ajouter 'true' après le chargement de *nutoolsrc pour éviter que le
# module se termine sur une erreur si ces fichiers n'existent pas, ce qui # module se termine sur une erreur si ces fichiers n'existent pas, ce qui
# empêcherait de le charger avec urequire() # empêcherait de le charger avec urequire()
[ -f /etc/debian_chroot ] && UTOOLS_CHROOT=1
[ -f /etc/nutoolsrc ] && . /etc/nutoolsrc [ -f /etc/nutoolsrc ] && . /etc/nutoolsrc
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc [ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
true true

View File

@ -676,7 +676,14 @@ function git_track_branch() {
if ! git_have_rbranch "$branch" "$origin"; then if ! git_have_rbranch "$branch" "$origin"; then
git push "$origin" "$branch" || return git push "$origin" "$branch" || return
fi fi
git branch -t --set-upstream "$branch" "$origin/$branch" local version="$(LANG=C git version)"
version="${version#git version }"
eval "version=(${version//./ })"
if [ ${version[0]} -le 1 -a ${version[1]} -le 7 ]; then
git branch -t --set-upstream "$branch" "$origin/$branch"
else
git branch -u "$origin/$branch" "$branch"
fi
} }
function git_ensure_branch() { function git_ensure_branch() {
# retourner 0 si la branche a été créée, 1 si elle existait déjà, 2 en cas d'erreur # retourner 0 si la branche a été créée, 1 si elle existait déjà, 2 en cas d'erreur

42
rumount Executable file
View File

@ -0,0 +1,42 @@
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
urequire DEFAULTS
function display_help() {
uecho "$scriptname: démonter un système de fichier récursivement
USAGE
$scriptname mountpoint
Démonter tous les systèmes de fichiers qui sont montés en-dessous de mountpoint
puis démonter mountpoint. Démonter aussi tous les systèmes de fichiers
bind-montés à partir d'un sous-répertoire de mountpoint."
}
args=(--help '$exit_with display_help')
parse_args "$@"; set -- "${args[@]}"
mountp="$1"
[ -n "$mountp" ] || die "Vous dévez spécifier le système de fichier à démonter"
[ -d "$mountp" ] || die "$mountp: répertoire introuvable"
setx mountp=abspath "$mountp"
run_as_root "$@"
setx -a mountps=findmnt -nlo TARGET
array_contains mountps "$mountp" || die "Vous devez spécifier un répertoire de montage valide"
function show_all() {
findmnt -T "$mountp" -Rnlo TARGET
findmnt -nlo TARGET | awkrun mountp="$mountp" '{ if (substr($0, 1, length(mountp) + 1) == (mountp "/")) print }'
}
setx -a mounts=evalp show_all // sort -u // \
awk '{print length($0) "," $0}' // \
sort -nr // \
awk '{sub(/[0-9]+,/, ""); print}'
for mount in "${mounts[@]}"; do
estep "$mount"
umount "$mount" || die
done

View File

@ -270,9 +270,13 @@ elif array_contains GITANNEX_CMDS "$CMD"; then
elif [ "$CMD" == clone ]; then elif [ "$CMD" == clone ]; then
repourl="${1%.git}" repourl="${1%.git}"
[ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git" [ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git"
splitfsep "$repourl" : userhost path
destdir="$2" destdir="$2"
[ -n "$destdir" ] || setx destdir=basename -- "$repourl" if [ -z "$destdir" ]; then
setx destdir=basename -- "$path"
destdir="${destdir%.git}"
fi
[ -d "$destdir" ] && die "$(ppath "$destdir"): répertoire existant" [ -d "$destdir" ] && die "$(ppath "$destdir"): répertoire existant"
use_ssh_wrapper use_ssh_wrapper
@ -282,12 +286,15 @@ elif [ "$CMD" == clone ]; then
elif [ "$CMD" == crone ]; then elif [ "$CMD" == crone ]; then
repourl="${1%.git}" repourl="${1%.git}"
[ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git" [ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt git"
splitfsep "$repourl" : userhost path
destdir="$2" destdir="$2"
[ -n "$destdir" ] || setx destdir=basename -- "$repourl" if [ -z "$destdir" ]; then
setx destdir=basename -- "$path"
destdir="${destdir%.git}"
fi
[ -d "$destdir" ] && die "$(ppath "$destdir"): répertoire existant" [ -d "$destdir" ] && die "$(ppath "$destdir"): répertoire existant"
splitfsep "$repourl" : userhost path
splituserhost "$userhost" user host splituserhost "$userhost" user host
[ -n "$user" ] || user=git [ -n "$user" ] || user=git
[ -n "$host" ] || die "Vous devez spécifier l'hôte" [ -n "$host" ] || die "Vous devez spécifier l'hôte"