public RpcComputerRepository(IRepositoryFactory repositoryFactory, Persistence.Models.User user)
        {
            _repositoryFactory = repositoryFactory;
            _user = user;

            _computerRepository = _repositoryFactory.GetComputerRepository();
        }
        private static Persistence.Models.Computer GetSerializableVersion(Persistence.Models.Computer computer)
        {
            Persistence.Models.User owner = null;
            if (computer.Owner != null)
            {
                owner = new Persistence.Models.User(
                    alias: computer.Owner.Alias,
                    email: null,
                    id: computer.Owner.Id,
                    registeredTimestamp: null,
                    secret: null,
                    token: null
                    );
            }

            var result = new Persistence.Models.Computer(
                accessKey: computer.AccessKey,
                address: computer.Address,
                encryptionKey: computer.EncryptionKey,
                id: computer.Id,
                lastPing: computer.LastPing,
                lastScript: computer.LastScript,
                name: computer.Name,
                owner: owner
                );

            return(result);
        }
Exemple #3
0
        public RpcDeviceRepository(IRepositoryFactory repositoryFactory, Persistence.Models.User user)
        {
            _repositoryFactory = repositoryFactory;
            _user = user;

            _deviceRepository = _repositoryFactory.GetDeviceRepository();
        }
Exemple #4
0
        public RpcWebHookSessionRepository(IRepositoryFactory repositoryFactory, Persistence.Models.User user)
        {
            _repositoryFactory = repositoryFactory;
            _user = user;

            _sessionRepository = _repositoryFactory.GetSessionRepository();
        }
        public RpcNetworkRepository(IRepositoryFactory repositoryFactory, Persistence.Models.User user)
        {
            _repositoryFactory = repositoryFactory;
            _user = user;

            _networkRepository = _repositoryFactory.GetNetworkRepository();
        }
        private static Persistence.Models.UserSession GetSerializableVersion(Persistence.Models.UserSession model)
        {
            Persistence.Models.User user = null;

            if (model.User != null)
            {
                user = new Persistence.Models.User(
                    alias: model.User.Alias,
                    email: null,
                    id: model.User.Id,
                    registeredTimestamp: null,
                    secret: null,
                    token: null
                    );
            }

            var result = new Persistence.Models.UserSession(
                creationTimeStamp: model.CreationTimeStamp,
                id: model.Id,
                lastContactTimeStamp: model.LastContactTimeStamp,
                token: null,
                user: user
                );

            return(result);
        }
Exemple #7
0
        protected override void Initialize(HttpControllerContext controllerContext)
        {
            var userSession = GetCurrentUserSession(controllerContext.Request);

            if (userSession != null)
            {
                User = userSession.User;
            }

            var webHookSession = GetCurrentWebHookSession(controllerContext.Request);

            if (webHookSession != null)
            {
                Computer = webHookSession.Computer;
                User     = Computer.Owner;
            }

            var sessionlessWebHookComputer = GetSessionlessWebHookComputer(controllerContext.Request);

            if (sessionlessWebHookComputer != null)
            {
                Computer = sessionlessWebHookComputer;
                User     = Computer.Owner;
            }

            base.Initialize(controllerContext);
        }
Exemple #8
0
        public RpcTaskRepository(Persistence.Models.Computer computer, IRepositoryFactory repositoryFactory, Persistence.Models.User user)
        {
            _computer          = computer;
            _repositoryFactory = repositoryFactory;
            _user = user;

            _taskRepository = _repositoryFactory.GetTaskRepository();
        }
        /// <summary>
        /// Register an user
        /// </summary>
        /// <param name="user">user that must be registered</param>
        public void RegisterUser(ref Persistence.Models.User user)
        {
            if (this._uow.UserRepository.GetUserPerEmail(user.Email) != null)
            {
                throw new InvalidOperationException($"Email already used.");
            }

            this._uow.UserRepository.Add(user);

            base.mbs.SendMessage(nameof(RegisteredUserEvent), new RegisteredUserEvent(user.Id));
        }
Exemple #10
0
        public void Run(Persistence.Models.User user, Persistence.Models.Computer computer, string source, string scriptText, bool updateLastRunScript)
        {
            var script = Persistence.Models.Script.Create(false, scriptText);

            _scriptRepository.Add(script);

            var task = Persistence.Models.Task.Create(user, source, computer, script);

            _taskRepository.Add(task);

            if (updateLastRunScript)
            {
                computer.UpdateLastScript(task.Script);
                _computerRepository.Update(computer);
            }
        }
Exemple #11
0
        private Persistence.Models.Task GetSerializableVersion(Persistence.Models.Task task)
        {
            if (task == null)
            {
                return(null);
            }

            Persistence.Models.User owner = null;
            if (task.Owner != null)
            {
                owner = new Persistence.Models.User(
                    alias: task.Owner.Alias,
                    email: null,
                    id: task.Owner.Id,
                    registeredTimestamp: null,
                    secret: null,
                    token: null
                    );
            }

            Persistence.Models.Computer target = null;
            if (task.Target != null)
            {
                target = new Persistence.Models.Computer(
                    accessKey: null,
                    address: null,
                    encryptionKey: null,
                    id: task.Target.Id,
                    lastPing: null,
                    lastScript: null,
                    name: task.Target.Name,
                    owner: null
                    );
            }

            var result = new Persistence.Models.Task(
                expiration: task.Expiration,
                id: task.Id,
                origin: task.Origin,
                owner: owner,
                receivedTimestamp: task.ReceivedTimestamp,
                script: task.Script,
                target: target
                );

            return(result);
        }
Exemple #12
0
        public Persistence.Models.Device[] Run(Persistence.Models.Computer computer, Persistence.Models.User user, Persistence.Models.Network network, IDeviceState[] sentDevices)
        {
            computer.UpdatePing();
            _computerRepository.Update(computer);

            network.UpdatePing(computer);
            _networkRepository.Update(network);

            var existingDevices = _deviceRepository.Get(network);

            UpdateDevices(sentDevices, existingDevices, network);

            var devicesToRemove = GetRemovedDevices(sentDevices, existingDevices);

            RemoveDevices(devicesToRemove);

            return(existingDevices);
        }
Exemple #13
0
        public string Run(TimeSpan?timeout, Persistence.Models.User user)
        {
            var        cache   = new InMemoryRepositoryModelCache();
            var        deleted = 0;
            var        skipped = 0;
            ListFilter filter  = null;

            DoWork.UntilTimeout(((int?)timeout?.TotalSeconds) ?? 5, () =>
            {
                var result = _taskRepository.Clean(user, filter, cache);

                deleted += result.Deleted;
                skipped += result.Skipped;
                filter   = result.NextFilter;

                return(result.Done);
            });

            return(deleted + " tasks cleaned up, " + skipped + " tasks skipped");
        }
Exemple #14
0
 public Persistence.Models.Device[] Run(Persistence.Models.Computer computer, Persistence.Models.User user, Persistence.Models.Network network, IEnumerable <XElement> sentDevices)
 {
     return(Run(computer, user, network, ProcessSentDevices(sentDevices, network)));
 }
Exemple #15
0
        private static Persistence.Models.Network GetSerializableVersion(Persistence.Models.Network network)
        {
            Persistence.Models.Computer computer = null;

            if (network.AttatchedComputer != null)
            {
                computer = new Persistence.Models.Computer(
                    accessKey: null,
                    address: null,
                    encryptionKey: null,
                    id: network.AttatchedComputer.Id,
                    lastPing: network.AttatchedComputer.LastPing,
                    lastScript: null,
                    name: network.AttatchedComputer.Name,
                    owner: null
                    );
            }

            Persistence.Models.Device[] devices = null;

            if (network.Devices != null)
            {
                devices = network.Devices
                          .Select(x => new Persistence.Models.Device(
                                      address: x.Address,
                                      id: x.Id,
                                      lastPing: null,
                                      name: x.Name,
                                      network: null,
                                      scripts: null,
                                      state: null,
                                      tasks: null,
                                      type: x.Type
                                      ))
                          .ToArray();
            }

            Persistence.Models.User owner = null;

            if (network.Owner != null)
            {
                owner = new Persistence.Models.User(
                    alias: network.Owner.Alias,
                    email: null,
                    id: network.Owner.Id,
                    registeredTimestamp: null,
                    secret: null,
                    token: null
                    );
            }

            return(new Persistence.Models.Network(
                       address: network.Address,
                       attatchedComputer: computer,
                       devices: devices,
                       id: network.Id,
                       lastPing: network.LastPing,
                       name: network.Name,
                       owner: owner
                       ));
        }