N-PN White-Hat Project
L'absurdité d'apache \o/ - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Communauté (https://dev.n-pn.fr/forum/forumdisplay.php?fid=10)
+--- Forum : Le bistrot (https://dev.n-pn.fr/forum/forumdisplay.php?fid=17)
+--- Sujet : L'absurdité d'apache \o/ (/showthread.php?tid=2750)



L'absurdité d'apache \o/ - InstinctHack - 24-02-2013

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


RE: L'absurdité d'apache \o/ - gruik - 24-02-2013

(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


RE: L'absurdité d'apache \o/ - InstinctHack - 24-02-2013

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 ?


RE: L'absurdité d'apache \o/ - gruik - 25-02-2013

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


RE: L'absurdité d'apache \o/ - InstinctHack - 25-02-2013




RE: L'absurdité d'apache \o/ - gruik - 25-02-2013

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


RE: L'absurdité d'apache \o/ - b0fh - 25-02-2013

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.


RE: L'absurdité d'apache \o/ - gruik - 25-02-2013

(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.