private void LoadDHCP(int _parent, TreeNode oParent) { DataSet ds = oIPAddresses.Gets(_parent, 0); foreach (DataRow dr in ds.Tables[0].Rows) { TreeNode oNode = new TreeNode(); oNode.Text = oIPAddresses.GetName(Int32.Parse(dr["id"].ToString())); oNode.ToolTip = oIPAddresses.GetName(Int32.Parse(dr["id"].ToString())); oNode.ImageUrl = "/images/folder.gif"; oNode.SelectAction = TreeNodeSelectAction.Expand; oNode.NavigateUrl = "javascript:Edit('" + dr["id"].ToString() + "','" + dr["networkid"].ToString() + "','" + oIPAddresses.GetNetworkName(Int32.Parse(dr["networkid"].ToString())) + "','" + dr["add1"].ToString() + "','" + dr["add2"].ToString() + "','" + dr["add3"].ToString() + "','" + dr["add4"].ToString() + "','" + dr["dhcp"].ToString() + "','" + dr["available"].ToString() + "');"; oParent.ChildNodes.Add(oNode); } oTreeview.ExpandDepth = 1; oTreeview.Attributes.Add("oncontextmenu", "return false;"); }
private bool LoadInformation(int _request_workflow) { if (intProject > 0) { lblName.Text = oProject.Get(intProject, "name"); lblNumber.Text = oProject.Get(intProject, "number"); lblType.Text = "Project"; } else { lblName.Text = oResourceRequest.GetWorkflow(_request_workflow, "name"); lblNumber.Text = "CVT" + intRequest.ToString(); lblType.Text = "Task"; } bool boolDone = false; DataSet ds = oOnDemandTasks.GetVirtualII(intRequest, intItem, intNumber); if (ds.Tables[0].Rows.Count > 0) { Forecast oForecast = new Forecast(intProfile, dsn); int intAnswer = Int32.Parse(ds.Tables[0].Rows[0]["answerid"].ToString()); lblAnswer.Text = intAnswer.ToString(); btnView.Attributes.Add("onclick", "return OpenWindow('FORECAST_EQUIPMENT','?id=" + intAnswer.ToString() + "');"); //btnBirth.Attributes.Add("onclick", "return OpenWindow('PDF_BIRTH','?id=" + intAnswer.ToString() + "');"); //btnSC.Attributes.Add("onclick", "return OpenWindow('PDF_BIRTH','?id=" + intAnswer.ToString() + "');"); lblView.Text = oOnDemandTasks.GetBody(intAnswer, intImplementorDistributed, intImplementorMidrange); int intModel = Int32.Parse(ds.Tables[0].Rows[0]["modelid"].ToString()); ModelsProperties oModelsProperties = new ModelsProperties(intProfile, dsn); intModel = Int32.Parse(oModelsProperties.Get(intModel, "modelid")); Models oModel = new Models(intProfile, dsn); int intType = Int32.Parse(oModel.Get(intModel, "typeid")); Types oType = new Types(intProfile, dsn); string strExecute = oType.Get(intType, "forecast_execution_path"); if (strExecute != "") { btnExecute.Attributes.Add("onclick", "return OpenWindow('FORECAST_EXECUTE','" + strExecute + "?id=" + intAnswer.ToString() + "');"); } chk1.Checked = (ds.Tables[0].Rows[0]["chk1"].ToString() == "1"); chk2.Checked = (ds.Tables[0].Rows[0]["chk2"].ToString() == "1"); txtSCID.Text = ds.Tables[0].Rows[0]["scid"].ToString(); chk3.Checked = (ds.Tables[0].Rows[0]["chk3"].ToString() == "1"); chk4.Checked = (ds.Tables[0].Rows[0]["chk4"].ToString() == "1"); boolDone = (chk1.Checked && chk2.Checked && chk3.Checked && chk4.Checked); img1.ImageUrl = "/images/green_arrow.gif"; if (chk1.Checked == true) { btnExecute.Enabled = false; img1.ImageUrl = "/images/check.gif"; img2.ImageUrl = "/images/green_arrow.gif"; chk2.Enabled = true; Servers oServer = new Servers(intProfile, dsn); DataSet dsAnswer = oServer.GetAnswer(intAnswer); foreach (DataRow drAnswer in dsAnswer.Tables[0].Rows) { if (lbl1.Text != "") { lbl1.Text += "<br/>"; } int intServerName = Int32.Parse(drAnswer["nameid"].ToString()); ServerName oServerName = new ServerName(0, dsn); lbl1.Text += "Server Name: " + oservername.getname2(intServerName, 0) + "<br/>"; int intServer = Int32.Parse(drAnswer["id"].ToString()); Zeus oZeus = new Zeus(intProfile, dsnZeus); DataSet dsZeus = oZeus.GetBuildServer(intServer); if (dsZeus.Tables[0].Rows.Count > 0) { lbl1.Text += "Serial Number: " + dsZeus.Tables[0].Rows[0]["serial"].ToString() + "<br/>"; } int intDomain = Int32.Parse(drAnswer["domainid"].ToString()); Domains oDomain = new Domains(intProfile, dsn); boolMove = (oDomain.Get(intDomain, "move") == "1"); if (boolMove == true) { lbl1.Text += "DHCP Address: " + drAnswer["dhcp"].ToString() + "<br/>"; } int intIPAddress = 0; IPAddresses oIPAddresses = new IPAddresses(0, dsnIP, dsn); if (drAnswer["ipaddressid"].ToString() != "") { intIPAddress = Int32.Parse(drAnswer["ipaddressid"].ToString()); lbl1.Text += "Assigned IP Address: " + oIPAddresses.GetName(intIPAddress, 0) + "<br/>"; } if (drAnswer["ipaddressid_final"].ToString() != "") { intIPAddress = Int32.Parse(drAnswer["ipaddressid_final"].ToString()); lbl1.Text += "Final IP Address: " + oIPAddresses.GetName(intIPAddress, 0) + "<br/>"; } } } } if (boolMove == false) { } if (chk2.Checked == true) { chk1.Enabled = false; img2.ImageUrl = "/images/check.gif"; img3.ImageUrl = "/images/green_arrow.gif"; chk3.Enabled = true; } if (chk3.Checked == true) { chk2.Enabled = false; img3.ImageUrl = "/images/check.gif"; img4.ImageUrl = "/images/green_arrow.gif"; chk4.Enabled = true; } if (chk4.Checked == true) { chk3.Enabled = false; img4.ImageUrl = "/images/check.gif"; } if (Request.QueryString["div"] != null) { switch (Request.QueryString["div"]) { case "E": boolExecution = true; break; } } if (boolDetails == false && boolExecution == false) { boolDetails = true; } return(boolDone); }
private void RunAudits() { oLog.AddEvent(strName, strSerial, "Current Audit Count = " + oCalling.AuditCount.ToString(), LoggingType.Debug); oCalling.AuditCount = oCalling.AuditCount + 1; oLog.AddEvent(strName, strSerial, "New Audit Count = " + oCalling.AuditCount.ToString(), LoggingType.Debug); //oAudit.DeleteServer(intServer); oLog.AddEvent(strName, strSerial, "Querying for audit scripts... (SERVERID = " + intServer.ToString() + ", CLASSID = " + intClass.ToString() + ", ENVIRONMENTID = " + intEnv.ToString() + ", MODELID = " + intModel.ToString() + ", OSID = " + intOS.ToString() + ", SPID = " + intSP.ToString() + ", ADDRESSID = " + intAddress.ToString() + ", SAN = " + (boolIsSAN ? "1" : "0") + ", CLUSTER = " + (boolIsCluster ? "1" : "0") + ")", LoggingType.Information); DataSet dsAudit = oAudit.GetServerScripts(intServer, intClass, intEnv, intModel, intOS, intSP, intAddress, boolIsSAN, boolIsCluster, boolMIS, true); oLog.AddEvent(strName, strSerial, "There are " + dsAudit.Tables[0].Rows.Count.ToString() + " TOTAL audit script(s) to run (in " + (boolMultiThreaded ? "multi" : "single") + "-threaded mode)", LoggingType.Information); string strResult = ""; string strError = ""; int intAuditIDError = 0; if (dsAudit.Tables[0].Rows.Count == 0) { strResult = "There are no audit scripts to run (" + dsAudit.Tables[0].Rows.Count.ToString() + ")"; } else { string strAuditResult = ""; string strAuditError = ""; string strAuditIP = strIP; if (intIP > 0 && boolOKtoAssignIP == true) { strAuditIP = oIPAddresses.GetName(intIP, 0); } dsAudit = oAudit.GetServerScripts(intServer, intClass, intEnv, intModel, intOS, intSP, intAddress, boolIsSAN, boolIsCluster, boolMIS, false); oLog.AddEvent(strName, strSerial, "There are " + dsAudit.Tables[0].Rows.Count.ToString() + " PENDING audit script(s) to run", LoggingType.Information); foreach (DataRow drAudit in dsAudit.Tables[0].Rows) { int intScript = Int32.Parse(drAudit["scriptid"].ToString()); int intScriptSet = Int32.Parse(drAudit["scriptsetid"].ToString()); int intScriptDetail = Int32.Parse(drAudit["detailid"].ToString()); string strAuditName = drAudit["name"].ToString(); string strHardcode = drAudit["hardcode"].ToString(); string strEXE = drAudit["exe"].ToString(); string strExtension = drAudit["extension"].ToString(); string strPath = drAudit["path"].ToString(); // The path to the script int intAuditTimeout = Int32.Parse(drAudit["timeout"].ToString()); bool boolRemote = (drAudit["local"].ToString() == "0"); // REBOOT is NULL so set to boolRemote = false for those DateTime _now = DateTime.Now; string strNow = _now.Day.ToString() + _now.Month.ToString() + _now.Year.ToString() + _now.Hour.ToString() + _now.Minute.ToString() + _now.Second.ToString() + _now.Millisecond.ToString(); string strAuditScriptPath = strScripts + strSub + intServer.ToString() + "_" + strNow + "_audit_"; int intAuditReturn = (int)AuditStatus.Running; // Delete all data from TEST and PROD //oAudit.DeleteServer(intServer); //oAudit.DeleteServerDetailRemote(intServer); // Add data to TEST and PROD int intAuditID = oAudit.AddServer(intServer, intScriptSet, intScript, boolMIS, AuditStatus.Running); int intMHS = 0; Int32.TryParse(oServer.Get(intServer, "mhs"), out intMHS); string strParameters = oAudit.GetScriptParameters(drAudit["parameters"].ToString(), intAuditID, strName, strAuditIP, (boolIsTSM ? 1 : 0), intMHS); bool boolHardcode = false; if (strHardcode != "") { if (strHardcode == "ESM") { boolHardcode = true; oLog.AddEvent(strName, strSerial, "ESM script encountered...", LoggingType.Information); strAuditName = "Audit Script # " + intScriptDetail.ToString() + "(ESM)"; intAuditTimeout = 10; // 10 minutes string strAuditScriptHelper = strAuditScriptPath + "esm.esm"; string strAuditScriptHelperOut = strAuditScriptPath + "esm.txt"; if (File.Exists(strAuditScriptHelperOut) == true) { File.Delete(strAuditScriptHelperOut); } StreamWriter oAuditBatch = new StreamWriter(strAuditScriptHelper); string strESM = "run job -v esmjob -a \"" + strName.ToUpper() + ".pncbank.com\" -m registry \"PNC SSCP 2011.v2\" \"Windows " + (oOperatingSystem.IsWindows2008(intOS) ? "2008" : "2003") + " Agents\""; oLog.AddEvent(strName, strSerial, "ESM JOB = " + strESM, LoggingType.Information); oAuditBatch.WriteLine(strESM); oAuditBatch.WriteLine("sleep -j %esmjob%"); string strESMout = "view custom -o \"" + strAuditScriptHelperOut + "\" \"PNC SSCP 2011.v2\" \"" + strName.ToUpper() + ".pncbank.com\" registry %esmjob% code.vc"; oLog.AddEvent(strName, strSerial, "ESM OUT = " + strESM, LoggingType.Information); oAuditBatch.WriteLine(strESMout); oAuditBatch.Flush(); oAuditBatch.Close(); string strAuditScript = strAuditScriptPath + "esm.bat"; StreamWriter oAuditWriter = new StreamWriter(strAuditScript); oAuditWriter.WriteLine("CD D:\\ESM\\bin\\w8s-ix64"); oAuditWriter.WriteLine("D:"); string strScript = "esmc -m " + (intAddress == 715 ? "wcesm300a" : (intAddress == 696 ? "wdesm100a" : (intAddress == 1675 ? "vwesm301" : "UNKNOWN"))); oLog.AddEvent(strName, strSerial, "ESM Script = " + strScript, LoggingType.Information); oAuditWriter.WriteLine(strScript + " -U xacview -P Abcd1234 -b \"" + strAuditScriptHelper + "\""); oAuditWriter.Flush(); oAuditWriter.Close(); intAuditReturn = oFunction.ExecuteVBScript(intServer, true, true, strAuditName, strName, strSerial, strAuditIP, strAuditScript, strAuditScriptPath, "ESM", "%windir%\\system32\\cmd.exe /c", "OPTIONS\\CV_AUDIT_REBOOT", "VBS", "", strScripts, strAdminUser, strAdminPass, intAuditTimeout, (oOperatingSystem.IsWindows2008(intOS) == false), false, intLogging, boolDeleteFiles); AuditStatus oAuditStatusTemp = (AuditStatus)intAuditReturn; if (oAuditStatusTemp == AuditStatus.Success || oAuditStatusTemp == AuditStatus.Warning) { // Check the output file intAuditReturn = (int)AuditStatus.Error; string strContent = ""; for (int ii = 0; ii < 10; ii++) { if (File.Exists(strAuditScriptHelperOut) == true) { oLog.AddEvent(strName, strSerial, "ESM output file " + strAuditScriptHelperOut + " exists...reading...", LoggingType.Information); StreamReader oReader = new StreamReader(strAuditScriptHelperOut); try { strContent = oReader.ReadToEnd(); if (strContent == "0") { intAuditReturn = (int)AuditStatus.Success; if (File.Exists(strAuditScriptHelperOut) == true) { File.Delete(strAuditScriptHelperOut); } } else if (strContent == "1") { intAuditReturn = (int)AuditStatus.Warning; } else { intAuditReturn = (int)AuditStatus.Error; } oReader.Close(); } catch { if (intLogging > 1) { oLog.AddEvent(strName, strSerial, "Cannot open ESM output file " + strAuditScriptHelperOut + "...waiting 5 seconds...", LoggingType.Information); } oReader.Close(); Thread.Sleep(5000); } } else { if (intLogging > 1) { oLog.AddEvent(strName, strSerial, "ESM output file " + strAuditScriptHelperOut + " does not exist...waiting 5 seconds...", LoggingType.Information); } Thread.Sleep(5000); } } } else { // Just let it continue...it will throw error later. oLog.AddEvent(strName, strSerial, "ESM return status = " + intAuditReturn.ToString(), LoggingType.Error); } } } if (boolHardcode == false) { if (boolRemote == true) { // Script is executed from the ClearView server (on the clearview server) strAuditName = "Audit Script # " + intScriptDetail.ToString() + "(" + strAuditName + ")"; intAuditReturn = oFunction.ExecuteVBScript(intServer, true, false, strAuditName, strName, strSerial, strAuditIP, strPath, strAuditScriptPath, "Script" + intScriptDetail.ToString() + "_", strEXE, "OPTIONS\\CV_AUDIT_SCRIPT_" + intScriptDetail.ToString() + "_", strExtension, strParameters, strScripts, strAdminUser, strAdminPass, intAuditTimeout, (oOperatingSystem.IsWindows2008(intOS) == false), false, intLogging, boolDeleteFiles); } else { // Majority of scripts should be here... // Copy the script to the target server and run on that server. (REBOOT) if (intScript == 0) { oLog.AddEvent(strName, strSerial, "Reboot script encountered...rebooting...", LoggingType.Information); // Here is the reboot... strAuditName = "Audit Script # " + intScriptDetail.ToString() + "(Reboot)"; // 1.) Create the VBS for rebooting the computer string strAuditScript = strAuditScriptPath + "reboot.vbs"; StreamWriter oAuditWriter = new StreamWriter(strAuditScript); oAuditWriter.WriteLine("Set OpSysSet = GetObject(\"winmgmts:{impersonationLevel=impersonate,(Shutdown)}\").ExecQuery(\"select * from Win32_OperatingSystem where Primary=true\")"); oAuditWriter.WriteLine("For Each OpSys In OpSysSet"); oAuditWriter.WriteLine("Debug \"OpSys.Win32Shutdown return: \" & OpSys.Win32Shutdown(6)"); // 6 = Forced Reboot oAuditWriter.WriteLine("Next"); oAuditWriter.Flush(); oAuditWriter.Close(); intAuditReturn = oFunction.ExecuteVBScript(intServer, false, true, strAuditName, strName, strSerial, strAuditIP, strAuditScript, strAuditScriptPath, "Reboot", "%windir%\\system32\\wscript.exe", "OPTIONS\\CV_AUDIT_REBOOT", "VBS", "", strScripts, strAdminUser, strAdminPass, intAuditTimeout, (oOperatingSystem.IsWindows2008(intOS) == false), true, intLogging, boolDeleteFiles); // Wait for server to reboot oLog.AddEvent(strName, strSerial, "Waiting for device to shutdown...", LoggingType.Information); string strRebootDown = ""; bool boolRebootDown = false; for (int ii = 0; ii < 60 && boolRebootDown == false; ii++) { Ping oPingDown = new Ping(); try { PingReply oReplyDown = oPingDown.Send(strAuditIP); strRebootDown = oReplyDown.Status.ToString().ToUpper(); } catch { } boolRebootDown = (strRebootDown != "SUCCESS"); if (boolRebootDown == false) { int intRebootDownLeft = (60 - ii); oLog.AddEvent(strName, strSerial, "Device still powering down...waiting 3 seconds (Reply = " + strRebootDown + ") (" + intRebootDownLeft.ToString() + " tries left)", LoggingType.Debug); Thread.Sleep(3000); } } if (boolRebootDown == false) { oLog.AddEvent(strName, strSerial, "The device is still powered on. Trying with increased timeout...", LoggingType.Information); // Let's try increasing the timeout...maybe it was taking a while connecting to the server and we killed it too quickly intAuditReturn = oFunction.ExecuteVBScript(intServer, false, true, strAuditName, strName, strSerial, strAuditIP, strAuditScript, strAuditScriptPath, "Reboot", "%windir%\\system32\\wscript.exe", "OPTIONS\\CV_AUDIT_REBOOT", "VBS", "", strScripts, strAdminUser, strAdminPass, intAuditTimeout, (oOperatingSystem.IsWindows2008(intOS) == false), false, intLogging, boolDeleteFiles); // Wait for server to reboot oLog.AddEvent(strName, strSerial, "Waiting for device to shutdown (2)...", LoggingType.Information); strRebootDown = ""; boolRebootDown = false; for (int ii = 0; ii < 60 && boolRebootDown == false; ii++) { Ping oPingDown = new Ping(); try { PingReply oReplyDown = oPingDown.Send(strAuditIP); strRebootDown = oReplyDown.Status.ToString().ToUpper(); } catch { } boolRebootDown = (strRebootDown != "SUCCESS"); if (boolRebootDown == false) { int intRebootDownLeft = (60 - ii); oLog.AddEvent(strName, strSerial, "Device still powering down (2)...waiting 3 seconds (Reply = " + strRebootDown + ") (" + intRebootDownLeft.ToString() + " tries left)", LoggingType.Debug); Thread.Sleep(3000); } } } // At this point, the server should be down... if (boolRebootDown == true) { oLog.AddEvent(strName, strSerial, "Shutdown has finished (" + strRebootDown + ")...now waiting for device to come back up...", LoggingType.Information); // Wait for server to come back up string strRebootUp = ""; bool boolRebootUp = false; for (int jj = 0; jj < 60 && boolRebootUp == false; jj++) { Ping oPingUp = new Ping(); try { PingReply oReplyUp = oPingUp.Send(strAuditIP); strRebootUp = oReplyUp.Status.ToString().ToUpper(); } catch { } boolRebootUp = (strRebootUp == "SUCCESS"); if (boolRebootUp == false) { int intRebootUpLeft = (60 - jj); oLog.AddEvent(strName, strSerial, "Device still powering on...waiting 3 seconds (Reply = " + strRebootUp + ") (" + intRebootUpLeft.ToString() + " tries left)", LoggingType.Debug); Thread.Sleep(3000); } } // At this point, the server should be back on... if (boolRebootUp == true) { oLog.AddEvent(strName, strSerial, "Device is back online (" + strRebootUp + ")...reboot script completed", LoggingType.Information); // Clear the flag to continue audits... intAuditReturn = (int)AuditStatus.Success; } else { oLog.AddEvent(strName, strSerial, "The IP address (" + strAuditIP + ") is NOT pinging..." + strRebootUp, LoggingType.Error); intAuditReturn = (int)AuditStatus.Error; strAuditName += "...power on"; } } else { oLog.AddEvent(strName, strSerial, "The IP address (" + strAuditIP + ") is STILL pinging..." + strRebootDown, LoggingType.Error); intAuditReturn = (int)AuditStatus.Error; strAuditName += "...power off"; } } else { strAuditName = "Audit Script # " + intScriptDetail.ToString() + "(" + strAuditName + ")"; intAuditReturn = oFunction.ExecuteVBScript(intServer, false, false, strAuditName, strName, strSerial, strAuditIP, strPath, strAuditScriptPath, "Script" + intScriptDetail.ToString() + "_", strEXE, "OPTIONS\\CV_AUDIT_SCRIPT_" + intScriptDetail.ToString() + "_", strExtension, strParameters, strScripts, strAdminUser, strAdminPass, intAuditTimeout, (oOperatingSystem.IsWindows2008(intOS) == false), false, intLogging, boolDeleteFiles); } } } AuditStatus oAuditStatus = (AuditStatus)intAuditReturn; if (oAuditStatus == AuditStatus.Success || oAuditStatus == AuditStatus.Warning) { oAudit.UpdateServer(intAuditID, oAuditStatus, DateTime.Now.ToString()); string strAuditTemp = "Finished Audit: " + strAuditName + " (" + (oAuditStatus == AuditStatus.Success ? " Success" : "Warning") + ")<br/>"; oLog.AddEvent(strName, strSerial, strAuditTemp, LoggingType.Information); strAuditResult += strAuditTemp; } else { intAuditIDError = intAuditID; oAudit.UpdateServer(intAuditID, oAuditStatus, ""); if (oAuditStatus == AuditStatus.Error) { strAuditError = "Failed Audit: " + strAuditName; } else if (oAuditStatus == AuditStatus.TimedOut) { strAuditError = "Failed Audit (Timeout): " + strAuditName; } else if (oAuditStatus == AuditStatus.NetUseError) { strAuditError = "Failed Audit (NET USE ERROR): " + strAuditName; } else { strAuditError = "Unexpected Audit Error (" + intAuditReturn.ToString() + "): " + strAuditName; } if (boolMIS == false) { oOnDemand.UpdateStepDoneServerResult(intServer, intStep, strAuditError + "<br/>", true); } else { oServer.UpdateMISAudits(intServer, DateTime.Now.ToString()); } break; } } if (strAuditError == "") { string strAuditTemp = "Audit scripts completed successfully"; oLog.AddEvent(strName, strSerial, strAuditTemp, LoggingType.Information); strResult = strAuditResult + strAuditTemp; } else { //boolAuditError = true; strError = strAuditResult + strAuditError; //oLog.AddEvent(strName, strSerial, strError, LoggingType.Error); } } oCalling.AuditCount = oCalling.AuditCount - 1; AddResult(strResult, strError, intAuditIDError); }