• STATISTIQUES
  • Il y a eu un total de 0 membres et 30628 visiteurs sur le site dans les dernières 24h pour un total de 30 628 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking
    [FR] PHP Débutant
    Apprendre le PHP par l'exemple, facilement et simplement. Réservé d'abord aux débutants....
    Programmation
    [EN] phrack
    Lot's of stuff !
    Hacking
    [EN] Big-Daddy
    Big-Daddy est site internet communautaire avec un effectif diversifié, y compris des artistes, des programmeur...
    Hacking
    [FR] InfoMirmo
    Apprentissage de l'informatique par l'intermédiaire de challenges de sécurité. Venez app...
    Hacking
    [FR] Newbie Contest
    Crackme: 35, Cryptographie: 49, Hacking: 27, Javascript/Java: 17, Logique: 31, Programmation: 23, Stéganographie: 53
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
L'absurdité d'apache \o/
24-02-2013, 21h19 (Modification du message : 24-02-2013, 21h20 par InstinctHack.)
Message : #1
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
L'absurdité d'apache \o/
Io,

Je re-configure mon serveur apache et franchement je trouve qu'apache dis parfois de la merde :
Citation : khaled@loopinfinity:/etc/apache2$ sudo service apache2 reload
* Reloading web server config [ OK ]
khaled@loopinfinity:/etc/apache2$ sudo service apache2 status
Apache2 is NOT running.

Citation :khaled@loopinfinity:/etc/apache2$ sudo service apache2 stop
* Stopping web server apache2 [ OK ]
khaled@loopinfinity:/etc/apache2$ sudo service apache2 stop
* Stopping web server apache2 [ OK ]

Citation :AccessFileName htaccess #AccessFileName .htaccess
[cette ligne est valide]
< Files ~ "^ht"> #< Files ~ "^\.ht">
[celle-là non O.o]

Quand les programmes disent n'importe quoi \o/ ils imitent les gens sur irc :p
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
24-02-2013, 21h39
Message : #2
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: L'absurdité d'apache \o/
(24-02-2013, 21h19)khaled a écrit : Je re-configure mon serveur apache et franchement je trouve qu'apache dis parfois de la merde

sauf qu'en l'occurence c'est l'initscript propre à ta distribution qui donne ce résultat, apache n'y est pour rien

Citation :Quand les programmes disent n'importe quoi \o/ ils imitent les gens sur irc :p

ou sur certains forums, heureusement que c'est pas non plus en permanence Wink
+1 (0) -1 (0) Répondre
24-02-2013, 22h17
Message : #3
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: L'absurdité d'apache \o/
Ah bon ? Bah quand je crée un deamon sur mon pc, j'ai les variables qu'il me faut pour afficher un message qui correspond à la situation.
C'est pas pareil ici ?
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
25-02-2013, 01h30
Message : #4
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: L'absurdité d'apache \o/
si si, c'est l'initscript qui gere les options start/stop/status/reload/force-reload/restart, effectue ses tests et affiche "stopping web server ... [ok]/[failed]", c'est propre a chaque distribution et si le code (bash) est en général pas très compliqué, force est de constater que coder un _bon_ initscript n'est pas si trivial qu'on pourrait le croire

quoiqu'il en soit, si tu le trouve et le paste sur le forum on pourra peut-être tenter de le corriger ma foi, ça sera toujours ça de constructif au final Smile
+1 (1) -1 (0) Répondre
25-02-2013, 02h24
Message : #5
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: L'absurdité d'apache \o/
Et voilà pour messieur!
en provenance direct de /etc/init.d/apache2
Code BASH :

#!/bin/sh
### BEGIN INIT INFO
# Provides:          apache2
# Required-Start:    $local_fs $remote_fs $network $syslog $named
# Required-Stop:     $local_fs $remote_fs $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Start/stop apache2 web server
### END INIT INFO

set -e

SCRIPTNAME="${0##*/}"
SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}"
if [ -n "$APACHE_CONFDIR" ] ; then
    if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
        DIR_SUFFIX="${APACHE_CONFDIR##/etc/apache2-}"
    else
        DIR_SUFFIX=
    fi
elif [ "${SCRIPTNAME##apache2-}" != "$SCRIPTNAME" ] ; then
    DIR_SUFFIX="-${SCRIPTNAME##apache2-}"
    APACHE_CONFDIR=/etc/apache2$DIR_SUFFIX
else
    DIR_SUFFIX=
    APACHE_CONFDIR=/etc/apache2
fi
if [ -z "$APACHE_ENVVARS" ] ; then
    APACHE_ENVVARS=$APACHE_CONFDIR/envvars
fi
export APACHE_CONFDIR APACHE_ENVVARS

ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"
if [ "$APACHE_CONFDIR" != /etc/apache2 ] ; then
    ENV="$ENV APACHE_CONFDIR=$APACHE_CONFDIR"
fi
if [ "$APACHE_ENVVARS" != "$APACHE_CONFDIR/envvars" ] ; then
    ENV="$ENV APACHE_ENVVARS=$APACHE_ENVVARS"
fi


#edit /etc/default/apache2 to change this.
HTCACHECLEAN_RUN=auto
HTCACHECLEAN_MODE=daemon
HTCACHECLEAN_SIZE=300M
HTCACHECLEAN_DAEMON_INTERVAL=120
HTCACHECLEAN_PATH=/var/cache/apache2$DIR_SUFFIX/mod_disk_cache
HTCACHECLEAN_OPTIONS=""

APACHE_HTTPD=$(. $APACHE_ENVVARS && echo $APACHE_HTTPD)
if [ -z "$APACHE_HTTPD" ] ; then
    APACHE_HTTPD=/usr/sbin/apache2
fi
if [ ! -x $APACHE_HTTPD ] ; then
    echo "No apache MPM package installed"
    exit 0
fi

. /lib/lsb/init-functions

test -f /etc/default/rcS && . /etc/default/rcS

if [ -f /etc/default/apache2$DIR_SUFFIX ] ; then
    . /etc/default/apache2$DIR_SUFFIX
elif [ -f /etc/default/apache2 ] ; then
    . /etc/default/apache2
fi

APACHE2CTL="$ENV /usr/sbin/apache2ctl"
HTCACHECLEAN="$ENV /usr/sbin/htcacheclean"

PIDFILE=$(. $APACHE_ENVVARS && echo $APACHE_PID_FILE)
if [ -z "$PIDFILE" ] ; then
    echo ERROR: APACHE_PID_FILE needs to be defined in $APACHE_ENVVARS >&2
    exit 2
fi


check_htcacheclean() {
    [ "$HTCACHECLEAN_MODE" = "daemon" ] || return 1

    [ "$HTCACHECLEAN_RUN"  = "yes"    ] && return 0

    MODSDIR=$(. $APACHE_ENVVARS && echo $APACHE_MODS_ENABLED)
    [ "$HTCACHECLEAN_RUN"  = "auto" \
      -a -e ${MODSDIR:-$APACHE_CONFDIR/mods-enabled}/disk_cache.load ] && \
        return 0
   
    return 1
}

start_htcacheclean() {
    if [ ! -d "$HTCACHECLEAN_PATH" ] ; then
        echo "... directory $HTCACHECLEAN_PATH does not exist!" >&2
        return 1
    fi    
    $HTCACHECLEAN $HTCACHECLEAN_OPTIONS -d$HTCACHECLEAN_DAEMON_INTERVAL \
            -i -p$HTCACHECLEAN_PATH -l$HTCACHECLEAN_SIZE
}

stop_htcacheclean() {
    pkill -P 1 -f "htcacheclean.* -p$HTCACHECLEAN_PATH " 2> /dev/null || echo ...not running
}

pidof_apache() {
    # if there is actually an apache2 process whose pid is in PIDFILE,
    # print it and return 0.
    if [ -e "$PIDFILE" ]; then
        if pidof apache2 | tr ' ' '\n' | grep -w $(cat $PIDFILE); then
            return 0
        fi
    fi
    return 1
}

apache_stop() {
    if $APACHE2CTL configtest > /dev/null 2>&1; then
        # if the config is ok than we just stop normaly
                $APACHE2CTL stop 2>&1 | grep -v 'not running' >&2 || true
    else
        # if we are here something is broken and we need to try
        # to exit as nice and clean as possible
        PID=$(pidof_apache) || true

        if [ "${PID}" ]; then
            # in this case it is everything nice and dandy and we kill apache2
            echo
            log_warning_msg "The apache2$DIR_SUFFIX configtest failed, so we are trying to kill it manually. This is almost certainly suboptimal, so please make sure your system is working as you'd expect now!"
                        kill $PID
        elif [ "$(pidof apache2)" ]; then
            if [ "$VERBOSE" != no ]; then
                                echo " ... failed!"
                    echo "You may still have some apache2 processes running.  There are"
                     echo "processes named 'apache2' which do not match your pid file,"
                    echo "and in the name of safety, we've left them alone.  Please review"
                    echo "the situation by hand."
                        fi
                        return 1
        fi
    fi
}

apache_wait_stop() {
    # running ?
    PIDTMP=$(pidof_apache) || true
    if kill -0 "${PIDTMP:-}" 2> /dev/null; then
        PID=$PIDTMP
    fi

    apache_stop

    # wait until really stopped
    if [ -n "${PID:-}" ]; then
        i=0
        while kill -0 "${PID:-}" 2> /dev/null;  do
                if [ $i = '60' ]; then
                    break;
                 else
                    if [ $i = '0' ]; then
                            echo -n " ... waiting "
                    else
                                  echo -n "."
                     fi
                    i=$(($i+1))
                    sleep 1
                  fi
         done
    fi
}

case $1 in
    start)
        log_daemon_msg "Starting web server" "apache2"
        if $APACHE2CTL start; then
            if check_htcacheclean ; then
                log_progress_msg htcacheclean
                start_htcacheclean || log_end_msg 1
            fi
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
    ;;
    stop)
        if check_htcacheclean ; then
            log_daemon_msg "Stopping web server" "htcacheclean"
            stop_htcacheclean
            log_progress_msg "apache2"
        else
            log_daemon_msg "Stopping web server" "apache2"
        fi
        if apache_wait_stop; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
    ;;
    graceful-stop)
        if check_htcacheclean ; then
            log_daemon_msg "Stopping web server" "htcacheclean"
            stop_htcacheclean
            log_progress_msg "apache2"
        else
            log_daemon_msg "Stopping web server" "apache2"
        fi
        if $APACHE2CTL graceful-stop; then
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
    ;;
    reload | force-reload | graceful)
                log_daemon_msg "Reloading web server config"
                if pidof_apache > /dev/null ; then
                    log_progress_msg "apache2"
                    if ! $APACHE2CTL configtest > /dev/null 2>&1; then
                        log_end_msg 1
                        $APACHE2CTL configtest || true
                        exit 1
                    fi
                    if $APACHE2CTL graceful $2 ; then
                        log_end_msg 0
                    else
                        log_end_msg 1
                    fi
                else
                    log_progress_msg "apache2 not running"
                    log_end_msg 0
                fi
    ;;
    restart)
        if ! $APACHE2CTL configtest > /dev/null 2>&1; then
            $APACHE2CTL configtest || true
            log_end_msg 1
            exit 1
        fi
        if check_htcacheclean ; then
            log_daemon_msg "Restarting web server" "htcacheclean"
            stop_htcacheclean
            log_progress_msg apache2
        else
            log_daemon_msg "Restarting web server" "apache2"
        fi
        PID=$(pidof_apache) || true
        if ! apache_wait_stop; then
                        log_end_msg 1 || true
                fi
        if $APACHE2CTL start; then
            if check_htcacheclean ; then
                start_htcacheclean || log_end_msg 1
            fi
                        log_end_msg 0
                else
                        log_end_msg 1
                fi
    ;;
    start-htcacheclean)
        log_daemon_msg "Starting htcacheclean"
        start_htcacheclean || log_end_msg 1
        log_end_msg 0
    ;;
    stop-htcacheclean)
        log_daemon_msg "Stopping htcacheclean"
            stop_htcacheclean
            log_end_msg 0
    ;;
    status)
        PID=$(pidof_apache) || true
        if [ -n "$PID" ]; then
            echo "Apache2$DIR_SUFFIX is running (pid $PID)."
            exit 0
        else
            echo "Apache2$DIR_SUFFIX is NOT running."
            if [ -e "$PIDFILE" ]; then
                exit 1
            else
                exit 3
            fi
        fi
    ;;
    *)
        log_success_msg "Usage: /etc/init.d/apache2$DIR_SUFFIX {start|stop|graceful-stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean|status}"
        exit 1
    ;;
esac

 
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
25-02-2013, 10h55
Message : #6
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: L'absurdité d'apache \o/
la ligne 60 "source" le script init-functions de manière à pouvoir utiliser les fonctions log_*
Code BASH :

. /lib/lsb/init-functions
 


les fonctions les plus utiles/courantes sont décrites dans les specs LSB

typiquement c'est la fonction log_end_msg() qui est chargée d'afficher un "[OK]"/"[FAIL]" ou "Done."/"Failed." etc. (selon la distribution), elle prend en argument 1 paramètre, 0 pour OK, 255 (-1) pour un warning, toute autre valeur est un nok/fail

dans le code de l'initscript que tu pastes on voit tres clairement l'appel pour le cas d'un "apache stop" par exemple (lignes 193-197) :
Code BASH :

    if apache_wait_stop; then
        log_end_msg 0 # ok
    else
        log_end_msg 1 # pas ok
    fi
 


c'est donc le retour de apache_wait_stop() qui va determiner l'affichage, sauf que quand on regarde la fonction il n'y a simplement aucun return, et la tournure de la fonction laisse également peu de doute; la fonction réussi toujours, du coup on obtient toujours un [OK] Wink
+1 (0) -1 (0) Répondre
25-02-2013, 21h58 (Modification du message : 25-02-2013, 21h59 par b0fh.)
Message : #7
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: L'absurdité d'apache \o/
Petite observation: quand tu essaies d'arrêter un service déja arrêté, ou de démarrer un service déja démarré, est-ce que le script d'init doit signaler une erreur ou pas ?

Dans le premier cas, si un stop te retourne une erreur: tu ne sais pas si le service tourne toujours parce qu'il n'a pas réussi a s'arrêter, ou s'il ne tournait pas au départ, et donc ne tourne toujours pas. Quand le start retourne une erreur, tu ne sais pas si c'est parce que le service n'a pas pu démarrer, ou parce qu'il était déja lancé.

Dans le deuxième, quand un start te retourne OK, tu sais que le service tourne, et en cas d'erreur tu sais qu'il ne tourne pas. Quand un stop te retourne OK, tu sais que le service ne tourne pas, et en cas d'erreur tu sais qu'il tourne toujours. Ce que tu ne sais pas, c'est quel était l'état du service avant l'exécution du script.

Mais dans la majorité des cas, ce que tu as envie de savoir en observant le code de retour du script, c'est si le service, a l'heure actuelle, tourne ou pas. Le passé est moins important.

Donc, le deuxième comportement (répondre OK quand on essaie d'arrêter un service déja arrêté) est probablement meilleur que le premier.
+1 (0) -1 (0) Répondre
25-02-2013, 22h32
Message : #8
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: L'absurdité d'apache \o/
(25-02-2013, 21h58)b0fh a écrit : Petite observation: quand tu essaies d'arrêter un service déja arrêté, ou de démarrer un service déja démarré, est-ce que le script d'init doit signaler une erreur ou pas ?

yep c'est précisément ce que j'entendais par "c'est pas si trivial qu'on pourrait le croire", sachant que même si on admet que le script doit aller plus profond dans son diagnostic on est dans la foulée confronté à d'autres problématiques et ainsi de suite, et d'une chose en amenant une autre on est vendredi et on a rien dépilé et on redoute le coup de tel fatidique de la MOA et on sait pas comment on va expliquer le tout dans son compte rendu d'activité alors de peur de se faire engueuler on menace de se suicider en se jetant de la fenêtre du rez-de-chaussée etc. etc.
ça peut mener très loin faut faire gaffe.
+1 (0) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 6 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut