Software /
code /
prosody
File
util/id.lua @ 11309:b59aed75dc5e
mod_http_file_share: Let's write another XEP-0363 implementation
This variant is meant to improve upon mod_http_upload in some ways:
* Handle files much of arbitrary size efficiently
* Allow GET and PUT URLs to be different
* Remember Content-Type sent by client
* Avoid dependency on mod_http_files
* Built-in way to delegate storage to another httpd
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 26 Jan 2021 03:19:17 +0100 |
parent | 8016:9546c629289b |
child | 12110:b5b799a2a10c |
line wrap: on
line source
-- Prosody IM -- Copyright (C) 2008-2017 Matthew Wild -- Copyright (C) 2008-2017 Waqas Hussain -- Copyright (C) 2008-2017 Kim Alvefur -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- local s_gsub = string.gsub; local random_bytes = require "util.random".bytes; local base64_encode = require "util.encodings".base64.encode; local b64url = { ["+"] = "-", ["/"] = "_", ["="] = "" }; local function b64url_random(len) return (s_gsub(base64_encode(random_bytes(len)), "[+/=]", b64url)); end return { short = function () return b64url_random(6); end; medium = function () return b64url_random(12); end; long = function () return b64url_random(24); end; custom = function (size) return function () return b64url_random(size); end; end; }