Instalación de SVN en Windows con ISA Server 2006

15 de Octubre de 2009

Instalación de SVN en Windows con ISA Server 2006
Recientemente mis necesidades de desarrollo fuera del trabajo han crecido, e iba por la vida con el pen-drive, la copia versionando… un lío.
Por otra parte estaba un poco cansado de Source Safe con todos los riesgos conocidos…
Descubrí Subversion, con tortoise como cliente, así que he decidido utilizarlo como el repositorio central que gestione todo mi código, además del resto de documentos, al ser un repositorio basado en ficheros.
Uno de los problemas que me encuentro es que mis comunicaciones las gestiona un ISA Server 2006 como proxy, y que no quiero tocar los Apaches que tengo en explotación. Por otra parte, tengo mucho espacio en el disco del ISA Server, así que quiero que sea el propio ISA Server el contenedor de los repositorios.
También, quiero que las comunicaciones estén seguras, así que he decidido hacerlo con túneles SSH.
Con este escenario y la intención de instalar únicamente lo estrictamente necesario, vamos manos a la obra.
Ingredientes
• Subversion SVN Server, descargando la última versión en la web de tigris (Yo me he bajado la versión de CollabNet)
• TortoiseSVN, para mi flamante Windows 7
• OpenSSH for Windows, que tengo que decir que de todos los que he probado es el más claro y el que menos guerra me ha dado por la facilidad de uso, descargado de sshwindows.sourceforge.net
Receta:
• Con un usuario administrador en ISA Server, vamos a instalar OpenSSH for Windows (http://sshwindows.sourceforge.net/download/)
• Todo por defecto
• Cuando terminamos de instalar, nos recuerda que hay que editar el fichero passwd. Afortunadamente, este es de los programas que el readme es clarito clarito. En cualquier caso aquí van mis pasos.
• Creo un usuario para acceder al subversión, que no será administrador del ISA Server, y que voy a llamar “svnUser”. Claro, una cosa que voy a necesitar es que esté su perfil creado en la máquina con ISA Server, así que le hago administrador local y lo pongo en el grupo Remote Desktop Users, y accedo con el usuario para crearle el perfil
• Ahora avanzo con el usuario SVN, ya que estamos dentro con el.
• Voy al directorio de instalación de SSH, (c:\program files\OpenSSH\bin) en modo consola.
• Comandos, (explicados muy bien en el quick start guide
 mkgroup –l >> ..\etc\group
 mkpasswd –l –u svn >> ..\etc\passwd
 net start OpenSSHd
• Verificamos que podemos conectar con el servidor SSH con “ssh localhost”
En este momento dirá que el fingerprint no es válido y preguntará si deseamos continuar a lo que contestaremos “yes”. Una vez pasado, aparecerá un disclaimer, y pedirá un password, que le pondremos el del usuario que acabamos de crear. Si todo esto ha ocurrido, todo va bien.
• Ahora vamos al directorio del OpenSSH\etc y buscamos el fichero banner.txt. Lo abrimos con el bloc de notas, lo borramos todo y salimos guardando, dejando el fichero completamente vacío
• Instalamos Subversion Server.
(http://www.collab.net/servlets/OCNDirector?id=CSVN1.6.5WINS)
• Cuando pregunta los componentes, quitamos el APACHE MOD, y lo demás que venga (a la fecha de este documento, nada más), dejando solamente SVNSERVE
• Puerto por defecto y la ruta que queramos para el repositorio. Es importante saber que esta ruta nos hará falta luego para conectar con Tortoise. Yo la he acortado por comodidad al escribir y he puesto “c:\svnFolder”
• Marcar Install svnserve to run as Windows Service
• El resto por defecto, e instalar.
• Automatic updates, lo he desmarcado (cosa que hago en todos los servicios pues prefiero actualizar cuando yo quiero)
• Una vez terminado de instalar, cerramos si tenemos abierta una consola DOS, y abrimos una nueva (para coger las nuevas variables de entorno).
• Paramos y reiniciamos el servicio OpenSSHd con
 Net stop opensshd
 Net start opensshd
• Probamos que funciona Subversion, con
 ssh localhost svnserve –t
• La línea anterior devolverá algo parecido a
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops
• Si tenemos eso, todo va bien. Pulsamos un par de intros o control +c para salir.
• Lo que hemos conseguido es conectar al repositorio sobre ssh. Ahora lo que queda es la publicación.
• Terminando con el usuario. Hasta este momento, el usuario SVN que hemos creado, es administrador, por lo que vamos a quitarlo de los grupos “Remote Desktop Users” y “Administrators”, dejándolo solamente en el grupo Users, por seguirdad.
• Terminando con OpenSSHD: El servicio, por omisión, está en manual, así que vamos a Servicios y lo ponemos en automático.
• Terminando con Windows: Será muy importante ir a la carpeta c:\svn_folder que hemos creado y dar permisos de control total al usuario para esa y todas las que se creen.
• ISA SERVER. Configurando.
• La configuración del ISA Server es realmente sencilla, pues vamos a crear una regla para poder acceder desde fuera al SSH, que está en el puerto TCP/22 incoming.
• Nueva regla de publicación de protocolo de servidor no web
• Nombre “SSH – Server”
• Dirección IP del servidor. La dirección LAN (interna) del ISA Server
• Protocolo: Nuevo
• Nombre del protocolo – SSH Server.
Nota del autor (no estamos dando una clase magistral de ISA Server, sino unos pasos para llegar al objetivo del documento, dado que el protocolo SSH ya está definido en ISA Server)
• Información sobre la conexión principal. Nueva
 Tipo de protocolo TCP
 Dirección Entrada
 Intervalo de puertos 22 a 22
 Conexiones secundarias NO
• Direcciones de escucha:
 Aquí pondremos las redes a las que atender: Para escuchar a Internet, en mi caso, solamente Externa.
• Terminamos y Aplicamos.
• Instalamos Tortoise SVN en el cliente que va a acceder al repositorio (http://tortoisesvn.net/downloads)
• Descargamos puTTY,
(http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe)
que es el cliente ssh, y lo ponemos en el directorio bin de la instalación de tortoise
(c:\archivos de programa\TortoiseSVN\bin)
• Ejecutamos putty.exe y creamos un destino:
hostname: el nombre o la dirección de nuestro servidor en Internet
port 22
Saved Sessions, escribimos un nombre descriptivo, que será el que utilizaremos con tortoise: ejemplo svn.tecnoprevisa.com
Finalmente le damos a Save, y volvemos a probar dando a Open.
• Al igual que antes, ahora nos vuelve a decir que no coincide el fingerprint, y pulsamos SI
Degustación.
Creamos un repositorio nuevo, en el directorio SVN que habíamos creado en C:\svnFolder.
Nos posicionamos ahí, en el servidor ISA, con una consola dos, y escribimos
Svnadmin create mi_repositorio
Hacer un CheckOut
En nuestro cliente vamos a la carpeta donde queramos el checkout, botón derecho, en el menú de Tortoise, elegimos “SVN checkout”
En “URL of repository” escribimos:
svn+ssh://@//
Queda escrito según el ejemplo que traemos…
svn+ssh://svnUser@svn.tecnoprevisa.com/svnFolder/mi_repositorio
siendo:
svn+ssh:// el protocolo
svnUser es el nombre de usuario
svn.tecnoprevisa.com es el nombre de la sesión configurada y guardada en PuTTY
/svnFolder/mirepositorio es la dirección dentro del servidor. En este caso era c:\svnFolder\mirepositorio.

Al pulsar OK, nos pedirá la contraseña y hará un checkout (a veces pide un par de veces la contraseña, pero todavía no he averiguado por qué)
Jota, AKA Crester AKA vazromju

¿donde está el sendto (enviar a) de Windows 7?

9 de Octubre de 2009

Pues como todo lo último que hace y ha hecho Microsoft que en vez de reciclarnos los conocimientos y dejar que lo que sepamos lo tengamos y cuando tengamos que aprender algo, que sea nuevo, pues lo que ya sabemos nos lo cambia (Windows 7, Office 2007, Visual Studio….) y así, en vez de aprender más, pues tenemos que volver a aprender lo mismo, pero de otra manera.

Bien, hecha la crítica, ahí va.

Para poder abrir la carpeta Sent-To o Enviar A en windows 7, en cualquier ventana con explorador, habrá que escribir:

shell:sendto

Windows, Apache y autenticación .htaccess

22 de Septiembre de 2009

Habilitar la autenticación en Windows utilizando Apache. Instrucciones rápidas para ponerlo en marcha.

Cosas a saber:

  1. Ruta al servidor Apache, ej. c:\apache
  2. Ruta al directorio CONF, ej. c:\apache\conf
  3. Ruta al directorio de documentos, ej. c:\apache\htdocs
  4. Ruta al directorio a proteger, ej. c:\apache\htdocs\protegido. En todo el ejemplo referenciaré “c:\apache\htdocs\protegido” como la carpeta. (Podría estar encima de esa ruta también, para su información)

Empecemos:

  1. Abrir el fichero httpd.conf. (en mi equipo está en c:\apache\conf\httpd.conf)
  2. Buscar la palabre “AccessFileName”. Debería haber una línea como esta:

    AccessFileName .htaccess
  3. Si no está la línea, crearla, por ejemplo al final del fichero
  4. Si utiliza Windows 2000 o inferior, pase al paso 5.
    Como no podrá crear ficheros como “.htaccess” en el sistema ya que no tienen nombre de archivo, y Windows va a obligar, para evitar copiarlos de otro sitio, vamos a crear un nuevo fichero cambiando la línea creada a:
    AccessFileName ht.acl .htaccess
  5. Ahora necesitamos añadir el directorio a la configuración.
    Escribiremos en el fichero httpd.conf:
    <Directory “/apache/htdocs/protegido”>
            AllowOverride All
            Options None
            Order deny, allow
    </Directory>
  6. El fichero httpd.conf está terminado. Ahora se necesita crear el fichero password. Abrir una consola DOS (cmd) y vamos al directorio BIN, en mi caso, “c:\apache\bin”

    c:\apache\bin>htpasswd -c -b passwd.txt Usuario LaContraseñaDelUsuario

    que creará un fichero passwd.txt en ese directorio. Recordad cambiar “Usuario” por el nombre de usuario que vaya a acceder y “LaContraseñaDelUsuario” por la contraseña que queremos darle.
    Más tarde referenciaremos ese fichero desde ht.acl (nombrado arriba). Si abrimos el fichero veremos el nombre del usuario y la contraseña encriptada.

  7. Ahora necesitamos crear el fichero HTACCESS. Según el punto 3 anterior, crearemos “.htaccess” o “ht.acl” dependiendo de la opción escogida. Seguiré el ejemplo con “ht.acl” porque funciona en todos los sistemas windows.
    Este es el contenido del fichero:        

            AuthUserFile c:/apache/bin/passwd.txt
            AuthName “Esta es mi area secreta”
            AuthType Basic
           <Limit GET POST>
            require valid-user
           </Limit>

  8. Guardamos el fichero en la carpeta “protegido” que ya hemos creado.
  9. Reniciamos Apache e intentamos acceder a la carpeta con el navegador:
    Ejemplo http://localhost/protegido

:-)

Chat-me messenger en página web, como enlace

22 de Septiembre de 2009

En algunas ocasiones querremos que en ciertas páginas web aparezcan una serie de botones para poder abrir una sesión de chat instantaneo con nuestro usuario, para diversas funciones, dependiendo del tipo de página (blog, comercial…)

Los fabricantes ofrecen ya javascript o plugins preparados para realizar dicha operación que, en muchos casos es demasiado por ofrecer enlaces a ellos, instar a la descarga y otras funcionalidades que nosotros no deseamos poner en nuestra página web.

Incluyo a continuación un sencillo código que funcionará con usuarios que ya tengan instalada la aplicación. En el ejemplo pongo messenger, aunque se pueden encontrar muchos más basados en el protocolo.

código:

<a target=blank href=’msnim:chat?contact=MiUsuarioDeHotmail@hotmail.com’>Pulsa para chatear conmigo </a>

Prueba:
Pulsa para chatear conmigo

Añada el sufijo DNS en las conexiones VPN

17 de Septiembre de 2009
¿la conexión VPN no resuelve nombres NETBIOS y necesita poner el FQDN?Escenario (pueden ser otros)

Un windows 2003 server con isa server 2006 y RRAS

Las direcciones IP se pueden dar via DHCP en el ISA (preferible aunque se puede hacer RRAS)
Nota (si hay isa, configurar RRAS desde isa y no desde su mmc) o también se pueden dar manualmente.

Como tendremos al menos dos DNS en la red, pasamos de asignarlos por DHCP y los damos a mano en avanzadas (esto en ISA Server) para asignar los DNS internos. Asumo aquí que los DNS están bien configurados y tienen sus forwarders (reenviadores) de Internet.

Ahora, en la conexión cliente VPN, vamos a IP versión 4, propiedades, todo por DHCP (o no), y en avanzadas, DNS, ponemos nuestro dominio interno en “Sufijo DNS para esta conexión”

Nokia Serie 60 como cliente SIP de Aserisk

17 de Septiembre de 2009

Funciona en los Nokia que tengan cliente SIP.

Bueno, pues como en la ofi no tengo teléfono inalambrico y tenemos un Asterisk, pues voy a conectar mi nokia E65 como extensión y así llevo todo en uno, para que no pese.

Primero, obviamente un punto de acceso que vea la red dónde está Asterisk.

Creamos una extensión en Asterisk con, al menos, estos parámetros:

Username = Numero_de_extensión: 99
Secret: la password

———
SIP realm: Por defecto estará en “asterisk”, pero si no funciona hay que activarlo en sip.conf.

NOKIA E65 o cualquier otro teléfono SIP (los parámetros son para Nokia que es lo que conozco)

Vamos a Herramientas-> Ajustes-> Conexión->Ajustes de SIP
y en el menú Opciones agregamos nuevo perfil y lo ponemos por defecto.

Nombre de modo: Uno Identificativo
Perfil de Servicio: IETF
Punto de acceso: Nuestro Access Point wifi
Nombre de usuario publico: sip:99@dominio o la IP del asterisk
Compresión: NO
Registro : Siempre activo
Utilizar Seguridad: NO

Proxy Server
Dirección del servidor proxy: sip:direccion IP del asterisk
Area: asterisk
Nombre de usuario: 99
contraseña:
Permitir ruta libre: si
Tipo de transporte: UDP
puerto: 5060

Servidor de registro:
Dir. Servidor de registro: sip:IP del asterisk
area: Ninguna
nombre de usuario Ninguna
Contraseña: Ninguna
Tipo de transporte: UDP
Puerto: 5060

Ahora vamos a Herramientas->Ajustes->conexión-> ajustes tel. Internet
Opciones->Perfil Nuevo
Nombre: Uno identificativo.
Perfiles de SIP : El que hemos creado antes.

Tipo de llamada por defecto:
Para cambiar entre GSM y VOIP, Herramientas->ajustes->Ajustes de llamada->Tipo de llamada predeterminada: y escogemos Internet.

Y a llamar.

En cualquier caso, si queremos probarlo bien y estar seguros, ponemos un numero, opciones->llamar->llamada de Internet

Si no funcionase ir a Conectividad-> Llamadas de Internet, seleccionamos el servicio y opciones -> conectarse al servicio.

Conector SMTP para un usuario (Exchange 2003)

13 de Septiembre de 2009

Hoy se me planteaba esta cuestión.
Tengo un usuario en mi organización de Exchange que envía mucho correo publicitario, y no quiero que ese correo fluya con el correo normal de la Compañía, de manera que me gustaría retrasarlo para que salga fuera del horario normal de oficina.

Veamos cómo hacerlo.

Caso: tener conectores SMTP con espacio de direcciones *
1.- Crearemos un nuevo conector SMTP con espacio de direcciones *
2.- En las restricciones de entrega, se denegará a todo el mundo salvo al usuario que vaya a utilizarlo
3.- Nos aseguraremos que el peso o costo de este conector es más bajo que el conector SMTP habitual (si el habitual tiene de costo 1, lo cambiamos a 10 y el que hemos creado a 1)
4.- Revisar que está activada la Restricción de Entrega para que funcione:
      4.1.- Abrir regedit
      4.2.- Buscar
                             HKLM\System\CurrentControlSet\Services\RESvc\Parameters
      4.3.- Añadir el valor:
                                       Value Name: CheckConnectorRestrictions
                                       Data Type: REG_DWORD
                                       Data: 1
                                       Radix: Decimal
      4.4.- Salir de Regedit y reiniciar los servicios:

  • Microsoft Exchange MTA Stacks (MSExchangeMTA)
  • Microsoft Exchange Routing Engine (RESvc)
  • Simple Mail Transfer Protocol (SMTPSVC)

Esta configuración desviará todo el tráfico del usuario que se seleccione por el conector nuevo creado.

Salvedades:
Si se tiene un conector con espacios de direcciones distintos de * , por ejemplo Tecnoprevisa.es como espacio de direcciones, hay que crear un conector específico para el usuario que queremos desviar, con Tecnoprevisa.es como espacio de direcciones. Esto es debido a que Exchange escoge para enrutar el conector que mejor se ajusta a la regla. Solamente se compara el costo o peso en caso de coincidir los espacios de direcciones.
Para configuraciones más personalizadas, como horarios, otros espacios de direcciones, mensajes con tamaño menor que…, simplemente revisara los parámetros del nuevo conector.

¿me tima google con la barra y mi usuario?

7 de Septiembre de 2009

Me tenía loco el tema.

Resulta que las consultas a google son bien distintos los resultados si tengo mi sesión iniciada con la barra de google.

El caso es que me estaba volviendo bastante loco con el tema. Estoy haciendo el SEO a un par de websites, y los tengo dados de alta en webmasters con mi usuario de google, mientras los voy preparando.

Llega un momento que empiezan a aparecer en las primeras posiciones, y a compañeros míos empiezo a decirles que vayan mirando que empiezan a aparecer… y ellos me responden que no los ven ni en la segunda página.

Pues de casualidad, me salgo de mi usuario de google, y así es…. los resultados son bien distintos. Si estoy con la barra y mi usuario, mi web sale en primera posición, pero la primerita. Si ya no estoy con mi usuario, sale en la tercera página de resultados, si vuelvo a estarlo vuelvo a salir, y así siempre.

Y ahí empieza la investigación…..

Resulta que ya muchos se han dado cuenta.
Si que es cierto que lo avisan, como bien plantean en un foro de google:
Very strange: Different search results depending on logged in or out
y responden en el apartado “basis” algo como “personalized search basis
En este momento yo me callo y asumo mi error de no leer, pero quiero destacar comentarios y how-to’s acerca de ello.

Uno muy curioso:
If you don’t want personalized search results, Google recommends to log out, but this may not be the best option if you use other Google services at the same time (for example, you edit a document in Google Docs).
The “deus ex machina” in this story is the pws parameter that can be added to the address of a search results page to control the personalization.

This URL corresponds to a search for [Google blog] without personalization:
http://www.google.com/search?q=google+blog&pws=0

.
Try it when you’re logged in and compare it to:
http://www.google.com/search?q=google+blog
.

How to temporarily disable Google Personalized Search? Add &pws=0 in the address bar at the end of a Google search URL.

O pon este enlace en tu barra de accesos directos:

Google sin historial

Desgraciadamente las soluciones anteriores solamente funcionarán en la búsqueda actual, y cada vez.

Otra solución pasa por pulsar este enlace, estando logados en google, que lo deshabilitará permanentemente

 

https://www.google.com/accounts/DeleteService?service=hist

Abrace a un programador….

28 de Agosto de 2009

Sin comentarios.

Para todos nosotros.

El cliente FTP tras un ISA Server 2006 conecta pero da acceso denegado en subidas

27 de Agosto de 2009

Ya llevaba yo unos días peleandome con el FTP pasivo, el FTP Mozilla, el FTP de consola…. y nada.

Conectado a través del chupete (módem usb para los amigos) me funcionaba perfectamente el acceso a los servidores FTP.

Pero en cuanto me metía tras el ISA SERVER, nada, conexión pero acceso denegado a todo.

Error Cliente FTP estando tras el ISA Server 2006

Error Cliente FTP estando tras el ISA Server 2006

Como vemos en la imagen anterior, todo apunta a que está OK, lista bien el directorio, cambia, pero a la hora de subir, sorprendentemente da un Acceso Denegado.

Esto es debido a que no se suele mirar una configuración especial en el ISA Server tanto 2004 como 2006, que suele estar activada. Vamos a la regla donde está permitido el acceso de salida para clientes FTP según la imagen:

Configuración ISA Server 2006 - FTP - Paso 1

Configuración ISA Server 2006 - FTP - Paso 1

Y ahí veremos que está marcado el acceso como “solo lectura”, según la imagen siguiente

Configuración ISA Server 2006 - FTP - Paso 2

Configuración ISA Server 2006 - FTP - Paso 2

Quitando la verificación de “solo lectura”, y aplicando cambios al ISA, y reconectando el cliente FTP si quedó conectado, veremos, como se demuestra, que todo quedó correctamente funcionando y ya no tenemos accesos denegados.

Cliente FTP tras ISA Server después de los cambios

Cliente FTP tras ISA Server después de los cambios