include /etc/nginx/conf.d/include/init-optional-variables;

location /skynet/blocklist {
    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

    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)
    }
}
