Anwendung die auf Server automatisch Dateien kopiert

  • Hallöchen hoffe ich stelle hier nicht zu viele Fragen. ;)
    Bin aber recht interessiert, was das Thema AutoIt anbelangt!

    Bevor ich jetzt eine Frage stelle erstmal eine Erklärung worum es mir überhaupt geht.

    Ich habe eine Bildergallerie programmiert (mit php). Allerdings ist diese nicht so ganz gewöhnlich (hätte ja auch einfach eine aus dem Netz suchen können), sondern hat Funktionen, die andere Gallerien nicht haben bzw. jedenfalls keine die ich so auf die schnelle finden konnte.

    Das ist hier Übrigens die Gallerie:
    http://www.wp11194523.server-he.de/Gallery/Index.php

    Und ja ich weiss die gibt einige Fehler aus...hab die erst gerade wieder rausgekramt und angefangen umzuschreiben (...wegen nem php-Update wird nun so einiges als "deprecated" eingestuft etc..)...war damals für meinen Vater gewesen, damit er easy Bilder ins Netz stellen kann ohne viel Arbeit (der hat genau garnix mit Programmieren oder dem Erstellen von Internetseiten etc am Hut). Und genau da ist halt der Unterschied bei dieser Gallerie. Bei anderen Gallerien hat man meistens die möglichkeit über ein Formular Bilder hochzuladen (teilweise auch sag ich jetzt mal pauschal 5 Bilder oder so). Und vor allem muss man jedes Bild einzelnd angeben. Was meine Gallerie angeht....

    Die Struktur im Groben:

    Spoiler anzeigen

    Index.php

    ---albums (Ordner)
    ------Album 1 (Ordner)
    ---------Albuminfo (Ordner)
    ------------Beschreibung.txt
    ------------Cover.jpg
    ---------Index.php
    ---------Index2.php
    ---------Bild1.gif
    ---------Bild2.jpg
    ---------Bild3.png
    ---------Bild4.bmp

    ------Album 2 (Ordner)
    ---------Albuminfo (Ordner)
    ------------Beschreibung.txt
    ------------Cover.jpg
    ---------Index.php
    ---------Index2.php
    ---------Bild5.jpg
    ---------Bild6.jpg
    ---------Bild7.png
    ---------Bild8.bmp

    Man gelangt zuerst auf eine Index.php. In dieser wird der Ordner "albums" durchsucht. Die Sache it so gestalltet, das sofern es Unterordner gibt dieselben als "Album" erfasst werden (Ordnername = Name des Albums in der Bildergallerie). Klickt man auf ein vorhandenes Album wird man in den jeweiligen Unterordner geleitet in welchem sich eine weitere Index.php befindet. Diese liesst den Ordner des Albums aus und fügt alle Bilder die sie finden kann in die Gallerie ein. Dann gibts da noch einen weiteren Unterordner namens Albuminfo welcher eine Beschreibung.txt enthält und ggf. noch ein Bild namens "Cover.jpg", welches sofern vorhanden als Albumcover genutzt wird. Wäre keins vorhanden nutzt er standartmässig ein anderes Bild.

    Das nette an dieser Gallerie ist das man extrem schnell theoretisch sogar sag ich jetzt mal 50 Alben hochladen könnte, wo überall 10 Bilder drin sind. Einfach über nen FTP-Programm hochladen und schwups die Gallerie beinhaltet direkt beim Aufrufen alle neu hochgeladenen Alben/Bilder.

    Das ist jetzt allerdings nur eine grobe Beschreibung gewesen.
    Damit das Ganze funktioniert müssen allerdings in den jeweiligen Unterordnern, die als Alben dienen sollen, die Index-Dateien (Index.php und Index2.php) und der Unterordner "Albuminfo" sein.

    So und nun meine Frage. Gibt es die Möglichkeit eine Anwendung über Autoit zu erstellen, die mir z.B. diese 2 Index-Dateien kopieren könnte und einen Ordner erstellt, sofern iwas von diesen Sachen nicht vorhanden ist?

    Und ja ich weiss das sowas sicherlich auch über php realisierbar ist. Würde ich denke ich auch hinbekommen (war damals nu etwas zu faul ^^ )...will aber wissen, ob es auch mit AutoIt geht und vor allem auch wie! :D

    Einmal editiert, zuletzt von Chulio (29. Dezember 2013 um 03:35)

  • Ich sehe erstmal kein Problem das zu realisieren. Autoit bietet dir FTP Funktionen und natürlich kannst du auch beliebige Textdateien dynamisch erzeugen lassen und hochladen.

    Relevante Funktionen:

    [autoit]


    _FTP_Open
    _FTP_Connect
    _FTP_DirCreate
    _FTP_FilePut
    _FTP_ListToArray
    ; und einige andere...

    [/autoit][autoit][/autoit][autoit]

    filewrite
    filecopy
    ; und diverse String Funktionen...

    [/autoit]


    Allerdings frage ich mich ob dein System so wirklich Sinn macht und nicht auch sicherheitstechnisch problematisch ist.

    Zum einen wäre es aus Performancesicht vermutlich sinnvoller die Albumszuordnung der Bilder über eine Datenbank zu realisieren damit nicht bei jedem Aufruf der Seite der komplette Webspace nach Bildern abgesucht werden muss (langsame HDD Zugriffe?). Dann wäre es auch völlig egal wie bzw. wo die Bilder auf deinem Webspace gespeichert werden und du bräuchtest keine separaten Dateien in Unterordnern für die Beschreibung bzw. die Anzeige der Alben. Dein derzeitiges System erlaubt prinzipiell auch den Upload von Ordnern die Leer- oder Sonderzeichen enthalten, was letztlich zu Problemen führen könnte. Ebenfalls problematisch ist, dass deine Uploadanwendung über FTP Daten verfügen muss. Sofern du vorhast diese fest im Quellcode zu speichern sollte dir klar sein, dass Autoit Scripte leicht dekompiliert werden können und deine FTP Daten somit nicht zwingend geheim bleiben. Je nachdem über welche Rechte der FTP Account verfügt könnte das unter Umständen negative Folgen haben. Prinzipiell ist es ohnehin problematisch, dass du den Anwendern den Upload von beliebigem Content erlauben würdest. Besser wäre es wenn der Anwender wie bei gängigen Bilderhostern nur Bilddateien hochladen könnte. Mit vollem FTP Zugriff hindert mich keiner Daran eigenen HTML Code oder schadhafte Javascripte auf deinen Webspace hochzuladen für den letzlich du verantwortlich bist.

    Ich würde das also etwas anderst angehen. Sinnvoll wäre zum Beispiel eine API mit Authentifizierung über die man neue Alben hinzufügen kann. Hier kann dann serverseitig sichergestellt werden, dass nur erlaubter Content von verifizierten Nutzern auf dem Server landet. Eine Benutzerverwaltung würde dir außerdem erlauben Alben "öffentlich", "nur für Mitglieder / bestimmte Gruppen" oder "privat" zu deklarieren. Man könnte das unendlich weitertreiben, aber vermutlich wirst du keine Lust haben alles über den Haufen zu werfen und mit Autoit hat das ja eigentlich auch wenig zu tun.

    Wenn du mehr darüber erfahren willst wie so eine API aufgebaut sein kann schau dir mal die API vom Bilderhoster Imgur an: http://api.imgur.com

    Eine Anwendung die die API nutzt muss sich zunächst authentifizieren, danach werden einfache HTTP Pakete an den Webserver geschickt die sowohl die Meta Daten (Titel, Beschreibung...) als auch die Bilddaten enthalten. Das ganze wird serverseitig in der DB gespeichert und ein Link generiert der den Zugriff erlaubt, dieser wird der Upload-Anwendung dann mitgeteilt.

  • Vielen lieben dank erstmal für die antworten! Insbesondere an misterspeed (hab selten gesehen das sich jemand mit einem Thema, was ich gepostet habe, so intensiv auseinandersetzt)!

    Was die Bedenken angeht:

    Allerdings frage ich mich ob dein System so wirklich Sinn macht und nicht auch sicherheitstechnisch problematisch ist.
    Zum einen wäre es aus Performancesicht vermutlich sinnvoller die Albumszuordnung der Bilder über eine Datenbank zu realisieren damit nicht bei jedem Aufruf der Seite der komplette Webspace nach Bildern abgesucht werden muss (langsame HDD Zugriffe?). Dann wäre es auch völlig egal wie bzw. wo die Bilder auf deinem Webspace gespeichert werden und du bräuchtest keine separaten Dateien in Unterordnern für die Beschreibung bzw. die Anzeige der Alben.
    Stimmt - allerdings nur bedingt. Performancetechnisch wäre das sicherlich suboptimal. Allerdings ging es mir in meinem Fall ja auch darum, das Ganze für meinen Vater so leicht wie möglich zu gestalten und mit meiner Variante hätte mein Vater sich z.B., sofern er die Gallery aus welchem Grund auch immer, auf einem anderen Webspace stellen wollen würde, nicht auch noch mit Datenbanken auseinandersetzen müssen bzw. man ist auf niemanden angewiesen der sich mit Datenbanken auskennt (man kann meine Gallery auf fast jeden x-beliebigen Webspace hochladen und sie läuft, sofern php unterstützt wird). Zudem wird ja auch nicht der gesammte Webspace ausgelesen, sondern bei einem Zugriff auf die Gallery lediglich gezielt immer nur der Ordner "albums" und bei einem Klick auf ein Album (die Verlinkung über Coverbild.jpg) dann der jeweilige Unterordner mit dem jeweiligen Inhalt (den Unterordner Albuminfo könnte man theoretisch auch weglassen....könnte man in den Order "albums/$album" verschieben, damit kein weiteres Verzeichnis ausgelesen werden müsste). Weiss aber ehrlich gesagt nicht, wie sehr das etwas an der Performance der Gallery ändern würde, denn die läuft ohnehin schon relativ gescheit. KA ab welcher Useranzahl die gleichzeitig darauf zugreifen würde ein spürbarer Unterschied auftreten würde.

    Dein derzeitiges System erlaubt prinzipiell auch den Upload von Ordnern die Leer- oder Sonderzeichen enthalten, was letztlich zu Problemen führen könnte.
    Da weiss ich nun nicht wie du darauf kommst, da ich das sehr wohl über die php-Dateien kontrollieren kann.

    Ebenfalls problematisch ist, dass deine Uploadanwendung über FTP Daten verfügen muss. Sofern du vorhast diese fest im Quellcode zu speichern sollte dir klar sein, dass Autoit Scripte leicht dekompiliert werden können und deine FTP Daten somit nicht zwingend geheim bleiben. Je nachdem über welche Rechte der FTP Account verfügt könnte das unter Umständen negative Folgen haben. Prinzipiell ist es ohnehin problematisch, dass du den Anwendern den Upload von beliebigem Content erlauben würdest. Besser wäre es wenn der Anwender wie bei gängigen Bilderhostern nur Bilddateien hochladen könnte. Mit vollem FTP Zugriff hindert mich keiner Daran eigenen HTML Code oder schadhafte Javascripte auf deinen Webspace hochzuladen für den letzlich du verantwortlich bist.
    Da muss ich dir allerdings widersprechen. Sofern jemand FTP-Zugriff hat, kann er hochladen, was immer er will ja! ABER es hat nicht jeder der diese Gallery betritt die möglichkeit Bilder hochzuladen. Um es genauer zu formulieren sieht es momentan so aus, das es zwar einen LogIn-Bereich gibt. Innerhalb dieses Bereichs kann man dann Alben erstellen/umbenennen/löschen/Bershreibung ändern und vorhandene Bilder umbenennen/löschen (auch hier könnte man über php kontrollieren bzw. vorgeben, was zulässig ist oder nicht).
    Der Upload von Dateien ist jedoch noch garnicht eingebaut! Und was genau erlaubt wäre, sofern es doch der Fall wäre, kann man über php-scripte dann doch extrem genau kontrollieren (auch so das da keiner Misst bauen könnte). Und das AutoIt-Sripte leicht zu dekopilieren sind ist mir auch klar! Hätte das wenn schon so basteln wollen, das ich im php die entsprechende ftp-Verbindung angebe/abspeicher und in einem Fall wo die Dateien "Index.php, Index2.php" oder der Unterordner "Albuminfo" fehlen dann ein php-script eine Anwndung startet (die von AutoIt wäre), welche mit dann z.B. die Dateien "Index.php und Index2.php" von "Gallery/Album_Index/Index(2).php" in das entsprechende Verzeichnis kopiert. Da wäre dann garkeine Sicherheitslücke nötig.

    Was mich interessieren würde wäre zb wie ich Daten aus Variablen an eine AutoIt-Anwendung weiter geben könnte. Ist das direkt überhaupt möglich.
    edit (gerade im anderen Thread gesehen...):
    [ offen ] Frage zu _FFCmd_Err

    Was mir persönlich direkt als potenzielle Lösung eingefallen ist (vermutlich extrem unprofessionell aber es würde nen weg sein)...

    input.php
    $Daten = "meine Daten";
    $Datei = fopen("daten.php", "w+");
    fwrite($Datei, "$Daten");
    fclose($Datei);

    daten.php (beinhaltet das was sie von input.php bekommt)

    anwendung.exe
    #include <daten.php>

    Und was des gesammten Rest angeht von dem was du geschrieben hast....damit werde ich mich sicherlich auseinandersetzen!!!
    Bin echt etwas begeistert von deiner Antwort! Hut ab! ;)

    Lasse das Thema bis heute abend offen für potenzielles weiteres Feedback. Auch wenn meine Fragen im Sinne des Threadnamens eig bereits geklärt sind.

    2 Mal editiert, zuletzt von Chulio (28. Dezember 2013 um 15:48)

  • Wieso machst du keine PHP, die den Ordnerinhalt auflistet und das liest du dann aus?

    Steve

    //Sry, so von wieso verschwunden :D

    [Blockierte Grafik: http://stefan.blagojevic.at/loading.gif]

    Design, Modellbau, CAD <3
    AutoCAD, ArchiCAD, REVIT (ist ein Scheiss, habe aber das Zertifikat)

    Cinema 4D, RuckZuck Statik Programm

    Michael Bay als Architekt


    Da eine Glasfassade! Booom Sichtbeton! Laminiertes Bild auf Mosaiksteinchen! Granit! Granit! Granit! Sichtbetonwand mit 50° Neigung!
    Holzverkleidung erscheint da! Boooooom!

    Einmal editiert, zuletzt von Stevenx (29. Dezember 2013 um 23:07)

  • Nicht böse gemeint, aber kannst du die Frage nochmal so formulieren das sie auch Sinn ergibt?
    Verstehe nicht so wirklich, was genau du jetzt wissen möchtest.

    Ja ich habe php-Scripte die mir automatisch die Verzeichnisse auslesen können. Dabei kannst du sofern gewünscht auch gezielt Dateien filtern lassen, wie z.B. *.jpg oder *.png und auch allerlei andere Möglichkeiten bestehen da. Allerdings bin ich mir nicht so ganz sicher in wie weit Diskussionen über php hier erwünscht sind, sofern sie nicht in Verbindung zu AutoIt stehen.

    Kannst mir aber gerne Fragen über PN schicken. Nur wie gesagt bitte versuche das Ganze so zu formulieren, das man es auch verstehen kann. ;)