/// <summary>
 /// Open terminal connection to target currently selected
 /// </summary>
 /// <param name="TargetID"></param>
 private void ConnectToTarget()
 {
     if (lvTargets.SelectedItems.Count == 1)
     {
         int            TargetID = (int)lvTargets.SelectedItems[0].Tag;
         TerminalWindow term;
         string         host = string.Empty;
         try
         {
             ConfigDS.ConfigTargetsRow[] targets = configDS.ConfigTargets.Select(string.Format("ConfigTargetID = {0}", TargetID)) as ConfigDS.ConfigTargetsRow[];
             if (targets.Length > 0)
             {
                 ConfigDS.ConfigTargetsRow selectedTarget = targets[0];
                 host = selectedTarget.TargetIP;
                 SNGDataSet.ScriptSettingRow _localScriptSettings = Scriptngo.Common.SettingsManager.GetCurrentScriptSettings(this.SNGDataSet);
                 ConnectionParameters        CP = new ConnectionParameters
                 {
                     DeviceIP       = selectedTarget.TargetIP,
                     Protocol       = (ConnectionProtocol)Enum.Parse(typeof(ConnectionProtocol), selectedTarget.Protocol, true),
                     Port           = selectedTarget.IsPortNull() ? 0 : selectedTarget.Port,
                     DeviceVendor   = selectedTarget.DeviceVendor,
                     JumpServer     = selectedTarget.JumpServerIP.Trim(),
                     LogonUserName  = _localScriptSettings.ScriptingUserName,
                     EnablePassword = _localScriptSettings.DeviceEnablePassword,
                     LogonPassword  = _localScriptSettings.ScriptingPassword,
                     AuthType       = (SNGTermAuthType)Enum.Parse(typeof(SNGTermAuthType), _localScriptSettings.TerminalAuthType),
                     LineFeedRule   = (LineFeedRule)Enum.Parse(typeof(LineFeedRule), _localScriptSettings.TerminalLineFeedRule),
                     EncodingType   = (EncodingType)Enum.Parse(typeof(EncodingType), _localScriptSettings.TerminalEncoding),
                     TerminalType   = (TerminalType)Enum.Parse(typeof(TerminalType), _localScriptSettings.TerminalType),
                     NewLine        = (NewLine)Enum.Parse(typeof(NewLine), _localScriptSettings.TerminalTransmitNL)
                 };
                 var t = from Form form in Application.OpenForms where form is TerminalWindow select form;
                 if (t.Count() > 0)
                 {
                     term = (TerminalWindow)t.ElementAt(0);
                 }
                 else
                 {
                     term = new TerminalWindow();
                 }
                 term.MdiParent = this.MdiParent;
                 term.Show();
                 term.BringToFront();
                 term.ConnectDisconnectTask(ConnectionTaskAction.Connect, true, CP);
             }
             else
             {
                 MessageBox.Show("Unable to open a terminal because the script target was not found.", "Cannot open terminal", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
             }
         }
         catch (Exception Ex)
         {
             MessageBox.Show(string.Format("An error occurred while opening connection to {0}. The error was : {1}", host, Ex.Message), "Connection error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
 }
Exemple #2
0
 private void PullConfig()
 {
     _workInProgressCaption = "Please wait...";
     _workInProgressText    = "Generating script...";
     _workInProgress.Run();
     DisableControls();
     try
     {
         if (cbCreateNewSet.Checked)
         {
             DateTime d = DateTime.Now;
             object   o = qTA.CloneConfigSet(_configurationSetID, string.Format("{0}_{1}{2}{3}{4}{5}{6}", tbSelConfigSetName.Text, d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second));
             _configurationSetID = Convert.ToInt32(o);
         }
         SNGDataSet.ScriptSettingRow _scriptSettings = Scriptngo.Common.SettingsManager.GetCurrentScriptSettings(this.SNGDataSet);
         string sepChar         = _scriptSettings.CSVSeparator;
         string sExtendedHeader = string.Join(sepChar, Enum.GetNames(typeof(InputFileHeader)));
         sExtendedHeader += "SetTargetID";
         Scriptngo.SNGScriptManager _ScriptManager = ScriptingFormManager.OpenNewScriptingForm();
         if (_ScriptManager != null)
         {
             ScriptManagers.Add(_ScriptManager);
             _ScriptManager.UpdateHeader(sExtendedHeader.Split(sepChar.ToCharArray(), StringSplitOptions.RemoveEmptyEntries));
             _ScriptManager.OnScriptAborted  += _ScriptManager_OnScriptAborted;
             _ScriptManager.OnScriptFinished += _ScriptManager_OnScriptFinished;
             string thisLine = string.Empty;
             _ScriptManager.BeginAddingEntries();
             try
             {
                 int lastConfigTargetID = -1;
                 int targetCount        = clbTargets.CheckedItems.Count;
                 int targetNum          = 1;
                 foreach (var target in configDS.SetTargets)
                 {
                     if (IsTargetSelected(target.ConfigTargetID))
                     {
                         if (lastConfigTargetID == -1)
                         {
                             lastConfigTargetID = target.ConfigTargetID;
                         }
                         // Open a new ScriptinForm if script needs to be generated per configuration target
                         if (target.ConfigTargetID != lastConfigTargetID && cbScriptPerHost.Checked && (targetNum % (numHostPerForm.Value + 1) == 0))
                         {
                             if (_ScriptManager != null)
                             {
                                 _ScriptManager.EndAddingEntries();
                                 _ScriptManager.ExecuteScript(null, false);
                             }
                             _ScriptManager = ScriptingFormManager.OpenNewScriptingForm();
                             if (_ScriptManager == null)
                             {
                                 break;
                             }
                             _ScriptManager.OnScriptAborted  += _ScriptManager_OnScriptAborted;
                             _ScriptManager.OnScriptFinished += _ScriptManager_OnScriptFinished;
                             ScriptManagers.Add(_ScriptManager);
                             _ScriptManager.UpdateHeader(sExtendedHeader.Split(sepChar.ToCharArray(), StringSplitOptions.RemoveEmptyEntries));
                             _ScriptManager.BeginAddingEntries();
                             lastConfigTargetID = target.ConfigTargetID;
                         }
                         int configSetTargetID = cbCreateNewSet.Checked ? (int)qTA.GetConfigSetTargetID(_configurationSetID, target.ConfigTargetID) : target.ConfigSetTargetID;
                         thisLine = "1," + string.Concat(target.IsJumpServerIPNull() ? "" : target.JumpServerIP.Trim()) + "," + target.DeviceVendor + "," + target.TargetIP + string.Concat(target.IsPortNull() ? "," : string.Format(":{0},", target.Port)) + "" + "," + target.Protocol + "," + "sh run" + ",yes,,,"
                                    + ",,," + configSetTargetID;
                         if (!string.IsNullOrEmpty(thisLine))
                         {
                             bool added = _ScriptManager.AddEntry(thisLine, false);
                             if (!added)
                             {
                                 if (MessageBox.Show("There was an error adding a script line. Do you want to continue ?", "Script generation error", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == System.Windows.Forms.DialogResult.No)
                                 {
                                     break;
                                 }
                             }
                         }
                         targetNum++;
                     }
                 }
             }
             finally
             {
                 if (_ScriptManager != null)
                 {
                     _ScriptManager.EndAddingEntries();
                     _ScriptManager.ExecuteScript(null, false);
                 }
             }
         }
     }
     finally
     {
         _workInProgress.Cancel();
         _workInProgressSupportCancellation = false;
         btnPullConfig.Enabled       = ScriptManagers.Count == 0;
         lblOperationInProgress.Text = "Pulling configuration...";
         pbPullProgress.Value        = 0;
         pbPullProgress.Maximum      = ScriptManagers.Count;
         pbPullProgress.Visible      = ScriptManagers.Count > 1;
         btnCancelPull.Visible       = !btnPullConfig.Enabled;
     }
 }
        /// <summary>
        /// Import targets from CSV file
        /// </summary>
        private void ImportTargets()
        {
            string imputFileName = string.Empty;

            SNGDataSet.ScriptSettingRow scriptSettings = SettingsManager.GetCurrentScriptSettings(this.SNGDataSet);
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter = "CSV files|*.csv|All files|*.*";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                _workInProgress.Caption = "Please wait";
                _workInProgress.Text    = "Importing targets...";
                bool     importOK = true;
                int      dupCount = 0; // count of items marked ignored as duplicate ip detected
                int      errCount = 0; // count of items not elegible for import due to some invalid data
                string[] allLines;
                try
                {
                    try
                    {
                        imputFileName = openFileDialog.FileName;
                        allLines      = File.ReadAllLines(imputFileName);
                        if (allLines.Length > 0)
                        {
                            string          thisLine = allLines[0];
                            string[]        sections = thisLine.Split(scriptSettings.CSVSeparator.ToCharArray());
                            string          doNotImportColumnText = "< Do not import >";
                            CSVHeaderMapper mapper = new CSVHeaderMapper(sections, doNotImportColumnText);
                            if (mapper.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                if (mapper.GetTargetIPColumnIndex != -1)
                                {
                                    _workInProgress.Run();
                                    bool wasError = false;
                                    for (int i = 1; i < allLines.Length; i++)
                                    {
                                        try
                                        {
                                            thisLine = allLines[i];
                                            sections = thisLine.Split(scriptSettings.CSVSeparator.ToCharArray());
                                            string targetName   = "";
                                            string targetGroup  = "default";
                                            string targetIP     = "";
                                            string deviceVendor = "";
                                            string jumpServerIP = "";
                                            string protocol     = "SSH2";
                                            int?   port         = null;
                                            string note         = "";

                                            // Target IP
                                            targetIP = sections[mapper.GetTargetIPColumnIndex].Trim().Truncate(50);
                                            if (targetIP.IndexOf(":") > 0)
                                            {
                                                string[] targetIPPort = targetIP.Split(':');
                                                targetIP = targetIPPort[0];
                                                int p = -1;
                                                if (int.TryParse(targetIPPort[1], out p))
                                                {
                                                    port = p;
                                                }
                                            }
                                            // Target name
                                            if (mapper.GetTargetNameColumnIndex >= 0)
                                            {
                                                targetName = sections[mapper.GetTargetNameColumnIndex].Trim().Truncate(100);
                                            }
                                            else if (mapper.GetTargetNameColumnIndex == -1)
                                            {
                                                targetName = mapper.GetTargetNameText.Truncate(300);
                                            }
                                            // Target group name
                                            if (mapper.GetTargetGroupNameColumnIndex >= 0)
                                            {
                                                targetGroup = sections[mapper.GetTargetGroupNameColumnIndex].Trim().Truncate(100);
                                            }
                                            else if (mapper.GetTargetGroupNameColumnIndex == -1)
                                            {
                                                targetGroup = mapper.GetTargeGroupNameText.Truncate(300);
                                            }
                                            // Jump server ip
                                            if (mapper.GetJumpServerIPColumnIndex != -2)
                                            {
                                                jumpServerIP = sections[mapper.GetJumpServerIPColumnIndex].Trim().Truncate(15);
                                            }
                                            // Note
                                            if (mapper.GetNoteColumnIndex >= 0)
                                            {
                                                note = sections[mapper.GetNoteColumnIndex].Trim().Truncate(500);
                                            }
                                            else if (mapper.GetNoteColumnIndex == -1)
                                            {
                                                note = mapper.GetNoteText;
                                            }
                                            // Protocol
                                            if (mapper.GetProtocolColumnIndex != -2)
                                            {
                                                protocol = sections[mapper.GetProtocolColumnIndex].Trim().Truncate(15);
                                            }
                                            // Vendor
                                            if (mapper.GetVendorColumnIndex > -1)
                                            {
                                                deviceVendor = sections[mapper.GetVendorColumnIndex].Trim().Truncate(50);
                                            }
                                            else
                                            {
                                                deviceVendor = mapper.GetVendorText;
                                            }

                                            if (!string.IsNullOrEmpty(targetIP) && targetIP.IsValidIP() && !string.IsNullOrEmpty(targetName))
                                            {
                                                int?c = (int?)qTA.GetTargetCount(targetGroup, targetName, port);
                                                if (c > 0)
                                                {
                                                    dupCount++;
                                                }
                                                else
                                                {
                                                    this.configTargetsTA.Insert(targetName, targetIP, deviceVendor, jumpServerIP, protocol, port, note, targetGroup);
                                                }
                                            }
                                            else
                                            {
                                                errCount++;
                                                wasError = true;
                                            }
                                            _workInProgress.Text = string.Format("Importing items...{0}% done", i * 100 / allLines.Length);
                                        }
                                        catch
                                        {
                                            wasError = true;
                                        }
                                    }
                                    try
                                    {
                                        if (!wasError || MessageBox.Show("Not all input lines could be parsed. Do you want to submit partial import into database ?", "Input errors", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == System.Windows.Forms.DialogResult.Yes)
                                        {
                                            _workInProgress.Text = "Submitting items to database...";
                                            configTargetsTA.Update(this.configDS);
                                        }
                                        else
                                        {
                                            importOK = false;
                                        }
                                    }
                                    catch (ConstraintException)
                                    {
                                        importOK = false;
                                        _workInProgress.Cancel();
                                        string errorText = this.configDS.Tables["ConfigTargets"].Rows[0].RowError;
                                        MessageBox.Show(string.Format("There is a constraint problem here : {0}", errorText), "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                    }
                                    catch (Exception Ex)
                                    {
                                        importOK = false;
                                        _workInProgress.Cancel();
                                        MessageBox.Show(string.Format("An unexpected error occurred : {0}", Ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                    _workInProgress.Cancel();
                                    if (importOK)
                                    {
                                        if (!wasError)
                                        {
                                            if (dupCount == 0)
                                            {
                                                MessageBox.Show(string.Format("{0} items processed successfully.", allLines.Length), "Import success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                            }
                                            else
                                            {
                                                MessageBox.Show(string.Format("{0} items processed successfully : #Duplicate IP :{1} ", allLines.Length, dupCount), "Success, but duplicate IPs detected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                            }
                                        }
                                        else
                                        {
                                            MessageBox.Show(string.Format("Some lines could not be imported due to invalid data. #Imported : {0}, #Duplicate IP :{1} #Skipped : {2}", allLines.Length, dupCount, errCount), "Success with errors", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                        }
                                    }
                                    else
                                    {
                                        MessageBox.Show("The import failed, items were not added to Worklist", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                }
                                else
                                {
                                    MessageBox.Show("Device IP column must be specified for input. Cannot import items.", "Selection error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                }
                            }
                        }
                    }
                    catch (Exception Ex)
                    {
                        _workInProgress.Cancel();
                        MessageBox.Show(string.Format("Unfortunately an error occurred while importing : {0}", Ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                finally
                {
                    _workInProgress.Cancel();
                    UpdateConfigTargetList();
                    UpdateSetTargets();
                    UpdateTargetGroupFilterList();
                }
            }
        }
Exemple #4
0
 private void Deploy()
 {
     _workInProgress.Caption = "Please wait...";
     _workInProgress.Text    = "Generating script...";
     _workInProgress.Run();
     try
     {
         SNGDataSet.ScriptSettingRow _scriptSettings = Scriptngo.Common.SettingsManager.GetCurrentScriptSettings(this.SNGDataSet);
         string sepChar         = _scriptSettings.CSVSeparator;
         string sExtendedHeader = string.Join(sepChar, Enum.GetNames(typeof(InputFileHeader)));
         sExtendedHeader += "ConfigLineID";
         Scriptngo.SNGScriptManager _ScriptManager = ScriptingFormManager.OpenNewScriptingForm();
         if (_ScriptManager != null)
         {
             string thisLine = string.Empty;
             _ScriptManager.SetSavePrompt(false);
             _ScriptManager.BeginAddingEntries();
             try
             {
                 int lastConfigTargetID = (configDS.Deploy.Rows[0] as ConfigDS.DeployRow).ConfigTargetID;
                 int targetCount        = clbTargets.CheckedItems.Count;
                 int targetNum          = 0;
                 foreach (var configLine in configDS.Deploy)
                 {
                     if (IsTargetSelected(configLine.ConfigTargetID))
                     {
                         if (configLine.ConfigTargetID != lastConfigTargetID)
                         {
                             targetNum++;
                         }
                         // Open a new ScriptinForm if script needs to be generated per configuration target
                         if (configLine.ConfigTargetID != lastConfigTargetID && cbScriptPerHost.Checked && (targetNum > 0 && targetNum % numHostPerForm.Value == 0))
                         {
                             #region Open a new Scripting Form
                             if (_ScriptManager != null)
                             {
                                 _ScriptManager.EndAddingEntries();
                                 if (cbStartScripts.Checked)
                                 {
                                     _ScriptManager.ExecuteScript(null, false);
                                 }
                             }
                             _ScriptManager = ScriptingFormManager.OpenNewScriptingForm();
                             if (_ScriptManager == null)
                             {
                                 break;
                             }
                             _ScriptManager.SetSavePrompt(false);
                             _ScriptManager.BeginAddingEntries();
                             lastConfigTargetID = configLine.ConfigTargetID;
                             #endregion
                         }
                         thisLine = "1," + string.Concat(configLine.IsJumpServerIPNull() ? "" : configLine.JumpServerIP.Trim()) + "," + configLine.DeviceVendor + "," + configLine.TargetIP + string.Concat(configLine.IsPortNull() ? "," : string.Format(":{0},", configLine.Port)) + "" + "," + configLine.Protocol + "," + configLine.ConfigLine + ",yes,,,"
                                    + ",,,," + configLine.ConfigLineID;
                         if (!string.IsNullOrEmpty(thisLine))
                         {
                             bool added = _ScriptManager.AddEntry(thisLine, false);
                             if (!added)
                             {
                                 if (MessageBox.Show("There was an error adding a script line. Do you want to continue ?", "Script generation error", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == System.Windows.Forms.DialogResult.No)
                                 {
                                     break;
                                 }
                             }
                         }
                     }
                     if (configLine.ConfigTargetID != lastConfigTargetID)
                     {
                         lastConfigTargetID = configLine.ConfigTargetID;
                     }
                 }
             }
             finally
             {
                 if (_ScriptManager != null)
                 {
                     _ScriptManager.EndAddingEntries();
                     if (cbStartScripts.Checked)
                     {
                         _ScriptManager.ExecuteScript(null, false);
                     }
                 }
             }
         }
     }
     finally
     {
         _workInProgress.Cancel();
         _workInProgressSupportCancellation = false;
         DialogResult = DialogResult.OK;
     }
 }