Trabajar con ficheros Zip desde .Net

Se ha publicado en codeplex una libreria desarrollada para facilitar el trabajo con archivos Zip.


Project Description
The Microsoft .NET Framework {v2.0 v3.0 v3.5} includes base class libraries supporting compression within streams – both the Deflate and Gzip formats are supported. But the System.IO.Compression namespace provides streaming compression only – useful for communicating between cooperating parties but not directly useful for creating compressed archives, like .zip files. The built-in compression library does not know how to format zip archive headers and so on.

This is a simple class library that augments the System.IO.Compression.DeflateStream class, to provide handling for Zip files. Using this library, you can write .NET applications that read and write zip-format files.

http://www.codeplex.com/DotNetZip

 

El siempre tedioso mapeo de unidades e impresoras y una solución.

El problema


En toda red siempre hay una necesidad, los usuarios tienen que disponer en sus ordenadores de las unidades de red e impresoras que requieran para poder trabajar.


Las soluciones a este problema dependerán de los requisitos de la empresa, el número de usuarios, la preocupación por la seguridad y la evolución tecnológica del departamento de TI al cargo.


En mi caso y dado que mi religión me prohíbe tolerar conscientemente cosas ineficientes, hasta ahora siempre he usado scripts de inicio de sesión que asignaban las unidades de red e impresoras en base a la pertenencia a grupos, de esta forma te aseguras que los usuarios al arrancar sesión tendrán siempre sus unidades e impresoras disponibles.


Esta solución está bien o mejor dicho estaba bien, como siempre he dicho hay que replantearse las cosas y mejorarlas. Las razones que me motivan a buscar un cambio son las siguientes:


-El asunto se ha complicado un poco con Vista especialmente con UAC, usuarios sin privilegios, escenarios con múltiples scripts de inicio de sesión y mas aun con GPOs “anidadas” (Ver: http://www.gpanswers.com/community/viewtopic.php?p=5718 para descubrir el maravilloso mundo del launchapp2.wsf)  segun como sea tu entorno te encontraras con algunos problemas con los scripts de inicios de sesión en Vista.


-Cuando se tienen muchos usuarios, grupos, impresoras, unidades, departamentos, localizaciones, etc los scripts se hacen kilométricos, difíciles de mantener y susceptibles del mayor virus de las redes; “el error humano” (aka: dedos gordos).


Un poco de culturilla


El Directorio Activo (AD) grande entre los grandes, nos propone como ya sabéis la posibilidad de crear shares e impresoras como objetos del mismo, los shares se materializaran en instancias de la clase “volum” y las impresoras en instancias de la clase “print-queue”.


El AD es un directorio LDAP y como tal tiene una estructura jerárquica, esto permite que todos los objetos del directorio activo, puedan ser nombrados o accedidos conociendo la ruta jerárquica completa, al atributo de un objeto que almacena esta ruta completa se lo denomina DistinguishedName o DN para abreviar.


Las clases del AD y por lo tanto los atributos que tiene cada clase están definidas en el Schema, cuando un atributo puede contener más de un valor se le denomina “multi-value”.


 En el AD muchos objetos referencian a otros, por ejemplo un usuario, tiene un atributo de tipo DN y multi-value que se denomina “member-of” en el cual se almacenan el DN de todos los grupos a los que pertece, por el contrario todos los grupos tienen un atributo de tipo DN y multi-value denominado “members” donde se encuentran todos usuarios que pertenecen al grupo, a esto se le llama “linked-attributes” (http://www.activedir.org/article.aspx?aid=92).


Las clases print-queue y volumen, tienen un atributo cada uno de tipo DN y multi-value que se llama OwnerBL, estos campos aparentemente no se usan o al menos tras algunas pruebas no he logrado ver que se usen y tampoco hay ninguna información en Internet sobre su utilidad.


Otra de las funcionalidades del AD son los display-specifiers que nos facilitan entre otras cosas la posibilidad de poder alterar las opciones contextuales de los objetos en el AD, de esta forma es posible añadir nuestras propias opciones que aparecerán en el menú que aparece al pulsar en el botón derecho del ratón sobre un objeto que represente por ejemplo a un usuario dentro de la consola de usuarios y computadores.


Para más información sobre el esquema y los display-specifiers puedes leer mi artículo sobre el tema: Si hay que editar el esquema se edita, pero editarlo para nada…..

 

La solución


La solución busca mejorar la gestión necesaria para prestar este servicio, mejorar el rendimiento que se mide en el tiempo necesario para mapear las unidades e impresoras,  simplificar y por ultimo ofrecer algún valor añadido.


La solución que propongo al problema de la asignación de impresoras y shares a los usuarios está todavía en desarrollo y pendiente de valorar las implicaciones de usar el atributo OwnerBL.


La alternativa a usar dicho atributo es extender el schema o esquema del AD, operación está a la que solo hay que tener respeto pero no fobia, pero que si se puede evitar, es mejor evitarla.


El asunto funciona así; gracias a un display-specifier (ver imagen 6), al pulsar sobre un grupo con el botón derecho del ratón dentro de la consola de users and computers, nos aparecerá dentro del menú contextual una opción nueva denominada “Unidades e impresoras” desde la cual podremos listar todos los objetos del tipo print-queue y volume que tengamos en el dominio (ver imagen 7). El administrador elegirá las impresoras y shares que quiere que mapeen los usuarios miembros de ese grupo y al salir del dialogo, la aplicación lanzada por el display-specifier guardara en los campos OwnerBL de los print-queue y volume el grupo sobre el que hayamos trabajado.


Imagen 6, Display-Specifier.



Imagen 7, Aplicación.



Obviamente tendremos que haber creado antes los objetos que representan los shares y las impresoras (ver imágenes 1,2 y 3), los shares o unidades los podremos ver desde la consola de usuarios y computadoras, las impresoras están escondidas dentro del AD, en realidad son objetos que jerárquicamente dependen del servidor en el que están (si, no te extrañes un objeto computer puede ser padre de otros objetos).


Imagen 1, Compartir una impresora y publicarla en el AD.



Imagen 2, Opciones para crear impresoras y shares en la consola de usuarios y computadoras.



Imagen 3, Una unidad en el directorio.



Podrías ver las impresoras en la consola de usuarios y computadoras, activando la opción “ver usuarios, computadoras y grupos como contenedores” (imagen 4) o a través de adsiedit puedes ver ambos casos en la Imagen 5.


Imagen 4, Ver recipientes como contenedores.



Imagen 5, Viendo las impresoras.



Finalmente un ejecutable convenientemente llamado desde el loginscript o directamente desde la GPO se encarga de mapear las unidades e impresoras, el ejecutable puede ser llamado con parámetros para indicarle si queremos que borre las impresoras o unidades ya existentes, las letras de unidad a usar para cada Share se pueden indicar en el AD dentro del objeto que haga referencia a dicho Share.


Tanto el ejecutable que usaremos en el script como el lanzado por el display-specifier los he programado en C# pero se podrían haber realizado con scripts de tipo HTA (http://dmatey.spaces.live.com/blog/cns!3B6FB47901ABC772!331.entry)


La ejecución del programa que mapea los elementos deja múltiples eventos en el eventlog de la maquina del usuario indicando las acciones que va realizando.


Queda algún pequeño detalle y más pruebas, pero cuando lo termine lo publicare en codeproject o codeplex.


 

System Center Mobile Device Manager 2008

 Muy poco se ha sabido hasta ahora sobre System Center Mobile Device Manager (SCMDM), algo que en principio parecía que se convertiría en una simple guia ha terminado por materializarse en un producto completo, de momento alguna información es un tanto confusa, asi que tratare de informaros sin meter la pata.


 SCMDM es un producto que en principio solo estará disponible para los clientes con contratos de volumen, se tendrá que instalar sobre Windows Server 2003 SP2 en versiones de 64bits y se apoyara en tecnologías como WSUS, SQL, Reporting Services, IIS, AD, GPOs, etc.


 El producto permitirá la gestión de los dispositivos móviles de las empresas, facilitando la gestión de los mismos a nivel de inventario, distribución de aplicaciones, acceso remoto a través de VPN, acceso a aplicaciones de negocio y gestión de la seguridad.


 Para todas estas cosas SCMDM añade 130 políticas a las GPO y permite el uso de templates ADM para configurar los dispositivos móviles.


 Por ejemplo a través de las políticas podemos indicar que no queremos que se pueda enviar SMS, usar la cámara, realizar conexiones wireless, navegar sin proxy, o más increíble aun limitar que tipo de dispositivos bt se podrán conectar.

  Muy curioso también lo de desplegar actualizaciones de firmware a través de WUS. Uno de los roles del SCMDM es el denominado Gateway que situado tras nuestros firewalls será el encargado de que los dispositivos puedan acceder a toda esta funcionalidad desde internet, para ello los dispositivos generan una VPN contra el servidor Gateway. La vpn estará especialmente diseñada para este tipo de dispositivos, en algunos sitios se habla de vpn SSL en otros de túnel ipsec puro y duro, así que no tengo claro del todo cual es el método, aunque me oriento mas a pensar que sea SSL, la VPN soporta tambien roaming entre wireless y umts, gprs, etc buscando siempre la mejor conexión y reconectando la vpn cuando es necesario.

  Una de las funcionalidades que mas me gusta es la que facilita el “remote wipe” a través del cual podemos remotamente “limpiar” el contenido de un dispositivo móvil que haya sido robado, también podremos obligar a que el dispositivo este encriptado y a otras configuraciones de seguridad.

 El producto también incluye un modulo de self-service al que los usuarios pueden acceder desde sus dispositivos móviles dándose así soporte a si mismos y reduciendo el numero de llamadas al help-desk.  Muchas de estas configuraciones ya son posibles usando elementos como Exchange 2007 o SMS/SCCM, pero para aquellas empresas con un gran volumen de dispositivos móviles, SCMDM puede ser una herramienta que facilite aun mas la gestión de estos dispositivos.  De momento no tengo “bits” pero cuando logre bajarlo os daré mas información y alguna captura de pantalla.El producto estara en el mercado en el primer trimestre del 2008.

http://www.microsoft.com/systemcenter/mobile/default.mspx


 

No la líes dimensionando tus SharePoint.

                Dimensionar una infraestructura de SharePoint puede ser un poco difícil si no tienes experiencia.


                Las guías de dimensionamiento de Microsoft están bien y dan mucha información, pero para cuando quieras una segunda confirmación puedes usar una herramienta para dimensionamiento que pone a tu disposición HP.


                Estas herramientas de HP denominadas “Sizers” son muy útiles como segunda opinión, en general suelen exagerar un poco el hierro necesario para montar nuestra solución, pero con un poco de criterio nos pueden ser de utilidad.


http://h71019.www7.hp.com/activeanswers/Secure/548230-0-0-0-121.html


 


 

¿Es tu código fiable ante ataques de XSS?

Las técnicas de XSS (Cross Site Scripting) son de las mas frecuentes junto con otras viejas amigas.


Microsoft que es así de maligna nos ofrece una demo/beta de un analizador de código implementado a través de un plugin para visual studio.


El plugin nos permite analizar nuestro código en busca de vulnerabilidades relacionadas con XSS.



Mas info: http://blogs.msdn.com/ace_team/archive/2007/10/22/xssdetect-public-beta-now-available.aspx


 


 


 

Como montar SharePoint en tu centro de respaldo.

SharePoint es como las setas; si se dan las condiciones oportunas crecen sin parar.

Si SharePoint tiene éxito dentro de una empresa, aparecerán sites como las setas, con el paso del tiempo o inmediatamente se volverán “imprescindibles” y en ese momento una simple estrategia de backups puede no ser suficiente.Hace un tiempo tuve que enfrentarme a esta realidad y montar la infraestructura, procedimientos y mecanismos necesarios para disponer de un buen plan de emergencias para SharePoint.En aquel momento había que enfrentarse “solo ante el peligro” sin documentación detallada y tuve la suerte de que las ideas fueron correctas.Hoy me ha hecho gracia encontrar un post que explica paso a paso el procedimiento para conseguirlo.Bendita internet que no siempre llega a tiempo J       

http://blogs.msdn.com/mikewat/archive/2007/10/20/installing-a-sharepoint-dr-farm.aspx

El tipo de datos filestream en SQL Server 2008

¿Quien no se ha pegado con la necesidad de relacionar información almacenada en ficheros con los registros en una base de datos?. Soluciones inicialmente sencillas como almacenar la ruta UNC del archivo y luego acceder a esos archivos desde la aplicación, pueden ser inicialmente útiles, pero con el tiempo los problemas relacionados con la gestión de los ficheros, la “integridad referencial” y sobre todo, la seguridad acaban por suponer un problema.Almacenar los ficheros en la propia base de datos, tiene también sus problemas, engorda las BD, tiene limitaciones de tamaño y aporta un grado mas de complejidad al acceso a los ficheros desde fuera de la aplicación.SQL Server 2008 aporta una solución muy buena; almacenar los ficheros en el sistema de ficheros, que es donde tienen que estar, pero con una relación definida en SQL Server a través de un nuevo tipo denominado “filestream”, SQL gestionara también la seguridad de tal forma que es posible que solo la cuenta del servicio de SQL Server tenga acceso a los ficheros y que los usuarios accedan a los mismos con las restricciones de seguridad que tengan en la BD, es compatible con el uso de clusters y los backups de SQL Server.El T-SQL se ha enriquecido con instrucciones para el manejo de este nuevo tipo. En definitiva una solución nueva y completa a un viejo problema.Tenéis mas información en un estupendo articulo en ingles sobre el tema:

http://blogs.msdn.com/manisblog/archive/2007/10/21/filestream-data-type-sql-server-2008.aspx