Ist es möglich, einen Standardindex für von Swarm gehostete Verzeichnisse zu definieren?

Ich habe meine Homepage mit dem Flag --recursive in den Schwarm hochgeladen, dh:

0 ✓ user@ursae ~/.src/github.com/5chdn $ swarm --recursive up co/
I0115 11:32:09.046878 upload.go:195] uploading file co/0x61f42a05.asc (3112 bytes) and adding path 0x61f42a05.asc
I0115 11:32:09.050241 upload.go:195] uploading file co/favicon.png (330 bytes) and adding path favicon.png
I0115 11:32:09.050961 upload.go:195] uploading file co/index.htm (3805 bytes) and adding path index.htm
f1a669a425b378bd8034fe0df7fea098c8b932a6037b688764afda1e92a8db1e

Wenn ich jetzt zu bzz:/f1a669a425b378bd8034fe0df7fea098c8b932a6037b688764afda1e92a8db1e/ gehe, bekomme ich die Nachricht:

manifest entry for '' not found

Aber das Navigieren zu ./index.htm funktioniert wie gewünscht und zeigt meine Website. Sogar das Favicon funktioniert.

Ist es möglich, diesen Manifesteintrag irgendwie zu erstellen, um Swarm anzuweisen, die index.htm standardmäßig anzuzeigen?

Antworten (2)

Wenn Sie von der Schwarmkonsole hochladen, können Sie den Standardeintrag als zweites Argument wie folgt angeben:

bzz.upload('/path/to/dir/', ,'index.htm')

Eine ähnliche Funktionalität wird zu swarm upusing hinzugefügt

swarm --index-file index.htm up --recursive /path/to/dir

und wird erweitert, um mehrere Verzeichnisse zu ermöglichen.

Weitere Informationen finden Sie in dieser Github-Ausgabe: https://github.com/ethereum/go-ethereum/issues/3541

Es scheint, dass dies ein bewegliches Ziel ist. Jetzt funktioniert es mit --defaultpath.

Ich füge nur eine weitere Erklärung hinzu:

Ihre Website befindet sich auf einem virtuellen Host, der durch eine Manifestdatei beschrieben wird. Das Manifest enthält Einträge, die Pfade mit Dokumenten verknüpfen. Das Zuordnen des leeren Pfads zu einem Hash ist ein absolut legitimer Manifesteintrag.

Ein Manifest kann auch als Liste von Pfaden in einem Dateisystem betrachtet werden, sagen wir der rekursive Inhalt eines Verzeichnisses. Diese Äquivalenz macht es möglich, eine Methode zu haben, die ein Verzeichnis von der Festplatte in den Schwarm hochlädt, und eine, die es herunterlädt.

Es gibt jedoch eine Fehlausrichtung. Die Verzeichnisse selbst sind keine Dateien, sollten aber dennoch über das Manifest als Dokumente (zB Indexdateien) anzeigbar sein. Wenn wir also ein Verzeichnis in den Schwarm hochladen, sollte es eine Konvention geben, die es ermöglicht, Assets als URL-Pfade mit den Verzeichnissen zu verknüpfen.

Das Kommandozeilen-Tool hat eigentlich immer die --defaultpathOption unterstützt, deren Argument ein Pfad zu einer Datei ist, die angezeigt wird, wenn der URL-Pfad leer ist (dh die Schwarmadresse ist `bzz:///).

ab https://github.com/ethereum/go-ethereum/issues/3541 swarm up werden mehrstufige Indexdateien unterstützt: Die Datei mit dem Namen filename (toplevel arg) wird dem leeren Pfad zugeordnet, falls vorhanden.