public ActionResult Domain()
{
string domain = this.RouteData.Values["domain"].ToString();
string[] viewData_domains;
List<DomainDataFromXML> domainData;
// Validate domains because they come from URL
string[] domainsSubmitted = domain.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
Regex regexFront = new Regex(RegularExpression.GetRegularExpression("DomainFront"));
Regex regexFull = new Regex(RegularExpression.GetRegularExpression("Domain"));
int allowedDomainLength;
int numberOfDomainsAllowed;
if (this.HttpContext.Application["DomainSearchAllowedDomainLength"] != null && (string)this.HttpContext.Application["DomainSearchAllowedDomainLength"] != String.Empty
&& this.HttpContext.Application["DomainSearchNumberOfDomainsAllowed"] != null && (string)this.HttpContext.Application["DomainSearchNumberOfDomainsAllowed"] != String.Empty)
{
allowedDomainLength = Int32.Parse((string)this.HttpContext.Application["DomainSearchAllowedDomainLength"]);
numberOfDomainsAllowed = Int32.Parse((string)this.HttpContext.Application["DomainSearchNumberOfDomainsAllowed"]);
}
else
{
throw new ConfigurationErrorsException("Missing AllowedDomainLength or NumberOfDomainsAllowed in configuration");
}
bool wasAnError = false;
for (int i = 0; i < domainsSubmitted.Length; i++)
{
if (domainsSubmitted.Length > numberOfDomainsAllowed)
{
// allowed number of domains searched exceeded
Session["WasAnErrorFromQuery"] = 2;
wasAnError = true;
}
if (!regexFront.IsMatch(domainsSubmitted[i]) && !regexFull.IsMatch(domainsSubmitted[i]))
{
// domains contain characters that are not allowed
Session["WasAnErrorFromQuery"] = 3;
wasAnError = true;
}
if (domainsSubmitted[i].Length > allowedDomainLength)
{
// allowed length of domain name (number of characters) exeeded
Session["WasAnErrorFromQuery"] = 3;
wasAnError = true;
}
if (wasAnError)
{
return RedirectToAction("Index");
}
}
// Get ViewData
IndexHelper.FirstOptionSelected(this, out viewData_domains, out domainData, domain.Trim());
Session["domains"] = viewData_domains.ToArray();
Session["firstOption"] = true;
Session["multiDomains"] = domainData;
return RedirectToAction("Select");
}