diff --git a/CHANGES.txt b/CHANGES.txt index 79dc3a0..a5f01ff 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,13 @@ +## Version 2.24.0 du 24/12/2015-09:58 + +b288cf2 apacheconfig: support des fichiers de confs --> /etc/apache2/cond.d sur debian wheezy- +2e3fe66 ussh: forcer l'allocation d'un tty avec --cc +58fa40c ussh: ajouter le support de uwatch +7bc63c5 maj doc uwatch +2d2754b ajout de uwatch pour afficher un compte +4376fff maj doc +bb176d7 maj du template pour runsconfig + ## Version 2.23.1 du 15/12/2015-11:01 d8d0cc8 cgilsxml: sélectionner automatiquement un groupe seul diff --git a/VERSION.txt b/VERSION.txt index 62eccae..ad22619 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -2.23.1 +2.24.0 diff --git a/apacheconfig b/apacheconfig index 2284e32..204518c 100755 --- a/apacheconfig +++ b/apacheconfig @@ -154,6 +154,7 @@ destdir= nohideconfig= templateopt= aac_certsdir= +bits= oneconf= onemodule= onesite= @@ -176,6 +177,7 @@ args=( -6,--squeeze '$array_add TEMPLATECTL_VARS sysver=squeeze' -7,--wheezy '$array_add TEMPLATECTL_VARS sysver=wheezy' -8,--jessie '$array_add TEMPLATECTL_VARS sysver=jessie' + --bits: bits= -u,--update,--deploy action=deploy -r:,--certsdir: aac_certsdir= --localhosts action=localhosts @@ -192,15 +194,17 @@ templatectl_loadvars "$config" && modified=1 if [ -n "$sysname" -o -n "$sysdist" -o -n "$sysver" ]; then ensure_sysinfos sysname sysdist sysver + custom_sysinfos=1 else sysname="$MYSYSNAME" sysdist="$MYSYSDIST" sysver="$MYSYSVER" + bits="$MYBITS" + custom_sysinfos= fi __template_set_var sysname "$sysname" __template_set_var sysdist "$sysdist" __template_set_var sysver "$sysver" -bits= if check_sysinfos --vars sysname sysdist sysver bits -d debian -v jessie+; then array_add TEMPLATECTL_SRCDIRS apacheconfig8 elif check_sysinfos --vars sysname sysdist sysver bits -d debian; then @@ -248,6 +252,7 @@ elif [ "$action" == deploy -o "$action" == localhosts ]; then ${oneconf:+--one-conf "$oneconf"} ${onemodule:+--one-module "$onemodule"} ${onesite:+--one-site "$onesite"} + ${custom_sysinfos:+--sysname "$sysname" --sysdist "$sysdist" --sysver "$sysver" --bits "$bits"} ) for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do array_add args -v "$__name=${!__name}" @@ -261,6 +266,7 @@ elif [ "$action" == deploy -o "$action" == localhosts ]; then --ignore "$(basename -- "$config")" ${oneconf:+--one-conf "$(basename -- "$oneconf")"} ${onemodule:+--one-module "$(basename -- "$onemodule")"} + ${custom_sysinfos:+--sysname "$sysname" --sysdist "$sysdist" --sysver "$sysver" --bits "$bits"} ) elif [ "$action" == localhosts ]; then etitle "Mise à jour de /etc/hosts" diff --git a/lib/ulib/.ulibver b/lib/ulib/.ulibver index 63a9860..6d1795a 100644 --- a/lib/ulib/.ulibver +++ b/lib/ulib/.ulibver @@ -1 +1 @@ -009009000 +009010000 diff --git a/lib/ulib/apache.tools b/lib/ulib/apache.tools index e2f2dfa..4934fb6 100644 --- a/lib/ulib/apache.tools +++ b/lib/ulib/apache.tools @@ -156,7 +156,7 @@ OPTIONS } function __apache_autoconf_setup() { - if ! check_sysinfos -s 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" return 1 fi @@ -236,6 +236,8 @@ function apache_autoconf() { local -a ignores local autoconfdir certsdir confdir confsdir oneconf modulesdir onemodule local sitesdir onesite cgibindir wwwdir certsconfdir rrdir onecms + local sysname sysdist sysver bits + local destconfsdir a2xconf local restart=1 parse_opts "${PRETTYOPTS[@]}" \ --help '$exit_with __display_apache_autoconf_help' \ @@ -252,9 +254,30 @@ function apache_autoconf() { --certsconfdir: certsconfdir= \ --rrdir: rrdir= \ --no-restart restart= \ + --sysname: sysname= \ + --sysdist: sysdist= \ + --sysver: sysver= \ + -6,--squeeze sysver=squeeze \ + -7,--wheezy sysver=wheezy \ + -8,--jessie sysver=jessie \ + --bits: bits= \ @ args -- "$@" && set -- "${args[@]}" || die "$args" + if [ -n "$sysname" -o -n "$sysdist" -o -n "$sysver" ]; then + ensure_sysinfos sysname sysdist sysver + else + sysname=("${MYSYSNAME[@]}") + sysdist=("${MYSYSDIST[@]}") + sysver=("${MYSYSVER[@]}") + bits="$MYBITS" + fi __apache_autoconf_setup || return 1 + if check_sysinfos --vars sysname sysdist sysver bits -d debian -v jessie+; then + destconfsdir="$APACHECONFDIR/conf-available" + a2xconf=1 + elif check_sysinfos --vars sysname sysdist sysver bits -d debian; then + destconfsdir="$APACHECONFDIR/conf.d" + fi # Configuration autoconfdir="$1"; shift @@ -320,7 +343,7 @@ function apache_autoconf() { fi # Gestion des configurations - if [ -d "$confsdir" -a \( -z "$onecms" -o "$oneconf" \) ]; then + if [ -d "$confsdir" -a \( -z "$onecms" -o -n "$oneconf" \) ]; then local -a confs local conf etitle "Installation des configurations" @@ -331,13 +354,13 @@ function apache_autoconf() { estep "$conf" __apache_autoconf_fillcopy \ "$confsdir/$conf" \ - "$APACHECONFDIR/conf-available/$conf" && modified=1 + "$destconfsdir/$conf" && modified=1 done eend fi # Gestion des modules - if [ -d "$modulesdir" -a \( -z "$onecms" -o "$onemodule" \) ]; then + if [ -d "$modulesdir" -a \( -z "$onecms" -o -n "$onemodule" \) ]; then local -a confs local conf etitle "Installation des configurations des modules" @@ -370,7 +393,7 @@ function apache_autoconf() { # Sites local -a enablesites disablesites - if [ -d "$sitesdir" -a \( -z "$onecms" -o "$onesite" \) ]; then + if [ -d "$sitesdir" -a \( -z "$onecms" -o -n "$onesite" \) ]; then local -a confs local conf confname destconf certsconf etitle "Installation des sites" @@ -434,7 +457,7 @@ s#@@ca@@#$APACHESSLCERTSDIR/$(basename "$ca")#g "$confdir/$conf" \ "$APACHECONFDIR/$conf" && modified=1 done - if [ -f "$confdir/confs.conf" ]; then + if [ -f "$confdir/confs.conf" -a -n "$a2xconf" ]; then local -a confs local conf array_from_lines confs "$(<"$confdir/confs.conf" filter_conf)" diff --git a/lib/ulib/sysinfos b/lib/ulib/sysinfos index 704d547..5c8d1e2 100644 --- a/lib/ulib/sysinfos +++ b/lib/ulib/sysinfos @@ -337,6 +337,12 @@ function check_sysinfos() { # check_sysinfos -d debian ubuntu -b 64 # pour tester si l'on est sur une distribution debian ou ubuntu *et* sur un # système 64 bits + # Note: avec l'option --vars, il peut arriver que sysname, sysdist ou sysver + # ne soient pas des tableaux mais des variables scalaires, surtout si elles + # sont fournies par l'utilisateur. Il est conseillé dans ce cas de tester + # toutes les possibilités quand on vérifie une valeur, e.g.: + # check_sysinfos --vars sysname sysdist sysver bits -s linux64 linux32 linux + # pour tester si on est sur un système linux # Avec l'option -v, il est possible de suffixer la valeur avec + ou - selon # que l'on veut toutes les versions situées après ou avant la version # spécifiée. Attention, à cause d'une limitation de l'implémentation, il diff --git a/lib/ulib/templates/apacheconfig/README-apacheconfig.txt b/lib/ulib/templates/apacheconfig/README-apacheconfig.txt index b9f63a0..bd574ef 100644 --- a/lib/ulib/templates/apacheconfig/README-apacheconfig.txt +++ b/lib/ulib/templates/apacheconfig/README-apacheconfig.txt @@ -11,7 +11,7 @@ confs.conf Si une configuration est de la forme -conf, elle est désactivée. Si une configuration est de la forme +conf, elle est activée. Cette syntaxe permet de supporter les configurations dont le nom commencerait par '-' - Ce fichier n'est supporté qu'à partir de debian jessie. + IMPORTANT: Ce fichier n'est supporté qu'à partir de debian jessie. modules.conf Liste des modules qu'il faut activer. Si un module existe mais n'est pas @@ -30,8 +30,8 @@ confs/ Répertoire des configurations à installer. Les fichiers de ce répertoire sont de la forme CONF.conf et sont installés dans le répertoire /etc/apache2/conf-available. Il faut mentionner la configuration dans le - fichier confs.con pour l'activer. - Ce répertoire n'est supporté qu'à partir de debian jessie. + fichier confs.conf pour l'activer. + IMPORTANT: Ce répertoire n'est supporté qu'à partir de debian jessie. modules/ Répertoire des configurations de modules à installer. Les fichiers de ce diff --git a/lib/ulib/templates/runsconfig/config b/lib/ulib/templates/runsconfig/config.rr similarity index 100% rename from lib/ulib/templates/runsconfig/config rename to lib/ulib/templates/runsconfig/config.rr diff --git a/lib/ulib/templates/runsconfig/default b/lib/ulib/templates/runsconfig/default.rr similarity index 100% rename from lib/ulib/templates/runsconfig/default rename to lib/ulib/templates/runsconfig/default.rr diff --git a/lib/ulib/templates/runsconfig/services b/lib/ulib/templates/runsconfig/services.rr similarity index 100% rename from lib/ulib/templates/runsconfig/services rename to lib/ulib/templates/runsconfig/services.rr diff --git a/lib/ulib/templates/runsconfig/userdefault b/lib/ulib/templates/runsconfig/userdefault.rr similarity index 100% rename from lib/ulib/templates/runsconfig/userdefault rename to lib/ulib/templates/runsconfig/userdefault.rr diff --git a/runsconfig b/runsconfig index 278706f..fdd80aa 100755 --- a/runsconfig +++ b/runsconfig @@ -14,8 +14,7 @@ OPTIONS -c, --create Créer un nouveau répertoire de configuration pour un hôte -d, --destdir DESTDIR[=$TEMPLATECTL_NAME] - Nom du répertoire local de configuration. Utiliser 'apacheconfig' par - défaut. + Nom du répertoire local de configuration. -t, --template [OPT] Gérer les fichiers du répertoire local avec templatectl. La valeur de diff --git a/ussh b/ussh index baa2957..317c628 100755 --- a/ussh +++ b/ussh @@ -66,6 +66,10 @@ Les options suivantes sont exclusives à ce script: for host in "${hosts[@]}"; do ${exec:+exec} "$ssh" "${options[@]}" "$host" "${args[@]}" done'" + --cc + Assumer que nutools est installé sur l'hôte distant, et y lancer uwatch + avec l'option --cc, pour permettre de garder la connexion active dans le + cadre d'une redirection de port. Si la variable UTOOLS_USSH_RSYNC_SUPPORT contient une valeur non vide, l'analyse des arguments s'arrête à la première valeur qui n'est pas une option, afin de @@ -272,6 +276,7 @@ remove= remove_only= exec=1 parse= +uwatch= parse_opts ${UTOOLS_USSH_RSYNC_SUPPORT:++} "${PRETTYOPTS[@]}" \ --help '$exit_with display_help' \ -1,-2,-4,-6,-A,-a,-C,-f,-g,-K,-k,-M,-N,-n,-q,-s,-T,-t,-V,-v,-X,-x,-Y,-y '$__update_SSHOPTS "$option_"' \ @@ -287,6 +292,7 @@ parse_opts ${UTOOLS_USSH_RSYNC_SUPPORT:++} "${PRETTYOPTS[@]}" \ --exec exec=1 \ --no-exec exec= \ --parse '$parse=1; remove=' \ + --cc uwatch=1 \ @ args -- "$@" && set -- "${args[@]}" || die "$args" if [ -n "$remove" ]; then @@ -309,6 +315,9 @@ fi [ -n "$SSH" ] || SSH=ssh if [ -n "$parse" ]; then show_vars "$@" +elif [ -n "$uwatch" ]; then + __update_SSHOPTS -t + do_ssh "/usr/local/nutools/uwatch --cc" else do_ssh "$@" fi diff --git a/uwatch b/uwatch new file mode 100755 index 0000000..0e6af74 --- /dev/null +++ b/uwatch @@ -0,0 +1,79 @@ +#!/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: afficher l'heure + +USAGE + $scriptname [options] + +OPTIONS + -t, --time + Afficher l'heure (par défaut) + -c, --count + Afficher le temps écoulé depuis le lancement de ce script + -u, --units + Avec l'option --count, afficher l'unité: sec., min. ou heures + -o, --offset NBSEC + Avec l'option --count, spécifier un nombre de secondes à partir duquel + compter + -s, --step NBSECS[=1] + Spécifier la période de rafraichissement de l'affichage + -a, --prefix PREFIX + Spécifier une chaine à afficher avant l'heure + -z, --suffix SUFFIX + Spécifier une chaine à afficher après l'heure + --cc + Equivalent à -c -s 5 -a 'Connecté sur \$MYHOST depuis ' -z '...' + Permet de garantir une activité sur une connexion SSH utilisée + uniquement pour faire une redirection de port" +} + +DEFAULT_STEP=1 + +what=time +units= +offset= +step= +prefix= +suffix= +args=( + --help '$exit_with display_help' + -t,--time what=time + -c,--count what=count + -u,--units units=1 + -o:,--offset: offset= + -s:,--step: step= + -a:,--prefix: prefix= + -z:,--suffix: suffix= + --cc '$what=count; units=1; step=5; prefix="Connecté sur $MYHOST depuis "; suffix="..."' +) +parse_args "$@"; set -- "${args[@]}" + +[ -n "$step" ] || step="$DEFAULT_STEP" +setx start=date +%s +[ -n "$offset" ] && start=$(($start - $offset)) + +while true; do + case "$what" in + time) + setx msg=date +%H:%M:%S + ;; + count) + setx now=date +%s + TZ= setx msg=date -d "@$(($now - $start))" +%H:%M:%S + msg="${msg#00:}"; msg="${msg#00:}" + if [ -n "$units" ]; then + if [ ${#msg} -ge 8 ]; then msg="$msg heures" + elif [ ${#msg} -eq 5 ]; then msg="$msg min" + elif [ ${#msg} -eq 2 ]; then msg="${msg#0} sec" + fi + fi + [ ${#msg} -eq 2 ] && msg="${msg#0}" + ;; + esac + echo -n $'\e[1G\e[K'"$prefix$msg$suffix" + sleep "$step" +done