public QueuedServerClientTests()
        {
            baseClient = A.Fake <IServerClient>();
            queue      = A.Fake <IMessageQueue>();

            client = new QueuedServerClient(baseClient, queue);
        }
Example #2
0
 protected override void Inject(ILifetimeScope scope)
 {
     serverClient = scope.Resolve <IServerClient>();
     Logger.Info("Loading plugins.");
     taskSolverFactory = scope.Resolve <TaskSolverFactory>();
     taskSolverFactory.LoadTaskSolvers(libDirectory);
 }
Example #3
0
 public MultiplierService(ILogger <MultiplierService> logger, IServerClient <Multiplication> serverClient, IConfiguration config)
 {
     _random       = new Random();
     _logger       = logger;
     _serverClient = serverClient;
     _section      = config.GetSection("ExternalService");
 }
        public ServerClientTests()
        {
            tcpClient = A.Fake <ITcpClient>();
            stream    = A.Fake <INetworkStream>();
            reader    = A.Fake <IMessageStreamReader>();
            sender    = A.Fake <IMessagesSender>();
            config    = A.Fake <ICsConfiguration>();
            mediator  = A.Fake <IMediator>();

            A.CallTo(() => config.Address).Returns(IPAddress.Loopback);
            A.CallTo(() => config.Port).Returns(1234);
            A.CallTo(() => tcpClient.GetStream()).Returns(stream);
            A.CallTo(() => reader.MayHaveMessages).ReturnsLazily(() => messagesRead = !messagesRead);
            A.CallTo(() => reader.ReadAvailable()).ReturnsLazily(() => A.CollectionOfFake <IMessage>(1).ToArray());

            Func <ITcpClient> clientFactory = () =>
            {
                tcpClientCreated = true;
                return(tcpClient);
            };
            Func <INetworkStream, IMessageStreamReader> readerFactory = s =>
            {
                if (s == stream)
                {
                    readerCreated = true;
                    return(reader);
                }
                throw new InvalidOperationException();
            };

            serverClient = new ServerClient(config, sender, mediator, clientFactory, readerFactory);
        }
Example #5
0
        public FormMain()
        {
            InitializeComponent();
            Disposed   += p_Disposed;
            Activated  += p_Activated;
            Deactivate += p_Deactivated;

            fIcons[0]  = this.notifyIcon.Icon;
            fIcons[1]  = Icons.Animation01;
            fIcons[2]  = Icons.Animation02;
            fIcons[3]  = Icons.Animation03;
            fIcons[4]  = Icons.Animation04;
            fIcons[5]  = Icons.Animation05;
            fIcons[6]  = Icons.Animation06;
            fIcons[7]  = Icons.Animation07;
            fIcons[8]  = Icons.Animation08;
            fIcons[9]  = Icons.Animation09;
            fIcons[10] = Icons.Animation10;
            fIcons[11] = Icons.Animation11;

            CreateHandle();
            var host       = ConfigurationManager.AppSettings["serverHost"];
            var parameters = new RemotingParameters(host, 570);

            parameters.Cryptography         = new RijndaelManaged();
            fConnection                     = new RemotingClient(parameters);
            fConnection.UserChannelCreated += p_UserChannelCreated;

            var server = (IServer)fConnection.InvokeStaticMethod("GetServer");

            string[] names = WindowsIdentity.GetCurrent().Name.Split('\\');
            fNickName = names[names.Length - 1];
            fClient   = server.Connect(fNickName, new Client(this));
        }
 public GeneratorService(ILogger <GeneratorService> logger, IServerClient <BatchNumbersGenerated> serverClient, IConfiguration config)
 {
     _random       = new Random();
     _logger       = logger;
     _serverClient = serverClient;
     _section      = config.GetSection("ExternalService");
 }
Example #7
0
 public InstanceManagerTest(IServerClient serverClient, string testRootPath)
 {
     this.serverClient          = serverClient ?? throw new ArgumentNullException(nameof(serverClient));
     this.instanceManagerClient = serverClient.Instances;
     this.usersClient           = serverClient.Users;
     this.testRootPath          = testRootPath ?? throw new ArgumentNullException(nameof(testRootPath));
 }
Example #8
0
 public static void SendAuthentication(IServerClient worldClient, LoginClient loginClient)
 {
     using var packet = new Packet(PacketType.AES_KEY_RESPONSE);
     packet.Write(loginClient.Id.ToByteArray());
     packet.Write(loginClient.CryptoManager.Key);
     packet.Write(loginClient.CryptoManager.IV);
     worldClient.SendPacket(packet, false);
 }
Example #9
0
        public StatusMessageSender(ITimeProvider time, IServerClient client, IMediator mediator)
        {
            log.Info("Create StatusMessageSender");
            this.time     = time;
            this.client   = client;
            this.mediator = mediator;

            previousDate = time.Now();
        }
Example #10
0
        /// <summary>
        /// Raises ClientDisconnected event.
        /// </summary>
        /// <param name="client">Disconnected client</param>
        protected virtual void OnClientDisconnected(IServerClient client)
        {
            var handler = this.ClientDisconnected;

            if (handler != null)
            {
                handler(this, new ServerClientEventArgs(client));
            }
        }
        public StatusMessageSenderTests()
        {
            time     = A.Fake <ITimeProvider>();
            client   = A.Fake <IServerClient>();
            mediator = A.Fake <IMediator>();

            A.CallTo(() => time.Now()).Returns(StartDate);

            sender         = new StatusMessageSender(time, client, mediator);
            sender.Timeout = TimeSpan.FromSeconds(TimeoutInSeconds);
        }
Example #12
0
 public OrderService(IOrderRepository orderRepository, IServerClient <Order> serverClient, IServerClient <Batch> batchClient, IConfiguration config, ICancellationService cancellationService, ILogger <OrderService> logger)
 {
     _orderRepository           = orderRepository;
     _orderClient               = serverClient;
     _batchClient               = batchClient;
     _section                   = config.GetSection("ExternalService");
     _orders                    = new ObservableCollection <IModel>();
     _orders.CollectionChanged += HandleChange;
     _cancellationService       = cancellationService;
     _logger                    = logger;
 }
        //A Clicked handler must always take an array of clients as a parameter
        private void HandleContextItemClicked(IServerClient[] clients)
        {
            if (clients.Length == 0)
                return;
            //If no clients where selected, do nothing

            FormMessage F = new FormMessage(clients[0]);
            F.Show();

            FormMessageHandle = F;
            //We keep an instance of this because we will need to close it in the unload event
        }
Example #14
0
        public ServerHubImpl(IServerClient serverClient)
        {
            _serverClient = serverClient;
            if (!(_serverClient is ServerClientImpl serverClientImpl))
            {
                return;
            }
            serverClientImpl.SetConnectSuccessLaterAction(ServerClientImpl_OnConnectSuccess);
            Task task = Task.Run(async() =>
            {
                await serverClientImpl.ConnectWithRetryAsync();
            });

            Task.WaitAll(task);
        }
Example #15
0
        public FileManagementViewModel(IFileViewModelFactory fileViewModelFactory,
                                       IServerClient serverClient)
        {
            _fileViewModelFactory = fileViewModelFactory;

            _serverClient = serverClient;

            _serverClient.ProgressEvent += OnProgressChanged;

            _serverClient.FinishedEvent += OnFinishedEvent;

            NavigatedTo();

            UploadToServerCommand = new Command <FileViewModel>(ExecuteUploadToServer);
        }
Example #16
0
        protected SisoDatabase(ISisoConnectionInfo connectionInfo, IDbProviderFactory dbProviderFactory)
        {
            Ensure.That(connectionInfo, "connectionInfo").IsNotNull();
            Ensure.That(dbProviderFactory, "dbProviderFactory").IsNotNull();

            _lockObject       = new object();
            _connectionInfo   = connectionInfo;
            _providerFactory  = dbProviderFactory;
            Settings          = ProviderFactory.GetSettings();
            ServerClient      = ProviderFactory.GetServerClient(ConnectionInfo);
            StructureSchemas  = new StructureSchemas(new StructureTypeFactory(), new AutoStructureSchemaBuilder());
            Serializer        = new DefaultSisoSerializer();
            StructureBuilders = new StructureBuilders(() => Serializer, schema => ProviderFactory.GetGuidStructureIdGenerator(), (schema, dbClient) => ProviderFactory.GetIdentityStructureIdGenerator(dbClient));
            Maintenance       = new SisoDatabaseMaintenance(this);
            _dbSchemas        = ProviderFactory.GetDbSchemaManagerFor(this);
        }
Example #17
0
        public static IServerClient CreateClient(IServerListener listeners, Protocols?proto)
        {
            IServerClient sc = null;

            switch (proto)
            {
            case (Protocols.Tcp):
            {
                sc = new TcpServerClient(listeners.GetClientSocket());
                break;
            }

            case (Protocols.Udp):
            {
                sc = new UdpServerClient(listeners.GetClientSocket());
                break;
            }
            }

            return(sc);
        }
Example #18
0
        public void Run()
        {
            logger.Info($"Preparing.");
            using (container = PrepareContainer())
            {
                configuration = container.Resolve <Loader>().Load <ClientConfiguration>(GetAddressFromConfig, GetPortFromConfig);

                mediator   = container.Resolve <SimpleMediator>();
                client     = container.Resolve <IServerClient>();
                fileLoader = container.Resolve <FileLoader>();
                serializer = container.Resolve <ISerializer>();

                if (configuration.ProblemId.HasValue)
                {
                    this.AskForResponse();
                }
                else
                {
                    this.SendProblemRequest();
                }
            }
            logger.Info("System stopped.");
        }
Example #19
0
        public static async Task <int> Main()
        {
            var repo = Environment.GetEnvironmentVariable("TGS_REPO")?.Trim();

            if (String.IsNullOrWhiteSpace(repo))
            {
                Console.WriteLine("ERROR: Environment variable TGS_REPO not set to a git url!");
                return(1);
            }

            var byondStr = Environment.GetEnvironmentVariable("TGS_BYOND")?.Trim();

            if (String.IsNullOrWhiteSpace(byondStr) || !Version.TryParse(byondStr, out Version byond) || byond.Build != -1)
            {
                Console.WriteLine("ERROR: Environment variable TGS_BYOND not set to a valid BYOND version!");
                return(2);
            }

            var clientFactory = new ServerClientFactory(new ProductHeaderValue("LinuxOneShot", "1.0.0"));

            IServerClient   serverClient = null;
            Instance        instance     = null;
            IInstanceClient instanceClient;

            void CreateInstanceClient() => instanceClient = serverClient.Instances.CreateClient(instance);

            async Task CreateAdminClient()
            {
                Console.WriteLine("Attempting to reestablish connection to TGS (120s max wait)...");
                var giveUpAt = DateTimeOffset.Now.AddSeconds(60);

                do
                {
                    try
                    {
                        serverClient = await clientFactory.CreateServerClient(new Uri("http://tgs:80"), User.AdminName, User.DefaultAdminPassword, default, default);
Example #20
0
        public void ReceiveClients()
        {
            while (_running)
            {
                if (listener == null || serializer == null || clientList == null)
                {
                    ArgumentNullException ex = new ArgumentNullException();
                    Logger.Instance.WriteLog("Failed at Server recieve: " + ex.ToString());
                    throw ex;
                }

                IServerClient client = ServerClientCreator.CreateClient(listener, serverSettings.protocol);
                clientList.Add(client);

                foreach (IObserver o in observerList)
                {
                    client.AddObserver(o);
                }
                client.AddSerializer(serializer);
                client.Run();
                Console.WriteLine("Client Connected to Server");
                client.Send("Conencted");
            }
        }
 public void IClientPacketReceived(IServerClient client, object[] @params)
 {
     //When a Client with the same plugin loaded sends you a packet
 }
 /// <summary>
 ///     Creates a new ServerClientEventArgs object.
 /// </summary>
 /// <param name="client">Client that is associated with this event</param>
 public ServerClientEventArgs(IServerClient client)
 {
     Client = client;
 }
 /// <summary>
 ///     Creates a new service client object that is used in server-side.
 /// </summary>
 /// <param name="serverClient">Underlying server client object</param>
 /// <param name="requestReplyMessenger">RequestReplyMessenger object to send/receive messages over serverClient</param>
 /// <returns></returns>
 public static IServiceClient CreateServiceClient(IServerClient serverClient, RequestReplyMessenger<IServerClient> requestReplyMessenger)
 {
     return new ServiceClient(serverClient, requestReplyMessenger);
 }
Example #24
0
 /// <summary>
 ///     Creates a new service client object that is used in server-side.
 /// </summary>
 /// <param name="serverClient">Underlying server client object</param>
 /// <param name="requestReplyMessenger">RequestReplyMessenger object to send/receive messages over serverClient</param>
 /// <returns></returns>
 public static IServiceClient CreateServiceClient(IServerClient serverClient, RequestReplyMessenger <IServerClient> requestReplyMessenger)
 {
     return(new ServiceClient(serverClient, requestReplyMessenger));
 }
 public FormMessage(IServerClient _IServerClient)
 {
     InitializeComponent();
     IServerClient = _IServerClient;
     this.Text = string.Format("Message - {0}", IServerClient.IServerState.UserName);
 }
 public SignalRInterceptorTests()
 {
     connection  = Substitute.For <IHubConnection>();
     interceptor = new SignalRInterceptor(connection);
     proxy       = generator.CreateInterfaceProxyWithoutTarget <IServerClient>(interceptor);
 }
 public void IClientConnectedStateChanged(bool connected, IServerClient client)
 {
     //When a new client connects to Imminent Monitor
 }
Example #28
0
 /// <summary>
 ///     Raises ClientDisconnected event.
 /// </summary>
 /// <param name="client">Disconnected client</param>
 protected virtual void OnClientDisconnected(IServerClient client)
 {
     var handler = ClientDisconnected;
     if (handler != null) {
         handler(this, new ServerClientEventArgs(client));
     }
 }
Example #29
0
 public ExceptionManager(ExceptionManagerOptions options, IServerClient serverClient)
 {
     _criticalExceptionTypes = options?.CriticalExceptionTypes?.Select(Type.GetType).ToList();
     _serverClient           = serverClient;
 }
 public void IClientPacketReceived(IServerClient client, object[] @params)
 {
     //When a Client with the same plugin loaded sends you a packet
 }
 //A Clicked handler must always take an array of clients as a parameter
 private void HandleContextItemClicked(IServerClient[] clients)
 {
     if (clients.Length == 0)
         return;
     //If no clients where selected, do nothing
 }
 //Network events
 public void IClientConnectedStateChanged(bool connected, IServerClient client)
 {
     //When a new client connects to Imminent Monitor
 }
 /// <summary>
 ///     Creates a new ServerClientEventArgs object.
 /// </summary>
 /// <param name="client">Client that is associated with this event</param>
 public ServerClientEventArgs(IServerClient client)
 {
     Client = client;
 }
Example #34
0
 /// <inheritdoc />
 public void SendPacketTo(IServerClient client, byte[] packetData)
 => this.sender.AddPacketToQueue(new PacketData(client, packetData));
Example #35
0
 /// <inheritdoc />
 public void DisconnectClient(IServerClient client) => this.DisconnectClient(client.Id);
 async Task TestServerInformation(IServerClientFactory clientFactory, IServerClient serverClient, CancellationToken cancellationToken)
 {
     var serverInfo = await serverClient.ServerInformation(default).ConfigureAwait(false);
        async Task TestRequestValidation(IServerClient serverClient, CancellationToken cancellationToken)
        {
            var url   = serverClient.Url;
            var token = serverClient.Token.Bearer;

            // check that 400s are returned appropriately
            using var httpClient = new HttpClient();
            using (var request = new HttpRequestMessage(HttpMethod.Get, url.ToString()))
            {
                request.Headers.Accept.Clear();
                request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
                using var response = await httpClient.SendAsync(request, cancellationToken);

                Assert.AreEqual(HttpStatusCode.NotAcceptable, response.StatusCode);
            }

            using (var request = new HttpRequestMessage(HttpMethod.Get, url.ToString()))
            {
                request.Headers.Accept.Clear();
                request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Xml));
                using var response = await httpClient.SendAsync(request, cancellationToken);

                Assert.AreEqual(HttpStatusCode.NotAcceptable, response.StatusCode);
            }

            using (var request = new HttpRequestMessage(HttpMethod.Get, url.ToString()))
            {
                request.Headers.Accept.Clear();
                request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json));
                using var response = await httpClient.SendAsync(request, cancellationToken);

                Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
                var content = await response.Content.ReadAsStringAsync();

                var message = JsonConvert.DeserializeObject <ErrorMessage>(content);
                Assert.AreEqual(ErrorCode.BadHeaders, message.ErrorCode);
            }

            using (var request = new HttpRequestMessage(HttpMethod.Get, url.ToString()))
            {
                request.Headers.Accept.Clear();
                request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json));
                request.Headers.Add(ApiHeaders.ApiVersionHeader, "Tgstation.Server.Api/" + ApiHeaders.Version);
                using var response = await httpClient.SendAsync(request, cancellationToken);

                Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
                var content = await response.Content.ReadAsStringAsync();

                var message = JsonConvert.DeserializeObject <ServerInformation>(content);
                Assert.AreEqual(ApiHeaders.Version, message.ApiVersion);
            }

            using (var request = new HttpRequestMessage(HttpMethod.Get, url.ToString()))
            {
                request.Headers.Accept.Clear();
                request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
                request.Headers.Add(ApiHeaders.ApiVersionHeader, "Tgstation.Server.Api/6.0.0");
                request.Headers.Authorization = new AuthenticationHeaderValue(ApiHeaders.BearerAuthenticationScheme, token);
                using var response            = await httpClient.SendAsync(request, cancellationToken);

                Assert.AreEqual(HttpStatusCode.UpgradeRequired, response.StatusCode);
                var content = await response.Content.ReadAsStringAsync();

                var message = JsonConvert.DeserializeObject <ErrorMessage>(content);
                Assert.AreEqual(ErrorCode.ApiMismatch, message.ErrorCode);
            }

            using (var request = new HttpRequestMessage(HttpMethod.Get, url.ToString() + Routes.Administration.Substring(1)))
            {
                request.Headers.Accept.Clear();
                request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
                request.Headers.Add(ApiHeaders.ApiVersionHeader, "Tgstation.Server.Api/6.0.0");
                request.Headers.Authorization = new AuthenticationHeaderValue(ApiHeaders.BearerAuthenticationScheme, token);
                using var response            = await httpClient.SendAsync(request, cancellationToken);

                Assert.AreEqual(HttpStatusCode.UpgradeRequired, response.StatusCode);
                var content = await response.Content.ReadAsStringAsync();

                var message = JsonConvert.DeserializeObject <ErrorMessage>(content);
                Assert.AreEqual(ErrorCode.ApiMismatch, message.ErrorCode);
            }

            using (var request = new HttpRequestMessage(HttpMethod.Post, url.ToString() + Routes.Administration.Substring(1)))
            {
                request.Headers.Accept.Clear();
                request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json));
                request.Headers.Add(ApiHeaders.ApiVersionHeader, "Tgstation.Server.Api/" + ApiHeaders.Version);
                request.Headers.Authorization = new AuthenticationHeaderValue(ApiHeaders.BearerAuthenticationScheme, token);
                request.Content = new StringContent(
                    "{ newVersion: 1234 }",
                    Encoding.UTF8,
                    MediaTypeNames.Application.Json);
                using var response = await httpClient.SendAsync(request, cancellationToken);

                Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
                var content = await response.Content.ReadAsStringAsync();

                var message = JsonConvert.DeserializeObject <ErrorMessage>(content);
                Assert.AreEqual(ErrorCode.ModelValidationFailure, message.ErrorCode);
            }

            using (var request = new HttpRequestMessage(HttpMethod.Post, url.ToString() + Routes.DreamDaemon.Substring(1)))
            {
                request.Headers.Accept.Clear();
                request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json));
                request.Headers.Add(ApiHeaders.ApiVersionHeader, "Tgstation.Server.Api/" + ApiHeaders.Version);
                using var response = await httpClient.SendAsync(request, cancellationToken);

                Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode);
            }

            using (var request = new HttpRequestMessage(HttpMethod.Post, url.ToString() + Routes.DreamDaemon.Substring(1)))
            {
                request.Headers.Accept.Clear();
                request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json));
                request.Headers.Add(ApiHeaders.ApiVersionHeader, "Tgstation.Server.Api/" + ApiHeaders.Version);
                request.Headers.Authorization = new AuthenticationHeaderValue(ApiHeaders.BearerAuthenticationScheme, token);
                using var response            = await httpClient.SendAsync(request, cancellationToken);

                Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
                var content = await response.Content.ReadAsStringAsync();

                var message = JsonConvert.DeserializeObject <ErrorMessage>(content);
                Assert.AreEqual(ErrorCode.InstanceHeaderRequired, message.ErrorCode);
            }

            using (var request = new HttpRequestMessage(HttpMethod.Post, url.ToString()))
            {
                request.Headers.Accept.Clear();
                request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json));
                request.Headers.Add(ApiHeaders.ApiVersionHeader, "Tgstation.Server.Api/" + ApiHeaders.Version);
                request.Headers.Authorization = new AuthenticationHeaderValue(ApiHeaders.OAuthAuthenticationScheme, token);
                request.Headers.Add(ApiHeaders.OAuthProviderHeader, "FakeProvider");
                using var response = await httpClient.SendAsync(request, cancellationToken);

                Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
                var content = await response.Content.ReadAsStringAsync();

                var message = JsonConvert.DeserializeObject <ErrorMessage>(content);
                Assert.AreEqual(ErrorCode.BadHeaders, message.ErrorCode);
            }
        }
        public MainViewModel(IServerClient _serverClient)
        {
            serverClient = _serverClient;

            Calculate = new RelayCommand <string>(async(currency) => await CalculateExecute().ConfigureAwait(false), (currency) => IsCurrencyValid());
        }