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 2ec6e3b440
commit 0bec4f5ea5
1 changed files with 22 additions and 8 deletions

View File

@ -458,22 +458,36 @@ namespace OpenSim.Region.CoreModules.Media.Moap
{
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
if (wlUrl.EndsWith("*"))
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);
string urlToMatch = url.Authority + url.AbsolutePath;
if (urlToMatch.StartsWith(wlUrl))
// Handle a line starting wildcard slightly differently since this can only match the domain, not the path
if (wlUrl.StartsWith("*"))
{
m_log.DebugFormat("[MOAP]: Whitelist URL {0} matches {1}", wlUrl, urlToMatch);
return true;
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;
if (urlToMatch.StartsWith(wlUrl))
{
m_log.DebugFormat("[MOAP]: Whitelist URL {0} matches {1}", origWlUrl, rawUrl);
return true;
}
}
}