public FrmConnectToRemoteServer(SenseConnectDto connectDto, ILogger logger) { InitializeComponent(); ConnectDto = connectDto; _logger = logger; AcceptButton = cmdConnect; }
private void cmdConnect_Click(object sender, EventArgs e) { txtAddress.Text = txtAddress.Text.Trim(); if (txtAddress.Text.StartsWith("http://")) { lblErrorMessage.Text = @"Sorry only https is accepted."; return; } if (txtAddress.Text.StartsWith("https://")) { txtAddress.Text = txtAddress.Text.Substring(8); } lblErrorMessage.Text = @"Trying to connect to server."; if (string.IsNullOrEmpty(txtAddress.Text)) { txtAddress.BackColor = Color.FromArgb(255, 255, 69, 0); return; } Application.DoEvents(); ConnectDto.SenseHostName = txtAddress.Text; ConnectDto = new ConnectToSenseHelper(_logger).TryAccessSenseApi(ConnectDto); if (ConnectDto.SenseServerLocationFinderStatus == SenseServerLocationFinderStatus.Success) { Close(); DialogResult = DialogResult.OK; } lblErrorMessage.Text = ConnectDto.SenseServerLocationFinderStatus.GetDescription() + @"!"; }
private List <Task> GetTasksForDeadInstallation(SenseConnectDto dto) { var taskList = new List <Task>(); if (!ServiceVariables.AllowArchivedLogs) { return(taskList); } try { var readerTaskHelper = new SenseLogReaderTasks(_logger, LogDirectorDone, _notify); dto = PathToSenseLogFolderDlg(dto); if (string.IsNullOrEmpty(dto.PathToLocalSenseLogFolder)) { _logger.Add("No Sense log folder selected. Tool has to run again. Ending."); _notify("No Sense Log folder. Please run tool again.", MessageLevels.Error, null); _onFinished(null, null, this); return(null); } taskList.Add(readerTaskHelper.ReadArchivedLogs(dto.PathToLocalSenseLogFolder, ServiceVariables)); } catch (Exception ex) { _logger.Add("Failed retreiving Archived folder location from user. " + ex); } return(taskList); }
private SenseConnectDto ShowConnectionFailuresDialogue(SenseConnectDto dto) { var dlg = new FrmConnectionIssues(dto, _logger); ShowDialogue(dlg); if (dlg.DialogResult == DialogResult.Abort) { dlg.ConnectDto.AbortAndExit = true; } dto = dlg.ConnectDto; return(dto); }
private void ShowConnToRemoteHost() { _logger.Add($"Conn issue form is showing the Connect to remote server form"); var dlg = new FrmConnectToRemoteServer(ConnectDto, _logger); dlg.ShowDialogueCenterParent(this); ConnectDto = dlg.ConnectDto; if (ConnectDto.SenseServerLocationFinderStatus != SenseServerLocationFinderStatus.Success) { _logger.Add($"Conn issue form is trying to access the location {ConnectDto.SenseHostName} and failing"); return; } _logger.Add($"Conn issue form successfully accessed the new server {ConnectDto.SenseHostName}"); Close(); DialogResult = DialogResult.OK; }
public FrmConnectionIssuesInfo(SenseConnectDto dto) { InitializeComponent(); switch (dto.SenseServerLocationFinderStatus) { case SenseServerLocationFinderStatus.NoSertificateFound: _detailedConnErrMsg = "We haven't found any Qlik Sense certificate on this machine. Please run this on the Qlik Sense server that has the issue, or the central node."; break; case SenseServerLocationFinderStatus.Forbidden: _detailedConnErrMsg = "We can't access Qlik Sense. You should run this application with the service account that is running Qlik Sense."; break; default: _detailedConnErrMsg = "We can't access Qlik Sense. Please run this on the Qlik Sense server that has the issue. We have no further details."; break; } }
//todo: brake out to fancy winforms broker private SenseConnectDto ShowSenseLogFolderDialogue(SenseConnectDto dto) { string pathToFolder = string.Empty; string previousPath = @"C:\ProgramData\Qlik\Sense\Log"; DialogResult dlgRes = DialogResult.OK; while (string.IsNullOrEmpty(pathToFolder) && dlgRes == DialogResult.OK) { string invalidPathString = string.Empty; _owner.Invoke(new Action(() => { var a = new SuperInputDialogue( title: "Path to Qlik Sense Log Folder", text: invalidPathString + "Please write the correct path to the Qlik Sense logs.", defaultValue: previousPath ) { StartPosition = FormStartPosition.CenterParent }; a.ShowDialog(_owner); previousPath = a.InputTextValue; dlgRes = a.DialogResult; if (dlgRes == DialogResult.OK) { if (Directory.Exists(a.InputTextValue)) { pathToFolder = a.InputTextValue; } } invalidPathString = "Invalid Path. "; })); } dto.PathToLocalSenseLogFolder = pathToFolder; return(dto); }
private async Task <bool> RunCollectionFlow() { List <Task> taskList; _logger.Add($"Setting up connection to Sense Server on {ServiceVariables.DnsHostName}"); var dto = new SenseConnectDto { SenseHostName = ServiceVariables.DnsHostName, ConnectToSenseApiManuallyDlg = ConnectToSenseApiManuallyDlg }; await Task.Run(() => { var a = new ConnectToSenseHelper(_logger).ConnectToSenseApi(dto); dto = a; _notify("Connected to Qlik Sense Installation", MessageLevels.Ok, "Connecting"); }).ConfigureAwait(false); if (dto == null || dto.AbortAndExit) { AbortAndExit = true; _logger.Add("Aborting connection requested."); _notify("Aborting.", MessageLevels.Error, null); _onFinished(null, null, this); return(false); } if (dto.RunWithDeadInstallation) { _logger.Add("Running with local folders only"); taskList = GetTasksForDeadInstallation(dto); if (taskList == null) { return(false); } taskList.AddRange(GetTasksForWindows()); } else { taskList = await GetTasksForFullRun(dto).ConfigureAwait(false); taskList.AddRange(GetTasksForWindows()); } await Task.WhenAll(taskList).ContinueWith(p => { _logger.Add("Finished collection part"); _logger.Add(JsonConvert.SerializeObject(ServiceVariables)); Log.Shutdown(); Task.Delay(TimeSpan.FromSeconds(2)).ConfigureAwait(false); var pathToZip = _collectorHelper.CreateZipFile(ServiceVariables); ServiceVariables.CollectorOutput.ZipFile = pathToZip; _notify(pathToZip, MessageLevels.Ok, null); try { Task.Delay(TimeSpan.FromSeconds(2)).ContinueWith(task => { // give the system time to flush the filesystem. FileSystem.Singleton.DeleteDirectory(ServiceVariables.OutputFolderPath); }); } catch (Exception e) { Trace.WriteLine(e); //nothing to log home about :( the log is already zipped. } //if (Settings.UseOnlineDelivery) // var transport = new Sender(Settings.Key, Settings.SendId); // transport.Transport(Settings.OnlineReccever, Settings.CollectorOutput.ZipFile); AbortAndExit = false; _onFinished(null, null, this); } ).ConfigureAwait(false); return(true); }
private async Task <List <Task> > GetTasksForFullRun(SenseConnectDto dto) { var senseApi = new SenseApiCollector(_logger); var taskList = new List <Task>(); _logger.Add("Sense api connected"); SenseEnums statusEnums = null; QlikSenseMachineInfo[] qlikSenseMachineInfos = null; await Task.Run(() => { statusEnums = new SenseEnums(dto.SenseApiSupport); }).ConfigureAwait(false); _logger.Add("Sense Machine infos collected"); var archivedLogsLocation = string.Empty; if (statusEnums == null) { throw new Exception("Failed accessing sense"); } await Task.Run(() => qlikSenseMachineInfos = GetQlikSenseMachineInfos(senseApi, dto.SenseApiSupport, statusEnums)).ConfigureAwait(false); try { archivedLogsLocation = senseApi.GetQlikSenseArchivedFolderLocation(dto.SenseApiSupport); _logger.Add($"Accessing archived logs at {archivedLogsLocation}."); if (!_filesystem.DirectoryExists(archivedLogsLocation)) { archivedLogsLocation = PathToArchivedLogsDlg.Invoke(archivedLogsLocation); } } catch (Exception ex) { _logger.Add("Failed retreiving Archived folder location from API " + ex); } taskList.Add(Task.Run(async() => { if (ServiceVariables.AllowSenseInfo) { try { var nodeCount = qlikSenseMachineInfos?.Length ?? 0; _notify($"Collecting Information from {nodeCount} Qlik Sense {(nodeCount > 1 ? "nodes" : "node")}.", MessageLevels.Animate, "SenseInfo"); _logger.Add($"Running CommandLineRemoteTasks."); await RunCommandLineRemoteTasks(qlikSenseMachineInfos).ConfigureAwait(false); _logger.Add($"Running GettingAllSettingsFiles."); await RunGettingAllSettingsFiles(qlikSenseMachineInfos).ConfigureAwait(false); _notify("Collecting Qlik Sense Information.", MessageLevels.Animate, "SenseInfo"); _logger.Add($"Running Get all api info."); _collectorHelper.WriteContentToFile(qlikSenseMachineInfos, "qlikSenseMachineInfo"); _collectorHelper.RunAction(() => senseApi.GetQlikSenseServiceInfos(dto.SenseApiSupport, statusEnums).ToArray(), "qlikSenseServiceInfo"); _collectorHelper.RunAction(() => senseApi.GetQrsAbout(dto.SenseApiSupport, statusEnums), "QrsAbout"); _collectorHelper.RunAction(() => senseApi.ExecuteCalAgent(dto.SenseApiSupport, statusEnums), "CalInfo"); _collectorHelper.RunAction(() => senseApi.ExecuteLicenseAgent(dto.SenseApiSupport, statusEnums), "LicenseAgent"); _collectorHelper.RunAction(() => senseApi.GetAboutSystemInfo(dto.SenseApiSupport, statusEnums), "AboutSystemInfo"); _collectorHelper.RunAction(() => senseApi.GetAboutComponents(dto.SenseApiSupport, statusEnums), "AboutComponents"); _collectorHelper.RunAction(() => senseApi.GetQrsDataconnections(dto.SenseApiSupport, statusEnums), "DataConnections"); _collectorHelper.RunAction(() => senseApi.GetQrsServiceCluster(dto.SenseApiSupport, statusEnums), "ServiceCluster"); _collectorHelper.RunAction(() => senseApi.GetQrsProxyService(dto.SenseApiSupport, statusEnums), "ProxyService"); _collectorHelper.RunAction(() => senseApi.GetQrsAppList(dto.SenseApiSupport, statusEnums), "AppList"); _collectorHelper.RunAction(() => senseApi.GetQrsDataConnections(dto.SenseApiSupport, statusEnums), "dataconnectionList"); _logger.Add($"Finished senseInfo"); _notify("Collected Qlik Sense Information.", MessageLevels.Ok, "SenseInfo"); } catch (Exception e) { _logger.Add("Failed getting sense info", e); _notify("Failed collecting Qlik Sense Information.", MessageLevels.Error, "SenseInfo"); } } })); var readerTaskHelper = new SenseLogReaderTasks(_logger, LogDirectorDone, _notify); if (ServiceVariables.AllowRemoteLogs) { taskList.Add(readerTaskHelper.ReadRemoteLogs(qlikSenseMachineInfos, ServiceVariables)); } if (ServiceVariables.AllowArchivedLogs) { taskList.Add(readerTaskHelper.ReadArchivedLogs(archivedLogsLocation, ServiceVariables)); } return(taskList); }
public FrmConnectionIssues(SenseConnectDto dto, ILogger logger) { InitializeComponent(); ConnectDto = dto; _logger = logger; }