Mikroserwer ISA
Mikroserwer bazujący na karcie sieciowej ISA oraz mikrokontrolerze ATmega32.
Bazuje na projekcie opisanym na stronie http://www.ulrichradig.de/. Oryginalny kod źródłowy został okrojony z kilku funkcjonalności jak czytnik MMC i dostosowany do nowszej wersji gcc/avr-libc. Przez ponad rok (V 2007 - VI 2008) urządzenie pracowało bez przerw jako serwer telemetryczny z którego korzystał m.in. skrypt php prezentujący temperaturę na innej podstronie. Zostało zastąpione przez estetyczniejszy - jeśli można tu mówić o jakiejkolwiek estetyce - mikroserwer z mikrokontrolerem PIC18F67J60.
Ponieważ ruch na stronie jest raczej nieregularny serwer nie pozwalał na skuteczne gromadzenie
danych w bazie - skrypt php pełniący funkcję klienta jest również wywoływany nieregularnie.
Z tego względu uzupełniłem kod mikroserwera o funkcjonalność prostego - prawdopodobnie
zbyt prostego do poważniejszych zastosowań - klienta TCP. Środowisko: WinAVR-20060421.
mikroserwer_20080331.zip (97kB)
Uwaga! Kod nie był przeze mnie testowany pod kątem zachowania w obcym/wrogim środowisku czy też przy użyciu fuzzera. Możliwe są ukryte błędy prowadzące do nieokreślonego zachowania, np. buffer overrun w pliku http.c:
unsigned char File_Name[13]; if ( memcmp(&buffer[tcpdata],"GET /",5) == 0) { char *tmppointer = &buffer[tcpdata + 5]; unsigned char counter = 0; while (* tmppointer != 0x20) { File_Name[counter] = *tmppointer++; counter++; }
Wskazane jest umieszczenie mikroserwera za routerem i ograniczenie oferowanych usług tylko do minimalnego wymaganego zestawu.
Kilka zdjęć: