remove useless info
This commit is contained in:
parent
1cc55d91ef
commit
27b5897c1f
2 changed files with 18 additions and 41 deletions
39
README.md
39
README.md
|
|
@ -1,14 +1,17 @@
|
||||||
# ISOSilo
|
# ISOSilo
|
||||||
|
|
||||||
A lightweight Go web server that lets you browse and download files from ISO 9660 images via your browser — without mounting them.
|
A lightweight Go web server that lets you browse and download files from ISO
|
||||||
|
9660 images via your browser — without mounting them.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- **Library view** — lists all `.iso` files in a directory as clickable cards
|
- **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
|
- **In-ISO browsing** — navigate directories inside any ISO just like a file
|
||||||
|
manager
|
||||||
- **File downloads** — download individual files directly from within an ISO
|
- **File downloads** — download individual files directly from within an ISO
|
||||||
- **Clean UI** — dark-themed, responsive interface with file-type icons
|
- **Clean UI** — dark-themed, responsive interface with file-type icons
|
||||||
- **Safe** — path traversal protection; only `.iso` files in the served directory are accessible
|
- **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
|
- **Zero mount required** — reads ISO images directly using the ISO 9660 library
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
@ -20,19 +23,12 @@ A lightweight Go web server that lets you browse and download files from ISO 966
|
||||||
### Build from source
|
### Build from source
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/yourname/isosilo
|
git clone https://code.oscorp.dk/visionmercer/isosilo.git
|
||||||
cd isosilo
|
cd isosilo
|
||||||
go mod tidy # fetches github.com/kdomanski/iso9660
|
go mod tidy # fetches github.com/kdomanski/iso9660
|
||||||
go build -o isosilo .
|
go build -o isosilo .
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run with Docker
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker build -t isosilo .
|
|
||||||
docker run -p 8080:8080 -v /path/to/your/isos:/isos isosilo
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
@ -60,16 +56,17 @@ Then open http://localhost:8080 in your browser.
|
||||||
|
|
||||||
## URL Structure
|
## URL Structure
|
||||||
|
|
||||||
| URL | Description |
|
| URL | Description |
|
||||||
|-----|-------------|
|
| -------------------------- | ------------------------------------------ |
|
||||||
| `GET /` | List all ISO files in the served directory |
|
| `GET /` | List all ISO files in the served directory |
|
||||||
| `GET /browse/{iso}` | Browse the root of an ISO |
|
| `GET /browse/{iso}` | Browse the root of an ISO |
|
||||||
| `GET /browse/{iso}/{path}` | Browse a subdirectory inside an ISO |
|
| `GET /browse/{iso}/{path}` | Browse a subdirectory inside an ISO |
|
||||||
| `GET /file/{iso}/{path}` | Download a file from inside an ISO |
|
| `GET /file/{iso}/{path}` | Download a file from inside an ISO |
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
- [`github.com/kdomanski/iso9660`](https://github.com/kdomanski/iso9660) — pure-Go ISO 9660 reader
|
- [`github.com/kdomanski/iso9660`](https://github.com/kdomanski/iso9660) —
|
||||||
|
pure-Go ISO 9660 reader
|
||||||
|
|
||||||
## Project Layout
|
## Project Layout
|
||||||
|
|
||||||
|
|
@ -78,7 +75,6 @@ isosilo/
|
||||||
├── main.go # Entry point, CLI flags, route registration
|
├── main.go # Entry point, CLI flags, route registration
|
||||||
├── go.mod
|
├── go.mod
|
||||||
├── go.sum
|
├── go.sum
|
||||||
├── Dockerfile
|
|
||||||
└── internal/
|
└── internal/
|
||||||
├── iso/
|
├── iso/
|
||||||
│ └── reader.go # ISO open/list/read abstraction
|
│ └── reader.go # ISO open/list/read abstraction
|
||||||
|
|
@ -88,7 +84,8 @@ isosilo/
|
||||||
|
|
||||||
## Security Notes
|
## Security Notes
|
||||||
|
|
||||||
- The server only serves files with a `.iso` extension from the configured directory.
|
- The server only serves files with a `.iso` extension from the configured
|
||||||
|
directory.
|
||||||
- ISO names are validated to prevent path traversal (`..`, `/`, `\`).
|
- ISO names are validated to prevent path traversal (`..`, `/`, `\`).
|
||||||
- Internal ISO paths are cleaned before use.
|
- Internal ISO paths are cleaned before use.
|
||||||
- There is **no authentication**. Do not expose this server to the public internet without adding auth (e.g. a reverse proxy with basic auth).
|
|
||||||
|
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
# ── Build stage ──────────────────────────────────────────────────────────────
|
|
||||||
FROM golang:1.22-alpine AS builder
|
|
||||||
|
|
||||||
WORKDIR /src
|
|
||||||
COPY go.mod go.sum ./
|
|
||||||
RUN go mod download
|
|
||||||
|
|
||||||
COPY . .
|
|
||||||
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /isosilo .
|
|
||||||
|
|
||||||
# ── Runtime stage ─────────────────────────────────────────────────────────────
|
|
||||||
FROM scratch
|
|
||||||
|
|
||||||
COPY --from=builder /isosilo /isosilo
|
|
||||||
|
|
||||||
# ISOs should be mounted here at runtime.
|
|
||||||
VOLUME ["/isos"]
|
|
||||||
|
|
||||||
EXPOSE 8080
|
|
||||||
ENTRYPOINT ["/isosilo", "-dir", "/isos", "-addr", ":8080"]
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue