Esempio n. 1
0
        protected void btnRegister_Click(object sender, EventArgs e)
        {
            RefreshForm();
            ulErrors.Controls.Clear();
            bool Valid = true;

            Valid = AddError(txtName, "Enter a server name", Valid, ValidationRestriction.Basic, Validation.Required, ulErrors, panError);
            Valid = AddError(ddlBackup, "Select the backup software", Valid, ulErrors, panError);
            Valid = AddError(txtIPServer, "Enter a valid server IP address", Valid, ValidationRestriction.IPAddress, Validation.Optional, ulErrors, panError);
            Valid = AddError(txtIPServerVLAN, txtIPServer, "Enter the VLAN of the server IP address", Valid, ValidationRestriction.Numeric, ulErrors, panError);
            Valid = AddError(txtIPServerMask, txtIPServer, "Enter the subnet mask of the server IP address", Valid, ValidationRestriction.IPAddress, ulErrors, panError);
            Valid = AddError(txtIPServerGateway, txtIPServer, "Enter the gateway of the server IP address", Valid, ValidationRestriction.IPAddress, ulErrors, panError);
            Valid = AddError(txtIPBackup, "Enter a valid bakup IP address", Valid, ValidationRestriction.IPAddress, Validation.Optional, ulErrors, panError);
            Valid = AddError(txtIPBackupVLAN, txtIPBackup, "Enter the VLAN of the backup IP address", Valid, ValidationRestriction.Numeric, ulErrors, panError);
            Valid = AddError(txtIPBackupMask, txtIPBackup, "Enter the subnet mask of the backup IP address", Valid, ValidationRestriction.IPAddress, ulErrors, panError);
            Valid = AddError(txtIPBackupGateway, txtIPBackup, "Enter the gateway of the backup IP address", Valid, ValidationRestriction.IPAddress, ulErrors, panError);
            Valid = AddError(ddlOS, "Select the operating system", Valid, ulErrors, panError);

            if (boolOSWindows || boolOSLinux)
            {
                Valid = AddError(ddlMDT, "Select the build location", Valid, ulErrors, panError);
            }
            if (boolOSWindows)
            {
                Valid = AddError(ddlDomainWindows, "Select the domain", Valid, ulErrors, panError);
            }
            if (boolOSLinux)
            {
                Valid = AddError(ddlDomainLinux, "Select the domain", Valid, ulErrors, panError);
            }
            if (boolOSWindows || boolOSLinux || boolOSSolaris)
            {
                Valid = AddError(new RadioButton[] { radVirtualYes, radVirtualNo }, "Choose if this is a virtual machine", Valid, ulErrors, panError);
            }
            if (boolTypeVirtual)
            {
                if (boolOSWindows || boolOSLinux)
                {
                    Valid = AddError(txtMac, "Enter the MAC address of the server", Valid, ValidationRestriction.MACAddress, Validation.Required, ulErrors, panError);
                }
            }
            if (boolTypePhysical)
            {
                Valid = AddError(txtSerial, "Enter the serial number", Valid, ValidationRestriction.Basic, Validation.Required, ulErrors, panError);
                Valid = AddError(txtMacPrimary, "Enter the primary MAC address of the server", Valid, ValidationRestriction.MACAddress, Validation.Required, ulErrors, panError);
                if (boolOSSolaris)
                {
                    Valid = AddError(ddlBuildType, "Select the build type", Valid, ulErrors, panError);
                    Valid = AddError(ddlDomainSolaris, "Select the domain", Valid, ulErrors, panError);
                    Valid = AddError(ddlSource, "Select the source", Valid, ulErrors, panError);
                    Valid = AddError(new RadioButton[] { radBootLocal, radBootSan }, "Select the boot type", Valid, ulErrors, panError);
                    Valid = AddError(new RadioButton[] { radEcomYes, radEcomNo }, "Choose if this is going into the E-commerce environment", Valid, ulErrors, panError);
                    Valid = AddError(ddlBuildNetwork, "Select the build network", Valid, ulErrors, panError);
                    Valid = AddError(ddlCGI, "Select the CGI script location", Valid, ulErrors, panError);
                    Valid = AddError(ddlInterface1, "Select interface # 1", Valid, ulErrors, panError);
                    Valid = AddError(txtMPIP1, "Enter a valid MP IP address # 1", Valid, ValidationRestriction.IPAddress, Validation.Required, ulErrors, panError);
                    Valid = AddError(txtMPIP1VLAN, txtMPIP1, "Enter the VLAN of MP IP address # 1", Valid, ValidationRestriction.Numeric, ulErrors, panError);
                    Valid = AddError(ddlInterface2, "Select interface # 2", Valid, ulErrors, panError);
                    Valid = AddError(txtMPIP2, "Enter a valid MP IP address # 2", Valid, ValidationRestriction.IPAddress, Validation.Required, ulErrors, panError);
                    Valid = AddError(txtMPIP2VLAN, txtMPIP2, "Enter the VLAN of MP IP address # 2", Valid, ValidationRestriction.Numeric, ulErrors, panError);
                }
            }


            if (Valid)
            {
                string strName            = txtName.Text.Trim();
                string strBackup          = ddlBackup.SelectedValue;
                string strSerial          = txtSerial.Text.Trim();
                string strAsset           = txtAsset.Text.Trim();
                int    intOS              = ParseInt(ddlOS.SelectedItem.Value);
                string strIP              = txtIPServer.Text.Trim();
                string strIPVlan          = txtIPServerVLAN.Text.Trim();
                string strIPMask          = txtIPServerMask.Text.Trim();
                string strIPGateway       = txtIPServerGateway.Text.Trim();
                string strIPBackup        = txtIPBackup.Text.Trim();
                string strIPBackupVlan    = txtIPBackupVLAN.Text.Trim();
                string strIPBackupMask    = txtIPBackupMask.Text.Trim();
                string strIPBackupGateway = txtIPBackupGateway.Text.Trim();

                string strArrayConfig = "PNCBASIC30";
                if (radVirtualYes.Checked)
                {
                    strArrayConfig = "BASIC";
                }

                string strMAC1 = txtMacPrimary.Text;
                string strMAC2 = txtMacSecondary.Text;
                if (boolTypeVirtual)
                {
                    strMAC1 = txtMac.Text;
                    strMAC2 = "";
                }

                string strError = "";
                try
                {
                    bool boolMDT = false;
                    if (boolOSWindows)
                    {
                        strError = oZeus.AddBuild(intID, intID, intID, strSerial, strAsset, strName, strArrayConfig, oOperatingSystem.Get(intOS, "zeus_os"), oOperatingSystem.Get(intOS, "zeus_os_version"), 0, oOperatingSystem.Get(intOS, "zeus_build_type"), ddlDomainWindows.SelectedItem.Value, intEnvironment, "SERVER", 0, strMAC1, strMAC2, strIP, strIPVlan, strIPMask, strIPGateway, strIPBackup, strIPBackupVlan, strIPBackupMask, strIPBackupGateway, "", "", "", "", ddlMDT.SelectedItem.Value, "", 1);
                        if (strError == "")
                        {
                            // Add Applications
                            foreach (ListItem li in chkComponentsWindows.Items)
                            {
                                if (li.Selected)
                                {
                                    oZeus.AddApp(strSerial, li.Value, "");
                                }
                            }
                            boolMDT = true;
                        }
                    }
                    else if (boolOSLinux)
                    {
                        strError = oZeus.AddBuild(intID, intID, intID, strSerial, strAsset, strName, strArrayConfig, oOperatingSystem.Get(intOS, "name"), "", 0, "", ddlDomainLinux.SelectedItem.Value, intEnvironment, "SERVER", 0, strMAC1, strMAC2, strIP, strIPVlan, strIPMask, strIPGateway, strIPBackup, strIPBackupVlan, strIPBackupMask, strIPBackupGateway, "", "", "", "", ddlMDT.SelectedItem.Value, "", 1);
                        if (strError == "")
                        {
                            // Add Applications
                            foreach (ListItem li in chkComponentsLinux.Items)
                            {
                                if (li.Selected)
                                {
                                    oZeus.AddApp(strSerial, li.Value, "");
                                }
                            }
                            boolMDT = true;
                        }
                    }
                    else if (boolOSSolaris)
                    {
                        string strZeusBuildTypeSolaris = ddlBuildType.SelectedItem.Value;
                        string strSolarisDomain        = ddlDomainSolaris.SelectedItem.Value;
                        string strSolarisBuildFlags    = (radBootLocal.Checked ? "P,T,D" : "P");
                        if (radEcomYes.Checked)
                        {
                            strSolarisBuildFlags += ",E";
                        }
                        string strSource              = ddlSource.SelectedItem.Value;
                        string strSolarisMAC          = oFunction.FormatMAC(strMAC1, ":");
                        string strJumpstartCGI        = ddlCGI.SelectedItem.Value;
                        string strSolarisBuildNetwork = ddlBuildNetwork.SelectedItem.Value;
                        string strJumpstartBuildType  = "dhcp";

                        strError = oZeus.AddBuild(intID, intID, intID, strSerial, strAsset, strName.ToLower(), strArrayConfig, oOperatingSystem.Get(intOS, "zeus_os"), oOperatingSystem.Get(intOS, "zeus_os_version"), 0, strZeusBuildTypeSolaris, strSolarisDomain, intEnvironment, strSource, 0, strSolarisMAC, "", strIP, strIPVlan, strIPMask, strIPGateway, strIPBackup, strIPBackupVlan, strIPBackupMask, strIPBackupGateway, ddlInterface1.SelectedItem.Value, txtMPIP1.Text, ddlInterface2.SelectedItem.Value, txtMPIP2.Text, strSolarisBuildFlags, oVariable.SolarisFlags(strJumpstartCGI, strSolarisBuildNetwork, strJumpstartBuildType, false), 1);

                        if (strError == "")
                        {
                            // Register
                            string strJumpstartURL = "http://" + strJumpstartCGI + "/cgi-bin/jumpstart.cgi?1010,MACADDR=" + strSolarisMAC + ",create_host_info";
                            oLog.AddEvent(intID, strName, strSerial, "Beginning HOST.INFO registration on jumpstart URL = " + strJumpstartURL, LoggingType.Information);
                            if (RunCGI(strJumpstartURL) == true)
                            {
                                oLog.AddEvent(intID, strName, strSerial, "Success!! HOST.INFO registration on jumpstart URL = " + strJumpstartURL, LoggingType.Information);
                            }
                            else
                            {
                                strError = "CREATE_HOST_INFO registration ~ Jumpstart URL = " + strJumpstartURL + " failed.";
                                oLog.AddEvent(intID, strName, strSerial, "Failure!! HOST.INFO registration on jumpstart URL = " + strJumpstartURL, LoggingType.Error);
                            }
                            strJumpstartURL = "http://" + strJumpstartCGI + "/cgi-bin/jumpstart.cgi?1010,MACADDR=" + strSolarisMAC + ",add_client";
                            oLog.AddEvent(intID, strName, strSerial, "Beginning Client Configuration on jumpstart URL = " + strJumpstartURL, LoggingType.Information);
                            if (RunCGI(strJumpstartURL) == true)
                            {
                                oLog.AddEvent(intID, strName, strSerial, "Success!! Client Configuration on jumpstart URL = " + strJumpstartURL, LoggingType.Information);
                            }
                            else
                            {
                                strError = "ADD_CLIENT registration ~ Jumpstart URL = " + strJumpstartURL + " failed.";
                                oLog.AddEvent(intID, strName, strSerial, "Failure!! Client Configuration on jumpstart URL = " + strJumpstartURL, LoggingType.Error);
                            }
                        }
                    }
                    else if (boolOSAIX)
                    {
                        strError = "AIX is unavailable at this time.";
                    }
                    else
                    {
                        // Other
                        strError = "The selected operating system is unavailable at this time.";
                    }

                    if (boolMDT)
                    {
                        // Register MDT
                        string strRDPMDTWebService = ddlMDT.SelectedItem.Value;
                        System.Net.NetworkCredential oCredentials = new System.Net.NetworkCredential(oVariable.ADUser(), oVariable.ADPassword(), oVariable.Domain());
                        BuildSubmit oMDT = new BuildSubmit();
                        oMDT.Credentials = oCredentials;
                        oMDT.Url         = strRDPMDTWebService;
                        string strMDTMAC1 = oFunction.FormatMAC(strMAC1, ":");
                        oLog.AddEvent(intID, strName, strSerial, "Running ForceCleanup MDT on " + strRDPMDTWebService + " (" + strName + ", " + strMDTMAC1 + ", " + "ServerShare" + ")", LoggingType.Information);
                        oMDT.ForceCleanup(strName, strMDTMAC1, "ServerShare");
                        string strMDTMAC2 = "";
                        if (strMAC2 != "")
                        {
                            strMDTMAC2 = oFunction.FormatMAC(strMAC2, ":");
                            oLog.AddEvent(intID, strName, strSerial, "Waiting 60 seconds for Active Directory to Sychronize...", LoggingType.Debug);
                            Thread.Sleep(60000); // Wait 60 seconds
                            oLog.AddEvent(intID, strName, strSerial, "Running ForceCleanup MDT on " + strRDPMDTWebService + " (" + strName + ", " + strMDTMAC2 + ", " + "ServerShare" + ")", LoggingType.Information);
                            oMDT.ForceCleanup(strName, strMDTMAC2, "ServerShare");
                        }
                        string[] strExtendedMDT1  = new string[] { "PNCBACKUPSOFTWARE:" + strBackup, "IISInstall:" + (chkIIS.Checked ? "YES" : "NO"), "HWConfig:" + (radBootLocal.Checked ? "DellLD" : "DEFAULT"), "ESMInstall:" + (chkESM.Checked ? "YES" : "NO") + ", ClearViewInstall:YES", "Teamed2:" + strMDTMAC2, "HIDSInstall:" + (chkHIDS.Checked ? "YES" : "NO") };
                        string   strExtendedMDTs1 = "";
                        foreach (string extendedMDT in strExtendedMDT1)
                        {
                            if (strExtendedMDTs1 != "")
                            {
                                strExtendedMDTs1 += ", ";
                            }
                            strExtendedMDTs1 += extendedMDT;
                        }
                        string strBootEnvironment = oOperatingSystem.Get(intOS, "boot_environment");
                        string strTaskSequence    = oOperatingSystem.Get(intOS, "task_sequence");
                        string strDomain          = ddlDomainWindows.SelectedItem.Value;
                        oLog.AddEvent(intID, strName, strSerial, "Registering MDT on " + strRDPMDTWebService + ", automatedBuild2 (" + strName + ", " + strMDTMAC1 + ", " + strBootEnvironment + ", " + "provision" + ", " + strDomain + ", " + strTaskSequence + ", " + "ServerShare" + ", ExtendedValues=" + strExtendedMDTs1 + ")", LoggingType.Information);
                        oMDT.automatedBuild2(strName, strMDTMAC1, strBootEnvironment, "provision", strDomain, strTaskSequence, "ServerShare", strExtendedMDT1);
                        if (strMDTMAC2 != "")
                        {
                            string[] strExtendedMDT2  = new string[] { "PNCBACKUPSOFTWARE:" + strBackup, "IISInstall:" + (chkIIS.Checked ? "YES" : "NO"), "HWConfig:" + (radBootLocal.Checked ? "DellLD" : "DEFAULT"), "ESMInstall:" + (chkESM.Checked ? "YES" : "NO") + ", ClearViewInstall:YES", "Teamed2:" + strMDTMAC1, "HIDSInstall:" + (chkHIDS.Checked ? "YES" : "NO") };
                            string   strExtendedMDTs2 = "";
                            foreach (string extendedMDT in strExtendedMDT2)
                            {
                                if (strExtendedMDTs2 != "")
                                {
                                    strExtendedMDTs2 += ", ";
                                }
                                strExtendedMDTs2 += extendedMDT;
                            }
                            oLog.AddEvent(intID, strName, strSerial, "Waiting 60 seconds for Active Directory to Sychronize...", LoggingType.Debug);
                            Thread.Sleep(60000); // Wait 60 seconds
                            oLog.AddEvent(intID, strName, strSerial, "Registering MDT on " + strRDPMDTWebService + ", automatedBuild2 (" + strName + ", " + strMDTMAC2 + ", " + strBootEnvironment + ", " + "provision" + ", " + strDomain + ", " + strTaskSequence + ", " + "ServerShare" + ", ExtendedValues=" + strExtendedMDTs2 + ")", LoggingType.Information);
                            oMDT.automatedBuild2(strName, strMDTMAC1, strBootEnvironment, "provision", strDomain, strTaskSequence, "ServerShare", strExtendedMDT2);
                        }
                        oLog.AddEvent(intID, strName, strSerial, "MDT has been configured", LoggingType.Information);
                    }
                }
                catch (Exception ex)
                {
                    strError = ex.Message;
                }


                if (strError == "")
                {
                    panSuccess.Visible = true;
                    litName.Text       = txtName.Text.ToUpper();
                }
                else
                {
                    AddError(strError, ulErrors2, panError2);
                }
            }
            // ArrayConfig
            //      PNCBASIC30      = Windows / Linux Blade, All Solaris
            //      BASIC           = VMware
            //      SANCONNECTEDF   = Rackmount (not just BFS?)
        }