Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <Ethernet.h>
- #include <SD.h>
- #include <TextFinder.h>
- byte MACAdress[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; //MAC Adresse
- byte IPAdress[] = {10, 0, 12, 12}; //IP Adresse
- byte sdPin = 4; //Pin der SD-Karte
- int const HTTPPORT = 80;
- EthernetServer myServer(HTTPPORT); // Webserver auf angegebenen Port starten
- File webFile;
- void setup() {
- Ethernet.begin(MACAdress, IPAdress); // Ethernet initialisieren
- myServer.begin(); // Server starten
- Serial.begin(9600);
- Serial.println("ARDUINO - STEUERUNG");
- Serial.println("Initialisiere SD-Karte...");
- if (!SD.begin(sdPin))
- {
- Serial.println(" - Initialisierung der SD-Karte fehlgeschlagen!");
- return;
- }
- Serial.println(" - SD-Karte erfolgreich initialisiert.");
- if (!SD.exists("index.htm"))
- {
- Serial.println(" - Datei (index.htm) wurde nicht gefunden!");
- return;
- }
- Serial.println(" - Datei (index.htm) wurde gefunden.");
- Serial.println();
- Serial.println("Verbraucher schalten");
- }
- void SendOKpage(EthernetClient &client)
- {
- boolean currentLineIsBlank = true;
- char c = client.read();
- client.println("HTTP/1.1 200 OK");
- client.println("Content-Type: text/html");
- client.println("Connection: close");
- client.println();
- webFile = SD.open("index.htm"); //Webseite laden
- if (webFile)
- {
- while(webFile.available())
- {
- client.write(webFile.read()); //Webseite an Client schicken
- }
- webFile.close();
- }
- if (c == '\n')
- {
- currentLineIsBlank = true;
- }
- else if (c != '\n')
- {
- currentLineIsBlank = false;
- }
- delay(1);
- client.stop();
- }
- void SendAuthentificationpage(EthernetClient &client)
- {
- client.println("HTTP/1.1 401 Authorization Required");
- client.println("WWW-Authenticate: Basic realm=\"Secure Area\"");
- client.println("Content-Type: text/html");
- client.println("Connnection: close");
- client.println();
- client.println("<!DOCTYPE HTML>");
- client.println("<HTML> <HEAD> <TITLE>Error</TITLE>");
- client.println(" </HEAD> <BODY><H1>401 Unauthorized.</H1></BODY> </HTML>");
- }
- char linebuf[80];
- int charcount=0;
- boolean authentificated=false;
- void loop() {
- EthernetClient client = myServer.available();
- if (client) {
- Serial.println("new client");
- memset(linebuf,0,sizeof(linebuf));
- charcount=0;
- authentificated=false;
- boolean currentLineIsBlank = true;
- while (client.connected()) {
- if (client.available()) {
- char c = client.read();
- linebuf[charcount]=c;
- if (charcount<sizeof(linebuf)-1) charcount++;
- Serial.write(c);
- if (c =='\n' && currentLineIsBlank) {
- if (authentificated)
- SendOKpage(client);
- else
- SendAuthentificationpage(client);
- break;
- }
- if (c == '\n') {
- // you're starting a new line
- currentLineIsBlank = true;
- if (strstr(linebuf,"Authorization: Basic")>0 && strstr(linebuf,"cbGxhOmdlcg==")>0)
- authentificated=true;
- memset(linebuf,0,sizeof(linebuf));
- charcount=0;
- }
- else if (c != '\r') {
- // you've gotten a character on the current line
- currentLineIsBlank = false;
- }
- }
- }
- delay(1);
- client.stop();
- Serial.println("client disconnected");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment