2021-12-20 10:27:29 +00:00
|
|
|
include /etc/nginx/conf.d/include/init-optional-variables;
|
|
|
|
|
|
|
|
location /skynet/blocklist {
|
2021-12-23 11:55:47 +00:00
|
|
|
client_max_body_size 10m; # increase max body size to account for large lists
|
|
|
|
client_body_buffer_size 10m; # force whole body to memory so we can read it
|
|
|
|
|
2021-12-20 10:27:29 +00:00
|
|
|
content_by_lua_block {
|
|
|
|
local httpc = require("resty.http").new()
|
|
|
|
|
|
|
|
ngx.req.read_body() -- ensure the post body data is read before using get_body_data
|
|
|
|
|
|
|
|
-- proxy blocklist update request
|
|
|
|
-- 10.10.10.10 points to sia service (alias not available when using resty-http)
|
|
|
|
local res, err = httpc:request_uri("http://10.10.10.10:9980/skynet/blocklist", {
|
|
|
|
method = "POST",
|
|
|
|
body = ngx.req.get_body_data(),
|
|
|
|
headers = {
|
|
|
|
["Content-Type"] = "application/x-www-form-urlencoded",
|
|
|
|
["Authorization"] = require("skynet.utils").authorization_header(),
|
|
|
|
["User-Agent"] = "Sia-Agent",
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
-- print error and exit with 500 or exit with response if status is not 204
|
|
|
|
if err or (res and res.status ~= ngx.HTTP_NO_CONTENT) then
|
|
|
|
ngx.status = (err and ngx.HTTP_INTERNAL_SERVER_ERROR) or res.status
|
|
|
|
ngx.header["content-type"] = "text/plain"
|
|
|
|
ngx.say(err or res.body)
|
|
|
|
return ngx.exit(ngx.status)
|
|
|
|
end
|
|
|
|
|
|
|
|
require("skynet.blocklist").reload()
|
|
|
|
|
|
|
|
ngx.status = ngx.HTTP_NO_CONTENT
|
|
|
|
return ngx.exit(ngx.status)
|
|
|
|
}
|
|
|
|
}
|