[#] Mini serwer http w kilku linijkach języka C

( Ostatnio zmieniony pon., 09/06/2008 - 13:35 )
 

miniserwer.c

#include <stdio.h>
#include <ctype.h>

#define BUFSIZE 5000
int main()
{
  char buf[BUFSIZE];
  int cnt = 0;
  FILE *f;
  while ( buf[0] != 13 && buf[0] != 10 && cnt < 100 )
  {
    cnt++;
    fgets(buf, BUFSIZE-1, stdin);
  }

  f = fopen("/var/www/htdocs/strona.html", ); <----- tu zmien na wlasna sciezke
  while ( fgets(buf, BUFSIZE-1, f ) )
  printf("%s", buf);
  return 0;
}

Całoś kompilujemy: gcc -o /usr/local/sbin/miniserwer miniserwer.c

Uruchomienie naszego serwerka

w pliku /etc/services dodaj port naszego serwerka: np.: 200/tcp czyli wstawiamy linię:

miniserwer 200/tcp

w pliku /etc/xinetd.d/mi­niserwer wpisz:

service miniserv {
   socket_type     = stream
   protocol        = tcp
   port            = 200
   flag            = nowait
   user            = root
   server          = /usr/local/sbin/miniserwer
   wait            = no
}

lub jeśli używasz inetd to w /etc/inetd.con­f wpisz:

miniserwer stream tcp nowait root /usr/local/sbin/miniserwer

i zrestartuj demona inetd wydając polecenie w konsoli: killall -HUP inetd

Ustawienia sieciowe

Przekierowanie komputera 192.168.0.2 na port na którym słucha nasz miniserwer

dla iptables

iptables  -t nat -A PREROUTING -s 192.168.0.2 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:200

dla ipchains

ipchains  -A output -s 192.168.0.2 -d 0/0 -p TCP -j REDIRECT 200

gdzie 192.168.0.1 to IP naszego serwera na którym działa miniserwer, a 192.168.0.2 to nasza „ofiara“

Uruchamiamy nasz serwerek w tle, wydając poniższe polecenie:

miniserwer &

Testowanie

Łączymy się na adres ip 192.168.0.1 wy­korzystując przeglądarkę www.

5
Twoja ocena: Brak Średnio: 5 (3 głosy)