jueves, 25 de septiembre de 2008

Como obtener una IP a partir de un nombre de dominio en ASP.NET


El caso es el siguiente. Queremos conectarnos a las maquinas que tenemos detras de una conexion con IP dinamica y usamos el viejo truco de los dominios en DynDns.org o servicios semejantes.
Cada vez que queremos saber la IP entonces hacemos un ping a MiDominio.dyndns.org o lo que fuere y ya esta.
Y si lo hacemos un poquito mas pituco?
Agreguemos los siguientes imports:

Imports System.Net
Imports System.Net.NetworkInformation

En el metodo Page_Load de una pagina ASP.NET escribimos (en VB.NET):

Dim hostInfo As IPHostEntry = Dns.GetHostByName("MiDominio.dyndns.org")
Label1.Text = hostInfo.AddressList(0).ToString

y en el Label1 tendremos alegremente la IP que buscamos.

Atentos a que AddressList es en realidad un arreglo ya que eventualmente se podrian obtener varias IPs. para ese caso deberiamos usar un For Each para listarlas todas.

Otra forma sería usar el objeto Ping:

Dim Oping As Ping = New System.Net.NetworkInformation.Ping()
Dim reply As PingReply = Oping.Send("www.google.com")
Label2.Text = reply.Address.ToString

Pero en ocasiones podemos obtener excepciones al probar con sitios no pingueables. En esos casos mejor usar el objeto DNS.

lunes, 8 de septiembre de 2008

Escritorio Remoto

Podemos acceder a un equipo con Windows XP para administrarlo remotamente habilitando el "Escritorio Remoto".
Debemos tener en cuenta que en esta modalidad si iniciamos sesión en forma remota se cierra la sesión local. Si no queremos esto se deberá usar la opción de "Asistencia remota".

Para activar el "Escritorio Remoto" hacemos clic derecho en Mi PC y vamos a la pestaña remoto. Allí tildamos la opción "Permitir que los usuarios se conecten de manera remota a este equipo" como vemos en la sgte. figura:



Para poder conectarnos al "Escritorio Remoto" debemos pertenecer a uno de los sgtes grupos locales "Administradores" o "Usuarios de Escritorio Remoto".

Si en la ventana de la figura hacemos clic en el boton "Seleccionar usuarios remotos" podemos agregar los usuarios que podran conectarse y serán agregados al grupo "Usuarios de Escritorio Remoto".

Al activar "Escritorio Remoto" se agregará una excepción en el "firewall de Windows" para abrir el puerto 3389. Y si nos conectamos al equipo a travez de un router o firewall este puerto debe estar abierto para poder conectarnos.

Habilitar Escritorio Remoto por GPO

Podemos habilitar el Escritorio Remoto en todos los equipos de un dominio de Active Directory simplemente usando GPOs.
Si el Escritorio remoto lo vamos a habilitar por equipos es conveniente que estos esten en una o mas Unidades Organizativas (OU).
Abrimos el GPMC (Inicio --> Ejecutar --> gpmc.msc), hacemos clic derecho en la OU donde estan nuestros equipos y luego clic en "Crear y vincular una GPO aqui". Escribimos el nombre de la poitica y luego hacemos clic derecho sobre ella y le damos a Editar.
Ahora viene lo que hay que saber.. :)
Para habilitar el escritorio remoto en los equipos vamos a Configuración de equipos -> PLantillas administrativas -> Componentes de Windows -> Terminal Services y en la opción "Permitir que los usuarios se conecten de forma remota utilizando Servicios de Terminal Server" hacemos doble clic y tildamos la opción Habilitado.
Con esto al iniciar los equipos de la OU se habilitará el Escritorio Remoto (nota: un administrador local no podra deshabilitar esta opción).
Pero esto no es todo ya que si el Firewall de Windows está habilitado todavia no podremos utilizar el mismo.
Para habilitar el "Escritorio Remoto" en el Firewall de Windows vamos a Configuración del equipo -> Plantillas administrativas -> Red -> Conexiones de red -> Firewall de Windows y habilitamos la opción "permitir excepción de Escritorio Remoto", alli tendremos que especificar desde que red queremos que se pueda acceder al "Escritorio Remoto" si ponemos un "*" se podrá acceder desde cualquier red.
Para más información se puede consultar en los sguientes links:

http://technet2.microsoft.com/windowsserver/es/library/05734a69-27f5-4b18-8b96-bbd3296a08b23082.mspx

http://www.solont.com/foros/viewthread.asp?forum=AMB_AP702714867&id=1744


http://www.newsgrupos.com/microsoft-public-es-windows-server-directorio_activo/332334-escritorio-remoto.html

domingo, 10 de agosto de 2008

Inicio de sesion de Windows XP en dominio de NT4


La gente de CAP Services nos acerca esta solución a un problema interesante que han tenido. Resulta que han montado un dominio con un NT4 Server y si bien pueden ingresar clientes con Windows XP al dominio luego estos no podian iniciar sesión.
La solución la encontraron en el sgte articulo de Microsoft:

http://support.microsoft.com/kb/318266/es

Básicamente el problema es que Windows XP intentar firmar o sellar un canal seguro de forma predeterminada pero Windows NT 4 no admite esta operación de forma predeterminada.

Una solución posible es pedirle al XP que no intente sellar el canal. Para esto debemos hacer lo sgte:

1- Abrir Herramientas administrativas (Panel de Control)
2- Doble clic en Directiva de Seguridad local
3- En Directivas locales\Opciones de seguridad hacer doble clic en Miembro de dominio: descifrar o firmar digitalmente datos de un canal seguro (siempre) y deshabilitarla

Con esto deberiamos poder iniciar sesion en el dominio (y habriamos bajado el nivel de seguridad :) )

Otra opción sería seguir las instrucciones de el sgte link para habilitar canales seguros en el controlador de dominio NT 4:

http://support.microsoft.com/kb/183859/

Aquí necesitará instalar el ultimo service pack disponible y editar el registro... si se anima pruebe y nos cuenta.. :)

martes, 8 de julio de 2008

Contraseña de acceso a una aplicacion en VB.NET


Se pueden idear varias estrategias para proteger el acceso a una aplicacion por contraseña. Por ejemplo dehabilitar todos los controles (si estan dentro de paneles será mas fácil ;) ) y habilitarlos al ingresar la contraseña correcta.
La que vamos a mostrar aqui consiste en validar mediante contraseña desde un formulario de acceso y si la validación es correcta invocar al formulario principal. Encararlo de esta manera nos permitirá mostrar varias cositas interesantes en el desarrollo de aplicaciones WinForms.
Lo primero que vamos a hacer es abrir un nuevo proyecto (Archivo --> Nuevo proyecto), en nuestro caso de las plantillas de proyectos de Visual Basic elegiremos Aplicacion Winforms y de nombre le pondremos "ClavedeAcceso".
Tendremos entonces un proyecto con un formulario llamado Form1, haremos de este el formulario principal de la aplicación. Agregamos ahora un nuevo formulario que será donde pidamos la clave de acceso y si es correcta llamaremos al Form1. Hacemos clic derecho sobre el nombre del proyecto --> Agregar --> Windows Forms y seleccionamos Windows Forms y de nombre le ponemos FormAcceso y hacemos clic en Agregar.
Este será nuestro formulario inicial. Si no guardamos el proyecto hasta ahora es un buen momento :)
Configuraremos FormAcceso tal como lo vemos en la figura:"Tiramos" sobre el Form un label, un textBox de nombre txtpass, dos botones de nombres btnAcpetarPass y btnCancelarPass y completamos las propiedades text de los objetos como vemos en la figura.
Este será nuestro formulario inicial y si el usuario ingresa la clave correcta lo redirigiremos al formulario principal y sino saldremos de la aplicación.
Para esto vamos a hacer clic derecho en el nombre del proyecto y en el menú contextual cliqueamos Propiedades.
Destildamos el checkbox "Habilitar marco de trabajo de la aplicación" y en el desplegable "Objeto inicial" seleccionamos "Sub Main".
Es desde "Sub Main" donde en realidad vamos a invocar a los formularios.
Vamos a agregar un archivo de Clases para agregar el codigo del "Sub Main". Hacemos clic derecho en el explorador de proyectos vamos a Agregar y elegimos Clase.
Dejamos el nombre Class1.vb por ahora. En el archivo de la clase escribimos el siguiente código:

Public Class Class1
Public Shared Sub Main()
Application.EnableVisualStyles()

Dim fAcceso As New FormAcceso
If fAcceso.ShowDialog() = System.Windows.Forms.DialogResult.OK Then

fAcceso.Close()
Application.Run(New Form1)

End If End Sub
End Class

SUB Main será el punto de entrada de nuestra aplicación y creará un formulario del tipo FormAcceso donde al usuario se le pedirá la contraseña de acceso. Luego preguntamos por el resultado de fAcceso.ShowDialog() y si este es System.Windows.Forms.DialogResult.OK entonces cerramos el formulario de acceso y llamamos al principal.
fAcceso.Close()
Application.Run(New Form1)
Ahora tenemos que programar FormAcceso para que devuelva System.Windows.Forms.DialogResult.OK si la contraseña es correcta. Veamos como.
En el evento clic del boton Aceptar escribimos el siguiente codigo:
Private Sub btnAceptarPass_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptarPass.Click
If txtpass.Text = "Clave" Then
Me.DialogResult = Windows.Forms.DialogResult.OK
Else
Me.DialogResult = Windows.Forms.DialogResult.No
End If
Hide()
End Sub

Aqui si la clave es correcta devolvemos en DialogResult el valor OK:
Me.DialogResult = Windows.Forms.DialogResult.OK

Para completar en el boton Cancelar (y por si el usuario ejecutó la aplicacion solo para ver que era :) ) devolvemos en DialgoResult Cancel.

Private Sub btnCancelarPass_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelarPass.Click
Me.DialogResult = Windows.Forms.DialogResult.Cancel
Hide()
End Sub

Además vamos a darle al usuario de que cuando teclee Enter ya se valide la contraseña. Para esto programamos el evento KeyPress del textbox :
Private Sub txtpass_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtpass.KeyPress
If (e.KeyChar = Convert.ToChar(Keys.Return)) Or (e.KeyChar = Convert.ToChar(Keys.Enter)) Then
btnAceptarPass_Click(Nothing, Nothing)
End If
End Sub
El evento KeyPress se ejecuta cada vez que el usuario aprieta una tecla y en este caso la comparamos con Enter y Return. La tecla orimida la sabemos con e.KeyChar y con Convert.ToChar(Keys.Enter) la comparamos con Enter . Keys es una enumeración que contiene todas las teclas que puede oprimir el usuario. Consultenla... Es interesante.. :)
En este caso la clave se encuentra embebida en el código. En otro articulo veremos alguna otra alternativa para guardarla.

lunes, 9 de junio de 2008

La gente de Dattatec nos pasa info acerca de unas jornadas que pintan interesante.... hay gente a la que vale la pena escuchar por ahi...




Dattatec y Microsoft presentan las Jornadas “Construyendo Aplicaciones Web 2.0 en forma rápida”


Pensando siempre en el desarrollo de sus clientes, Dattatec.com busca promover el aprendizaje y perfeccionamiento en el desarrollo de aplicaciones Web 2.0. Las jornadas se llevarán a cabo entre el 10 y el 26 de junio en las ciudades de Buenos Aires, Córdoba, Mendoza y Rosario.


Dattatec, la principal compañía de hosting del país y Microsoft organizan las jornadas “Construyendo Aplicaciones Web 2.0 en forma rápida”, con acceso libre y gratuito, previa inscripción (hay cupos limitados).


El objetivo de estas jornadas es el de impulsar el aprendizaje y perfeccionamiento en el  manejo de aplicaciones Web 2.0 de manera rápida y aprovechando al máximo todo su potencial, lo que contribuirá a la maximización del recurso más valioso: el “tiempo”.


Motivados por la constante demanda por parte de sus clientes, las presentaciones se realizarán con la modalidad Roadshow, con el siguiente cronograma: 10 de junio en Rosario, 17 de junio en Buenos Aires, 24 de junio en Córdoba finalizando el 26 de junio en la ciudad de Mendoza.


Con la premisa de mantener al público actualizado, el evento se focalizará en mostrar la utilización de herramientas gratuitas que permitan minimizar los tiempos de desarrollo a la hora de implementar una aplicación o sitio web 2.0 Es además una gran ocasión para entrar en contacto con las tecnologías web que están cambiando el concepto de Internet en sí mismo.


Los objetivos de la jornada son:



  • Generar un entorno de enseñanza y perfeccionamiento para desarrollar impactantes aplicaciones Web 2.0 desde cero, en forma simple, rápida y productiva, con tecnología al alcance de todos y herramientas gratuitas. PHP / ASP / .NET / SILVERLIGHT / AJAX / RIAs.

  • Mantener la actualización constante en lo que respecta a las últimas tecnologías web.


 


El evento está dirigido a webmasters, desarrolladores, profesionales y hobbistas que ya desarrollan o desean comenzar a desarrollar sus propias aplicaciones y/o sitios web 2.0. El nivel de la jornada es inicial / intermedio y los conocimientos previos requeridos son mínimos, ya que se observará el desarrollo de una aplicación desde el comienzo.


Para informes e inscripción visitar:

http://www.dattatec.com/evento-construyendo-aplicaciones-web-2-0


 

martes, 20 de mayo de 2008

Y dale con la hora...

Bueno.. seguimos con el tema de la hora... espero que el próximo post sea de otro tema porque ya me estoy volviendo monotematico... :)
Hete aqui algunos links interesantes a tener en cuenta sobre este tema.
En la página de Fernando Reyes encontramos encontramos una pagina con tips acerca de sincronizacion de servidores Windows 2000 y 2003 Server y los clientes de dominio... Ah.. aqui esta el hipervinculo.
Entre ellos rescato una lista de servidores horarios porporcionada por Microsoft y por si no tenemos la hora a mano consulte a la gente de World Time Server donde podra ver la hora en las principales horas del mundo.... ya voy corriendo a ver que hora es Finlandia... :)

jueves, 15 de mayo de 2008

Servidores NTP


El protocolo NTP (Network Time Protocol) es utilizado para sincronizar la hora de los sistemas informaticos. El tema es mas o menos así, existe una serie de dispositivos de alta precisión (relojes atomicos y demas yerbas) que marcan la hora (generalmente no atrasan mucho :) estos dispositivos se denominan de stratum 0 y conectados a estos estan los servidores denominados de stratum 1 que son los estan conectados a la red y a partir de ellos uno se puede conectar para sincronizar sus equipos. En realidad se recomienda no conectarse a estos servidores sino hacerlo con los de stratum 2 (los que cuelgan de stratum 1) en adelante ya que es mas preciso conectarse a un server de stratum 2 cercano que a uno de stratum 1 lejano.
En windows 2000 server o windows 2003 server uno configura el servidor con el que sincroniza la hora con el siguiente comando (ejecutado claro esta desde una consola de comando :)

net time /setsntp:nombre.o.ip.del.servidor

El tema es encontrar el servidor ;) Pero a no preocuparse, don Joan Puiggali ha recopilado en su blog una lista de servidores NTP publicos de stratum 1 y 2.

Con ganas de ver algo mas? peguese una vuelta por acá.
Enjoy :)




miércoles, 7 de mayo de 2008

Metadacleanapeaste?

Bueno.. ya sacaste del dominio ese viejo servidor y lo reemplazaste por el flamante y nuevo maquinon, instalaste el Sistema Operativo (Windows 2003 server por caso) y le pusiste al equipo el mismo nombre que el viejo.. Claro.. si lo estas reemplazando...
Cuando te dispones a promover el servidor te chocas contra un cartelito que te dice que no se puede crear la cuenta de equipo porque ya existe y sonaste...
Que pasooooo...
Bueno... a veces cuando uno degrada un servidor que no es el ultimo de un dominio ya sea porque lo vamos a reemplazar o porque por ejemplo dejó de replicarse a veces queda algo de información acerca del mismo en la metadata del Active Directory. Información que debemos eliminar para poder promover nuevamente nuestro servidor.
Para esto metadatacleanupeamos (que verbo eh! viene de metadata cleanup por las dudas.. ;) y podemos seguir los pasos que se describen en el siguiente articulo de MS :

Cómo quitar datos en Active Directory después de una degradación sin éxito de un controlador de dominio

Si.. ya se que ud creia que lo habia degradado con exito pero bue... a veces pasa.. :)

martes, 25 de marzo de 2008

Dos perlas al precio de 1

Hacemos el famoso 2 por uno:
1) Basile: “El partido con Egipto es muy importante”
Andaaaaaaaaa...... :P

2) "Hay 10 clases de personas... las que entienden binario y las que no"

No se cual de las 2 es mas graciosa... ud que opina? :)

jueves, 21 de febrero de 2008

Cambio de hora (tarde pero seguro)

Si si... ya se que el cambio de hora en Argentina fue hace ya casi 2 meses pero bue... hasta ahora no tuve que ocuparme demasiado seriamnete del asunto... :)
La cuestion es que hasta ahora estabamos en el huso horario GMT -3 que Microsoft denominó Buenos Aires - Gerogetown (rapido... donde queda Georgetown?) en sus TimeZones que no incluye horario de verano.
Ahora tenemos que crear una nueva TimeZone denominada GMT -3 Buenos Aires y cambiar la anterior por GMT -3 Georgetown solamente.
Existe un codigo que la gente de Microsoft argentina proporciona para que podamos agregar esta información en el registro de Windows. Pueden ver la info para hacerlo ud. mismo aquí.
Esto funciona bien para Windows 2003 Server, Windows 2000 Server y Windows XP, los demas SO todavia no los probé.
Si le dá fiaca copiarse el codigo y generar el archivo .reg descarguelo de acá, gracias FLR-si por dejarme hostear archivos con uds... ;)
Una vez descargado el archivo .zip se descomprime y se ejecuta el archivo.reg que contiene, esto añade la información al registro y verá que al hacer doble clic en el relojito de de la Barra de Tareas y en la ficha zona horaria elegir GMT -3 Buenos Aires, asegurandose que la opción cambiar la hora automáticamente esté activada.
Ah... si ud en cambio tiene que hacer este cambio en unas 100-150 máquinas deberá usar politicas de grupo, tambien explicado en la página de Microsoft Argentina, o quizas en mi próximo post (si llego antes del 16 de marzo...)