Ejemplo n.º 1
0
    protected void OkButton_Click(object sender, EventArgs e)
    {
        Unicast unicast = new Unicast();
        int     hostID  = Convert.ToInt32((string)(Session["hostID"]));

        Session.Remove("hostID");
        string direction = (string)(Session["direction"]);

        Session.Remove("direction");
        if (direction == "push")
        {
            Image image = new Image();
            unicast = unicast.Read(hostID, unicast);
            string imageID = image.GetImageID(unicast.ImageName);
            Session["imageID"] = imageID;
            if (image.Check_Checksum(imageID))
            {
                unicast.CreateUnicast(direction, hostID);
            }
            else
            {
                lblIncorrectChecksum.Text = "This Image Has Not Been Confirmed And Cannot Be Deployed.  <br>Confirm It Now?";
                ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('incorrectChecksum'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });", true);
            }
        }
        else
        {
            unicast.CreateUnicast(direction, hostID);
        }
        Master.Msgbox(Utility.Message);
    }
Ejemplo n.º 2
0
        //Делегат принимает адрес функции, вызываем ее;
        static void Main(string[] args)
        {
            Program program     = new Program();
            Unicast one_for_all = program.Input;

            one_for_all();
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            Program program   = new Program();
            Unicast inputInfo = program.Input;

            inputInfo();
        }
Ejemplo n.º 4
0
 public string Create(Unicast unicast)
 {
     try
     {
         using (NpgsqlConnection conn = new NpgsqlConnection(Utility.DBString))
         {
             NpgsqlCommand cmd = new NpgsqlCommand("unicast_create", conn);
             cmd.CommandType = CommandType.StoredProcedure;
             cmd.Parameters.Add(new NpgsqlParameter("@taskName", unicast.HostName));
             conn.Open();
             string result = cmd.ExecuteScalar() as string;
             if (result != "0")
             {
                 Utility.Message += "Successfully Started Task " + unicast.HostName + "<br>";
             }
             else
             {
                 Utility.Message += "This Host Is Already Part Of An Active Task <br>";
             }
             return(result);
         }
     }
     catch (Exception ex)
     {
         Utility.Message += "Could Not Create Unicast.  Check The Exception Log For More Info <br>";
         Logger.Log(ex.ToString());
         return("0");
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        ///     Starts a <see cref="ServiceHost" /> for each found service. Defaults to <see cref="BasicHttpBinding" /> if
        ///     no user specified binding is found
        /// </summary>
        public void Startup(Unicast.UnicastBus bus)
        {
            Bus = bus;
            var conventions = bus.Builder.Build<Conventions>();
            var components = bus.Builder.Build<IConfigureComponents>();

            foreach (var serviceType in bus.Settings.GetAvailableTypes().Where(t => !t.IsAbstract && IsWcfService(t, conventions)))
            {
                var host = new WcfServiceHost(serviceType);

                Binding binding = new BasicHttpBinding();

                if (components.HasComponent<Binding>())
                {
                    binding = bus.Builder.Build<Binding>();
                }

                host.AddDefaultEndpoint(GetContractType(serviceType),
                    binding
                    , String.Empty);

                hosts.Add(host);

                logger.Debug("Going to host the WCF service: " + serviceType.AssemblyQualifiedName);
                host.Open();
            }
        }
Ejemplo n.º 6
0
    protected void btnConfirm_Click(object sender, EventArgs e)
    {
        if ((string)Session["direction"] == "delete")
        {
            Session.Remove("direction");
            List <int> delList = new List <int>();
            delList.Add(Convert.ToInt32(group.ID));
            group.Delete(delList);
            if (Utility.Message.Contains("Successfully"))
            {
                Response.Redirect("~/views/groups/search.aspx");
            }
            else
            {
                Master.Msgbox(Utility.Message);
            }
        }
        else
        {
            Image imageInfo = new Image();
            imageInfo.ID       = imageInfo.GetImageID(group.Image);
            Session["imageID"] = imageInfo.ID;
            if (imageInfo.Check_Checksum(imageInfo.ID))
            {
                int isUnicast = Convert.ToInt32(Session["isGroupUnicast"]);
                if (isUnicast == 1)
                {
                    Unicast    unicast    = new Unicast();
                    List <int> listHostID = new List <int>();
                    listHostID = unicast.UnicastFromGroup(Convert.ToInt32(group.ID));
                    for (int z = 0; z < listHostID.Count; z++)
                    {
                        unicast.CreateUnicast("push", listHostID[z]);
                    }
                    Utility.Message = "Started " + listHostID.Count + " Tasks";
                    History history = new History();
                    history.Event  = "Unicast";
                    history.Type   = "Group";
                    history.TypeID = group.ID;
                    history.CreateEvent(history);
                }
                else
                {
                    Multicast multicast = new Multicast();
                    multicast.CreateMulticast(Convert.ToInt32(group.ID));
                }
                Session.Remove("isGroupUnicast");
                Master.Msgbox(Utility.Message);
            }

            else
            {
                lblIncorrectChecksum.Text = "This Image Has Not Been Confirmed And Cannot Be Deployed.  <br>Confirm It Now?";
                ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('incorrectChecksum'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });", true);
            }
        }
    }
Ejemplo n.º 7
0
    protected void btnDeploy_Click(object sender, EventArgs e)
    {
        Unicast unicast = new Unicast();

        Session["direction"] = "push";
        lblTitle.Text        = "Deploy The Selected Host?";
        gvConfirm.DataSource = unicast.Confirm(host.ID);
        gvConfirm.DataBind();
        ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('confirmbox'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });", true);
    }
Ejemplo n.º 8
0
    public void CreateUnicast(string direction, int hostID)
    {
        Task    task    = new Task();
        Unicast unicast = new Unicast();

        unicast = unicast.Read(hostID, unicast);
        if (unicast.HostName != null)
        {
            if (unicast.ImageName != null)
            {
                string taskID = unicast.Create(unicast);
                if (taskID != "0")
                {
                    if (CreatePxeBoot(unicast, direction, "false", taskID, hostID))
                    {
                        History history = new History();
                        history.Type   = "Host";
                        history.Notes  = unicast.HostMac;
                        history.TypeID = hostID.ToString();
                        if (direction == "push")
                        {
                            history.Event = "Deploy";
                        }
                        else
                        {
                            history.Event = "Upload";
                        }
                        history.CreateEvent(history);

                        Image image = new Image();
                        history.Type   = "Image";
                        history.Notes  = unicast.HostName;
                        history.TypeID = image.GetImageID(unicast.ImageName);
                        if (direction == "push")
                        {
                            history.Event = "Deploy";
                        }
                        else
                        {
                            history.Event = "Upload";
                        }

                        history.CreateEvent(history);

                        task.WakeUp(unicast.HostMac);
                    }
                    else
                    {
                        unicast.Rollback(unicast);
                    }
                }
            }
        }
    }
Ejemplo n.º 9
0
 protected void btnUpload_Click(object sender, EventArgs e)
 {
     Unicast unicast = new Unicast();
     GridViewRow gvRow = (GridViewRow)(sender as Control).Parent.Parent;
     string hostID = gvHosts.DataKeys[gvRow.RowIndex].Value.ToString();
     Session["hostID"] = hostID;
     Session["direction"] = "pull";
     lblTitle.Text = "Upload The Selected Host?";
     gvConfirm.DataSource = unicast.Confirm(hostID);
     gvConfirm.DataBind();
     ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('confirmbox'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });;", true);
 }
Ejemplo n.º 10
0
    protected void btnConfirm_Click(object sender, EventArgs e)
    {
        if ((string)Session["direction"] == "delete")
        {
            Session.Remove("direction");
            List<int> delList = new List<int>();
            delList.Add(Convert.ToInt32(group.ID));
            group.Delete(delList);
            if (Utility.Message.Contains("Successfully"))
                Response.Redirect("~/views/groups/search.aspx");
            else
                Master.Msgbox(Utility.Message);
        }
        else
        {
            Image imageInfo = new Image();
            imageInfo.ID = imageInfo.GetImageID(group.Image);
            Session["imageID"] = imageInfo.ID;
            if (imageInfo.Check_Checksum(imageInfo.ID))
            {
                int isUnicast = Convert.ToInt32(Session["isGroupUnicast"]);
                if (isUnicast == 1)
                {
                    Unicast unicast = new Unicast();
                    List<int> listHostID = new List<int>();
                    listHostID = unicast.UnicastFromGroup(Convert.ToInt32(group.ID));
                    for (int z = 0; z < listHostID.Count; z++)
                        unicast.CreateUnicast("push", listHostID[z]);
                    Utility.Message = "Started " + listHostID.Count + " Tasks";
                    History history = new History();
                    history.Event = "Unicast";
                    history.Type = "Group";
                    history.TypeID = group.ID;
                    history.CreateEvent(history);

                }
                else
                {
                    Multicast multicast = new Multicast();
                    multicast.CreateMulticast(Convert.ToInt32(group.ID));
                }
                Session.Remove("isGroupUnicast");
                Master.Msgbox(Utility.Message);
            }

            else
            {
                lblIncorrectChecksum.Text = "This Image Has Not Been Confirmed And Cannot Be Deployed.  <br>Confirm It Now?";
                ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('incorrectChecksum'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });", true);
            }
        }
    }
Ejemplo n.º 11
0
    protected void btnUpload_Click(object sender, EventArgs e)
    {
        Unicast     unicast = new Unicast();
        GridViewRow gvRow   = (GridViewRow)(sender as Control).Parent.Parent;
        string      hostID  = gvHosts.DataKeys[gvRow.RowIndex].Value.ToString();

        Session["hostID"]    = hostID;
        Session["direction"] = "pull";
        lblTitle.Text        = "Upload The Selected Host?";
        gvConfirm.DataSource = unicast.Confirm(hostID);
        gvConfirm.DataBind();
        ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('confirmbox'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });;", true);
    }
Ejemplo n.º 12
0
        void ChangeInfo1.Change_Info()
        {
            Console.Write("\nВведите новое название журнала: ");
            NewJournal = Console.ReadLine();
            Console.Write("Введите новое название книги: ");
            NewBook = Console.ReadLine();
            Console.Write("Введите новое название печатного издания: ");
            NewPrintEdition = Console.ReadLine();
            Console.Write("Введите новое название учебника: ");
            NewTextbook = Console.ReadLine();
            Program program   = new Program(NewJournal, NewBook, NewPrintEdition, NewTextbook);
            Unicast inputInfo = program.Input;

            inputInfo();
        }
Ejemplo n.º 13
0
        //Вводим новые данные и при помощи конструктора класса Program записываем их в свойства, вызываем функцию Input класса Program;
        void IReWrite.Re_Write()
        {
            Console.Write("\nВведите новый номер квартиры: ");
            New_Flat = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите номер дома: ");
            New_House = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите улицу: ");
            New_Street = Console.ReadLine();
            Console.Write("Введите город: ");
            New_City = Console.ReadLine();
            Program program     = new Program(New_Flat, New_House, New_Street, New_City);
            Unicast one_for_all = program.Input;

            one_for_all();
        }
Ejemplo n.º 14
0
        void IChangeInfo.Change_Info()
        {
            Console.Write("\nВведите новое название завода: ");
            New_Plant = Console.ReadLine();
            Console.Write("Введите новое название организации: ");
            New_Organization = Console.ReadLine();
            Console.Write("Введите новое название cтраховой компании: ");
            New_InsuranceCompany = Console.ReadLine();
            Console.Write("Введите новое название нефтегазовой компании: ");
            New_OilGasCompany = Console.ReadLine();
            Program program   = new Program(New_Plant, New_Organization, New_InsuranceCompany, New_OilGasCompany);
            Unicast inputInfo = program.Input;

            inputInfo();
        }
        protected override void Send(Unicast.Transport.TransportMessage message, Address errorQueue)
        {
            var failedQ = TransportMessageHelpers.GetReplyToAddress(message);

            var sat = Configure.Instance.Builder.Build<SecondLevelRetries>();

            if (failedQ == sat.InputAddress)
            {
                Logger.InfoFormat("The message was sent from the SecondLevelRetries satellite. Sending the message direct to the error queue!");

                base.Send(message, sat.ErrorQueue);
                return;
            }

            base.Send(message, errorQueue);
        }
Ejemplo n.º 16
0
    protected void OkButton_Click(object sender, EventArgs e)
    {
        string direction = (string)(Session["direction"]);

        Session.Remove("direction");
        if (direction == "delete")
        {
            List <int> delList = new List <int>();
            delList.Add(Convert.ToInt32(host.ID));
            host.Delete(delList);
            if (Utility.Message.Contains("Successfully"))
            {
                Response.Redirect("~/views/hosts/search.aspx");
            }
            else
            {
                Master.Msgbox(Utility.Message);
            }
        }
        else if (direction == "push")
        {
            Unicast unicast = new Unicast();
            Image   image   = new Image();
            unicast = unicast.Read(Convert.ToInt32(host.ID), unicast);
            string imageID = image.GetImageID(unicast.ImageName);
            Session["imageID"] = imageID;
            if (image.Check_Checksum(imageID))
            {
                unicast.CreateUnicast(direction, Convert.ToInt32(host.ID));
                Master.Msgbox(Utility.Message);
            }
            else
            {
                lblIncorrectChecksum.Text = "This Image Has Not Been Confirmed And Cannot Be Deployed.  <br>Confirm It Now?";
                ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('incorrectChecksum'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });", true);
            }
        }
        else
        {
            Unicast unicast = new Unicast();
            unicast.CreateUnicast(direction, Convert.ToInt32(host.ID));
            Master.Msgbox(Utility.Message);
        }
    }
Ejemplo n.º 17
0
    protected void btnConfirm_Click(object sender, EventArgs e)
    {
        int   groupID   = Convert.ToInt32((string)(Session["groupID"]));
        int   isUnicast = Convert.ToInt32(Session["isGroupUnicast"]);
        Group groupInfo = new Group();

        groupInfo.ID = groupID.ToString();
        groupInfo.Read(groupInfo);
        Image imageInfo = new Image();

        imageInfo.ID       = imageInfo.GetImageID(groupInfo.Image);
        Session["imageID"] = imageInfo.ID;
        if (imageInfo.Check_Checksum(imageInfo.ID))
        {
            if (isUnicast == 1)
            {
                Unicast    unicast    = new Unicast();
                List <int> listHostID = new List <int>();
                listHostID = unicast.UnicastFromGroup(groupID);

                for (int z = 0; z < listHostID.Count; z++)
                {
                    unicast.CreateUnicast("push", listHostID[z]);
                }
                Utility.Message = "Started " + listHostID.Count + " Tasks";
            }
            else
            {
                Multicast multicast = new Multicast();
                multicast.CreateMulticast(groupID);
            }
            Session.Remove("groupID");
            Session.Remove("isGroupUnicast");
            Master.Msgbox(Utility.Message);
        }
        else
        {
            lblIncorrectChecksum.Text = "This Image Has Not Been Confirmed And Cannot Be Deployed.  <br>Confirm It Now?";
            ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('incorrectChecksum'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });", true);
        }
    }
Ejemplo n.º 18
0
    protected void btnConfirm_Click(object sender, EventArgs e)
    {
        int groupID = Convert.ToInt32((string)(Session["groupID"]));
        int isUnicast = Convert.ToInt32(Session["isGroupUnicast"]);
        Group groupInfo = new Group();
        groupInfo.ID = groupID.ToString();
        groupInfo.Read(groupInfo);
        Image imageInfo = new Image();
        imageInfo.ID = imageInfo.GetImageID(groupInfo.Image);
        Session["imageID"] = imageInfo.ID;
        if (imageInfo.Check_Checksum(imageInfo.ID))
        {
            if (isUnicast == 1)
            {
                Unicast unicast = new Unicast();
                List<int> listHostID = new List<int>();
                listHostID = unicast.UnicastFromGroup(groupID);

                for (int z = 0; z < listHostID.Count; z++)
                    unicast.CreateUnicast("push", listHostID[z]);
                Utility.Message = "Started " + listHostID.Count + " Tasks";
            }
            else
            {
                Multicast multicast = new Multicast();
                multicast.CreateMulticast(groupID);
            }
            Session.Remove("groupID");
            Session.Remove("isGroupUnicast");
            Master.Msgbox(Utility.Message);
        }
        else
        {

            lblIncorrectChecksum.Text = "This Image Has Not Been Confirmed And Cannot Be Deployed.  <br>Confirm It Now?";
            ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('incorrectChecksum'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });", true);

        }
    }
Ejemplo n.º 19
0
    public Unicast Read(int hostID, Unicast unicast)
    {
        try
        {
            using (NpgsqlConnection conn = new NpgsqlConnection(Utility.DBString))
            {
                NpgsqlDataReader rdr = null;
                NpgsqlCommand    cmd = new NpgsqlCommand("unicast_read", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new NpgsqlParameter("@hostID", hostID));

                conn.Open();
                rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    unicast.ImageName     = (string)rdr["_imagename"];
                    unicast.ImageOS       = (string)rdr["_imageos"];
                    unicast.HostName      = (string)rdr["_hostname"];
                    unicast.HostKernel    = (string)rdr["_hostkernel"];
                    unicast.HostBootImage = (string)rdr["_hostbootimage"];
                    unicast.HostArguments = (string)rdr["_hostarguments"];
                    unicast.HostMac       = (string)rdr["_hostmac"];
                    unicast.HostScripts   = rdr["_hostscripts"].ToString();
                }
            }
        }
        catch (Exception ex)
        {
            Utility.Message = "Could Not Read Unicast Info.  Check The Exception Log For More Info";
            Logger.Log(ex.ToString());
        }
        if (unicast.ImageName == null)
        {
            Utility.Message = "The Image No Longer Exists";
        }
        return(unicast);
    }
Ejemplo n.º 20
0
    public bool CreatePxeBoot(Unicast unicast, string direction, string isMulticast, string taskID, int hostID)
    {
        Utility settings = new Utility();
        Task task = new Task();
        string pxeHostMac = task.MacToPXE(unicast.HostMac);
        string proxyDHCP = settings.GetSettings("Proxy Dhcp");
        string biosFile = settings.GetSettings("Proxy Bios File");
        string efi32File = settings.GetSettings("Proxy Efi32 File");
        string efi64File = settings.GetSettings("Proxy Efi64 File");
        string biosPath = null;
        string efi32Path = null;
        string efi64Path = null;
        string biosPathipxe = null;
        string efi32Pathipxe = null;
        string efi64Pathipxe = null;
        string path = null;
        string[] lines = null;
        string wds_key = null;
        if (settings.GetSettings("Server Key Mode") == "Automated")
            wds_key = settings.GetSettings("Server Key");
        else
            wds_key = "";

        string mode = settings.GetSettings("PXE Mode");

        if (proxyDHCP == "Yes")
        {
            biosPathipxe = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe";
            string[] biosLinesipxe = {@"#!ipxe",
                           @"kernel " + "http://"+ settings.GetServerIP() +"/cruciblewds/data/boot/kernels/" + unicast.HostKernel + ".krn" + " initrd=" + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments,
                           @"imgfetch " + "http://"+ settings.GetServerIP() +"/cruciblewds/data/boot/images/" + unicast.HostBootImage ,
                           @"boot"};

            biosPath = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac;
            string[] biosLines = { @"DEFAULT cruciblewds",
                           @"LABEL cruciblewds", @"KERNEL kernels" + Path.DirectorySeparatorChar + unicast.HostKernel ,
                           @"APPEND initrd=images" + Path.DirectorySeparatorChar + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments};

            efi32Pathipxe = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe";
            string[] efi32Linesipxe = {@"#!ipxe",
                           @"kernel " + "http://"+ settings.GetServerIP() +"/cruciblewds/data/boot/kernels/" + unicast.HostKernel + ".krn" + " initrd=" + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments,
                           @"imgfetch " + "http://"+ settings.GetServerIP() +"/cruciblewds/data/boot/images/" + unicast.HostBootImage ,
                           @"boot"};

            efi32Path = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac;
            string[] efi32Lines = { @"DEFAULT cruciblewds",
                           @"LABEL cruciblewds", @"KERNEL kernels" + Path.DirectorySeparatorChar + unicast.HostKernel ,
                           @"APPEND initrd=images" + Path.DirectorySeparatorChar + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments};

            efi64Pathipxe = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe";
            string[] efi64Linesipxe = {@"#!ipxe",
                           @"kernel " + "http://"+ settings.GetServerIP() +"/cruciblewds/data/boot/kernels/" + unicast.HostKernel + ".krn" + " initrd=" + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments,
                           @"imgfetch " + "http://"+ settings.GetServerIP() +"/cruciblewds/data/boot/images/" + unicast.HostBootImage ,
                           @"boot"};

            efi64Path = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac;
            string[] efi64Lines = { @"DEFAULT cruciblewds",
                           @"LABEL cruciblewds", @"KERNEL kernels" + Path.DirectorySeparatorChar + unicast.HostKernel ,
                           @"APPEND initrd=images" + Path.DirectorySeparatorChar + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments};

            if (File.Exists(biosPath))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                     Utility.MoveFile(biosPath, biosPath + ".custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return false;
                }
            }

            if (File.Exists(biosPathipxe))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                        Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return false;
                }
            }

            if (File.Exists(efi32Path))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                        Utility.MoveFile(efi32Path, efi32Path + ".custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return false;
                }
            }

            if (File.Exists(efi32Pathipxe))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {

                        Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return false;
                }
            }

            if (File.Exists(efi64Path))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                        Utility.MoveFile(efi64Path, efi64Path + ".custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return false;
                }
            }

            if (File.Exists(efi64Pathipxe))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {

                        Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return false;
                }
            }

            try
            {
                System.IO.File.WriteAllLines(biosPath, biosLines);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                    Syscall.chmod(biosPath, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));

                System.IO.File.WriteAllLines(efi32Path, efi32Lines);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                    Syscall.chmod(efi32Path, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));

                System.IO.File.WriteAllLines(efi64Path, efi64Lines);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                    Syscall.chmod(efi64Path, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));

                System.IO.File.WriteAllLines(biosPathipxe, biosLinesipxe);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                    Syscall.chmod(biosPathipxe, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));

                System.IO.File.WriteAllLines(efi32Pathipxe, efi32Linesipxe);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                    Syscall.chmod(efi32Pathipxe, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));

                System.IO.File.WriteAllLines(efi64Pathipxe, efi64Linesipxe);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                    Syscall.chmod(efi64Pathipxe, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));

            }

            catch (Exception ex)
            {
                Logger.Log(ex.ToString());
                Utility.Message = "Could Not Create PXE File";
                return false;
            }

        }
        else
        {
            if (mode == "pxelinux" || mode == "syslinux_32_efi" || mode == "syslinux_64_efi")
            {
                path = settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac;
                string[] tmplines = { @"DEFAULT cruciblewds",
                           @"LABEL cruciblewds", @"KERNEL " + "kernels" + Path.DirectorySeparatorChar + unicast.HostKernel ,
                           @"APPEND initrd=" + "images" + Path.DirectorySeparatorChar + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments};
                lines = tmplines;
            }

            else if (mode.Contains("ipxe"))
            {
                path = settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe";

                string[] tmplines = {@"#!ipxe",
                           @"kernel " + "http://"+ settings.GetServerIP() +"/cruciblewds/data/boot/kernels/" + unicast.HostKernel + ".krn" + " initrd=" + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments,
                           @"imgfetch " + "http://"+ settings.GetServerIP() +"/cruciblewds/data/boot/images/" + unicast.HostBootImage ,
                           @"boot"};
                lines = tmplines;
            }
            else
            {
                Utility.Message = "PXE Mode Is Not Set Correctly";
                return false;
            }

            if (File.Exists(path))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                    if (mode.Contains("ipxe"))
                        Utility.MoveFile(settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe", settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom");
                    else
                        Utility.MoveFile(settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac, settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return false;
                }
            }

            try
            {
                System.IO.File.WriteAllLines(path, lines);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                {
                    Syscall.chmod(path, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));
                }
            }
            catch (Exception ex)
            {
                Logger.Log(ex.ToString());
                Utility.Message = "Could Not Create PXE File";
                return false;
            }
        }

        try
        {
            string storagePath = null;
            string xferMode = settings.GetSettings("Image Transfer Mode");
            if (xferMode == "smb" || xferMode == "smb+http")
                 storagePath = "SMB Path";
            else
            {
                 if (direction == "pull")
                      storagePath = "Nfs Upload Path";
                 else
                      storagePath = "Nfs Deploy Path";
            }
            string hostArgs = "imgName=" + unicast.ImageName + " storage=" + settings.GetSettings(storagePath) + " hostID=" + hostID +
                              " imgOS=" + unicast.ImageOS + " multicast=" + isMulticast + " hostScripts=" + unicast.HostScripts + " xferMode=" + xferMode + " serverIP=" + settings.GetSettings("Server IP") +
                              " hostName=" + unicast.HostName + " compAlg=" + settings.GetSettings("Compression Algorithm") + " compLevel=-" + settings.GetSettings("Compression Level");

            if(direction == "pull" && xferMode == "udp+http")
            {
                int portBase = task.GetPort();
                hostArgs = hostArgs + " portBase=" + portBase;
            }

            if (task.CreateTaskArgs(hostArgs,taskID))
                return true;
            else
                return false;
        }
        catch (Exception ex)
        {
            Logger.Log(ex.ToString());
            Utility.Message = "Could Not Create PXE File";
            return false;
        }
    }
Ejemplo n.º 21
0
    public void Rollback(Unicast unicast)
    {
        try
        {
            using (NpgsqlConnection conn = new NpgsqlConnection(Utility.DBString))
            {
                NpgsqlCommand cmd = new NpgsqlCommand("unicast_rollback", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new NpgsqlParameter("@taskName", unicast.HostName));
                conn.Open();
                cmd.ExecuteNonQuery();
            }
        }
        catch (Exception ex)
        {
            Logger.Log(ex.ToString());
        }

        Utility settings   = new Utility();
        Task    task       = new Task();
        string  pxeHostMac = task.MacToPXE(unicast.HostMac);

        Host hostFunction = new Host();

        if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
        {
            string mode      = settings.GetSettings("PXE Mode");
            string proxyDHCP = settings.GetSettings("Proxy Dhcp");
            if (proxyDHCP == "Yes")
            {
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe");
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac);
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe");
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac);
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe");
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac);
                }
                catch { }
            }
            else
            {
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom", settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe");
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".custom", settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac);
                }
                catch { }
            }
        }
    }
Ejemplo n.º 22
0
    public void CreateUnicast(string direction, int hostID)
    {
        Task task = new Task();
        Unicast unicast = new Unicast();

        unicast = unicast.Read(hostID, unicast);
        if (unicast.HostName != null)
        {
            if (unicast.ImageName != null)
            {
                string taskID = unicast.Create(unicast);
                if (taskID != "0")
                {
                    if (CreatePxeBoot(unicast, direction, "false", taskID, hostID))
                    {
                        History history = new History();
                        history.Type = "Host";
                        history.Notes = unicast.HostMac;
                        history.TypeID = hostID.ToString();
                        if (direction == "push")
                            history.Event = "Deploy";
                        else
                            history.Event = "Upload";
                        history.CreateEvent(history);

                        Image image = new Image();
                        history.Type = "Image";
                        history.Notes = unicast.HostName;
                        history.TypeID = image.GetImageID(unicast.ImageName);
                        if (direction == "push")
                            history.Event = "Deploy";
                        else
                            history.Event = "Upload";

                        history.CreateEvent(history);

                        task.WakeUp(unicast.HostMac);

                    }
                    else
                        unicast.Rollback(unicast);
                }
            }
        }
    }
Ejemplo n.º 23
0
    public bool CreatePxeBoot(Unicast unicast, string direction, string isMulticast, string taskID, int hostID)
    {
        Utility settings      = new Utility();
        Task    task          = new Task();
        string  pxeHostMac    = task.MacToPXE(unicast.HostMac);
        string  proxyDHCP     = settings.GetSettings("Proxy Dhcp");
        string  biosFile      = settings.GetSettings("Proxy Bios File");
        string  efi32File     = settings.GetSettings("Proxy Efi32 File");
        string  efi64File     = settings.GetSettings("Proxy Efi64 File");
        string  biosPath      = null;
        string  efi32Path     = null;
        string  efi64Path     = null;
        string  biosPathipxe  = null;
        string  efi32Pathipxe = null;
        string  efi64Pathipxe = null;
        string  path          = null;

        string[] lines   = null;
        string   wds_key = null;

        if (settings.GetSettings("Server Key Mode") == "Automated")
        {
            wds_key = settings.GetSettings("Server Key");
        }
        else
        {
            wds_key = "";
        }

        string mode = settings.GetSettings("PXE Mode");

        if (proxyDHCP == "Yes")
        {
            biosPathipxe = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe";
            string[] biosLinesipxe = { @"#!ipxe",
                                       @"kernel " + "http://" + settings.GetServerIP() + "/cruciblewds/data/boot/kernels/" + unicast.HostKernel + ".krn" + " initrd=" + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments,
                                       @"imgfetch " + "http://" + settings.GetServerIP() + "/cruciblewds/data/boot/images/" + unicast.HostBootImage,
                                       @"boot" };

            biosPath = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac;
            string[] biosLines = { @"DEFAULT cruciblewds",
                                   @"LABEL cruciblewds",  @"KERNEL kernels" + Path.DirectorySeparatorChar + unicast.HostKernel,
                                   @"APPEND initrd=images" + Path.DirectorySeparatorChar + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments };


            efi32Pathipxe = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe";
            string[] efi32Linesipxe = { @"#!ipxe",
                                        @"kernel " + "http://" + settings.GetServerIP() + "/cruciblewds/data/boot/kernels/" + unicast.HostKernel + ".krn" + " initrd=" + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments,
                                        @"imgfetch " + "http://" + settings.GetServerIP() + "/cruciblewds/data/boot/images/" + unicast.HostBootImage,
                                        @"boot" };

            efi32Path = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac;
            string[] efi32Lines = { @"DEFAULT cruciblewds",
                                    @"LABEL cruciblewds",  @"KERNEL kernels" + Path.DirectorySeparatorChar + unicast.HostKernel,
                                    @"APPEND initrd=images" + Path.DirectorySeparatorChar + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments };


            efi64Pathipxe = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe";
            string[] efi64Linesipxe = { @"#!ipxe",
                                        @"kernel " + "http://" + settings.GetServerIP() + "/cruciblewds/data/boot/kernels/" + unicast.HostKernel + ".krn" + " initrd=" + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments,
                                        @"imgfetch " + "http://" + settings.GetServerIP() + "/cruciblewds/data/boot/images/" + unicast.HostBootImage,
                                        @"boot" };

            efi64Path = settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac;
            string[] efi64Lines = { @"DEFAULT cruciblewds",
                                    @"LABEL cruciblewds",  @"KERNEL kernels" + Path.DirectorySeparatorChar + unicast.HostKernel,
                                    @"APPEND initrd=images" + Path.DirectorySeparatorChar + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments };


            if (File.Exists(biosPath))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                    Utility.MoveFile(biosPath, biosPath + ".custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return(false);
                }
            }

            if (File.Exists(biosPathipxe))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return(false);
                }
            }

            if (File.Exists(efi32Path))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                    Utility.MoveFile(efi32Path, efi32Path + ".custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return(false);
                }
            }

            if (File.Exists(efi32Pathipxe))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return(false);
                }
            }

            if (File.Exists(efi64Path))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                    Utility.MoveFile(efi64Path, efi64Path + ".custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return(false);
                }
            }

            if (File.Exists(efi64Pathipxe))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom");
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return(false);
                }
            }

            try
            {
                System.IO.File.WriteAllLines(biosPath, biosLines);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                {
                    Syscall.chmod(biosPath, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));
                }

                System.IO.File.WriteAllLines(efi32Path, efi32Lines);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                {
                    Syscall.chmod(efi32Path, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));
                }

                System.IO.File.WriteAllLines(efi64Path, efi64Lines);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                {
                    Syscall.chmod(efi64Path, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));
                }

                System.IO.File.WriteAllLines(biosPathipxe, biosLinesipxe);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                {
                    Syscall.chmod(biosPathipxe, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));
                }

                System.IO.File.WriteAllLines(efi32Pathipxe, efi32Linesipxe);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                {
                    Syscall.chmod(efi32Pathipxe, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));
                }

                System.IO.File.WriteAllLines(efi64Pathipxe, efi64Linesipxe);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                {
                    Syscall.chmod(efi64Pathipxe, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));
                }
            }

            catch (Exception ex)
            {
                Logger.Log(ex.ToString());
                Utility.Message = "Could Not Create PXE File";
                return(false);
            }
        }
        else
        {
            if (mode == "pxelinux" || mode == "syslinux_32_efi" || mode == "syslinux_64_efi")
            {
                path = settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac;
                string[] tmplines = { @"DEFAULT cruciblewds",
                                      @"LABEL cruciblewds",  @"KERNEL " + "kernels" + Path.DirectorySeparatorChar + unicast.HostKernel,
                                      @"APPEND initrd=" + "images" + Path.DirectorySeparatorChar + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments };
                lines = tmplines;
            }

            else if (mode.Contains("ipxe"))
            {
                path = settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe";

                string[] tmplines = { @"#!ipxe",
                                      @"kernel " + "http://" + settings.GetServerIP() + "/cruciblewds/data/boot/kernels/" + unicast.HostKernel + ".krn" + " initrd=" + unicast.HostBootImage + " root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp imgDirection=" + direction + " consoleblank=0" + " web=" + settings.GetSettings("Web Path") + " WDS_KEY=" + wds_key + " " + settings.GetSettings("Global Host Args") + " " + unicast.HostArguments,
                                      @"imgfetch " + "http://" + settings.GetServerIP() + "/cruciblewds/data/boot/images/" + unicast.HostBootImage,
                                      @"boot" };
                lines = tmplines;
            }
            else
            {
                Utility.Message = "PXE Mode Is Not Set Correctly";
                return(false);
            }


            if (File.Exists(path))
            {
                Host hostFunction = new Host();
                if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
                {
                    if (mode.Contains("ipxe"))
                    {
                        Utility.MoveFile(settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe", settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom");
                    }
                    else
                    {
                        Utility.MoveFile(settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac, settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".custom");
                    }
                }
                else
                {
                    Utility.Message = "The PXE File Already Exists";
                    return(false);
                }
            }

            try
            {
                System.IO.File.WriteAllLines(path, lines);
                if (Environment.OSVersion.ToString().Contains("Unix"))
                {
                    Syscall.chmod(path, (FilePermissions.S_IWUSR | FilePermissions.S_IRGRP | FilePermissions.S_IROTH | FilePermissions.S_IRUSR));
                }
            }
            catch (Exception ex)
            {
                Logger.Log(ex.ToString());
                Utility.Message = "Could Not Create PXE File";
                return(false);
            }
        }

        try
        {
            string storagePath = null;
            string xferMode    = settings.GetSettings("Image Transfer Mode");
            if (xferMode == "smb" || xferMode == "smb+http")
            {
                storagePath = "SMB Path";
            }
            else
            {
                if (direction == "pull")
                {
                    storagePath = "Nfs Upload Path";
                }
                else
                {
                    storagePath = "Nfs Deploy Path";
                }
            }
            string hostArgs = "imgName=" + unicast.ImageName + " storage=" + settings.GetSettings(storagePath) + " hostID=" + hostID +
                              " imgOS=" + unicast.ImageOS + " multicast=" + isMulticast + " hostScripts=" + unicast.HostScripts + " xferMode=" + xferMode + " serverIP=" + settings.GetSettings("Server IP") +
                              " hostName=" + unicast.HostName + " compAlg=" + settings.GetSettings("Compression Algorithm") + " compLevel=-" + settings.GetSettings("Compression Level");

            if (direction == "pull" && xferMode == "udp+http")
            {
                int portBase = task.GetPort();
                hostArgs = hostArgs + " portBase=" + portBase;
            }

            if (task.CreateTaskArgs(hostArgs, taskID))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        catch (Exception ex)
        {
            Logger.Log(ex.ToString());
            Utility.Message = "Could Not Create PXE File";
            return(false);
        }
    }
Ejemplo n.º 24
0
    protected void OkButton_Click(object sender, EventArgs e)
    {
        string direction = (string)(Session["direction"]);
        Session.Remove("direction");
        if (direction == "delete")
        {

            List<int> delList = new List<int>();
            delList.Add(Convert.ToInt32(host.ID));
            host.Delete(delList);
            if (Utility.Message.Contains("Successfully"))
                Response.Redirect("~/views/hosts/search.aspx");
            else
                Master.Msgbox(Utility.Message);
        }
        else if (direction == "push")
        {
            Unicast unicast = new Unicast();
            Image image = new Image();
            unicast = unicast.Read(Convert.ToInt32(host.ID), unicast);
            string imageID = image.GetImageID(unicast.ImageName);
            Session["imageID"] = imageID;
            if (image.Check_Checksum(imageID))
            {
                unicast.CreateUnicast(direction, Convert.ToInt32(host.ID));
                Master.Msgbox(Utility.Message);
            }
            else
            {
                lblIncorrectChecksum.Text = "This Image Has Not Been Confirmed And Cannot Be Deployed.  <br>Confirm It Now?";
                ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('incorrectChecksum'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });", true);

            }

        }
        else
        {
            Unicast unicast = new Unicast();
            unicast.CreateUnicast(direction, Convert.ToInt32(host.ID));
            Master.Msgbox(Utility.Message);
        }
    }
Ejemplo n.º 25
0
        static void More_1(IReWrite write)
        {
            Unicast one_for_all = write.Re_Write;

            one_for_all();
        }
Ejemplo n.º 26
0
 public string Create(Unicast unicast)
 {
     try
     {
         using (NpgsqlConnection conn = new NpgsqlConnection(Utility.DBString))
         {
             NpgsqlCommand cmd = new NpgsqlCommand("unicast_create", conn);
             cmd.CommandType = CommandType.StoredProcedure;
             cmd.Parameters.Add(new NpgsqlParameter("@taskName", unicast.HostName));
             conn.Open();
             string result = cmd.ExecuteScalar() as string;
             if (result != "0")
                 Utility.Message += "Successfully Started Task " + unicast.HostName + "<br>";
             else
                 Utility.Message += "This Host Is Already Part Of An Active Task <br>";
             return result;
         }
     }
     catch (Exception ex)
     {
         Utility.Message += "Could Not Create Unicast.  Check The Exception Log For More Info <br>";
         Logger.Log(ex.ToString());
         return "0";
     }
 }
Ejemplo n.º 27
0
    public void Rollback(Unicast unicast)
    {
        try
        {
            using (NpgsqlConnection conn = new NpgsqlConnection(Utility.DBString))
            {
                NpgsqlCommand cmd = new NpgsqlCommand("unicast_rollback", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new NpgsqlParameter("@taskName", unicast.HostName));
                conn.Open();
                cmd.ExecuteNonQuery();
            }
        }
        catch (Exception ex)
        {
            Logger.Log(ex.ToString());
        }

        Utility settings = new Utility();
        Task task = new Task();
        string pxeHostMac = task.MacToPXE(unicast.HostMac);

        Host hostFunction = new Host();

        if (hostFunction.IsCustomBootEnabled(Task.PXEMacToMac(pxeHostMac)))
        {
            string mode = settings.GetSettings("PXE Mode");
            string proxyDHCP = settings.GetSettings("Proxy Dhcp");
            if (proxyDHCP == "Yes")
            {
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe");
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "bios" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac);
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe");
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi32" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac);
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe");
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".custom", settings.GetSettings("Tftp Path") + "proxy" + Path.DirectorySeparatorChar + "efi64" + Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac);
                }
                catch { }
            }
            else
            {
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe.custom", settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".ipxe");
                }
                catch { }
                try
                {
                    Utility.MoveFile(settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac + ".custom", settings.GetSettings("Tftp Path") + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeHostMac);
                }
                catch { }
            }
        }
    }
Ejemplo n.º 28
0
 protected void btnUpload_Click(object sender, EventArgs e)
 {
     Unicast unicast = new Unicast();
     Session["direction"] = "pull";
     lblTitle.Text = "Upload The Selected Host?";
     gvConfirm.DataSource = unicast.Confirm(host.ID);
     gvConfirm.DataBind();
     ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('confirmbox'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });;", true);
 }
Ejemplo n.º 29
0
 void Publish(Guid id, IMessage msg)
 => Client.Publish(Unicast.Of(id), msg);
Ejemplo n.º 30
0
 public void Init(Address address, Unicast.Transport.TransactionSettings transactionSettings, Func<TransportMessage, bool> tryProcessMessage, Action<TransportMessage, Exception> endProcessMessage)
 {
 }
Ejemplo n.º 31
0
    public Unicast Read(int hostID, Unicast unicast)
    {
        try
        {
            using (NpgsqlConnection conn = new NpgsqlConnection(Utility.DBString))
            {
                NpgsqlDataReader rdr = null;
                NpgsqlCommand cmd = new NpgsqlCommand("unicast_read", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new NpgsqlParameter("@hostID", hostID));

                conn.Open();
                rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    unicast.ImageName = (string)rdr["_imagename"];
                    unicast.ImageOS = (string)rdr["_imageos"];
                    unicast.HostName = (string)rdr["_hostname"];
                    unicast.HostKernel = (string)rdr["_hostkernel"];
                    unicast.HostBootImage = (string)rdr["_hostbootimage"];
                    unicast.HostArguments = (string)rdr["_hostarguments"];
                    unicast.HostMac = (string)rdr["_hostmac"];
                    unicast.HostScripts = rdr["_hostscripts"].ToString();
                }
            }
        }
        catch (Exception ex)
        {
            Utility.Message = "Could Not Read Unicast Info.  Check The Exception Log For More Info";
            Logger.Log(ex.ToString());
        }
        if(unicast.ImageName == null)
            Utility.Message = "The Image No Longer Exists";
           return unicast;
    }
Ejemplo n.º 32
0
    protected void OkButton_Click(object sender, EventArgs e)
    {
        Unicast unicast = new Unicast();
        int hostID = Convert.ToInt32((string)(Session["hostID"]));
        Session.Remove("hostID");
        string direction = (string)(Session["direction"]);
        Session.Remove("direction");
        if(direction == "push")
        {
            Image image = new Image();
            unicast = unicast.Read(hostID,unicast);
            string imageID = image.GetImageID(unicast.ImageName);
            Session["imageID"] = imageID;
            if (image.Check_Checksum(imageID))
                unicast.CreateUnicast(direction, hostID);
            else
            {
                lblIncorrectChecksum.Text = "This Image Has Not Been Confirmed And Cannot Be Deployed.  <br>Confirm It Now?";
                ClientScript.RegisterStartupScript(this.GetType(), "modalscript", "$(function() {  var menuTop = document.getElementById('incorrectChecksum'),body = document.body;classie.toggle(menuTop, 'confirm-box-outer-open'); });", true);

            }

        }
        else
            unicast.CreateUnicast(direction, hostID);
        Master.Msgbox(Utility.Message);
    }
Ejemplo n.º 33
0
        static void Write_1(IChangeInfo write)
        {
            Unicast writeInfo = write.Change_Info;

            writeInfo();
        }
Ejemplo n.º 34
0
 public void TestUnicast()
 {
     TestSomething(Unicast.Of(Guid.NewGuid()));
 }