Можно ли определить индекс по умолчанию для каталогов, размещенных в рое?

Я загрузил свою домашнюю страницу в рой, используя флаг --recursive, то есть:

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

Теперь, зайдя на bzz:/f1a669a425b378bd8034fe0df7fea098c8b932a6037b688764afda1e92a8db1e/ , я получаю сообщение:

manifest entry for '' not found

Но переход к ./index.htm работает как надо и показывает мой веб-сайт. Даже фавикон работает.

Можно ли каким-то образом создать эту запись манифеста , чтобы указать swarm показывать index.htm по умолчанию?

Ответы (2)

Когда вы загружаете из консоли swarm, вы можете указать запись по умолчанию в качестве второго аргумента, например:

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

Аналогичная функциональность добавляется к swarm upиспользованию

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

и будет расширен, чтобы разрешить несколько каталогов.

Подробнее см. в этом выпуске github: https://github.com/ethereum/go-ethereum/issues/3541 .

Кажется, это движущаяся цель. Теперь работает с --defaultpath.

Просто добавьте больше пояснений:

Ваш веб-сайт находится на виртуальном хосте, описанном в файле манифеста. В манифесте есть записи, связывающие пути к документам. Связывание пустого пути с хешем является полностью законной записью манифеста.

Манифест также можно рассматривать как список путей в файловой системе, скажем, рекурсивное содержимое каталога. Эта эквивалентность позволяет иметь метод, который загружает каталог с диска в рой, и метод, который его загружает.

Хотя есть одно несоответствие. Сами каталоги не являются файлами, но должны отображаться в манифесте как документы (например, индексные файлы). Поэтому, когда мы загружаем каталог в swarm, должно быть какое-то соглашение, позволяющее связать ресурсы с каталогами в виде URL-адресов.

Инструмент командной строки на самом деле всегда поддерживал --defaultpathопцию, аргументом которой является путь к файлу, который отображается, когда urlpath пуст (т. е. адрес роя — `bzz:///).

начиная с https://github.com/ethereum/go-ethereum/issues/3541 swarm up , будут поддерживаться файлы многоуровневого индекса: файл с именем файла (аргумент верхнего уровня) связан с пустым путем, если он существует.