using System.Collections.Generic;
using System.Text.RegularExpressions;
private static readonly string rootDomain = "q10academico.com";
private static readonly Dictionary<string, string> knownSubdomains = new Dictionary<string,string>() {
{ "trabajos", "d0af2edd-d0fb-482d-82cf-88a9b6b0610e" },
{ "censa", "017e7dd6-94fb-4685-ba5b-864e886fff3c" },
{ "politecnicodecolombia", "4e7605c4-b750-4a02-84a2-2058e9ab9935" },
{ "colegios", "9483ee6c-dfdf-41ee-a946-6835fbc8cd9e" },
{ "jack", "5caba576-96b9-4a11-8fa3-b97f73082392" }
private static readonly List<CustomDomainInfo> customDomains = new List<CustomDomainInfo>()
new CustomDomainInfo() { Domain = "beta", DefaultSubdomain = null },
new CustomDomainInfo() { Domain = "jack", DefaultSubdomain = "jack" },
new CustomDomainInfo() { Domain = "pruebascafam", DefaultSubdomain = "cafam" },
new CustomDomainInfo() { Domain = "politecnicodecolombia", DefaultSubdomain = "politecnicodecolombia" },
new CustomDomainInfo() { Domain = "cendi", DefaultSubdomain = "cendi" },
new CustomDomainInfo() { Domain = "lonja", DefaultSubdomain = "lonja" },
new CustomDomainInfo() { Domain = "indecap", DefaultSubdomain = "indecap" },
new CustomDomainInfo() { Domain = "cajamag", DefaultSubdomain = "cajamag" }
public static void Main() {
CheckUrl(new Uri("https://q10academico.com"), false, false, false);
CheckUrl(new Uri("https://www.q10academico.com"), false, false, false);
CheckUrl(new Uri("https://jack.q10academico.com"), false, false, false);
CheckUrl(new Uri("https://censa.q10academico.com"), false, false, false);
CheckUrl(new Uri("https://censa.jack.q10academico.com"), false, false, false);
CheckUrl(new Uri("https://fdfdsfdsfsd.q10academico.com"), false, false, false);
CheckUrl(new Uri("https://q10academico.com"), true, false, false);
CheckUrl(new Uri("https://www.q10academico.com"), true, false, false);
CheckUrl(new Uri("https://jack.q10academico.com"), true, false, false);
CheckUrl(new Uri("https://censa.q10academico.com"), true, false, false);
CheckUrl(new Uri("https://censa.jack.q10academico.com"), true, false, false);
CheckUrl(new Uri("https://fdfdsfdsfsd.q10academico.com"), true, false, false);
CheckUrl(new Uri("https://q10academico.com/preinscripcion"), false, true, false);
CheckUrl(new Uri("https://www.q10academico.com/preinscripcion"), false, true, false);
CheckUrl(new Uri("https://jack.q10academico.com/preinscripcion"), false, true, false);
CheckUrl(new Uri("https://censa.q10academico.com/preinscripcion"), false, true, false);
CheckUrl(new Uri("https://censa.jack.q10academico.com/preinscripcion"), false, true, false);
CheckUrl(new Uri("https://fdfdsfdsfsd.q10academico.com/preinscripcion"), false, true, false);
CheckUrl(new Uri("https://q10academico.com/campanias"), true, false, false);
CheckUrl(new Uri("https://www.q10academico.com/campanias"), true, false, false);
CheckUrl(new Uri("https://jack.q10academico.com/campanias"), true, false, false);
CheckUrl(new Uri("https://censa.q10academico.com/campanias"), true, false, false);
CheckUrl(new Uri("https://censa.jack.q10academico.com/campanias"), true, false, false);
CheckUrl(new Uri("https://fdfdsfdsfsd.q10academico.com/campanias"), true, false, false);
CheckUrl(new Uri("https://beta.q10academico.com"), false, false, false);
CheckUrl(new Uri("https://trabajos.beta.q10academico.com"), false, false, false);
CheckUrl(new Uri("https://pruebascafam.q10academico.com"), false, false, false);
CheckUrl(new Uri("https://trabajos.pruebascafam.q10academico.com"), false, false, false);
CheckUrl(new Uri("https://cajamag.q10academico.com"), false, false, false);
CheckUrl(new Uri("http://localhost:1620"), false, false, false);
CheckUrl(new Uri("http://escobar5-laptop:1620"), false, false, false);
public static void CheckUrl(Uri uri, bool isAuthenticated, bool allowAnonymous, bool hasAplent)
var resultUrl = string.Empty;
if (url.StartsWith("localhost")) return;
var customDomain = customDomains.FirstOrDefault(cd => new Regex(@"^(.*\.)*" + cd.Domain + @"\.q10academico\.com$", RegexOptions.IgnoreCase).IsMatch(url));
var isCustomDomain = customDomain != null;
var subDomain = url.Replace((isCustomDomain ? (customDomain.Domain + ".") : "") + "q10academico.com", "").TrimEnd('.');
if(subDomain == "www") subDomain = null;
if(string.IsNullOrEmpty(subDomain) && (isAuthenticated || (allowAnonymous && hasAplent))) {
resultUrl = uri.ToString();
if(string.IsNullOrEmpty(subDomain) && customDomain?.DefaultSubdomain != null) subDomain = customDomain.DefaultSubdomain;
if(string.IsNullOrEmpty(subDomain)) {
resultUrl = uri.ToString();
var aplent = knownSubdomains.ContainsKey(subDomain) ? knownSubdomains[subDomain] : null;
resultUrl = "https://" + (isCustomDomain ? customDomain.Domain + "." : "www.") + rootDomain;
var queryString = string.Join(string.Empty, uri.Query);
var qs = System.Web.HttpUtility.ParseQueryString(queryString);
resultUrl += (allowAnonymous || isAuthenticated ? uri.PathAndQuery : "/login");
if (string.IsNullOrEmpty(qs["aplentId"]) && allowAnonymous)
resultUrl += ((resultUrl.IndexOf("?") >= 0 ? "&" : "?") + "aplentId=" + aplent);
resultUrl = "https://www.q10soluciones.com/Agatha/Signin.aspx?id=";
Console.WriteLine("Custom domain: " + customDomain?.Domain);
Console.WriteLine("Subdomain: " + subDomain);
Console.WriteLine("Url: " + resultUrl);
public class CustomDomainInfo
public string Domain { get; set; }
public string DefaultSubdomain { get; set; }