servedir: serve a directory over HTTP from behind NAT

servedir is a tiny Ruby program used to serve a directory over HTTP from boxes that are behind a NAT (most ADSL users).

servedir does not require any additional library and is compatible with Ruby 1.8.7, Ruby 1.9.3 and JRuby.

This program will not try to open ports on the NAT gateway: it expects ports to be already configured in the proper way.

Installation

servedir does not require installation, it is a single standalone executable script.

However, if desired, it is possible to install servedir via RubyGems:

$ gem install servedir

Usage

Launch servedir specifying the directory to be served and the port to be used.

On the box behind NAT:

$ servedir ~/Public/ 13428

Discovering addresses and hostnames...
Server starting... (CTRL-C to terminate)

  local address: <http://localhost:13428/>
  LAN address: <http://fancy-box.local:13428/>
  public address: <http://84.136.123.62:13428/>

[2012-02-11 13:24:01] INFO  WEBrick 1.3.1
[2012-02-11 13:24:01] INFO  ruby 1.8.7 (2010-01-10) [x86_64-linux]
[2012-02-11 13:24:01] INFO  WEBrick::HTTPServer#start: pid=8207 port=13428

From another computer:

$ w3m -dump http://84.136.123.62:13428/
Index of /

 Name                          Last modified         Size
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 Parent Directory              2012/02/11 13:28      -
 bus timetable.pdf             2011/10/09 11:04      136856
 facesofprotest.pdf            2011/04/09 15:15      5531985
 Country pictures 2010/        2011/04/12 22:41      -
 fav_webradios.xml             2009/10/28 17:20      854

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

WEBrick/1.3.1 (Ruby/1.8.7/2010-01-10)
at localhost:13428

Private files

It is possible to block access to private files and also hide them from the directory listing. The list of private files must resides in a file named .private in the served directory; each line must be either a file name or a glob pattern.

Authors

Acknowledgements

The external IP is retrieved via the ipecho.net automation service. Please read and follow the rules concerning automated retrieval; do not abuse their service.

License

This is free software released into the public domain (CC0 license).

See the COPYING file or http://creativecommons.org/publicdomain/zero/1.0/ for more details.