Trabajo Hosts

Script SQL creación BBDD en MySQL:

SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `hosts` ;
CREATE SCHEMA IF NOT EXISTS `hosts` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `hosts` ;

-- -----------------------------------------------------
-- Table `hosts`.`tiposweb`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `hosts`.`tiposweb` ;

CREATE TABLE IF NOT EXISTS `hosts`.`tiposweb` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `tipo` VARCHAR(45) NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `hosts`.`dominios`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `hosts`.`dominios` ;

CREATE TABLE IF NOT EXISTS `hosts`.`dominios` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `dominio` VARCHAR(100) NULL,
  `FechaRenova` DATE NULL,
  `directorio` VARCHAR(250) NULL,
  `serverbbdd` VARCHAR(45) NULL,
  `userbbdd` VARCHAR(45) NULL,
  `passbbdd` VARCHAR(45) NULL,
  `serverftp` VARCHAR(45) NULL,
  `userftp` VARCHAR(45) NULL,
  `passftp` VARCHAR(45) NULL,
  `urladmin` VARCHAR(45) NULL,
  `useradmin` VARCHAR(45) NULL,
  `passadmin` VARCHAR(45) NULL,
  `tiposweb_id` INT NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `dominio_UNIQUE` (`dominio` ASC),
  INDEX `fk_dominios_tiposweb_idx` (`tiposweb_id` ASC),
  CONSTRAINT `fk_dominios_tiposweb`
    FOREIGN KEY (`tiposweb_id`)
    REFERENCES `hosts`.`tiposweb` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;

Solapa fichero HOSTS

namespace hosts
{
    public partial class frmHosts : Form
    {
        StreamReader fichHostsLectura;
        StreamWriter fichHostsEscritura;
        string linea;

        public frmHosts()
        {
            InitializeComponent();
        }

        private void frmHosts_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'hostsDataSet.tiposweb' Puede moverla o quitarla según sea necesario.
            this.tiposwebTableAdapter.Fill(this.hostsDataSet.tiposweb);
            // TODO: esta línea de código carga datos en la tabla 'hostsDataSet.dominios' Puede moverla o quitarla según sea necesario.
            this.dominiosTableAdapter.Fill(this.hostsDataSet.dominios);
            // Leemos el fichero Hosts
            try {
                fichHostsLectura = File.OpenText(@"C:\Windows\System32\drivers\etc\hosts");
                int i=0;

                do
                {
                    linea = fichHostsLectura.ReadLine();
                    i += 1;
                    if (i == 1) { 
                      // Comprobamos el tipo de archivo host
                      switch (linea.ToLower()) {
                          case "# localhost":
                              this.rbtnLocalhost.Checked = true;
                              break;
                          case "# redlocal":
                              this.rbtnRedLocal.Checked = true;
                              break;
                          case "# internet":
                              this.rbtnInternet.Checked = true;
                              break;
                          default: break;
                      }
                    }

                    if (linea != null)
                    {
                        txtHosts.Text = txtHosts.Text + linea +"\n";
                    }
                } while (linea != null);
                fichHostsLectura.Close();
            }
            catch (Exception exp) {
                txtHosts.Text ="Error al abrir el fichero hosts: "+ exp.Message;
            }

        }

        private void dominiosBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.dominiosBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.hostsDataSet);

        }

        private void btnGuardarHosts_Click(object sender, EventArgs e)
        {

        }

        private void btnGuardarFicheroHosts_Click(object sender, EventArgs e)
        {
            try
            {
                fichHostsEscritura = File.CreateText(@"C:\Windows\System32\drivers\etc\hosts");
                fichHostsEscritura.Write(txtHosts.Text);
                fichHostsEscritura.Close();
            }
            catch (Exception exp)
            {
                txtHosts.Text = "Error al guardar el fichero hosts: " + exp.Message;
            }

        }

    }
}

Solapa de parámetros

Utilizar un objeto a partir de una clase serializada para almacenar los parámetros en un fichero.

Creación de una clase en un archivo nuevo.

Código de la clase Hosts.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace hosts
{
    [Serializable]

    public class ClaseHosts
    {
        String fichero_hosts;
        String ip_bbdd;
        String user_bbdd;
        String pass_bbdd;
        String servidor_lan;
        String servidor_internet;

        public void SetFicheroHosts(String dir)
        {
            fichero_hosts = dir;
        }

        public void SetIpBBDD (String ip)
        {
            // comprobar que es una IP válida
            ip_bbdd = ip;
        }
        public void SetUserBBDD(String user)
        {
            // comprobar que es un user válido
            user_bbdd = user;
        }
        public void SetPassBBDD(String pass)
        {
            // comprobar que es una password válido
            pass_bbdd = pass;
        }

        public void SetServidorLAN(String lan)
        {
            // comprobar que es una ip válida para una LAN
            servidor_lan = lan;
        }

        public void SetServidorInternet(String internet)
        {
            // comprobar que es una ip válida para Internet
            servidor_internet = internet;
        }

        public String GetFicheroHosts()
        {
            return fichero_hosts;
        }

        public String GetIpBBDD() {
            return ip_bbdd;
        }

        public String GetUserBBDD()
        {
            return user_bbdd;
        }

        public String GetPassBBDD()
        {
            return pass_bbdd;
        }

        public String GetServidorLAN()
        {
            return servidor_lan;
        }

        public String GetServidorInternet()
        {
            return servidor_internet;
        }

        public  void Guardar(string nombre, ClaseHosts objeto)
        {
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new FileStream(nombre, FileMode.Create,
                FileAccess.Write, FileShare.None);
            formatter.Serialize(stream, objeto);
            stream.Close();
        }
        public  ClaseHosts Cargar(string nombre)
        {
            ClaseHosts objeto;
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new FileStream(nombre, FileMode.Open,
                FileAccess.Read, FileShare.Read);
            objeto = (ClaseHosts)formatter.Deserialize(stream);
            stream.Close();
            return objeto;
        }

    }
}

Luego cambiaría el código de inicialización de la aplicación.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
// Para menejo de ficheros
using System.IO;

namespace hosts
{
    public partial class frmHosts : Form
    {
        StreamReader fichHostsLectura;
        StreamWriter fichHostsEscritura;
        string linea;

        public frmHosts()
        {
            InitializeComponent();
        }

        private void frmHosts_Load(object sender, EventArgs e)
        {
            ClaseHosts ObjHosts = new ClaseHosts();
            ObjHosts = ObjHosts.Cargar("parametros.dat");
            txtFicheroHosts.Text = ObjHosts.GetFicheroHosts();
            txtIpBBDD.Text = ObjHosts.GetIpBBDD();
            txtUserBBDD.Text = ObjHosts.GetUserBBDD();
            txtPassBBDD.Text = ObjHosts.GetPassBBDD();
            txtServidorLAN.Text = ObjHosts.GetServidorLAN();
            txtServidorInternet.Text = ObjHosts.GetServidorInternet();

            // Leemos el fichero Hosts
            try {
                fichHostsLectura = File.OpenText(ObjHosts.GetFicheroHosts());
                int i=0;

                do
                {
                    linea = fichHostsLectura.ReadLine();
                    i += 1;
                    if (i == 1) { 
                      // Comprobamos el tipo de archivo host
                      switch (linea.ToLower()) {
                          case "# localhost":
                              this.rbtnLocalhost.Checked = true;
                              break;
                          case "# redlocal":
                              this.rbtnRedLocal.Checked = true;
                              break;
                          case "# internet":
                              this.rbtnInternet.Checked = true;
                              break;
                          default: break;
                      }
                    }

                    if (linea != null)
                    {
                        txtHosts.Text = txtHosts.Text + linea +"\n";
                    }
                } while (linea != null);
                fichHostsLectura.Close();
            }
            catch (Exception exp) {
                txtHosts.Text ="Error al abrir el fichero hosts: "+ exp.Message;
            }

        }

        private void btnGuardarHosts_Click(object sender, EventArgs e)
        {

        }

        private void btnGuardarFicheroHosts_Click(object sender, EventArgs e)
        {
            try
            {
                fichHostsEscritura = File.CreateText(ObjHosts.GetFicheroHosts());
                fichHostsEscritura.Write(txtHosts.Text);
                fichHostsEscritura.Close();
            }
            catch (Exception exp)
            {
                txtHosts.Text = "Error al guardar el fichero hosts: " + exp.Message;
            }

        }

        private void btnConectar_Click(object sender, EventArgs e)
        {
            tabHosts.SelectedIndex = tabHosts.TabPages.IndexOf(tabParametros);

        }

        private void btnGuardarParametros_Click(object sender, EventArgs e)
        {
            // Serializamos el objeto ClaseHosts
            ClaseHosts ObjHosts = new ClaseHosts();
            ObjHosts.SetFicheroHosts(txtFicheroHosts.Text);
            ObjHosts.SetIpBBDD(txtIpBBDD.Text);
            ObjHosts.SetUserBBDD(txtUserBBDD.Text);
            ObjHosts.SetPassBBDD(txtPassBBDD.Text);
            ObjHosts.SetServidorLAN(txtServidorLAN.Text);
            ObjHosts.SetServidorInternet(txtServidorInternet.Text);

            ObjHosts.Guardar("parametros.dat", ObjHosts);     
        }
    }
}