Hallo, seit 2 Jahren hab ich schon den AVR Webserver, ein altes Projekt von (U.Radig / Buss) mit Isa Card / Software Version 1.39 auf Atmega32. nun braucht das Ding nen neue Aufgabe : auf meiner Webseite läuf dank Michael ein PHP Skript diese Webseite soll nun 1 x Stunde aktiviert werden. der frühere "Webserver" soll zum CronServer werden dh: in von mir bestimmten Intervallen soll eine (meine) Webseite aufgerufen werden ein Cron Job ähnlich wie WEBCRON.ORG ihn anbietet. für mich wichtig : die Software sollte, bis auf die neue Funktion(Cron) bestehen bleiben. ich kenne mich zwar mit grob mit C aus, aber nicht mit TCP / IP. Kann mir vieleicht einer von euch einen Tipp geben bei welcher Datei tcp.c httpd.c oder.. /Funktion ich ansetzten soll. Auszug aus dem Originalprogramm : //Sendet das erzeugte TCP Packet Write_Ethernet_Frame (buffer,*bufferlen); if (Buffer_Full == 0) { #if USE_MMC tcp_socket->Cluster = 0; #endif //USE_MMC tcp_socket->Status = TCP_SOCKET_CLOSE; } return; ich hoffe jemand versteht was ich meine anbei : ein Cronjob bei meinem WebAccount würde mich 10,00 € extra im Monat kosten, der freie Cronjobanbieter ist evtl. in 2 Jahren nicht mehr da. gruß Stephan
Sehr konfus... Schreib doch nochmal genau, was jede Stunde passieren soll, und welcher der ?drei? beteiligten Server das jede Stunde initieren soll. Und was hat dein Quelltextschnipsel damit zu tun? War der Post zu kurz?
Hallo Ernst Sehr konfus.. du hast Recht Es soll / ist ein Email-Checker Beispiele 1) mit anderer Software / anderes Board http://home.arcor.de/fuenfundachtzig/me/me.htm gut dokumentiert 2) http://www.icplan.de/seite23.htm hat eine Preisliste / ohne Quellcode 3) mit der Fritzbox : http://www.vollkornpapier.de/artikel-Email-Checker-mit-der-Fritz-Box-Fon-WLAN-%2528POP3-und-IMAP%2529-seite1.html meine Fritzbox steht im Keller, und die Software der Fritzbox kann und will ich ohne Plan nicht verändern. 4) mein Board, hier das Original Beitrag "Einfacher und billiger Webserver mit AtMega32" ############################################ es geht mir um den Lerneffekt und Freude am schaffen, aber manchmal bin ich einfach nur zu dumm. noch mal eine Kurzbeschreibung: auf meinem Board mit ISA Card soll eine LED leuchten, wenn mein Postfach (WEB.DE) eine E-Mail erhalten hat. ########## es funktioniert derzeit alles. wenn Email da, dann LED an ########### ich muss nur zu viele externe Dienste (2 Stück) in Anspruch nehmen Beispiel das PhP-Skript auf meiner Homepage bei 1&1 prüft bei Web.de ob neue Email vorhanden ist, dieses Skript wird 1x pro Stunde durch "anpingen" meiner Homepage ausgeführt. diese "anpingen" erledigt derzeit der CRON-Dienstanbieter WEBCRON.ORG mit einer Softwareergänzung auf meinem Board sollte es nun möglich sein dass mein Board die Funktion "anpingen" mit übernimmt und ich WEBCRON.ORG (ist gratis) wieder deaktivieren kann. viele Grüße Stephan
eigene Ergänzung : in der Softwareversion 1.40 gibt es die Möglichkeit E-Mail zu senden. Dateien Sendmail.c Sendmail.h also eine E-Mail an die Adresse Xyz.de senden jetzt müsste ich diese Dateien doch nur einbinden und alles rauswerfen was ncht benötigt wird und genau da ist mein Problem was muss stehenbleiben so das nur die IP abgeschickt wird. ich will die Webseite nur "anpingen" und keine E-Mail schicken Stephan
Ah, also in etwa: AVR-Webserver startet HTTP GET auf http://deinewebseite.de/xxx/cron.php Webserver deinewebseite.de führt cron.php aus, dabei: => greift er auf Web.de zu, checked nach mails => Schickt neuen Status an den AVR-Webserver, wiederrum über HTTP GET auf http://deinAVRwebserver.de/xxx/yyy Webserver deinewebseite.de ist mit cron.php fertig, beendet verbindung. AVR-Webserver ist mit GET fertig. d.h. du brauchst für den AVR neben dem HTTP-Server auch noch einen HTTP-Client. und der AVR muss mindestens zwei Verbindungen gleichzeitig offen haben können (einmal outgoing, einmal incoming) Wenn der Webserver auf uIP basiert, geht das out-of-the-box nicht, da kanns z.B. nur eine appstate_t typedef geben... wenns was anderes ist, wirst du wohl tief in den Quelltext einsteigen müssen... EDIT: wenn das mit deinem sendmail.c funktioniert, sollte das auch leicht für einen HTTP-GET request umzuschreiben sein... evtl reicht: Verbindung aufbauen,
1 | GET /pfad/pingme.php HTTP/1.0 |
2 | Host: www.deinwebserver.de |
Senden, und auf verbindungsende warten.
Hallo Ernst, mir fällt gerade ein: ich könnte doch meiner Webseite bei 1&1 per Sendmail.c eine E-Mail schicken, die Webseite kann damit zwar nichts anfangen aber "angepingt" ist "angepingt". es wäre aber schön wenn es sauberer ginge. ######## dein Text ##### evtl reicht: Verbindung aufbauen, GET /pfad/pingme.php HTTP/1.0 Host: www.deinwebserver.de Senden, und auf verbindungsende warten. ################ das reicht, aber was muss im Quelltext geändert werden ? im Originalquelltext Sendmail.c blick ich nicht durch danke Stephan
Stephan wrote: > ich könnte doch meiner Webseite bei 1&1 per Sendmail.c eine E-Mail > schicken, die Webseite kann damit zwar nichts anfangen aber "angepingt" > ist "angepingt". > es wäre aber schön wenn es sauberer ginge. was soll das "anpingen" bringen? Um ein Script auf deinem WebServer zu starten bedarf es einer HTTP-GET Anweisung an den Server. Ein e-mail wird nichts bringen, da Mailserver <> WebServer Der Ansatz bei sendmail.c is sicherlich der einfachste Weg. so wie ich das sehe baut der sendmail void die Verbindung auf und der smtp void überträgt dann a la Telnet die SMTP-Kommandos, wartet auf die Statusmeldungen des Servers und wertet diese aus. Du musst nur die IP-Adresse vom WebServer dort einsetzen, wo die Adresse vom SMTP-Server is (ich vermute im Header) und eine HTTP-Anforderung senden. Die Daten, die da zurückkommen sind dein Status... Probiers mal: öffne "telnet www.deinserver.com 80" wenn Verbunden gib "GET /" ein und wart was passiert... Grüße, Markus
Warum so kompliziert? Auch web.de sollte den Zugang zu ihrem Email-Server mit dem standardisierten POP3-Protokoll unterstützen. Und einen POP3-Mail-Checker sollte man auf einem AVR mit Netzwerk hinbekommen; das Protokoll ist recht simpel. Mit telnet kann man das ausprobieren: telnet pop3.web.de 110 Dann auf die Begrüßungsmeldung warten [r] +OK WEB.DE POP3-Server [w] USER HORST [r] +OK Bitte Kennwort eingeben/enter password [w] PASS GLOTTKE [r] +OK Mailbox locked and ready [w] STAT [r] +OK 572 90547605 [w] QUIT (mit [r] gekennzeichnete Zeilen wurden empfangen, mit [w] gekennzeichnete gesendet) Anstelle von HORST und GLOTTKE sind natürlich sinnvolle Anmeldedaten anzugeben. Die Klartextmeldungen hinter '+OK' haben nur Kommentarcharakter; ich habe keinen web.de-Account und kann daher die web.de-Meldungen nicht vollständig wiedergeben. Interessant ist die Antwort auf das STAT-Kommando, hier wird in zwei Zahlen die Anzahl der gespeicherten Nachrichten und deren Gesamtgröße in Bytes ausgegeben. Dieses Postfach ist offensichtlich ziemlich voll ... Mit QUIT wird die Verbindung beendet. Eine ausführliche Protokollbeschreibung findet sich hier http://www.ietf.org/rfc/rfc1939.txt
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.