4
4
-- that can be shared across multiple servers, so this can work in a
5
5
-- multi-server, load-balanced environment).
6
6
return function (auto_ssl_instance )
7
- ngx .req .read_body ()
8
- local path = ngx .var .request_uri
9
- local params = ngx .req .get_post_args ()
10
-
11
7
if ngx .var .http_x_hook_secret ~= ngx .shared .auto_ssl_settings :get (" hook_server:secret" ) then
12
- return ngx .exit (ngx .HTTP_FORBIDDEN )
8
+ ngx .log (ngx .ERR , " auto-ssl: unauthorized access to hook server (hook secret did not match)" )
9
+ return ngx .exit (ngx .HTTP_UNAUTHORIZED )
13
10
end
14
11
12
+ ngx .req .read_body ()
13
+ local params , params_err = ngx .req .get_post_args ()
14
+ if not params then
15
+ ngx .log (ngx .ERR , " auto-ssl: failed to parse POST args: " , params_err )
16
+ return ngx .exit (ngx .HTTP_INTERNAL_SERVER_ERROR )
17
+ end
18
+
19
+ local path = ngx .var .request_uri
15
20
local storage = auto_ssl_instance :get (" storage" )
16
21
if path == " /deploy-challenge" then
17
22
assert (params [" domain" ])
@@ -20,13 +25,15 @@ return function(auto_ssl_instance)
20
25
local _ , err = storage :set_challenge (params [" domain" ], params [" token_filename" ], params [" token_value" ])
21
26
if err then
22
27
ngx .log (ngx .ERR , " auto-ssl: failed to set challenge: " , err )
28
+ return ngx .exit (ngx .HTTP_INTERNAL_SERVER_ERROR )
23
29
end
24
30
elseif path == " /clean-challenge" then
25
31
assert (params [" domain" ])
26
32
assert (params [" token_filename" ])
27
33
local _ , err = storage :delete_challenge (params [" domain" ], params [" token_filename" ])
28
34
if err then
29
35
ngx .log (ngx .ERR , " auto-ssl: failed to delete challenge: " , err )
36
+ return ngx .exit (ngx .HTTP_INTERNAL_SERVER_ERROR )
30
37
end
31
38
elseif path == " /deploy-cert" then
32
39
assert (params [" domain" ])
@@ -35,6 +42,10 @@ return function(auto_ssl_instance)
35
42
local _ , err = storage :set_cert (params [" domain" ], params [" fullchain" ], params [" privkey" ], params [" cert" ])
36
43
if err then
37
44
ngx .log (ngx .ERR , " auto-ssl: failed to set cert: " , err )
45
+ return ngx .exit (ngx .HTTP_INTERNAL_SERVER_ERROR )
38
46
end
47
+ else
48
+ ngx .log (ngx .ERR , " auto-ssl: unknown request to hook server: " , path )
49
+ return ngx .exit (ngx .HTTP_NOT_FOUND )
39
50
end
40
51
end
0 commit comments