Пример #1
0
        public async Task <bool> LaunchInstance(Instance instance)
        {
            var settingsTask = _context.ActiveFarmSettings;
            var stateTask    = _stateService.GetFarmState();

            await Task.WhenAll(settingsTask, stateTask);

            var settings = settingsTask.Result;
            var state    = stateTask.Result;

            string scriptName;

            if (instance is Bot)
            {
                scriptName = settings.BotScriptName;
            }
            else
            {
                scriptName = settings.MuleScriptName;
            }

            var args = new ClientStartArgs(instance.Account.Username, instance.Account.Password, scriptName)
            {
                Proxy = _mapper.Map <ProxyVm>(instance.Account.Proxy),
            };

            return(await _clientHandler.StartClient(state.SocketAddress, args, settings.ApiKey));
        }
Пример #2
0
        public async Task <bool> StartClient(Guid socketAddress, ClientStartArgs clientStartArgs, string apiKey)
        {
            var client = new Client
            {
                ScriptName   = clientStartArgs.ScriptName,
                ScriptArgs   = clientStartArgs.ScriptArgs,
                IsRepoScript = false,
                Username     = clientStartArgs.Username,
                Password     = clientStartArgs.Password
            };

            if (clientStartArgs.Proxy != null)
            {
                client.UseProxy  = true;
                client.ProxyIp   = clientStartArgs.Proxy.Ip;
                client.ProxyPort = clientStartArgs.Proxy.Port;
                client.ProxyUser = clientStartArgs.Proxy.Username;
                client.ProxyPass = clientStartArgs.Proxy.Password;
            }

            var startClientPayload = new Payload
            {
                Type       = "start:client",
                Session    = apiKey,
                QuickStart = new QuickStart(client)
            };

            var startClient = new StartClient(socketAddress, startClientPayload);

            var content = new StringContent(JsonConvert.SerializeObject(startClient), Encoding.UTF8, MediaTypeNames.Application.Json);

            var request = CreateRequest(apiKey);

            request.Method     = HttpMethod.Post;
            request.RequestUri = new Uri(SendCommandUrl);
            request.Content    = content;

            var httpResponse = await _httpClient.SendAsync(request);

            return(httpResponse.IsSuccessStatusCode);
        }