/// <summary> /// Update the subdomain with directory discovery /// </summary> /// <param name="subdomain">The subdomain</param> /// <param name="scriptOutput">The terminal output one line</param> /// <returns><see cref="ISubdomainService"/></returns> private SubdomainService UpdateSubdomainDirectory(Subdomain subdomain, ScriptOutput scriptOutput) { if (!string.IsNullOrEmpty(scriptOutput.HttpDirectory)) { var httpDirectory = scriptOutput.HttpDirectory.TrimEnd('/').TrimEnd(); if (subdomain.ServiceHttp == null) { subdomain.ServiceHttp = new ServiceHttp(); } if (subdomain.ServiceHttp.Directories == null) { subdomain.ServiceHttp.Directories = new List <ServiceHttpDirectory>(); } if (subdomain.ServiceHttp.Directories.Any(d => d.Directory == httpDirectory)) { return(this); } var directory = new ServiceHttpDirectory() { Directory = httpDirectory, StatusCode = scriptOutput.HttpDirectoryStatusCode, Method = scriptOutput.HttpDirectoryMethod, Size = scriptOutput.HttpDirectorySize }; subdomain.ServiceHttp.Directories.Add(directory); } return(this); }
/// <summary> /// Update the subdomain with directory discovery /// </summary> /// <param name="subdomain">The subdomain</param> /// <param name="agent">The Agent</param> /// <param name="scriptOutput">The terminal output one line</param> /// <param name="activateNotification">If the notification is active</param> /// <param name="cancellationToken">Notification that operations should be canceled</param> /// <returns>A task</returns> private async Task UpdateSubdomainDirectory(Subdomain subdomain, Agent agent, ScriptOutput scriptOutput, bool activateNotification, CancellationToken cancellationToken = default) { if (!string.IsNullOrEmpty(scriptOutput.HttpDirectory)) { var httpDirectory = scriptOutput.HttpDirectory.TrimEnd('/').TrimEnd(); if (subdomain.ServiceHttp == null) { subdomain.ServiceHttp = new ServiceHttp(); } if (subdomain.ServiceHttp.Directories == null) { subdomain.ServiceHttp.Directories = new List <ServiceHttpDirectory>(); } if (subdomain.ServiceHttp.Directories.Any(d => d.Directory == httpDirectory)) { return; } var directory = new ServiceHttpDirectory() { Directory = httpDirectory, StatusCode = scriptOutput.HttpDirectoryStatusCode, Method = scriptOutput.HttpDirectoryMethod, Size = scriptOutput.HttpDirectorySize }; subdomain.ServiceHttp.Directories.Add(directory); if (activateNotification && agent.NotifyNewFound && agent.AgentNotification != null && !string.IsNullOrEmpty(agent.AgentNotification.DirectoryPayload)) { var payload = agent.AgentNotification.DirectoryPayload.Replace("{{domain}}", subdomain.Name).Replace("{{directory}}", httpDirectory); await this.notificationService.SendAsync(payload, cancellationToken); } } }