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,
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