Betreff: Daten/Werteübergabe ins Internet bzw. einen Internetserver (PHP?); Überlegungen zu einem 'guten/optimalen' Code
Und wieder mal eine Frage wie man so etwas am besten 'richtig' programmiert:
Hintergrund:
Ich möchte gerne von meinem Systray-Programm die ausgelesenen Werte wie z.B: restlicher Festplattenplatz; Problemmeldungen aus dem Ereignisprotokoll, Statusmeldungen etc... an einen Server im Internet weitergeben.
Dort sollen die Daten dann in eine mySQL-Datenbank geschrieben werden.
Diese können dann über eine Admin-Weboberfläche ausgegeben werden.
Meine Frage ist wie man am besten die Daten vom lokalen Purebasic-Programm ins Internet übergibt.
(Es geht hier nur um die Schnittstelle Purebasic - der Internet-Server und dessen Programmierung spielt hier keine Rolle!)
Überlegungen von mir waren:
- die Daten per E-Mail an den entsprechenden Server schicken; - Purebasic schickt eine E-Mail an einen (bestimmten) Empfänger und ein php-Script wertet die E-Mails dann alle x Minuten aus; Die E-Mail könnte dann vom Inhalt her ähnlich einer INI-Datei aufgebaut sein.
- per SFTP an den entsprechenden Server als TXT oder CSV in ein Verzeichnis legen; - Purebasic baut eine SFTP-Verbindung aus und ein php-Script geht das Verzeichnis alle x Minuten durch und verarbeitet die TXT-Dateien. Auch hier könnte die Text-Datei vom Inhalt her ähnlich einer INI-Datei aufgebaut sein. (Weitere Stichwörter: JSON, XML, ...)
- per Direktverbindung (?); Purebasic ruft einen 'Pfad' auf und übergibt die Daten per "HTTP-Zeile'. (Dazu habe ich auch schon verschiedene Foreneinträge gefunden, bin aber nicht so wirklich überzeugt.) Ich stelle mir das so vor: PurebasicAnInternet( "https://www.server.de/auswertung.php?wertx=y&werty=z..." );
Vielleicht auch ein Kombination aus alledem? Daten werden verschickt/abgelegt und ein Script aufgerufen damit der Server weiß, dass er nachsehen soll/muss. ( PurebasicAnInternet( "https://www.server.de/DuHastMail.php") )
Was gibt es denn sonst noch für Ideen und Möglichkeiten Werte (Zahlen oder Strings) von meinem Purebasic-Programm an einen (öffentlichen) Internet-Server (sicher) zu übertragen?
Bin für jede Anregung dankbar. (Egal wie abwegig
Danke und Gruß
Kaltstart
Daten/Werteübergabe ins Internet bzw. einen Internetserver
Re: Daten/Werteübergabe ins Internet bzw. einen Internetserv
@Kaltstart:
die Daten kannst Du mit HTTPRequest() (bzw. HTTPRequestMemory()) an Dein PHP-Script senden.
Das mit dem Mail- bzw. SFTP-Gedöns würde ich persönlich nicht machen.
Grüße ... Peter
die Daten kannst Du mit HTTPRequest() (bzw. HTTPRequestMemory()) an Dein PHP-Script senden.
Das mit dem Mail- bzw. SFTP-Gedöns würde ich persönlich nicht machen.
Grüße ... Peter
Hygge
Re: Daten/Werteübergabe ins Internet bzw. einen Internetserv
@Peter:
Hallo Peter,
Schlechte Erfahrungen, Probleme, aufwändiger, unzuverlässig...? Was sind Deine persönlichen Erfahrungen?
Hat noch jemand eine Anmerkung/Info dazu?
Danke und Gruß
David aka Kaltstart
Hallo Peter,
...und warum nicht?Kiffi hat geschrieben: Das mit dem Mail- bzw. SFTP-Gedöns würde ich persönlich nicht machen.
Schlechte Erfahrungen, Probleme, aufwändiger, unzuverlässig...? Was sind Deine persönlichen Erfahrungen?
Hat noch jemand eine Anmerkung/Info dazu?
Danke und Gruß
David aka Kaltstart
Re: Daten/Werteübergabe ins Internet bzw. einen Internetserv
zu aufwändig, zu fehleranfällig, zu umständlich.Kaltstart hat geschrieben:...und warum nicht?
Stell Dir vor, Du müsstest einen Bekannten über einen Sachverhalt informieren.
Hierbei ist es Dir wichtig zu wissen, dass er erstens die Information erhält und zweitens die Information verstanden hat.
Dir stehen nun zwei Möglichkeiten der Informationsübermittlung zur Verfügung:
Entweder Du rufst Deinen Bekannten an oder Du schreibst ihm einen Brief.
Ich nehme stark an, dass Du Dich für die erste Möglichkeit entscheiden würdest, denn die zweite garantiert nicht, dass der Brief zugestellt, gelesen und verstanden wird.
Ein HttpRequest() entspricht dem Telefonat. Die Daten werden sofort zugestellt und der Adressat kann direkt rückmelden, dass die Daten korrekt angekommen sind.
Grüße ... Peter
Hygge
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Daten/Werteübergabe ins Internet bzw. einen Internetserv
FTP oder SFTP ist schlecht, denn Host, Nutzername und Passwort könnten mitgeschnitten oder aus der Executable extrahiert werden und dann kann jeder deinem Server jeden Mist schicken und dich vollspammen.
Mails kann man normalerweise nicht direkt von einem PC aus verschicken, außer dem Zielhost ist alles egal, was ansich schon schlecht wäre, weil man dann nur zugespammt wird. Alternativ müsste man wieder in der Executable selbst Nutzername und Passwort speichern, um auf einen Mailhost zu verbinden, der dann die Mail sauber verschickt. Wieder keine gute Idee, zumal du nicht mal sicher gehen kannst, dass du von Spam verschont bleibst.
HTTP-Get- oder Post-Requests (siehe auch REST) sind alleine aber auch nicht das gelbe vom Ei. Wie stellst du sicher, dass dir dein Programm Daten schickt und nicht irgendein anderer die URL aufruft? Wie validierst du die übergebenen Daten? Dafür kann man zwar API-Keys festlegen und in der Executable verstecken, aber sicher ist es immer noch nicht. Es ist gar nicht so leicht das ordentlich zu machen. Am besten ist es bei der Installation einen zufälligen Key festzulegen und eine Art Prüfsumme des PCs zu erstellen um die selbe Application wieder erneut beim Server erkennen zu können. Oder man legt für jeden Nutzer Zugangsdaten fest, die zur Verifikation gehasht zum Server geschickt werden.
Mails kann man normalerweise nicht direkt von einem PC aus verschicken, außer dem Zielhost ist alles egal, was ansich schon schlecht wäre, weil man dann nur zugespammt wird. Alternativ müsste man wieder in der Executable selbst Nutzername und Passwort speichern, um auf einen Mailhost zu verbinden, der dann die Mail sauber verschickt. Wieder keine gute Idee, zumal du nicht mal sicher gehen kannst, dass du von Spam verschont bleibst.
HTTP-Get- oder Post-Requests (siehe auch REST) sind alleine aber auch nicht das gelbe vom Ei. Wie stellst du sicher, dass dir dein Programm Daten schickt und nicht irgendein anderer die URL aufruft? Wie validierst du die übergebenen Daten? Dafür kann man zwar API-Keys festlegen und in der Executable verstecken, aber sicher ist es immer noch nicht. Es ist gar nicht so leicht das ordentlich zu machen. Am besten ist es bei der Installation einen zufälligen Key festzulegen und eine Art Prüfsumme des PCs zu erstellen um die selbe Application wieder erneut beim Server erkennen zu können. Oder man legt für jeden Nutzer Zugangsdaten fest, die zur Verifikation gehasht zum Server geschickt werden.
Re: Daten/Werteübergabe ins Internet bzw. einen Internetserv
@Kiffi:
OK. Leuchtet mir ein.
Über den HTTPRequest() kann ich im Grunde über einen Return-Code sofort eine Rückmeldung bekommen ob die Daten korrekt angekommen sind.
Das hätte ich bei E-Mail oder FTP oder sonsteinem 'Ablage'-System nicht.
@NicTheQuick:
Ja, habe ich mir auch schön überlegt - wäre dann allerdings Schritt 2 oder 3
Ich würde für jeden Rechner bzw. Standord eine 'Installationskennung' mit Passwort generieren über welche ich die Daten auch verschlüsseln möchte. D.h. nicht nur der Weg per HTTPS sonder auch die Daten selbst. Nur wenn die Entschlüsselung dann passt und eine gültige Installationskennung zurückgibt würden die Daten ausgewertet und/oder gespeichert.
Unabhängig davon:
Eine Rechner-Prüfsumme selbst gefällt mich nicht so, da ich darüber nur wenig Einfluß nehmen kann.
(Wobei es dafür auch jede Menge Beispielcode in Richtung Seriennummerngenerierung und Aktivierungsschlüssel gibt.)
Davon, Daten in eine Executable zu stecken halte ich generell nichts. In PureBasic bin ich ein Freund der *.ini-Dateien bzw. *.xml wenn es komplexer wird.
(Lassen sich auch wunderbar mit jedem beliebigen Text-Editor oder einem Konfig-'Progrämmchen' bearbeiten )
Ich liebe Programme welche nichts in irgendeine Registry stecken oder welche große Installationsroutinen oder Abhängigkeiten benötigen.
Am liebsten habe ich sogar immer noch Kommandozeilenprogramme welche ich einfach mit einem XY-Commander von Computer A nach Computer B kopieren kann
Zurück zum Thema:
Ich denke ich spiele erst einmal mit der Datenübergabe selbst und schaue mal wie oft ich 'stolpere'. - Darauf lässt sich dann sicher aufbauen.
Wichtig war mir erst einmal eine 'vernüftige' Lösung für die eigentliche Übergabe zu finden bzw. zu hören wie es die 'Profis' machen.
Ich hoffe es kommt sonst noch was an Input und Anregungen.
Danke und Gruß
David aka Kaltstart
OK. Leuchtet mir ein.
Über den HTTPRequest() kann ich im Grunde über einen Return-Code sofort eine Rückmeldung bekommen ob die Daten korrekt angekommen sind.
Das hätte ich bei E-Mail oder FTP oder sonsteinem 'Ablage'-System nicht.
@NicTheQuick:
Ja, habe ich mir auch schön überlegt - wäre dann allerdings Schritt 2 oder 3
Ich würde für jeden Rechner bzw. Standord eine 'Installationskennung' mit Passwort generieren über welche ich die Daten auch verschlüsseln möchte. D.h. nicht nur der Weg per HTTPS sonder auch die Daten selbst. Nur wenn die Entschlüsselung dann passt und eine gültige Installationskennung zurückgibt würden die Daten ausgewertet und/oder gespeichert.
Unabhängig davon:
Eine Rechner-Prüfsumme selbst gefällt mich nicht so, da ich darüber nur wenig Einfluß nehmen kann.
(Wobei es dafür auch jede Menge Beispielcode in Richtung Seriennummerngenerierung und Aktivierungsschlüssel gibt.)
Davon, Daten in eine Executable zu stecken halte ich generell nichts. In PureBasic bin ich ein Freund der *.ini-Dateien bzw. *.xml wenn es komplexer wird.
(Lassen sich auch wunderbar mit jedem beliebigen Text-Editor oder einem Konfig-'Progrämmchen' bearbeiten )
Ich liebe Programme welche nichts in irgendeine Registry stecken oder welche große Installationsroutinen oder Abhängigkeiten benötigen.
Am liebsten habe ich sogar immer noch Kommandozeilenprogramme welche ich einfach mit einem XY-Commander von Computer A nach Computer B kopieren kann
Zurück zum Thema:
Ich denke ich spiele erst einmal mit der Datenübergabe selbst und schaue mal wie oft ich 'stolpere'. - Darauf lässt sich dann sicher aufbauen.
Wichtig war mir erst einmal eine 'vernüftige' Lösung für die eigentliche Übergabe zu finden bzw. zu hören wie es die 'Profis' machen.
Ich hoffe es kommt sonst noch was an Input und Anregungen.
Danke und Gruß
David aka Kaltstart