Daten/Werteübergabe ins Internet bzw. einen Internetserver

Für allgemeine Fragen zur Programmierung mit PureBasic.
Kaltstart
Beiträge: 17
Registriert: 27.07.2008 12:43

Daten/Werteübergabe ins Internet bzw. einen Internetserver

Beitrag von Kaltstart »

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
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Daten/Werteübergabe ins Internet bzw. einen Internetserv

Beitrag von Kiffi »

@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
Hygge
Kaltstart
Beiträge: 17
Registriert: 27.07.2008 12:43

Re: Daten/Werteübergabe ins Internet bzw. einen Internetserv

Beitrag von Kaltstart »

@Peter:

Hallo Peter,
Kiffi hat geschrieben: Das mit dem Mail- bzw. SFTP-Gedöns würde ich persönlich nicht machen.
...und warum nicht?

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
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Daten/Werteübergabe ins Internet bzw. einen Internetserv

Beitrag von Kiffi »

Kaltstart hat geschrieben:...und warum nicht?
zu aufwändig, zu fehleranfällig, zu umständlich.

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
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
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

Beitrag von NicTheQuick »

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.
Bild
Kaltstart
Beiträge: 17
Registriert: 27.07.2008 12:43

Re: Daten/Werteübergabe ins Internet bzw. einen Internetserv

Beitrag von Kaltstart »

@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
Antworten