aboutsummaryrefslogtreecommitdiffstats
path: root/lib/inets/src/http_server/httpd_script_env.erl
diff options
context:
space:
mode:
authorIngela Anderton Andin <[email protected]>2016-04-20 22:13:45 +0200
committerIngela Anderton Andin <[email protected]>2016-04-25 12:15:03 +0200
commitf391e38c388762ec930cd53d9d5897b98e991552 (patch)
tree495cb4f8981111a955cd4fbebddc70e13b5c3451 /lib/inets/src/http_server/httpd_script_env.erl
parent5f67ca5b3d0c13dfbe936fcfa08621eef00d53cf (diff)
downloadotp-f391e38c388762ec930cd53d9d5897b98e991552.tar.gz
otp-f391e38c388762ec930cd53d9d5897b98e991552.tar.bz2
otp-f391e38c388762ec930cd53d9d5897b98e991552.zip
inets: Add peer_cert to ESI environment
Diffstat (limited to 'lib/inets/src/http_server/httpd_script_env.erl')
-rw-r--r--lib/inets/src/http_server/httpd_script_env.erl14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/inets/src/http_server/httpd_script_env.erl b/lib/inets/src/http_server/httpd_script_env.erl
index 25f9bea7b3..e15613273e 100644
--- a/lib/inets/src/http_server/httpd_script_env.erl
+++ b/lib/inets/src/http_server/httpd_script_env.erl
@@ -61,6 +61,19 @@ which_port(#mod{config_db = ConfigDb}) ->
which_peername(#mod{init_data = #init_data{peername = {_, RemoteAddr}}}) ->
RemoteAddr.
+which_peercert(#mod{socket_type = {Type, _}, socket = Socket}) when Type == essl;
+ Type == ssl ->
+ case ssl:peercert(Socket) of
+ {ok, Cert} ->
+ Cert;
+ {error, no_peercert} ->
+ no_peercert;
+ _ ->
+ undefined
+ end;
+which_peercert(_) -> %% Not an ssl connection
+ undefined.
+
which_resolve(#mod{init_data = #init_data{resolve = Resolve}}) ->
Resolve.
@@ -78,6 +91,7 @@ create_basic_elements(esi, ModData) ->
{server_port, which_port(ModData)},
{request_method, which_method(ModData)},
{remote_addr, which_peername(ModData)},
+ {peer_cert, which_peercert(ModData)},
{script_name, which_request_uri(ModData)}];
create_basic_elements(cgi, ModData) ->