Пример #1
0
 public PrinterModuleController()
 {
     _printerModuleServices = new ServicePrinterModule();
     _auditLogService       = new ServiceAuditLog();
     _userId = Convert.ToInt32(((ClaimsIdentity)User.Identity).Claims.Where(c => c.Type == "user_id")
                               .Select(c => c.Value).SingleOrDefault());
 }
Пример #2
0
        private void PrinterModule(EntityPolicyModules policyModule)
        {
            var clientPrinterModule = new DtoClientPrinterModule();
            var printerModule       = new ServicePrinterModule().GetModule(policyModule.ModuleId);

            clientPrinterModule.Guid               = printerModule.Guid;
            clientPrinterModule.DisplayName        = printerModule.Name;
            clientPrinterModule.PrinterPath        = printerModule.NetworkPath;
            clientPrinterModule.Order              = policyModule.Order;
            clientPrinterModule.IsDefault          = printerModule.IsDefault;
            clientPrinterModule.RestartSpooler     = printerModule.RestartSpooler;
            clientPrinterModule.PrinterAction      = printerModule.Action;
            clientPrinterModule.WaitForEnumeration = printerModule.WaitForEnumeration;

            if (policyModule.ConditionId != -1)
            {
                var conditionScript = new ServiceScriptModule().GetModule(policyModule.ConditionId);
                if (conditionScript != null)
                {
                    clientPrinterModule.ConditionFailedAction    = policyModule.ConditionFailedAction;
                    clientPrinterModule.ConditionNextOrder       = policyModule.ConditionNextModule;
                    clientPrinterModule.Condition                = new DtoClientModuleCondition();
                    clientPrinterModule.Condition.Arguments      = conditionScript.Arguments;
                    clientPrinterModule.Condition.DisplayName    = conditionScript.Name;
                    clientPrinterModule.Condition.Guid           = conditionScript.Guid;
                    clientPrinterModule.Condition.RedirectError  = conditionScript.RedirectStdError;
                    clientPrinterModule.Condition.RedirectOutput = conditionScript.RedirectStdOut;
                    if (conditionScript.ImpersonationId != -1)
                    {
                        var scriptImpersonationGuid = new ServiceImpersonationAccount().GetGuid(conditionScript.ImpersonationId);
                        if (!string.IsNullOrEmpty(scriptImpersonationGuid))
                        {
                            clientPrinterModule.Condition.RunAs = scriptImpersonationGuid;
                        }
                    }
                    clientPrinterModule.Condition.ScriptType = conditionScript.ScriptType;
                    foreach (var successCode in conditionScript.SuccessCodes.Split(','))
                    {
                        clientPrinterModule.Condition.SuccessCodes.Add(successCode);
                    }
                    clientPrinterModule.Condition.Timeout          = conditionScript.Timeout;
                    clientPrinterModule.Condition.WorkingDirectory = conditionScript.WorkingDirectory;
                }
            }

            _clientPolicy.PrinterModules.Add(clientPrinterModule);
        }
Пример #3
0
        private string VerifyPrinter(EntityPolicyModules policyModule)
        {
            var printerModule = new ServicePrinterModule().GetModule(policyModule.ModuleId);

            if (printerModule == null)
            {
                return("An Assigned Printer Module No Longer Exists");
            }

            if (string.IsNullOrEmpty(printerModule.Name))
            {
                return("A Printer Module Has An Invalid Name");
            }

            if (printerModule.Archived)
            {
                return("Printer Module: " + printerModule.Name + " Is Archived");
            }

            if (string.IsNullOrEmpty(printerModule.NetworkPath))
            {
                return("Printer Module: " + printerModule.Name + " Has An Invalid Network Path");
            }

            if (string.IsNullOrEmpty(printerModule.Guid))
            {
                return("Printer Module: " + printerModule.Name + " Has An Invalid GUID");
            }

            if (printerModule.Action != EnumPrinterModule.ActionType.Delete &&
                printerModule.Action != EnumPrinterModule.ActionType.Install &&
                printerModule.Action != EnumPrinterModule.ActionType.InstallPowershell &&
                printerModule.Action != EnumPrinterModule.ActionType.None)
            {
                return("Printer Module: " + printerModule.Name + " Has An Invalid Action");
            }
            int value;

            if (!int.TryParse(policyModule.Order.ToString(), out value))
            {
                return("Printer Module: " + printerModule.Name + " Has An Invalid Order");
            }

            return(null);
        }
Пример #4
0
        private void CopyPrinterModule(EntityPolicyModules policyModule)
        {
            var printerModuleExport = new DtoPrinterModuleExport();
            var printerModule       = new ServicePrinterModule().GetModule(policyModule.ModuleId);

            printerModuleExport.DisplayName        = printerModule.Name;
            printerModuleExport.PrinterPath        = printerModule.NetworkPath;
            printerModuleExport.Description        = printerModule.Description;
            printerModuleExport.Order              = policyModule.Order;
            printerModuleExport.IsDefault          = printerModule.IsDefault;
            printerModuleExport.RestartSpooler     = printerModule.RestartSpooler;
            printerModuleExport.PrinterAction      = printerModule.Action;
            printerModuleExport.WaitForEnumeration = printerModule.WaitForEnumeration;
            printerModuleExport.Guid = printerModule.Guid;
            printerModuleExport.ConditionFailedAction = policyModule.ConditionFailedAction;
            printerModuleExport.ConditionNextOrder    = policyModule.ConditionNextModule;

            if (policyModule.ConditionId != -1)
            {
                printerModuleExport.Condition = GetCondition(policyModule.ConditionId);
            }
            _policyExport.PrinterModules.Add(printerModuleExport);
        }
Пример #5
0
        public DtoActionResult Restore(int moduleId, EnumModule.ModuleType moduleType)
        {
            var result = _moduleServices.RestoreModule(moduleId, moduleType);

            if (result == null)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            if (result.Success)
            {
                var auditLog = new EntityAuditLog();
                switch (moduleType)
                {
                case EnumModule.ModuleType.Command:
                    var cModule = new ServiceCommandModule().GetModule(moduleId);
                    auditLog.ObjectName = cModule.Name;
                    auditLog.ObjectJson = JsonConvert.SerializeObject(cModule);
                    break;

                case EnumModule.ModuleType.FileCopy:
                    var fModule = new ServiceFileCopyModule().GetModule(moduleId);
                    auditLog.ObjectName = fModule.Name;
                    auditLog.ObjectJson = JsonConvert.SerializeObject(fModule);
                    break;

                case EnumModule.ModuleType.Printer:
                    var pModule = new ServicePrinterModule().GetModule(moduleId);
                    auditLog.ObjectName = pModule.Name;
                    auditLog.ObjectJson = JsonConvert.SerializeObject(pModule);
                    break;

                case EnumModule.ModuleType.Script:
                    var scModule = new ServiceScriptModule().GetModule(moduleId);
                    auditLog.ObjectName = scModule.Name;
                    auditLog.ObjectJson = JsonConvert.SerializeObject(scModule);
                    break;

                case EnumModule.ModuleType.Software:
                    var sModule = new ServiceSoftwareModule().GetModule(moduleId);
                    auditLog.ObjectName = sModule.Name;
                    auditLog.ObjectJson = JsonConvert.SerializeObject(sModule);
                    break;

                case EnumModule.ModuleType.Wupdate:
                    var uModule = new ServiceWuModule().GetModule(moduleId);
                    auditLog.ObjectName = uModule.Name;
                    auditLog.ObjectJson = JsonConvert.SerializeObject(uModule);
                    break;

                case EnumModule.ModuleType.Message:
                    var messageModule = new ServiceMessageModule().GetModule(moduleId);
                    auditLog.ObjectName = messageModule.Name;
                    auditLog.ObjectJson = JsonConvert.SerializeObject(messageModule);
                    break;
                }


                auditLog.ObjectType = moduleType.ToString();
                auditLog.ObjectId   = result.Id;


                auditLog.UserId    = _userId;
                auditLog.AuditType = EnumAuditEntry.AuditType.Restore;
                _auditLogService.AddAuditLog(auditLog);
            }
            return(result);
        }
Пример #6
0
        private DtoActionResult CreatePrinters()
        {
            foreach (var printerModule in _export.PrinterModules)
            {
                if (_export.Instructions.Contains("[generate-module-guid]"))
                {
                    printerModule.Guid = Guid.NewGuid().ToString();
                }

                if (_uow.PrinterModuleRepository.Exists(h => h.Guid.Equals(printerModule.Guid)))
                {
                    return(new DtoActionResult()
                    {
                        ErrorMessage = "A Printer Module With This Guid Already Exists.  " + printerModule.Guid
                    });
                }

                var printer = new EntityPrinterModule();
                printer.Name        = printerModule.DisplayName;
                printer.Description = "Added Via Policy Template " + _export.Name + "  On " + DateTime.Now +
                                      "\r\n" + printerModule.Description;
                printer.Guid               = printerModule.Guid;
                printer.Action             = printerModule.PrinterAction;
                printer.IsDefault          = printerModule.IsDefault;
                printer.NetworkPath        = printerModule.PrinterPath;
                printer.RestartSpooler     = printerModule.RestartSpooler;
                printer.WaitForEnumeration = printerModule.WaitForEnumeration;

                if (_uow.PrinterModuleRepository.Exists(h => h.Name.Equals(printer.Name)))
                {
                    for (var c = 1; c <= 100; c++)
                    {
                        if (c == 100)
                        {
                            return new DtoActionResult()
                                   {
                                       ErrorMessage = "Could Not Determine A Printer Name"
                                   }
                        }
                        ;

                        var newName = printer.Name + "_" + c;
                        if (!_uow.PrinterModuleRepository.Exists(h => h.Name == newName))
                        {
                            printer.Name = newName;

                            break;
                        }
                    }
                }

                var addResult = new ServicePrinterModule().AddModule(printer);
                if (!addResult.Success)
                {
                    return(addResult);
                }

                var policyModule = new EntityPolicyModules();
                policyModule.Guid                  = printer.Guid;
                policyModule.ModuleId              = addResult.Id;
                policyModule.ModuleType            = EnumModule.ModuleType.Printer;
                policyModule.Name                  = printer.Name;
                policyModule.Order                 = printerModule.Order;
                policyModule.PolicyId              = _policy.Id;
                policyModule.ConditionFailedAction = printerModule.ConditionFailedAction;
                policyModule.ConditionNextModule   = printerModule.ConditionNextOrder;


                var conditionId = CreateCondition(printerModule.Condition);
                if (conditionId != 0)
                {
                    policyModule.ConditionId = conditionId;
                }
                else
                {
                    policyModule.ConditionId = -1;
                }

                _uow.PolicyModulesRepository.Insert(policyModule);
            }

            return(new DtoActionResult()
            {
                Success = true
            });
        }