private async Task <ActionResult> NormalView(string fullUrl, string fullRequestUrl, bool isSecure) { var findRouteInput = new FindRouteInput(); findRouteInput.Url = fullUrl.Replace("https://", "").Replace("http://", ""); findRouteInput.FullUrl = fullRequestUrl; findRouteInput.IsSecure = isSecure; findRouteInput.Port = Request.Host.Port.ToString(); var findRouteResult = await _routeManager.FindRouteAsync(findRouteInput); if (!findRouteResult.IsSuccess) { if (findRouteResult.HttpCode == "301") { return(RedirectPermanent(findRouteResult.RedirectionUrl)); } Response.StatusCode = 404; return(View("404")); } var currentRequest = new CurrentRequest(); var siteId = findRouteResult.SiteId; currentRequest.SiteId = siteId; currentRequest.DomainId = findRouteResult.DomainId; currentRequest.DomainDatas = new Dictionary <string, string>(); currentRequest.IsSecure = isSecure; currentRequest.Port = findRouteInput.Port; if (findRouteResult.DomainDatas != null) { foreach (var domainData in findRouteResult.DomainDatas) { currentRequest.DomainDatas.Add(domainData); } } // ICurrentRequest if (findRouteResult.Datas["controller"] == "Seo") { if (findRouteResult.Datas["action"] == "Sitemap") { var sitemap = await _moduleManager.GetSitemapAsync(currentRequest); var elements = SiteMapElements(fullRequestUrl, findRouteResult, sitemap); Response.ContentType = "text/xml"; return(View("SiteMap", elements)); } var userInput = new UserInput <GetSeoInput> { UserId = string.Empty, Data = new GetSeoInput { SiteId = siteId, IsVerifyAuthorisation = false } }; var seoResult = await Business.InvokeAsync <GetSeoCommand, UserInput <GetSeoInput>, CommandResult <SeoBusinessModel> >( _getSeoCommand, userInput); if (findRouteResult.Datas["action"] == "Robots") { Response.ContentType = "text/txt"; ViewBag.Disallows = seoResult.Data.Disallows; return(View("Robots")); } if (findRouteResult.Datas["action"] == "BingSiteAuth") { var meta = seoResult.Data.Metas.FirstOrDefault(m => m.Engine == SeoEngine.Bing); if (meta != null && !string.IsNullOrEmpty(meta.Code)) { ViewBag.Code = meta.Code; return(View("BingSiteAuth")); } } if (findRouteResult.Datas["action"] == "GoogleAuth") { var meta = seoResult.Data.Metas.FirstOrDefault(m => m.Engine == SeoEngine.Google); if (meta != null && !string.IsNullOrEmpty(meta.Code)) { ViewBag.Code = meta.Code; return(View("GoogleAuth")); } } return(View("404")); } dynamic master; try { master = await _moduleManager.GetMasterAsync(currentRequest); } catch (Exception exception) { _logger.LogError(exception, "This catch should be remove"); master = await Business.InvokeAsync <ResetSiteCacheCommand, ResetSiteCacheInput, CommandResult <dynamic> >( _resetSiteCacheCommand, new ResetSiteCacheInput { Site = currentRequest }); } var jsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; dynamic masterJson = null; if (_applicationConfig.MinifyHtml) { masterJson = JsonConvert.SerializeObject(master, Formatting.None, jsonSerializerSettings); } else { masterJson = JsonConvert.SerializeObject(master, Formatting.Indented, jsonSerializerSettings); } ViewBag.MasterJson = masterJson; if (Request.Query["display_menu"].Count > 0) { ViewBag.IsDisplayMenu = false; } else { ViewBag.IsDisplayMenu = true; } if (Request.Query["font_size"].Count > 0) { ViewBag.FontSize = Request.Query["font_size"].FirstOrDefault(); } else { ViewBag.FontSize = null; } ViewBag.Header = GetHeader(findRouteResult, master, Request, fullRequestUrl); ViewBag.Hash = _applicationConfig.Hash; string[] filePaths = Directory.GetFiles(Path.Combine(Directory.GetCurrentDirectory(), "ClientApp", "build", "static", "js"), "main.*", SearchOption.TopDirectoryOnly); ViewBag.Script = "/static/js/" + Path.GetFileName(filePaths[0]); return(View("Index")); }
public async Task <ActionResult <BaseParameters> > Master([FromServices] ModuleManager moduleManager, [FromServices] ResetSiteCacheCommand resetSiteCacheCommand, [FromServices] IRouteManager routeManager, [FromServices] IOptions <ApplicationConfig> options, [FromQuery] string url, [FromQuery] string port = "") { var fullRequestUrl = HttpUtility.UrlDecode(url); var fullUrl = fullRequestUrl.Split('?')[0]; if (fullUrl.Contains(":")) { fullUrl = fullUrl.Replace($":{port}", ""); } var parameters = new BaseParameters(); var simpleUrl = fullUrl.Replace("https://", "").Replace("http://", ""); var findRouteInput = new FindRouteInput(); findRouteInput.Url = simpleUrl; findRouteInput.FullUrl = fullRequestUrl; findRouteInput.IsSecure = true; findRouteInput.Port = Request.Host.Port.ToString(); var findRouteResult = await routeManager.FindRouteAsync(findRouteInput); if (!findRouteResult.IsSuccess) { return(NotFound()); } var currentRequest = new CurrentRequest(); var siteId = findRouteResult.SiteId; currentRequest.SiteId = siteId; currentRequest.DomainId = findRouteResult.DomainId; currentRequest.DomainDatas = new Dictionary <string, string>(); currentRequest.IsSecure = true; currentRequest.Port = findRouteInput.Port; if (findRouteResult.DomainDatas != null) { foreach (var domainData in findRouteResult.DomainDatas) { currentRequest.DomainDatas.Add(domainData); } } dynamic master; try { master = await moduleManager.GetMasterAsync(currentRequest); } catch (Exception exception) { _logger.LogError(exception, "This catch should be remove"); master = await Business.InvokeAsync <ResetSiteCacheCommand, ResetSiteCacheInput, CommandResult <dynamic> >( resetSiteCacheCommand, new ResetSiteCacheInput { Site = currentRequest }); } var value = options.Value; var baseUrlJs = value.MainDomainUrl; parameters.Master = JsonConvert.SerializeObject(master, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); parameters.Version = value.Version; parameters.MainDomainUrl = @UrlHelper.Concat(baseUrlJs); parameters.IsDebug = value.IsDebug; parameters.BaseUrlJs = baseUrlJs; parameters.Header = HomeController.GetHeader(findRouteResult, master, Request, fullRequestUrl); parameters.BaseUrlSite = parameters.Header.BaseUrlSite; return(parameters); }
public async Task <ActionResult <BaseParameters> > Master([FromServices] ModuleManager moduleManager, [FromServices] ResetSiteCacheCommand resetSiteCacheCommand, [FromServices] IRouteManager routeManager, [FromServices] IOptions <ApplicationConfig> options, [FromQuery] string url, [FromQuery] string port = "") { /*var requestedDomain = $"{Request.Scheme}://{Request.Host.Host}"; * string applicationPath = Request.PathBase; * string requestedPath = path; * var fullRequestUrl = @UrlHelper.Concat(requestedDomain, Request.PathBase, requestedPath); * * var fullUrl = UrlHelper.Concat(requestedDomain, applicationPath, requestedPath);*/ var fullRequestUrl = url; var fullUrl = fullRequestUrl.Split('?')[0]; if (fullUrl.Contains(":")) { fullUrl = fullUrl.Replace($":{port}", ""); } var parameters = new BaseParameters(); var simpleUrl = fullUrl.Replace("https://", "").Replace("http://", ""); var findRouteInput = new FindRouteInput(); findRouteInput.Url = simpleUrl; findRouteInput.FullUrl = fullRequestUrl; findRouteInput.IsSecure = true; findRouteInput.Port = Request.Host.Port.ToString(); var findRouteResult = await routeManager.FindRouteAsync(findRouteInput); if (!findRouteResult.IsSuccess) { return(NotFound()); } var currentRequest = new CurrentRequest(); var siteId = findRouteResult.SiteId; currentRequest.SiteId = siteId; currentRequest.DomainId = findRouteResult.DomainId; currentRequest.DomainDatas = new Dictionary <string, string>(); currentRequest.IsSecure = true; currentRequest.Port = findRouteInput.Port; if (findRouteResult.DomainDatas != null) { foreach (var domainData in findRouteResult.DomainDatas) { currentRequest.DomainDatas.Add(domainData); } } dynamic master; try { master = await moduleManager.GetMasterAsync(currentRequest); } catch (Exception exception) { _logger.LogError(exception, "This catch should be remove"); master = await Business.InvokeAsync <ResetSiteCacheCommand, ResetSiteCacheInput, CommandResult <dynamic> >( resetSiteCacheCommand, new ResetSiteCacheInput { Site = currentRequest }); } var value = options.Value; parameters.Master = master; parameters.Version = value.Version; parameters.MainDomainUrl = @UrlHelper.Concat(value.MainDomainUrl); parameters.IsDebug = value.IsDebug; //var baseUrl = UriHelper.BuildAbsolute(Request.Scheme, Request.Host).TrimEnd('/'); // parameters.BaseUrl = baseUrl; var baseUrlJs = ""; baseUrlJs = value.MainDomainUrl; parameters.BaseUrlJs = baseUrlJs; // var masterJson = JsonConvert.SerializeObject(master); parameters.Header = HomeController.GetHeader(findRouteResult, master, Request, fullRequestUrl); parameters.BaseUrlSite = parameters.Header.BaseUrlSite; return(parameters); }