Script SQL creación BBDD en MySQL:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@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 SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_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);
}
}
}