Beispiel #1
0
        public async Task <IActionResult> RunAgent([FromBody] AgentRunDto agentRunDto, CancellationToken cancellationToken)
        {
            var target = await this.targetService.GetByCriteriaAsync(t => t.Name == agentRunDto.Target, cancellationToken);

            if (target == null)
            {
                return(BadRequest());
            }

            var rootDomain = await this.rootDomainService.GetAllQueryableByCriteria(t => t.Name == agentRunDto.RootDomain && t.Target == target, cancellationToken)
                             .Include(t => t.Subdomains)
                             .ThenInclude(s => s.ServiceHttp)
                             .Include(t => t.Subdomains)
                             .ThenInclude(s => s.Services)
                             .Include(t => t.Subdomains)
                             .ThenInclude(n => n.Notes)
                             .FirstOrDefaultAsync(cancellationToken);

            if (rootDomain == null)
            {
                return(BadRequest());
            }

            Subdomain subdomain = null;

            if (!string.IsNullOrWhiteSpace(agentRunDto.Subdomain))
            {
                subdomain = await this.subdomainService.GetAllQueryableByCriteria(s => s.RootDomain == rootDomain && s.Name == agentRunDto.Subdomain, cancellationToken)
                            .Include(s => s.Services)
                            .Include(n => n.Notes)
                            .Include(s => s.ServiceHttp)
                            .ThenInclude(s => s.Directories)
                            .Include(s => s.Labels)
                            .ThenInclude(l => l.Label)
                            .FirstOrDefaultAsync(cancellationToken);

                if (subdomain == null)
                {
                    return(NotFound());
                }
            }

            var agent = await agentService.GetAgentWithCategoryAsync(a => a.Name == agentRunDto.Agent, cancellationToken);

            if (agent == null)
            {
                return(BadRequest());
            }

            await this.agentService.RunAsync(target, rootDomain, subdomain, agent, agentRunDto.Command, agentRunDto.ActivateNotification, cancellationToken);

            return(NoContent());
        }
        public async Task <IActionResult> RunAgent([FromBody] AgentRunDto agentRunDto, CancellationToken cancellationToken)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var target = await this.targetService.GetAllQueryableByCriteria(t => t.Name == agentRunDto.Target, cancellationToken)
                         .Include(t => t.Subdomains)
                         .ThenInclude(s => s.ServiceHttp)
                         .Include(t => t.Subdomains)
                         .ThenInclude(s => s.Services)
                         .FirstOrDefaultAsync(cancellationToken);

            if (target == null)
            {
                return(BadRequest());
            }

            Subdomain subdomain = null;

            if (!string.IsNullOrWhiteSpace(agentRunDto.Subdomain))
            {
                subdomain = await this.subdomainService.GetByCriteriaAsync(s => s.Target == target && s.Name == agentRunDto.Subdomain, cancellationToken);

                if (subdomain == null)
                {
                    return(NotFound());
                }
            }

            var agent = await agentService.GetByCriteriaAsync(a => a.Name == agentRunDto.Agent, cancellationToken);

            if (agent == null)
            {
                return(BadRequest());
            }

            await this.agentService.RunAsync(target, subdomain, agent, agentRunDto.Command, cancellationToken);

            return(NoContent());
        }
Beispiel #3
0
        public async Task <ActionResult> StopAgent([FromBody] AgentRunDto agentRunDto, CancellationToken cancellationToken)
        {
            var target = await this.targetService.GetByCriteriaAsync(t => t.Name == agentRunDto.Target, cancellationToken);

            if (target == null)
            {
                return(BadRequest());
            }

            var rootDomain = await this.rootDomainService.GetByCriteriaAsync(t => t.Name == agentRunDto.RootDomain && t.Target == target, cancellationToken);

            if (rootDomain == null)
            {
                return(BadRequest());
            }

            Subdomain subdomain = null;

            if (!string.IsNullOrWhiteSpace(agentRunDto.Subdomain))
            {
                subdomain = await this.subdomainService.GetByCriteriaAsync(s => s.RootDomain == rootDomain && s.Name == agentRunDto.Subdomain, cancellationToken);

                if (subdomain == null)
                {
                    return(NotFound());
                }
            }

            var agent = await agentService.GetByCriteriaAsync(a => a.Name == agentRunDto.Agent, cancellationToken);

            if (agent == null)
            {
                return(BadRequest());
            }

            var task = this.agentService.StopAsync(target, rootDomain, subdomain, agent, cancellationToken);

            return(NoContent());
        }