Server-side implementation of the tus protocol in Lua.
Features
- tus protocol 1.0.0
- tus extensions:
- checksum (md5, sha1, sha256)
- concatenation
- concatenation-unfinished
- creation
- creation-defer-length
- expiration
- termination
- each tus extension can be individually disabled
- resource locking via NGINX Lua shared memoy zones
- soft and hard deleteion of resources
Requiremens
- OpenResty or NGINX with mod_lua
- lua-resty-string
- lua-cjson
Synopsis
lua_package_path "/path/to/lua-tus-server/lib/?.lua;;"; lua_shared_dict tuslock 10m; server { location /upload/ { content_by_lua_block { local tus_server = require "tus.server" local tus = tus_server:new() tus.config.storage_backend = "tus.storage_file" tus.config.storage_backend_config.storage_path = "/tmp" tus.config.storage_backend_config.lock_zone = ngx.shared.tuslock tus.config.upload_url = "/upload" tus.config.expire_timeout = 1209600 tus:process_request() if tus.resource.name and tus.resource.state == "completed" then local path = tus.sb:get_path(tus.resource.name) os.rename(path, "/tmp/newfile") tus.sb:delete(tus.resource.name) end } } }
Todo
- concatenation does not merge the resources yet
License
MIT