No description
  • Go 52.1%
  • HTML 20.4%
  • CSS 17.2%
  • JavaScript 10.3%
Find a file
2026-04-15 12:22:43 +02:00
internal Disable Directory Listings 2026-04-15 10:49:26 +02:00
static fixed buttons 2026-04-15 12:22:43 +02:00
templates fixed buttons 2026-04-15 12:22:43 +02:00
go.mod Initial commit 2026-03-23 09:15:52 +01:00
go.sum Initial commit 2026-03-23 09:15:52 +01:00
isosilo fixed buttons 2026-04-15 12:22:43 +02:00
main.go moved html and css out to seperate files. 2026-04-15 09:08:14 +02:00
README.md Update README.md 2026-03-23 08:50:28 +00:00

ISOSilo

A Vibe coded Go web server that lets you browse and download files from ISO 9660 images via your browser, without mounting them.

Features

  • Library view - lists all .iso files in a directory as clickable cards
  • In-ISO browsing - navigate directories inside any ISO just like a file manager
  • File downloads - download individual files directly from within an ISO
  • Clean UI - dark-themed, responsive interface with file-type icons
  • Safe - path traversal protection; only .iso files in the served directory are accessible
  • Zero mount required - reads ISO images directly using the ISO 9660 library

Installation

Prerequisites

  • Go 1.22 or later

Build from source

git clone https://code.oscorp.dk/visionmercer/isosilo.git
cd isosilo
go mod tidy       # fetches github.com/kdomanski/iso9660
go build -o isosilo .

Usage

isosilo [flags]

Flags:
  -dir  string   Directory containing ISO files to serve (default: current directory)
  -addr string   Address to listen on (default: :8080)

Examples

# Serve ISOs from the current directory on port 8080
./isosilo

# Serve a specific directory on a custom port
./isosilo -dir /mnt/isos -addr :9000

# Serve on all interfaces (default) or localhost only
./isosilo -addr 127.0.0.1:8080

Then open http://localhost:8080 in your browser.

URL Structure

URL Description
GET / List all ISO files in the served directory
GET /browse/{iso} Browse the root of an ISO
GET /browse/{iso}/{path} Browse a subdirectory inside an ISO
GET /file/{iso}/{path} Download a file from inside an ISO

Dependencies

Project Layout

isosilo/
├── main.go                        # Entry point, CLI flags, route registration
├── go.mod
├── go.sum
└── internal/
    ├── iso/
    │   └── reader.go              # ISO open/list/read abstraction
    └── handlers/
        └── handlers.go            # HTTP handlers + HTML templates

Security Notes

  • The server only serves files with a .iso extension from the configured directory.
  • ISO names are validated to prevent path traversal (.., /, \).
  • Internal ISO paths are cleaned before use.