Forum Astuces.divers [Web] créer un serveur web (une page) sans serveur web

Posté par .
Tags : aucun
1
13
août
2004
Grace à xinetd, créer un fichier
www dans le répertoire /etc/xinetd.d/
avec le contenu :

service socks

{
disable = no
socket_type = stream
wait = no
user = www
server = /home/www/www.sh
}

puis dans le répertoire /home/www,
créer le script suivant :

#!/bin/bash
echo "Content-Type: text/html"
echo

cat << EOF
<html>
<body>
Hello World
</body>
</html>
EOF


Il suffit ensuite d'aller visiter la page http://localhost:1080 et le tour est joué.
  • # Utilisateur www

    Posté par (page perso) . Évalué à 4.

    Ne faut-il pas d'abord créer l'utilisateur www ? Tout au moins, le rajouter dans le fichier des utilisateurs ?
  • # L'accés au port donné a été désactivé pour des raisons de sécurité.

    Posté par . Évalué à 1.

    Ce que me dit mozilla quand je fais le test ;)

    On peut changer de port ?
  • # une partie en echo et une partie en cat

    Posté par . Évalué à 2.

    Il y a une raison particulière à ça?
    • [^] # Re: une partie en echo et une partie en cat

      Posté par . Évalué à 1.

      Non si je ne dis pas de bêtises, ça aurait très bien pu s'écrire
      sous cette forme (ne pas oublier la ligne vide entre le content-type
      et les données)

      cat << EOF
      Content-Type: text/html

      <html>
      <body>
      Hello World
      </body>
      </html>
      EOF
  • # Comment demarre t'on ce nouveau service creé?

    Posté par . Évalué à 1.

    Comment demarre t'on ce nouveau service? Est il demarre automatiquement? c'est pas le cas chez moi.
    ai je raté quelque chose?
  • # Paramètres GET ou POST

    Posté par . Évalué à 1.

    Peut-on récupérer les valeurs des paramètres lors d'un appels avec GET, ou même avec post.

    Probablement, mais comment doit-on s'y prendre, il ne me semble pas avoir eu me moindre indice avec $ENV.

    • [^] # Re: Paramètres GET ou POST

      Posté par . Évalué à 2.

      Tout est envoyé sur l'entrée standard, donc tu as moyen de lire les entêtes dans &0. Ce script lis les entêtes envoyées par ton navigateur puis les affiche:
      HEADERS=""
      
      while read -u 0 line; do
              if [ "$line" = $'\r' ]; then
                      break;
              fi
              HEADERS=$HEADERS$line$'\n'
      done
      
      cat <<EOF
      HTTP/1.0 200 Ok
      Content-Type: text/plain
      
      $HEADERS
      EOF
      Ensuite tu peux récupérer x caractères de données envoyées par le navigateur quand la méthode est POST et que tu as une entête Content-Length
  • # Et l'entête de status ?

    Posté par . Évalué à 2.

    C'est effectivement une bonne idée, mais il manque au moins le header de status ! Il faut renvoyer HTTP/1.1 200 OK pour faire les choses proprement.

    Ici le script est écrit comme un CGI-BIN, et c'est ce qu'il faut, mais c'est faire abstraction du fait que l'entête du document est d'habitude complété automatiquement par les modules d'Apache.

    Maintenant, le navigateur fait avec et c'est normal, mais ça peut poser problème dans certains cas, proxys, firewalls ou vieux navigateurs, par exemple.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.