Sábado 2 de abril del 2011

El viernes ocurrió un pequeño problema en el trabajo y es que cambiaron el cliente de VPN y la gente no se podía conectar, esto era por que tenían habilitado el proxy y al tratar de pasar la conexión por dentro del proxy sin estar conectados a la red corporativa los echaba para atrás. Si el usuario deshabilitaba el proxy en opciones de Internet conectaba sin problemas.

Aunque la solución fue permitir esta conexión en el proxy se me ocurrió una idea para deshabilitar el proxy temporalmente mientras se está ejecutando una aplicación, volviendolo a conectar en el momento que el programa se cierre. Viene bien si el usuario necesitara conectarse a una VPN externa a la de nuestra empresa desde una red no corporativa, lo cual no es nada descabellado, imaginemos un trabajador que conecta a través de una 3G ya que está en obras y debe enviar informes a una intranet de un cliente, por ejemplo. El programa tendrá deshabilitado el proxy mientras el programa encargado de la conexión VPN (Por ejemplo Cisco VPN Client) y lo volverá a habilitar una vez desconectado.

El programa es muy sencillo pero efectivo para estos casos ya que lo deshabilita de forma transparente para el usuario que no tiene por que notar nada raro.

El programa se compone de dos partes, antiProxy.exe y antiProxy.txt.

En el fichero antiProxy.txt debemos ubicar la ruta del ejecutable que se debe ejecutar sin usar la conexión del proxy.

A continuación os pongo la descarga del binario y el código fuente en VB.Net comentado.

Descarga el binario: antiProxy.zip

Sigue leyendo para ver el código fuente.

Código fuente

Imports System
Imports System.IO
Imports System.Collections
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim autoConfigURL As String 'Guardará la URL de scripts automaticas
        Dim proxyEnable As Boolean 'Guardará si está habilitado el proxy (la opcion de abajo en la ventana conexiones)
        Dim urlProceso As String 'Proceso a ejecutar sin el proxy
        'Lee el archivo de configuracion el cual contiene el path al ejecutable a lanzar
        Try
            Dim objReader As New StreamReader(".\antiProxy.txt")
            urlProceso = objReader.ReadLine
            If IO.File.Exists("""" & urlProceso & """") Or urlProceso.Replace(" ", "") = "" Then 'Si el ejecutable no existe
                MsgBox("El ejecutable definido en antiProxy.txt no existe")
                End
            End If
        Catch ex As Exception
            MsgBox("No existe el archivo de configuración antiProxy.txt") ' Si el fichero de configuracion no existe
            End
        End Try
        'Windows Script Host
        Dim MiObjeto As Object
        MiObjeto = CreateObject("Wscript.Shell")
        'Comprueba si existe URL de scripts automaticos y si es así la deshabilita
        Try
            autoConfigURL = MiObjeto.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL")
            MiObjeto.RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL")
        Catch ex As Exception
            autoConfigURL = "0"
        End Try
        'Comprueba si el proxy está habilitado y si es así lo deshabilita
        Try
            If MiObjeto.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable") = 1 Then
                proxyEnable = True
                MiObjeto.RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable")
            Else
                proxyEnable = False
            End If
        Catch ex As Exception
            proxyEnable = False
        End Try
        'Lanza el proceso y se mantiene a la espera
        Dim proceso As New Process
        proceso.StartInfo.FileName = """" & urlProceso.Trim & """"
        proceso.Start()
        proceso.WaitForExit()
        'Restaura los valores del proxy
        If autoConfigURL <> "0" Then
            MiObjeto.RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL", autoConfigURL, "REG_SZ")
        End If
        If proxyEnable = True Then
            MiObjeto.RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", 1, "REG_DWORD")
        End If
        End
    End Sub
End Class
  • Facebook
  • Meneame
  • BarraPunto
  • PDF

Acerca de Miguel Díaz

Informático, enamorado de la programación, diseño Web y el deporte.
Categorías: Internet, Proyectos, Utilidades, Windows. Etiquetas: , , , , , , .

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Blog de Miguel Díaz
Diseño Web por Miguel Díaz.