[#] 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.

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

Dodaj nową odpowiedź

Informacja:

Osoby zamieszczające wypowiedzi naruszające prawo lub prawem chronione dobra osób trzecich, mogą ponieść z tego tytułu odpowiedzialność karną lub cywilną. Upewnij się, że twoja wypowiedź nie godzi w niczyje mienie.

  • Internal paths in single or double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or path. Paths to files in single or double quotes, written as "files:somefile.ext", for example, are replaced with the appropriate URL that can be used to download the file.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <strong> <blockquote> <code>
  • Znaki końca linii i akapitu dodawane są automatycznie.

Więcej informacji na temat formatowania

Łapirobot
Proszę odpowiedzieć
r
L
G
P
8
7
V
z
h
v
Enter the code without spaces and pay attention to upper/lower case.