[AWK] : créer un serveur web minimaliste

Dans un post précédent, nous avions vu comment lancer un serveur web en python. Cela ne prenait qu’une seule ligne par les miracles de python.

Mais saviez vous qu’avec AWK vous pouviez faire pareil ? c’est fou non ? ben oui c’est possible mais attention cela ne se fait pas en une seule ligne (ou sinon elle sera bien loin du one-liner).

#!/usr/bin/gawk -f
BEGIN {
if (ARGC < 2) { print "Usage: wwwawk  file.html"; exit 0 }
	Concnt = 1;
        while (1) {
        RS = ORS = "\r\n";
        HttpService = "/inet/tcp/8080/0/0";
        getline Dat < ARGV[1];
        Datlen = length(Dat) + length(ORS);
        while (HttpService |& getline ){
		if (ERRNO) { print "Connection error: " ERRNO; exit 1}
                print "client: " $0;
                if ( length($0) < 1 ) break;
        }
        print "HTTP/1.1 200 OK"             |& HttpService;
        print "Content-Type: text/html"     |& HttpService;
        print "Server: wwwawk/1.0"          |& HttpService;
        print "Connection: close"           |& HttpService;
        print "Content-Length: " Datlen ORS |& HttpService;
        print Dat                           |& HttpService;
        close(HttpService);
        print "OK: served file " ARGV[1] ", count " Concnt;
        Concnt++;
      }
} 

 

Après avoir créé votre fichier donnez lui les droits qui vont bien (755) par exemple et créez une fichier file.html. Lancez le script et rendez vous sur votre localhost:8080 et le fichier sera servi.

Je trouve ça trop fort quand même. Pas vous ?

Source : bon article de tuxgraphics

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s