• Reklamy Google

  • aph216 +11  

    Nie do końca jest to serwer WWW, bo wszystkie pliki przesyła jako application/x-download-this.

    pokaż komentarz
    aph216
  • Quake +2  

    To słuszna uwaga.

    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 :).

    pokaż komentarz
    Quake
  • voldenet +2  

    Chwila moment, a pobierać i ściagać to nie to samo?

    pokaż komentarz
    voldenet
  • Quake 0  

    Kurde, faktycznie miało być ściągać, a nie wyświetlać :D

    pokaż komentarz
    Quake
  • Nivertius 0  

    A nie wystarczyłoby:
    "Content-Type: file --mime $file"

    pokaż komentarz
    Nivertius
  • Quake +22  

    BASH to powłoka systemu Linux. Jedna z wielu dostępnych, ale chyba najczęściej stosowana. Umożliwia pisanie skryptów na bardzo wysokim poziomie, z wykorzystaniem gotowych programów (w przeciwieństwie do bibliotek w innych językach programowania).

    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 (bowiem może je zrealizować tylko po kolei), ale jest dość bezpieczny (jeśli się go używa z głową), aby móc go bez skrupółów uruchomić nie tylko dla zabawy, ale również, by podzielić się pewnymi plikami ze znajomymi w bardzo szybki sposób.

    Przykładowe działanie jest zobrazowane screenshotami.

    pokaż komentarz
    Quake
  • radd +1  

    czyżby była jeszcze nadzieja dla wykopu? :)
    może macie link do jakiegoś tutoriala "jak napisać prosty serwer http"?

    pokaż komentarz
    radd
  • Kszyh +1  

    no, ale po co Ci tutorial ?
    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.

    pokaż komentarz
    Kszyh
  • radd 0  

    dzięki, znam basha :P Na codzień korzystam z Linuksa i używam go dość często w różnego rodzaju skryptach. Nie jest trudny, to tylko kilka podstawowych operacji do spięcia programów znajdujących się w systemie.
    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 serwujący wyłącznie index.html, bez zabezpieczeń) i taki jak napisać coś znacznie trudniejszego w "prawdziwym" języku programowania np. Pythonie.
    tak kod wiele pokazuje, on coś robi, ale nie wytłumaczy mi dlaczego to robi :P

    pokaż komentarz
    radd
  • wujekbogdan +1  

    niezle. oby wiecej takich wykopow.

    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 wchodzi nc i co to w ogóle jest nc?

    pokaż komentarz
    wujekbogdan
  • Quake 0  

    brakuje Ci netcata

    Sprawdź czy masz komendę netcat (bo w niektórych dystrybucjach jest nc, w innych netcat).

    Jeśli masz netcata a nie masz nc, to podmień po prostu nc na netcat i przetestuj.

    Jeśli nie masz ani nc ani netcata, to ściągnij sobie z paczek do systemu.

    Pamiętajmy, żeby nie próbować pogadawać portów poniżej 1000, gdyż może je tylko otworzyć program działający z prawami administratora systemu!

    pokaż komentarz
    Quake
  • tbhthelolmaker 0  

    [komentarz usunięty]

    pokaż komentarz
    tbhthelolmaker
  • Quake +2  

    Przepraszam. Błąd zaokrąglenia.

    pokaż komentarz
    Quake
  • Kszyh +1  

    chciałem go przetestować httperf... no chyba jednak za wysoką mu poprzeczke postawiłem :) bo httperf wywalił błęda po 4 sekundach (prawdopodobnie bashserwer nie nadarzał obsługiwać połączenia)... a szkoda :(

    pokaż komentarz
    Kszyh
  • Quake +2  

    Dzięki za chęć zrobienia benchmarka. Aż sam byłbym ciekawy.

    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.

    Niewątpliwą natomiast zaletą jest czas uruchamiania serwera (około 0 sekund) i instalacji (czas skopiowania do pliku + wpisanie bash nazwapliku numerportu -- jakieś 10 sekund).

    Dzięki za wszystkie komentarze i wykopy, nie spodziewałem się TAKIEGO rezultatu :)

    pokaż komentarz
    Quake
  • livarot +16  

    Tytuł pewnie jest trochę mylący dla młodego, nieulinuksiowionego wykopowego pokolenia : )

    pokaż komentarz
    livarot
  • fman +2  

    Nie da się ukryć, każdy z nas pomyślał o innym niż ten bashu... :)

    pokaż komentarz
    fman
  • Quake 0  

    Pewnie chodziło wam o http://bash.org.pl/ :D

    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).

    pokaż komentarz
    Quake
  • fanzonun +2  

    No tak, netcat ;)

    pokaż komentarz
    fanzonun
  • Quake +2  

    netcat dobry jest :)

    pokaż komentarz
    Quake
  • Obi-San +1  

    Kawał dobrej roboty. Gz Quake!

    pokaż komentarz
    Obi-San
  • krzysiekdrozd -1  

    pewnie i tak lepiej działa niż IIS :p

    pokaż komentarz
    krzysiekdrozd
  • fanzonun +1  

    No chyba żartujesz :P IIS to całkiem niezły serwer.

    pokaż komentarz
    fanzonun
  • fanzonun +2  

    Widzę, że trafiłem na maniaków religijnych, no cóż, tak to już jest z komputerami :)

    pokaż komentarz
    fanzonun
  • heathenreel +1  

    Nie, trafiłeś na dyletantów. ;)

    Polecam jeszcze artykuł:
    http://webhosting.pl/kategorie/tips_tricks/software/jak_i_do_czego_wykorzystywac_netcat_spoofing_serwer_plikow_www_uptime

    pokaż komentarz
    heathenreel
  • Quake -1  

    trafiłem na kilka serwerów WWW w BASH-u, ale większość jest zupełnie nieedukacyjnymi wybrykami w mniej niż 10 liniach. Mój serwer np. wycina wszystkie kropki, slesze i minusy z początku URL-a, oraz ciąg "..", co sprawia, że nie powinien on dać dostępu do plików, które nie znajdują się w katalogu bieżącym (no chyba, że ktoś zrobi sobie linka -- na własną prośbę)

    pokaż komentarz
    Quake
  • wowo86 0  

    Jest do tego wtyczka do PHPa ? :>

    pokaż komentarz
    wowo86
  • hind 0  

    napisz serwer w php, i po problemie (używając socket_create). Lub użyj php w trybie cgi.
    A swoją drogą, to nie myślałem że bash jest aż tak potężny.

    pokaż komentarz
    hind
  • Socek -1  

    Bash jest potęzny. Ale przy dużych projektach jest po prostu nie czytelny.

    pokaż komentarz
    Socek
  • Quake +2  

    Hehe, nawet myślałem o wsparciu wykonywaniu skryptów

    Np. jeśli nazwa pliku kończy się na .qsmf (quake server magic file) to zamiast go catować do netcata, serwer by go wykonywał i dawał jego wyjście do netcata. Wtedy można w takim pliku używać dowolnych języków skryptowych: php, python, ruby, perl, bash ;)

    pokaż komentarz
    Quake
  • anath0r -9  

    ale ja nie rozumie wytłumacz mi to......

    pokaż komentarz
    anath0r
  • voldenet -1  

    Ciekawe czy serwer w pliku .bat dałoby się napisać w 10^10^10^10 liniach... :)

    pokaż komentarz
    voldenet
  • heathenreel +2  

    Netcat jest też na windę, więc wydaje mi się, że czemu nie. :)

    pokaż komentarz
    heathenreel
  • bectrux 0  

    Jesli ktos spotkalby sie z problemem dotyczacym niepoprawnych opcji do netcata, to interpretujac man'a do mojego nc:
    -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;)

    pokaż komentarz
    bectrux
  • Quake 0  

    o to ciekawe, mamy chyba jakieś inne wersje ;)

    pokaż komentarz
    Quake
  • tmi 0  

    Więc BASH jest językiem programowania?, a czy takim samym czy innym od ZSH, CSH?, jakie są różnice pomiędzy nimi?

    pokaż komentarz
    tmi
  • Quake 0  

    BASH (http://pl.wikipedia.org/wiki/Bash) jest shellem, ale zgodnie ze wszelkimi definicjami również językiem programowania.

    Różnice w stosunku do innych shellów (jak np. wymienione przez Ciebie zsh, csh):
    http://www.unix.com/answers-frequently-asked-questions/12274-difference-between-ksh-bash-different-shells.html

    pokaż komentarz
    Quake
  • wujekmisiek 0  

    świetna sprawa ;D

    pokaż komentarz
    wujekmisiek
  • hind 0  

    fuck, w złym miejscu odpowiedziałem :/ miało byćdo Quake, a jak wyszło widać...
    to się nazywa CGI :p

    pokaż komentarz
    hind
  • Quake +1  

    no się nazywa i nie do końca, bo CGI to jednak pewien standard, nie będę nazywać czegoś co działa jak CGI tym terminem, bo jednak to nie do końca to samo ;)

    pokaż komentarz
    Quake
pokaż 

Wykopali i zakopali (171 / 0)