Exemple #1
0
 public DtoActionResult AddHistory(DtoPolicyResults results)
 {
     Request.Method   = Method.POST;
     Request.Resource = string.Format("ProvisionedComm/{0}/AddHistory/", Resource);
     return(new ApiRequest().ExecuteSymKeyEncryption <DtoActionResult>(Request,
                                                                       JsonConvert.SerializeObject(results)));
 }
        public DtoActionResult AddHistories(DtoPolicyResults results, string clientIdentity)
        {
            var client = _uow.ComputerRepository.GetFirstOrDefault(x => x.Guid == clientIdentity);

            if (client == null)
            {
                return new DtoActionResult()
                       {
                           ErrorMessage = "Client Not Found", Success = false
                       }
            }
            ;

            var actionResult = new DtoActionResult();

            foreach (var history in results.Histories)
            {
                var policy = _uow.PolicyRepository.GetFirstOrDefault(x => x.Guid == history.PolicyGuid);

                if (policy == null)
                {
                    continue;
                }
                history.PolicyId   = policy.Id;
                history.ComputerId = client.Id;
                _uow.PolicyHistoryRepository.Insert(history);
            }

            _uow.Save();

            foreach (var ci in results.CustomInventories)
            {
                var module = _uow.ScriptModuleRepository.GetFirstOrDefault(x => x.Guid == ci.ModuleGuid);
                if (module == null)
                {
                    continue;
                }
                var existing =
                    _uow.CustomInventoryRepository.GetFirstOrDefault(
                        x => x.ComputerId == client.Id && x.ScriptId == module.Id);
                if (existing == null)
                {
                    ci.ScriptId   = module.Id;
                    ci.ComputerId = client.Id;
                    _uow.CustomInventoryRepository.Insert(ci);
                }
                else
                {
                    existing.Value = ci.Value;
                    _uow.CustomInventoryRepository.Update(existing, existing.Id);
                }
            }

            _uow.Save();
            actionResult.Success = true;

            return(actionResult);
        }
    }
Exemple #3
0
 public DtoActionResult SendServerResults(DtoPolicyResults results)
 {
     Request.Method = Method.POST;
     Request.AddJsonBody(results);
     Request.Resource = string.Format("api/{0}/SendServerResults/", Resource);
     return
         (new ApiRequest("http://localhost:" + DtoGobalSettings.LocalApiPort + "/").Execute <DtoActionResult>(
              Request));
 }
Exemple #4
0
        public DtoActionResult AddHistory(DtoPolicyResults results)
        {
            var clientGuid = RequestContext.Principal.Identity.Name;

            return(new ServicePolicyHistory().AddHistories(results, clientGuid));
        }
Exemple #5
0
        private void RecordResults()
        {
            Logger.Info("Submitting Policy Results");
            var serverHistoryList   = new List <DtoServerPolicyHistory>();
            var customInventoryList = new List <DtoScriptModuleOutput>();

            foreach (var policyResult in _policyResults)
            {
                var history = new EntityPolicyHistory();
                history.PolicyGUID  = policyResult.PolicyGuid;
                history.PolicyHash  = policyResult.PolicyHash;
                history.LastRunTime = DateTime.UtcNow;
                history.Username    = Environment.UserDomainName + "\\" + Environment.UserName;

                if (!policyResult.SkipServerResult)
                {
                    var serverHistory = new DtoServerPolicyHistory();
                    serverHistory.Hash = policyResult.PolicyHash;
                    if (policyResult.PolicyResult == EnumPolicy.Result.Success)
                    {
                        serverHistory.Result = EnumPolicyHistory.RunResult.Success;
                    }
                    else if (policyResult.PolicyResult == EnumPolicy.Result.Failed)
                    {
                        serverHistory.Result = EnumPolicyHistory.RunResult.Failed;
                    }
                    else if (policyResult.PolicyResult == EnumPolicy.Result.Skipped)
                    {
                        serverHistory.Result = EnumPolicyHistory.RunResult.Skipped;
                    }
                    else
                    {
                        serverHistory.Result = EnumPolicyHistory.RunResult.NotApplicable;
                    }

                    serverHistory.PolicyGuid  = policyResult.PolicyGuid;
                    serverHistory.LastRunTime = DateTime.UtcNow;
                    serverHistory.User        = Environment.UserDomainName + "\\" + Environment.UserName;
                    serverHistoryList.Add(serverHistory);
                }
                //Don't record local results if not success, only server
                if (policyResult.PolicyResult == EnumPolicy.Result.Success || policyResult.PolicyResult == EnumPolicy.Result.NotApplicable)
                {
                    if (policyResult.ScriptOutputs.Count > 0)
                    {
                        customInventoryList.AddRange(policyResult.ScriptOutputs);
                    }
                    if (_trigger == EnumPolicy.Trigger.Login)
                    {
                        new APICall().LocalApi.WritePolicyHistory(history);
                    }
                    else
                    {
                        new PolicyHistoryServices().AddHistory(history);
                    }
                }
            }

            var results = new DtoPolicyResults();

            results.CustomInventories = customInventoryList;
            results.Histories         = serverHistoryList;
            if (results.CustomInventories.Count == 0 && results.Histories.Count == 0)
            {
                Logger.Info("Completed Submitting Policy Results");
                return;
            }

            if (_trigger == EnumPolicy.Trigger.Login)
            {
                new APICall().LocalApi.SendServerResults(results);
            }
            else
            {
                new APICall().PolicyApi.AddHistory(results);
            }
            Logger.Info("Completed Submitting Policy Results");
        }
Exemple #6
0
 public DtoActionResult SendServerResults(DtoPolicyResults results)
 {
     return(new APICall().PolicyApi.AddHistory(results));
 }