Пример #1
0
        public ActionResult ScriptCheck(string savedScript = null)
        {
            SavedScript script = null;
            Guid        id;

            if (!String.IsNullOrEmpty(savedScript) && Guid.TryParse(savedScript, out id))
            {
                try
                {
                    script = repo.GetScript(id);
                }
                catch
                {
                }
            }


            var model = new ScriptCheckModel()
            {
                ScriptPubKey = "OP_DUP OP_HASH160 <Alice.PubkeyHash> OP_EQUALVERIFY OP_CHECKSIG",
                ScriptSig    = "<Alice.Signature> <Alice.Pubkey>",
            };

            if (script != null)
            {
                model.SavedScriptLink = GetScriptLink(script.Id);
                model.ScriptPubKey    = script.ScriptPubKey;
                model.ScriptSig       = script.ScriptSig;
            }
            return(ScriptCheck(model));
        }
        public void Init()
        {
            _testData = new TestData();

            _savedScript = new SavedScript()
            {
                Id = Guid.NewGuid()
            };

            _schedule1 = new()
            {
                CreatedAt = Time.Now,
                CreatorId = _testData.User1.Id,
                Devices   = new List <Device>()
                {
                    _testData.Device1
                },
                DeviceGroups = new List <DeviceGroup>()
                {
                    new DeviceGroup()
                    {
                        Devices = new List <Device>()
                        {
                            _testData.Device2
                        }
                    }
                },
                Interval       = RepeatInterval.Hourly,
                Name           = "_scheduleName",
                Id             = 5,
                NextRun        = Time.Now.AddMinutes(1),
                OrganizationID = _testData.User1.OrganizationID,
                SavedScriptId  = _savedScript.Id
            };

            var scriptSchedules = new List <ScriptSchedule>()
            {
                _schedule1
            };

            _dataService = new Mock <IDataService>();
            _dataService.Setup(x => x.GetScriptSchedulesDue()).Returns(Task.FromResult(scriptSchedules));
            _dataService.Setup(x => x.GetDevices(It.Is <IEnumerable <string> >(x =>
                                                                               x.Contains(_testData.Device1.ID) &&
                                                                               x.Contains(_testData.Device2.ID)
                                                                               ))).Returns(new List <Device>()
            {
                _testData.Device1, _testData.Device2
            });

            _circuitConnection = new Mock <ICircuitConnection>();
            _logger            = new Mock <ILogger <ScriptScheduleDispatcher> >();
            _dispatcher        = new ScriptScheduleDispatcher(_dataService.Object, _circuitConnection.Object, _logger.Object);
        }
Пример #3
0
        public ActionResult SaveScript(ScriptCheckModel model)
        {
            SavedScript saved = new SavedScript();

            saved.ScriptPubKey = model.ScriptPubKey;
            saved.ScriptSig    = model.ScriptSig;
            repo.InsertScript(saved);
            return(RedirectToAction("ScriptCheck", "Home", new
            {
                savedScript = saved.Id.ToString()
            }));
        }
Пример #4
0
        /// <summary>
        /// Saves a <see cref="Script"/>
        /// </summary>
        /// <param name="script"><see cref="Script"/> to save</param>
        /// <param name="userId"></param>
        public void SaveScript(Script script, int userId = 0)
        {
            if (SavingScript.IsRaisedEventCancelled(new SaveEventArgs<Script>(script), this))
                return;

            var uow = _fileUowProvider.GetUnitOfWork();
            using (var repository = _repositoryFactory.CreateScriptRepository(uow))
            {
                repository.AddOrUpdate(script);
                uow.Commit();

                SavedScript.RaiseEvent(new SaveEventArgs<Script>(script, false), this);
            }

            Audit(AuditType.Save, string.Format("Save Script performed by user"), userId, -1);
        }
Пример #5
0
        public async Task GetPendingScriptRuns_GivenMultipleRunsQueued_ReturnsOnlyLatest()
        {
            var now = Time.Now;

            var savedScript = new SavedScript()
            {
                Content        = "Get-ChildItem",
                Creator        = _testData.Admin1,
                CreatorId      = _testData.Admin1.Id,
                Name           = "GCI",
                Organization   = _testData.Admin1.Organization,
                OrganizationID = _testData.OrganizationID,
                Shell          = Shared.Enums.ScriptingShell.PSCore
            };

            await _dataService.AddOrUpdateSavedScript(savedScript, _testData.Admin1.Id);

            var scriptRun = new ScriptRun()
            {
                Devices          = new() { _testData.Device1 },
                InputType        = Shared.Enums.ScriptInputType.ScheduledScript,
                SavedScriptId    = savedScript.Id,
                Initiator        = _testData.Admin1.UserName,
                RunAt            = now,
                OrganizationID   = _testData.OrganizationID,
                Organization     = _testData.Admin1.Organization,
                RunOnNextConnect = true
            };

            await _dataService.AddScriptRun(scriptRun);

            scriptRun.Id    = 0;
            scriptRun.RunAt = now.AddMinutes(1);

            await _dataService.AddScriptRun(scriptRun);

            Time.Adjust(TimeSpan.FromMinutes(2));

            var pendingRuns = await _dataService.GetPendingScriptRuns(_testData.Device1.ID);

            Assert.AreEqual(1, pendingRuns.Count);
            Assert.AreEqual(2, pendingRuns[0].Id);

            var scriptResult = new ScriptResult()
            {
                DeviceID       = _testData.Device1.ID,
                InputType      = Shared.Enums.ScriptInputType.ScheduledScript,
                OrganizationID = _testData.OrganizationID,
                SavedScriptId  = savedScript.Id,
                ScriptRunId    = scriptRun.Id,
                Shell          = Shared.Enums.ScriptingShell.PSCore
            };

            _dataService.AddOrUpdateScriptResult(scriptResult);

            await _dataService.AddScriptResultToScriptRun(scriptResult.ID, scriptRun.Id);

            pendingRuns = await _dataService.GetPendingScriptRuns(_testData.Device1.ID);

            Assert.AreEqual(0, pendingRuns.Count);
        }