diff options
author | Péter Dimitrov <[email protected]> | 2018-04-24 10:11:31 +0200 |
---|---|---|
committer | Péter Dimitrov <[email protected]> | 2018-04-24 10:11:31 +0200 |
commit | 10f6147fa54c0d8a1c4add6fcbc7ac1f5fcc5b08 (patch) | |
tree | 6f903e6da11f14e0cbc739116b8eb589c183fbdb /lib/inets/src | |
parent | 8a965fa7eb42114906df79349382cf28bfbb920e (diff) | |
parent | 35009ed9aaf3fd52d9be11777b51abbef3c7cf75 (diff) | |
download | otp-10f6147fa54c0d8a1c4add6fcbc7ac1f5fcc5b08.tar.gz otp-10f6147fa54c0d8a1c4add6fcbc7ac1f5fcc5b08.tar.bz2 otp-10f6147fa54c0d8a1c4add6fcbc7ac1f5fcc5b08.zip |
Merge branch 'peterdmv/relative_path_script_alias/ERL-574/OTP-15021'
* peterdmv/relative_path_script_alias/ERL-574/OTP-15021:
inets: Fix handling of relative paths in script_alias
Change-Id: I6874d37f538bde0e54276f2841dbb763e1d19ff6
Diffstat (limited to 'lib/inets/src')
-rw-r--r-- | lib/inets/src/http_server/mod_alias.erl | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/lib/inets/src/http_server/mod_alias.erl b/lib/inets/src/http_server/mod_alias.erl index 0333076546..8f0b92710e 100644 --- a/lib/inets/src/http_server/mod_alias.erl +++ b/lib/inets/src/http_server/mod_alias.erl @@ -163,28 +163,24 @@ longest_match([], _RequestURI, _LongestNo, LongestAlias) -> real_script_name(_ConfigDB, _RequestURI, []) -> not_a_script; - -real_script_name(ConfigDB, RequestURI, [{MP,Replacement} | Rest]) - when element(1, MP) =:= re_pattern -> - case re:run(RequestURI, MP, [{capture, none}]) of - match -> - ActualName = - re:replace(RequestURI, MP, Replacement, [{return,list}]), - httpd_util:split_script_path(default_index(ConfigDB, ActualName)); - nomatch -> - real_script_name(ConfigDB, RequestURI, Rest) - end; - real_script_name(ConfigDB, RequestURI, [{FakeName,RealName} | Rest]) -> case re:run(RequestURI, "^" ++ FakeName, [{capture, none}]) of match -> - ActualName = + ActualName0 = re:replace(RequestURI, "^" ++ FakeName, RealName, [{return,list}]), + ActualName = abs_script_path(ConfigDB, ActualName0), httpd_util:split_script_path(default_index(ConfigDB, ActualName)); nomatch -> real_script_name(ConfigDB, RequestURI, Rest) end. +%% ERL-574: relative path in script_alias property results in malformed url +abs_script_path(ConfigDB, [$.|_] = RelPath) -> + Root = httpd_util:lookup(ConfigDB, server_root), + Root ++ "/" ++ RelPath; +abs_script_path(_, RelPath) -> + RelPath. + %% default_index default_index(ConfigDB, Path) -> |