Handle checking of line starting "*" wildcard for whitelist patterns

A line starting * can only be applied to the domain, not the path
prebuild-update
Justin Clark-Casey (justincc) 2010-07-15 21:51:57 +01:00
parent 664cbe2357
commit cd985ab71b
1 changed files with 22 additions and 8 deletions

View File

@ -458,24 +458,38 @@ namespace OpenSim.Region.CoreModules.Media.Moap
{ {
Uri url = new Uri(rawUrl); Uri url = new Uri(rawUrl);
foreach (string rawWlUrl in whitelist) foreach (string origWlUrl in whitelist)
{ {
string wlUrl = rawWlUrl; string wlUrl = origWlUrl;
// Deal with a line-ending wildcard // Deal with a line-ending wildcard
if (wlUrl.EndsWith("*")) if (wlUrl.EndsWith("*"))
wlUrl = wlUrl.Remove(wlUrl.Length - 1); wlUrl = wlUrl.Remove(wlUrl.Length - 1);
m_log.DebugFormat("[MOAP]: Checking whitelist URL {0}", wlUrl); m_log.DebugFormat("[MOAP]: Checking whitelist URL pattern {0}", origWlUrl);
// Handle a line starting wildcard slightly differently since this can only match the domain, not the path
if (wlUrl.StartsWith("*"))
{
wlUrl = wlUrl.Substring(1);
if (url.Host.Contains(wlUrl))
{
m_log.DebugFormat("[MOAP]: Whitelist URL {0} matches {1}", origWlUrl, rawUrl);
return true;
}
}
else
{
string urlToMatch = url.Authority + url.AbsolutePath; string urlToMatch = url.Authority + url.AbsolutePath;
if (urlToMatch.StartsWith(wlUrl)) if (urlToMatch.StartsWith(wlUrl))
{ {
m_log.DebugFormat("[MOAP]: Whitelist URL {0} matches {1}", wlUrl, urlToMatch); m_log.DebugFormat("[MOAP]: Whitelist URL {0} matches {1}", origWlUrl, rawUrl);
return true; return true;
} }
} }
}
return false; return false;
} }