Ankündigung

Einklappen
Keine Ankündigung bisher.

FTP-Client: Design und Vorschlage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • FTP-Client: Design und Vorschlage

    Hier überlege ich mir, wie sehr sich eine Implementierung eigentlich am zugrundeliegenden Protokoll orientieren sollte oder muss. In diesem Fall beschreibe ich das anhand einer FTP-Klasse, damit es konkrete Beispiele gibt. Und ja, ich verwende wirklich noch FTP, da einige Anbieter nur so den Transfer von Dateien ermöglichen.


    Eine einfache Klasse die nur als Wrapper für die [MAN]FTP[/MAN]-Funktionen von PHP verwendet. Hier wird das Protokoll sehr ähnlich über die Klasse abgebildet.

    PHP-Code:
    $ftp = new FtpClient();
    $ftp->connect('ftp.example.com');
    $ftp->login('username''password');
    $ftp->chdir('/foo');
    $ftp->upload('bar'); 
    Die Methode upload hat einen optionalen Parameter $target. Dieser ist in [MAN]ftp_put[/MAN] Pflicht. Jedoch kann dieser einfach anhand von [MAN]ftp_pwd[/MAN] und dem lokalen Dateinamen erstellt werden.


    Könnte es einen Mehrwert bieten, das ganze wie folgt aufzubauen:

    PHP-Code:
    $ftp = new FtpClient();
    $connection $ftp->connect('ftp.example.com');
    $session $connection->login('username''password');
    $directory $session->changeDirectory('/foo');
    $directory->upload('bar'); 
    Hier sehe ich (auf den ersten Blick) mehr Möglichkeiten für zukünftige Erweiterungen, die mir ein einfacher Wrapper nicht bietet.

    So kann das login ein weiteres mal ausgeführt werden. Dadurch wird nicht die vorhandene Verbindung für mehrere Sessions verwendet, sondern eine neue Verbindung mit anderen Zugangsdaten verwendet, da das Protokoll oder die Implementierung der FTP-Funktionen eine solche Möglichkeit nicht bietet.

    PHP-Code:
    $session2 $connection->login('username2''password');
    $directory2 $session2->changeDirectory('/foo');
    $directory2->upload('bar'); 

    Da dem FtpClient die Verbindungen bekannt sind, könnte es möglich sein, dass sich der FtpClient bei folgenden Aufruf die passende Verbindung selbst raussucht:

    PHP-Code:
    $ftp->download('ftp://username1@ftp.example.com/foo/bar'); 

    Wie sind eure Meinungen dazu? Bevor ich mich an eine Beispielumsetzung mache und dann feststelle, dass die Idee an sich nicht nicht sinnvoll ist, würde ich gerne eure Meinungen dazu wissen.

  • #2
    Du kannst dir Inspiration holen von dem Open Source Projekt "Monsta-FTP"

    https://github.com/MonstaApps/Monsta-FTP

    Basierend auf PHP/Ajax

    Kommentar


    • #3
      Zitat von chim Beitrag anzeigen
      Du kannst dir Inspiration holen von dem Open Source Projekt "Monsta-FTP"
      Sehe gerade nicht, wie mir eine GUI für einen FTP-Client bei dem Entwurf der Klasse weiterhelfen sollte.

      Kommentar


      • #4
        Meiner Ansicht nach ist FTP tot und heutzutage bedeutungslos. Ich hab in den letzten Jahren kein einziges mal FTP verwendet.

        Kommentar


        • Arne Drews
          Arne Drews kommentierte
          Kommentar bearbeiten
          Das hilft dem TE aber nun mal gar nicht, sorry

      • #5
        Zitat von hellbringer Beitrag anzeigen
        Meiner Ansicht nach ist FTP tot und heutzutage bedeutungslos. Ich hab in den letzten Jahren kein einziges mal FTP verwendet.
        Habe ich schon beschrieben, dass ich für einige externe Systeme FTP benötige und auch, dass diese Klasse als Beispiel dienen soll um es sich besser vorzustellen, da ich evtl. auch andere Klassen anders aufbauen möchte.

        Kommentar


        • #6
          Schau mal http://flysystem.thephpleague.com/api/ es hat methoden wie "write" "read" "has" usw. und jetzt kommt das Beste, du kannst einfach den Adapater ersetzen, der Adapater kann entweder Local sein oder FTP oder SFTP oder Amazon oder dein eigener, das Interface dazu steht, brauchst nur deine Implementation.

          apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

          Kommentar


          • #7
            Das sieht doch schonmal sehr interessant aus. Aber gibt es irgendwelche Ideen zur ursprünglichen Frage?

            Kommentar


            • #8
              Zitat von Blar

              Aber gibt es irgendwelche Ideen zur ursprünglichen Frage?
              Ne, sorry. Komisches Projekt und bereits gut gelöstes Problem für ein beschissenes Protokoll, dass mich schon aufregt, wenn ich nur den Namen höre.

              Kommentar


              • #9
                Hier sehe ich (auf den ersten Blick) mehr Möglichkeiten für zukünftige Erweiterungen, die mir ein einfacher Wrapper nicht bietet.
                Z. B.?

                So kann das login ein weiteres mal ausgeführt werden. Dadurch wird nicht die vorhandene Verbindung für mehrere Sessions verwendet, sondern eine neue Verbindung mit anderen Zugangsdaten verwendet, da das Protokoll oder die Implementierung der FTP-Funktionen eine solche Möglichkeit nicht bietet.
                Eher kein Mehrwert - Der einzige "Shortcut" ist, dass der Host schon gegeben ist. Dann könnte man doch direkt mehrere komplett getrennte Connections verwenden.

                Versteh mich bitte nicht falsch - Aber so eine reine, auf FTP festgetackerte Klasse kann sich jeder in fünf Minuten selber schreiben. Da würde es, wie oben schon erwähnt mehr Sinn machen, eine Art "Connector" zu bauen, der per Adapter verschiedene Quellen implementieren kann - S3, FTP, SFTP, lokales Dateisystem usw.. Und dafür gibt es dann schon zig Projekte, z. B. https://github.com/thephpleague/flysystem

                Kommentar


                • #10
                  Hallo,

                  ich weiß, ein bisschen Old School, aber wer sie noch kennt: phpselib. Das war eine Bibliothek, die verschiedene Protokolle rein auf PHP Basis implementiert hatte, darunter unter anderem SSH, FTP, SFTP, FTPS und einige kryptografische Algorithmen, die es vor PHP 5.5 nicht so wirklich in PHP gab. Vielleicht findest Du hier auch noch was hilfreiches?

                  Und ich kenne keinen Anbieter, der nicht zumindest SFTP oder FTPS anbietet. Reines FTP würde ich auch nicht mehr machen wollen. Es ist unverschlüsselt und kann per Brute Force Angriff angegriffen werden, weil man unendlich viele Versuche hat sich zu authentifizieren.


                  MFG

                  derwunner

                  Kommentar

                  Lädt...
                  X