shit

command module
v0.0.0-...-1c95cb1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2024 License: MIT Imports: 13 Imported by: 0

README

shit - share it

simple and effective fileserver written in go to share files quickly

shit when i first created it was just a go script that ran an http.FileServer on the current directory but i kept adding more features as i needed them over time (hosting a single file, hosting multiple files, hosting both files and directories, etc.) but now i think its ready for other people to use

shit is a successor to my previous project vmshare

go install github.com/notwithering/shit@latest

features

  • file and directory sharing
    • allows serving multiple files or directories specified via command-line arguments
    • defaults to serving the current working directory if no arguments are provided
  • port specification
    • customizable server port using --port or -p flag
    • defaults to port 8080 if not specified
  • dynamic file and directory browsing
    • automatically lists directory contents as clickable links in an html interface
    • redirects to a file or directory if the root directory contains a single export target
  • file handling
  • error handling
    • provides error logging in the console including timestamps for debugging
    • returns appropriate http error response to the client for issues like missing files or directories
  • path validation and security
    • ensured safe file and directory resolution to prevent directory traversal attacks
  • ease of use
    • supports simple command line usage with the github.com/alecthomas/kingpin library for argument parsing
    • automatically displays the local server address (http://127.0.0.1:<port>)

examples

$ echo "hello" > a.txt
$ echo "hi" > b.txt
$ mkdir dir
$ echo "hey" > dir/c.txt

host current directory

$ shit
$ curl 127.0.0.1:8080
a.txt
b.txt
dir/
$ curl 127.0.0.1:8080/a.txt
hello

host a single file

$ shit b.txt
$ curl -L 127.0.0.1:8080
hi

host a few files

$ shit a.txt b.txt
$ curl 127.0.0.1:8080
a.txt
b.txt

host a file and a directory

$ shit a.txt dir/
$ curl 127.0.0.1:8080
a.txt
dir/
$ curl 127.0.0.1:8080/dir
c.txt
$ curl 127.0.0.1:8080/dir/c.txt
hey

etc.

licenses

this project uses the following dependencies with the license as noted:

each dependency retains its respective license. for more details refer to their official documentation or source code

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL