public static AbstractServer GetServer(ServerType serverType, string port)
        {
            AbstractServer         server         = null;
            AbstractHandlerFactory handlerFactory = null;
            AbstractCommandHandler handler        = null;

            switch (serverType)
            {
            case ServerType.TCPServer:
                server         = new TCPServer(port);
                handlerFactory = new TCPHandlerFactory();
                break;

            case ServerType.FileServer:
                port           = GetFilserverPort(port);
                server         = new FileServer(300, port);
                handlerFactory = new FileHandlerFactory();
                break;

            case ServerType.SyncFileServer:
                port           = GetFilserverPort(port);
                server         = new SyncFileServer(300, port);
                handlerFactory = new FileHandlerFactory();
                break;
            }

            server.commandHandler = handlerFactory.GetKeyBoardRequestHandler();
            handler = server.commandHandler.SetNextHandler(handlerFactory.GetMouseRequestHandler());
            handler = handler.SetNextHandler(handlerFactory.GetKeyLoggerRequestHandler());
            handler = handler.SetNextHandler(handlerFactory.GetScreenRequestHandler());
            handler.SetNextHandler(handlerFactory.GetDefaultRequestHandler());
            return(server);
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            Parser.Default.ParseArguments <ConfigCommand, ServerListCommand>(args)
            .WithParsed((c) => Task.Run(async() => await AbstractCommandHandler.StartWork((ICommand)c, ContainerConfig.Configure())));

            Console.Read();
        }
Beispiel #3
0
        public async Task ServerListCommandHandler_HandlesNotLocal()
        {
            ServerListCommand command = new ServerListCommand()
            {
                FetchLocal = false
            };

            string serversPath = JsonConvert.DeserializeObject <StorageSettings>(new StreamReader("./StorageSettings.json").ReadToEnd()).ServerSavePath;

            if (File.Exists(serversPath))
            {
                File.Delete(serversPath);
            }

            await AbstractCommandHandler.StartWork(command, ContainerConfig.Configure());

            IEnumerable <Server> servers = null;

            using (var sr = new StreamReader(serversPath))
            {
                servers = JsonConvert.DeserializeObject <IEnumerable <Server> >(sr.ReadToEnd());
            }

            Assert.NotNull(servers);
            Assert.NotEmpty(servers);
        }
        public async Task ConfigCommandHandler_HandlesDefault(string username, string password)
        {
            ConfigCommand command = new ConfigCommand()
            {
                Username = username, Password = password
            };

            string credentialsPath = JsonConvert.DeserializeObject <StorageSettings>(new StreamReader("./StorageSettings.json").ReadToEnd()).CredentialsSavePath;

            if (File.Exists(credentialsPath))
            {
                File.Delete(credentialsPath);
            }

            await AbstractCommandHandler.StartWork(command, ContainerConfig.Configure());

            var credentials = JsonConvert.DeserializeObject <Credentials>(new StreamReader(credentialsPath).ReadToEnd());

            Assert.Equal(command.Username, credentials.Username);
            Assert.Equal(command.Password, credentials.Password);
        }
Beispiel #5
0
        /// <summary>
        /// Register all implementations of Command handlers.
        /// </summary>
        /// <param name="commandHandler">command handler.</param>
        public void AddAllHandlers(AbstractCommandHandler commandHandler)
        {
            if (commandHandler == null)
            {
                throw new ArgumentNullException(nameof(commandHandler));
            }

            // Here we werify that we take all interfaces ICommandHandler<ICommand>
            var interfaces = commandHandler.GetType().GetInterfaces()
                             .Where(i => i.GetGenericTypeDefinition() == typeof(ICommandHandler <>));

            foreach (var t in interfaces)
            {
                var commandType = t.GenericTypeArguments.Single();

                var constructedWrapper = typeof(CommandHandlerWrapper <>).MakeGenericType(commandType);
                var abstractHandler    = (ICommandHandler <ICommand>)Activator.CreateInstance(constructedWrapper, commandHandler);

                funcs.Add(commandType, abstractHandler);
            }
        }