All Projects → l1ving → fs-over-http

l1ving / fs-over-http

Licence: ISC License
A filesystem interface over http, with extras and docker support

Programming Languages

go
31211 projects - #10 most used programming language
python
139335 projects - #7 most used programming language
shell
77523 projects
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to fs-over-http

fastglue
Fastglue is an opinionated, bare bones wrapper that glues together fasthttp and fasthttprouter to act as a micro HTTP framework.
Stars: ✭ 71 (+407.14%)
Mutual labels:  http-server, fasthttp
korefile
File System API for Local/GitHub.
Stars: ✭ 29 (+107.14%)
Mutual labels:  filesystem
MTJailed-Native
A terminal emulator with remote shell for non-jailbroken iOS devices
Stars: ✭ 24 (+71.43%)
Mutual labels:  http-server
shivneri
Component based MVC web framework based on fort architecture targeting good code structures, modularity & performance.
Stars: ✭ 21 (+50%)
Mutual labels:  http-server
watcher
The file system watcher that strives for perfection, with no native dependencies and optional rename detection support.
Stars: ✭ 37 (+164.29%)
Mutual labels:  filesystem
octo-drive
Turn your GitHub repository into encrypted filesystem (=
Stars: ✭ 24 (+71.43%)
Mutual labels:  filesystem
ts-httpexceptions
🚦 See https://tsed.io/docs/exceptions.html
Stars: ✭ 24 (+71.43%)
Mutual labels:  http-server
gof
Yet another simple Go filesystem wrapper
Stars: ✭ 13 (-7.14%)
Mutual labels:  filesystem
termy-the-terminal
Web-based terminal powered by React
Stars: ✭ 43 (+207.14%)
Mutual labels:  filesystem
xxhashdir
⚡Fast filysystem fingerprinting using xxHash
Stars: ✭ 47 (+235.71%)
Mutual labels:  filesystem
files
Useful methods to manage files and directories
Stars: ✭ 27 (+92.86%)
Mutual labels:  filesystem
acid-store
A library for secure, deduplicated, transactional, and verifiable data storage
Stars: ✭ 48 (+242.86%)
Mutual labels:  filesystem
quickserv
Dangerously user-friendly web server for quick prototyping and hackathons
Stars: ✭ 275 (+1864.29%)
Mutual labels:  http-server
SimpleOS
Operating System Coded in Assembly and C
Stars: ✭ 72 (+414.29%)
Mutual labels:  filesystem
eephttpd
Serving simple static sites directly to i2p via the SAM API. (Also part of https://github.com/eyedeekay/sam-forwarder)
Stars: ✭ 15 (+7.14%)
Mutual labels:  http-server
file management sys
file_management_sys 是一个文件共享系统,包括前端文件展示系统和后台管理系统,基于SpringBoot + MyBatis实现。前端文件展示系统包括文件分类和展示界面,文件搜索和文件上传等模块。后台管理系统包含文件管理,权限管理等模块。
Stars: ✭ 60 (+328.57%)
Mutual labels:  filesystem
nhttp
An Simple http framework for Deno, Deno Deploy and Cloudflare Workers. so hot 🚀
Stars: ✭ 26 (+85.71%)
Mutual labels:  http-server
go-oryx-lib
The public multiple media library for https://github.com/ossrs/go-oryx.
Stars: ✭ 98 (+600%)
Mutual labels:  http-server
gmocker
Create a blazing fast mock server with just a JSON file
Stars: ✭ 49 (+250%)
Mutual labels:  fasthttp
rcore-fs
The file system module for rCore OS.
Stars: ✭ 38 (+171.43%)
Mutual labels:  filesystem

fs-over-http

time tracker Docker Pulls Docker Build CodeFactor

A filesystem interface over http.

NOTE: I wrote this when I was still learning Go, and as such many improvements can be made. I have detailed what I would like to improve in the TODO section, with Partial Content, better error handling and response syntax being the main focus.

Contributing

Contributions to fix my code are welcome, as well as any improvements.

To build:

git clone [email protected]:5HT2/fs-over-http.git
cd fs-over-http
make

To run:

# I recommend using genpasswd https://gist.github.com/5HT2/30f98284e9f92e1b47b4df6e05a063fc
AUTH='some secure token'
echo "$AUTH" > token

# Change the port to whatever you'd like. 
# Change localhost to your public IP if you'd like.
./fs-over-http -addr=localhost:6060

Usage

Please see USAGE.md for examples of interacting with a fs-over-http server.

IPv6

IPv6 is supported, do note that you need to format the addr flag differently.

# Example IPv4
./fs-over-http -addr "10.0.1.1:6060"
# Example IPv6
./fs-over-http -addr "[2fb1:e540:13a7:3fa1:37bc:80b4:0b96:dbb8]:6060"

Production

I recommend using Caddy for automatic renewal + as a reverse proxy.

# Caddyfile example
i.l1v.in {
  header Server Caddy "Nintendo Wii"
  reverse_proxy localhost:6060
}

There is also a docker image available with the following command, or checkout the update.sh script for automatically updating a live docker image.

docker pull l1ving/fs-over-http:latest

TODO

  • Binary file support
  • Allow marking a folder as public
  • Custom shell for interacting
  • Partial Content support (docs)
  • Switch X-File-Content to using forms
    • eg: curl -X POST -H "Auth: $TOKEN" -d 'content=File content' localhost:6060/file.txt
    • Switch folder creation to same syntax with empty content
    • Read 512 bytes at a time like so.
  • Move error handling to ListenAndServe instead of individually sending the error
    • Switch to using X-Error-Message instead of printing it out, add a newline end of normal responses
  • Refactor use of JoinStr to fmt.Sprintf/Sprintln and +
  • Set ReadTimeout and WriteTimeout to prevent abuse
  • Add Docker image
    • Add CI service
  • Add Caddyfile example
    • Maybe with rate limit options and the such
    • Refactor docs about TLS
  • Encoding of uploading text-based files (eg the ● character)
  • Cleanup README
  • Fix scripts to use new format
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].