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)); }
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); }