Go to file
MasterofJOKers 0b010d5c10 Upload to uploaddir instead of /tmp
When uploading larger files, cgi.FieldStorage decides to store the files
in an unnamed temporary file in /tmp while parsing the form-data. This
is counter-intuitive and might not work, if the partition hosting /tmp/
is too small. Therefore, we overwrite FieldStorage's make_file() method
to use the targetDir as upload path.

While we're at it, we also use NamedTemporaryFile instead of
TemporaryFile, because that lets us use os.link() to create a "copy" of
the file-data without writing it to disk a second time. This does not
work for small data, because small data is kept in an BytesIO object and
thus never written to file automatically. For this case, we keep the old
code, that's writing down files manually.

We have to inline-define CustomFieldStorage, because FieldStorage will
instantiate a new FieldStorage instance for parsing the parts of a
multipart/form-data body and thus we cannot pass targetDir via
__init__() argument.

Signed-off-by: MasterofJOKers <joker@someserver.de>
2022-01-18 22:52:44 +01:00
.github/workflows Add pep8 check to tox and GitHub actions 2022-01-18 21:33:15 +01:00
servefile Upload to uploaddir instead of /tmp 2022-01-18 22:52:44 +01:00
tests Upload to uploaddir instead of /tmp 2022-01-18 22:52:44 +01:00
.gitignore Initial tests 2019-02-17 21:29:23 +01:00
ChangeLog Release v0.5.3 2021-11-18 00:32:41 +01:00
MANIFEST.in Moved to version v0.4.1 2012-05-04 16:32:17 +02:00
README.md Add README.md 2020-09-30 01:12:53 +02:00
servefile.1 Release v0.5.3 2021-11-18 00:32:41 +01:00
setup.py Release v0.5.3 2021-11-18 00:32:41 +01:00
tox.ini Add pep8 check to tox and GitHub actions 2022-01-18 21:33:15 +01:00

README.md

Servefile

Serve files from shell via a small HTTP server. The server redirects all HTTP requests to the file, so only IP and port must be given to another user to access the file. Its main purpose is to quickly send a file to users in your local network, independent of their current setup (OS/software). Besides that it also supports uploads, SSL, HTTP basic auth and directory listings.

Features:

  • serve single file
  • serve a directory with directory index
  • file upload via webinterface
  • HTTPS with on the fly generated self signed SSL certificates
  • HTTP basic authentication
  • serving files/directories as on request generated tar files

Install

Via pip

pip install servefile

After installation either execute servefile --help or python -m servefile --help

Standalone: If you don't have pip available just copy servefile/servefile.py onto the target machine, make it executable and you are ready to go.

$ wget https://raw.githubusercontent.com/sebageek/servefile/master/servefile/servefile.py -O servefile
$ chmod +x servefile
$ ./servefile --help