reorg modules
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
local strip_path = require("strip_path")
|
||||
|
||||
-- filename eg. /file_upload/xxxx-xxxx-xxxx-xxxx.mp3
|
||||
local function calc_token(filename)
|
||||
|
||||
-- Upyun upload parameters
|
||||
local operator = ngx.var.upyun_operator
|
||||
local password = ngx.var.upyun_password
|
||||
local bucket = ngx.var.upyun_bucket
|
||||
local directory = ngx.var.upyun_directory
|
||||
|
||||
local expiration = 1800
|
||||
local method = "POST"
|
||||
|
||||
local save_key = "/" .. directory .. "/" .. strip_path.strip_path(filename)
|
||||
print("save key...", save_key)
|
||||
-- Get RFC1123 data
|
||||
local date = ngx.http_time(ngx.time()) -- RFC1123 date
|
||||
print("date ...", date)
|
||||
-- Generate upyun UCT time
|
||||
local utc_time = os.time(os.date("!*t"))
|
||||
-- Calculate upyun file expiration
|
||||
expiration = utc_time + expiration
|
||||
print("expiration ...", expiration)
|
||||
-- 不能使用cjson,因为lua的table没有顺序,cjson encode出来的顺序会错乱
|
||||
local policy = string.format("{\"bucket\":\"%s\",\"save-key\":\"%s\",\"expiration\":\"%s\",\"date\":\"%s\"}", bucket, save_key, expiration, date)
|
||||
local to_be_signed = method .. "&" .. "/" .. bucket .. "&" .. date .. "&" .. ngx.encode_base64(policy)
|
||||
print("to be signed ...", to_be_signed)
|
||||
local hmac_sha1 = ngx.hmac_sha1(ngx.md5(password), to_be_signed)
|
||||
local signature = ngx.encode_base64(hmac_sha1)
|
||||
|
||||
return { token = string.format("UPYUN %s:%s", operator, signature), policy = policy }
|
||||
end
|
||||
|
||||
|
||||
return calc_token
|
||||
Reference in New Issue
Block a user