/* Web_Authentication.ino - Webduino Authentication example */ /* This example assumes that you're familiar with the basics * of the Ethernet library (particularly with setting MAC and * IP addresses) and with the basics of Webduino. If you * haven't had a look at the HelloWorld example you should * probably check it out first */ /* you can change the authentication realm by defining * WEBDUINO_AUTH_REALM before including WebServer.h */ #define WEBDUINO_AUTH_REALM "Weduino Authentication Example" // username = user // password = user #include "SPI.h" #include "Ethernet.h" #include "WebServer.h" #include "TextFinder.h" static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; static uint8_t ip[] = { 192, 168, 1, 177 }; /* This creates an instance of the webserver. By specifying a prefix * of "", all pages will be at the root of the server. */ #define PREFIX "" WebServer webserver(PREFIX, 80); void defaultCmd(WebServer &server, WebServer::ConnectionType type, char *, bool) { server.httpSuccess(); if (type != WebServer::HEAD) { P(helloMsg) = "

Hallo, Welt!

Status

Bedienung"; server.printP(helloMsg); } } // create the Status LEDs P(led_on) = ""; P(led_off) = ""; // create an HTML button void htmlButton( WebServer server, char * label, char *name, int nameId, char *value) { P(buttonBegin) = "

"; server.printP(buttonEnd); } // void unknownPage(EthernetClient client, char *page) // { // Serial.print("Unknown : "); // Serial.println("page"); // sendHeader(server,"Unknown Page"); // server.println("

Unknown Page

"); // server.println(page); // server.println(""); // } // send a standard http response header /* void sendHeader(EthernetClient client, char *title) { webserver.println("HTTP/1.1 200 OK"); webserver.println("Content-Type: text/html"); webserver.println(); webserver.print(""); webserver.println(title); webserver.println(""); }*/ void bedienungCmd(WebServer &server, WebServer::ConnectionType type, char *, bool) { if (server.checkCredentials("dXNlcjp1c2Vy")) { server.httpSuccess(); if (type != WebServer::HEAD) { P(helloMsg) = "

Hallo User

"; server.printP(helloMsg); server.println(""); // show the input pins for (int i = 0; i < 0; i++) // pins 2-4 are inputs { pinMode(i, INPUT); //digitalWrite(i, HIGH); // turn on pull-ups server.print(""); } } // show output pins 5-9 // note pins 10-13 are used by the ethernet shield for (int i = 2; i < 6; i++) { server.print(""); } server.println("
digital input "); server.print(i); server.print(" "); server.print("  "); server.print(" "); server.print("  "); if (digitalRead(i) == LOW) { server.printP(led_off); } else { server.printP(led_on); server.println("
digital output "); server.print(i); server.print(" "); htmlButton(server, "On", "pinD", i, "1"); server.print(" "); server.print(" "); htmlButton(server, "Off", "pinD", i, "0"); server.print(" "); if (digitalRead(i) == LOW) { server.printP(led_off); } else { server.printP(led_on); server.println("
"); } } } else { server.httpUnauthorized(); } } // copy data out of program memory into local storage, write out in // chunks of 32 bytes to avoid extra short TCP/IP packets // from webduino library Copyright 2009 Ben Combee, Ran Talbott void printP (EthernetClient client, const prog_uchar *str) { uint8_t buffer[32]; size_t bufferEnd = 0; while (buffer[bufferEnd++] = pgm_read_byte(str++)) { if (bufferEnd == 32) { client.write(buffer, 32); bufferEnd = 0; } } // write out everything left but trailing NUL if (bufferEnd > 1) { client.write(buffer, bufferEnd - 1); } } void statusCmd(WebServer &server, WebServer::ConnectionType type, char *, bool) { if (server.checkCredentials("dXNlcjp1c2Vy")) { server.httpSuccess(); if (type != WebServer::HEAD) { P(helloMsg) = "

Hallo User

"; server.printP(helloMsg); server.println("

Digital Pins

"); // show the value of digital pins server.println(""); for (int i = 2; i < 10; i++) { //pinMode(i, INPUT); // turn on pull-ups //digitalWrite(i, HIGH); server.print(""); } server.println("
digital pin "); server.print(i); server.print(" "); if (digitalRead(i) == LOW) { server.printP(led_off); } else { server.printP(led_on); server.println("
"); server.println(""); } } } /* if the user has requested this page using the following credentials * username = admin * password = admin * display a page saying "Hello Admin" * * in other words: "YWRtaW46YWRtaW4=" is the Base64 representation of "admin:admin" */ else if (server.checkCredentials("YWRtaW46YWRtaW4=")) { server.httpSuccess(); if (type != WebServer::HEAD) { P(helloMsg) = "

Hallo Admin

"; server.printP(helloMsg); server.println("

Digital Pins

"); // show the value of digital pins server.println(""); for (int i = 2; i < 10; i++) { pinMode(i, INPUT); // turn on pull-ups //digitalWrite(i, HIGH); server.print(""); } server.println("
digital pin "); server.print(i); server.print(" "); if (digitalRead(i) == LOW) { server.printP(led_off); } else { server.printP(led_on); server.println("
"); server.println(""); } } } else { /* send a 401 error back causing the web browser to prompt the user for credentials */ server.httpUnauthorized(); } } void analogCmd(WebServer &server, WebServer::ConnectionType type, char *, bool) { if (server.checkCredentials("dXNlcjp1c2Vy")) { server.httpSuccess(); if (type != WebServer::HEAD) { P(helloMsg) = "

Hallo User

"; server.printP(helloMsg); } } } void setup() { Ethernet.begin(mac, ip); webserver.setDefaultCommand(&defaultCmd); webserver.addCommand("index.html", &defaultCmd); webserver.addCommand("status.html", &statusCmd); webserver.addCommand("bedienung.html", &bedienungCmd); //webserver.addCommand("analog.htnl", &analogCmd); webserver.begin(); } void loop() { char buff[64]; int len = 64; /* process incoming connections one at a time forever */ webserver.processConnection(buff, &len); /*EthernetClient client = webserver.available(); if (client) { TextFinder finder(client ); int type = 0; while (client.connected()) { if (client.available()) { // GET, POST, or HEAD if (finder.getString("","/", buffer,sizeof(buffer))) { if (strcmp(buffer, "GET ") == 0 ) { type = 1; } else if (strcmp(buffer,"POST ") == 0) { type = 2; } Serial.print("Type = "); Serial.println(type); Serial.println(); break; } } } // give the web browser time to receive the data delay(1); client.stop(); }*/ }