Bezpieczny serwer WWW w BASH-u.
Strona opisuje bezpieczny serwer WWW napisany w niecałych 100 liniach w języku skryptowym BASH. Zawiera kod źródłowy i krótki opis wraz ze screenshotami.
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- 40
Strona opisuje bezpieczny serwer WWW napisany w niecałych 100 liniach w języku skryptowym BASH. Zawiera kod źródłowy i krótki opis wraz ze screenshotami.
Komentarze (40)
najlepsze
Tu udało mi się napisać serwer WWW w BASH-u w niecałych stu liniach.
Wprawdzie istnieją podobne serwery, ale wszyscy ich twórcy zastrzegają, że nie należy ich stosować. Mój serwer jest wprawdzie wolny, gdy w grę wchodzi kilka połączeń na raz
Ja kiedyś zastanawiałem się co ludzie widzą zabawnego w stronce BASH-a (bo byłem przekonany, że to taka zwykła stronka o shellu, dopóki nie zajrzałem).
Jednak, zauważ, że serwer generuje HTML-owe wyjście, gdy zapytasz go o katalog. A że jest to serwer raczej do szybkiego udostępnienia komuś plików, to nawet specjalnie ustawiam taki typ MIME, żeby klient zdecydował się ściągać zamiast np. pobierać.
Pytanie jeszcze co znaczy serwer WWW, myślę, że to dość szerokie pojęcie :).
może macie link do jakiegoś tutoriala "jak napisać prosty serwer http"?
Naucz się basha (kursów w pi*** i troche na seci) i przeanalizuj kod serwera www z tego wykopu. Nauczysz się o wiele więcej niż z jakiegokolwiek tutka.
Chodziło mi o tutorial
- jak zarezerwować sobie port x
- jak nadawać/odbierać na niego dane
- jakie cechy musi spełniać program, aby był serwerem.
Tutaj prawie wszystko robi netcat.
chcaił bym tutorial jak napisać coś znacznie prostrzego (serwer
niestety nie udalo mi sie uruchomic:
./www.sh: line 63: nc: command not found
sob, 10 maj 2008, 22:45:11 UTC INFO Processing as file
sob, 10 maj 2008, 22:45:11 UTC INFO Killing nc
./www.sh: line 74: kill: (3936) - Nie ma takiego procesu
sob, 10 maj 2008, 22:45:11 UTC INFO Running nc
i tak dalej i tak dalej....
brakuje mi pewnie jakiejś paczki. tylko w skład jakiego pakietu
Komentarz usunięty przez moderatora
Serwer działa na zasadzie:
1. otwórz port
2. poczekaj na zgłoszenie
3. obsłuż zgłoszenie
3a. jeśli katalog, to daj listing z linkami
3b. jeśli plik, to daj cat
4. zamknij port
5. idź do 1
Łatwo sobie wyobrazić, że serwer nie obsłuży kilku połączeń na raz, a nawet sekwencyjne odpytywanie może się zakończyć niepowodzeniem, jeśli zapytanie przyjdzie dokładnie pomiędzy krokiem 4 i 5.
-p source_port
... It is an error to use this option in conjunction with the -l option.
zmienilem linijkę:
nc -l -p "$port" < "$sin" > "$sout" &
na:
nc -l "$port" < "$sin" > "$sout" &
I wszystko smiga;)