jueves, 12 de febrero de 2015

Como distribuir Apps de iOS en un servidor web - OTA (Over The Air)


Esta semana me han pedido como podríamos distribuir una aplicación de iOS en un servidor web nuestro, firmada con una licencia Enterprise para distribución interna.

Que necesitamos:
- Una licencia de iOS Developer Enterprise, que cuesta unos 299€
https://developer.apple.com/programs/ios/enterprise/
- Un certificado para la distribución iOS Distribution.
- Un App ID para tu aplicación.
- Un Provisioning Profile para empaquetar tu aplicación.
- Un servidor web con certificado SSL firmado por una entidad de confianza.


Crear el .IPA
Todo el proceso de crear los certificados y firmar la aplicación están detallados en el siguiente link, si hace falta más información publicaré alguna otra entrada:
http://johannesluderschmidt.de/provision-ios-ipa-app-for-in-house-enterprise-distribution/2993/

Con todo el perfil de distribución instalado en un Xcode, el siguiente paso es archivar el proyecto iOS:

1. Asegurarnos que en los Build Settings de nuestro proyecto estamos usando nuestro certificado y el provisioning profile que hemos generado para la App.

2. En el menu de Xcode seleccionar Product -> Destination -> iOS Device


3. En el menú de Xcode seleccionar Product -> Archive

4. En el Organizar , en la pestaña de Archives seleccionar Export...



5. En el asistente de exportación indicar la opción "Save for Enterprise Deployment"


6. Seleccionar el Development Team que haya firmado el Provisioning Profile que hemos creado para esta App.

7. Y en la última ventana de Summary ya podemos hacer el Export del proyecto a un .IPA , indicando en que carpeta queremos guardar la App.




Distribuir la App
Una vez tenemos el .IPA el siguiente paso es publicarlo en nuestro servidor web. En versiones anteriores del Xcode, al hacer este paso generaba también el archivo .plist que incluía la información de la App para su instalación, pero a partir del Xcode 6 parece que hay que crear este archivo manualmente. Desconozco si han discontinuado esta función o es algo que Apple vaya a arreglar más adelante.

IMPORTANTE: Si estas intentando publicar la aplicación en un IIS, asegurate de incluir los tipos MIME de los archivos. En la consola de gestión de IIS, clicar con el botón derecho sobre el servidor ir a Propiedades, y dentro de propiedades clicar sobre Tipos MIME ... y añadir los dos tipos que vamos a agregar:

.IPA   - application/octet-stream 
.PLIST -  text/xml

El primer paso para publicar el .IPA es generar el archivo .plist de nuestra APP. Para el archivo necesitamos los siguientes datos:
- URL donde esta el .IPA ( siempre con https:// )
- Bundle ID del proyecto
- Versión que hemos indicado en el Xcode
- Título de la aplicación

Generamos un archivo miapp.plist ( el nombre del archivo tiene que ser el mismo que el nombre del .ipa) .
El código del .plist es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>items</key>
        <array>
                <dict>
                        <key>assets</key>
                        <array>
                                <dict>
                                        <key>kind</key>
                                        <string>software-package</string>
                                        <key>url</key>
                                        <string>[URL del.IPA]</string>
                                </dict>
                        </array>
                        <key>metadata</key>
                        <dict>
                                <key>bundle-identifier</key>
                                <string>[Bundle ID de nuestra APP]</string>
                                <key>bundle-version</key>
                                <string>[versión de la App]</string>
                                <key>kind</key>
                                <string>software</string>
                                <key>title</key>
                                <string>[Título de la APP]</string>
                        </dict>
                </dict>
        </array>
</dict>
</plist>
Y en nuestra web tenemos que incluir un link a este archivo .plist con el siguiente formato:

<a href="itms-services://?action=download-manifest&url=[URL del .plist]">Instala mi fabulosa iOS APP</a>

Con el link publicado en nuestra web, podemos entrar desde cualquier dispositivo iOS a la web donde tenemos publicado el enlace, al hacer click sobre él nos mostrara una advertencia indicándonos si deseamos instalar la Aplicación. 
La aplicación se instalara, pero no avisará de que se haya completado el proceso, si vamos a la Home, veremos que ya tenemos el icono de la aplicación. Al tratar de iniciarlo por primera vez nos advertirá "Desarrollador no fiable" y si deseamos confiar en el equipo de desarrollo de nuestro certificado. 

Al clicar sobre confianza, ya no volverá a mostrar de nuevo esta advertencia.


Links:
https://longtrieuquang.wordpress.com/2014/08/01/how-to-distribute-your-ios-app-ota-with-enterprise-account/
http://stackoverflow.com/questions/8881609/ios-distribution-parameters-in-itms-services-protocol-link-for-plist
http://stackoverflow.com/questions/25910387/xcode-6-save-for-enterprise-deployment-does-not-create-plist-for-ipa-anymore

martes, 20 de enero de 2015

Configurar sendmail para hacer relay a través de un smarthost autenticado


Hoy he tenido que hacer una de esas cosas raras que te encuentras por culpa de consolas de gestión limitadas.

Para poder enviar emails con SMTP a través de un smarthost con un puerto diferente del 25 y con autenticación, he tenido que usar un linux con un sendmail como servidor de relay.


Aquí dejo los pasos para configurar este relay:

1. El primer paso es añadir el smarthost al servicio de sendmail. Edita el fichero /etc/mail/sendmail.mc y añade las siguientes lineas:
define(`SMART_HOST',`relay.example.com`)dnl
define(`RELAY_MAILER',`esmtp')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
FEATURE(`access_db')


2. (en caso que sea necesario) En el caso que tengas el sendmail configurado por defecto y que solo este escuchando a través de la dirección localhost (127.0.0.1), es necesario añadir la o las direcciones de escucha. Edita también el fichero /etc/mail/sendmail.mc y añade la siguiente linea
DAEMON_OPTIONS(`Port=smtp,Addr=<direccion IP de escucha>, Name=MTA')


3. Añadir las credenciales de autenticación en el archivo /etc/mail/access
AuthInfo:relay.example.com "U:USERNAME" "P:PASSWORD" "M:PLAIN" 


4. Actualizar los archivos de sendmail y access con los siguientes comandos:
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
# makemap hash /etc/mail/access.db < /etc/mail/access

5. Reiniciar el servicio sendmail
# /etc/init.d/sendmail restart

Y ya podemos usar el equipo Linux como relay smtp para enviar alertes, notificaciones, informes o lo que haga falta.

jueves, 8 de enero de 2015

Desinstalar OCS 2007 R2 después de migrar a Lync 2010


Estos son los pasos necesarios para eliminar el OCS 2007 R2 de nuestro Active Directory después de haber migrado a Lync 2010.

1. Desactivar los roles de los servidores Front End
Desde la consola de Microsoft Office Communications Server 2007 R2 desactivamos los roles en cada uno de los servidores del Grupo de servidores Enterprise Edition o de un Servidor Standard Edition .



El orden para desactivar los roles es el siguiente:
1.Conferencing Attendant
2.Conferencing Announcement Service
3.Response Group Service
4.Outside Voice Control
5.Application Host
6.Application Sharing Server
7.A/V Conferencing Server
8.Web Conferencing Server
9.Web Components Server
10.Front End Server

2. (Solo para Enterprise)
Una vez desactivados todos los roles de los servidores del Enterprise Pool,el siguiente paso es eliminar el Grupo de servidores:


En la consola de gestión, apretar botón derecho sobre el Grupo y marcar la opción Quitar grupo de servidores para abrir el asistente.


Mantaner la base de datos de usuarios lo usaremos si queremos mantener la información de base de datos RTC






3. Desinstalar los componentes
Una vez eliminado el Grupo de servidores, podemos pasar a desinstalar los componentes. Hay que hacerlo en el siguiente orden:

  • All unified communications applications:
    • Microsoft Office Communications Server 2007 R2, Conferencing Attendant
    • Microsoft Office Communications Server 2007 R2, Conferencing Announcement Service
    • Microsoft Office Communications Server 2007 R2, Response Group Service
    • Microsoft Office Communications Server 2007 R2, Outside Voice Control
  • Microsoft Office Communications Server 2007 R2, Application Host
  • Microsoft Office Communications Server 2007 R2, Application Sharing Server
  • Microsoft Office Communications Server 2007 R2, Audio/Video Conferencing Server
  • Microsoft Office Communications Server 2007 R2, Web Conferencing Server
  • Microsoft Office Communications Server 2007 R2, Web Components Server
  • In an Enterprise Edition deployment, Microsoft Office Communications Server 2007 R2, Front End Server
  • In a Standard Edition deployment, Microsoft Office Communications Server 2007 R2, Standard Edition server
  • Microsoft Office Communications Server 2007 R2, Core Components
  • Microsoft Office Communications Server 2007 R2, Unified Communications Managed API 2.0 Core Redistribution package
  • Microsoft Office Communications Server 2007 R2, Unified Communications Managed API 2.0 Speech Redistribution package
  • Microsoft Office Communications Server 2007 R2, Unified Communications Managed API 2.0 Windows Workflow Activities Redistribution package
 4. Eliminar los registros SPN del usuario RCTComponentService 

Con el comando setspn -L RTCComponentService podremos ver que registros tiene creados este usuario y borrarlos uno a uno. O bien podemos abrir la consola ADSIEdit.msc (siempre con precaucion) y eliminarlos del campo servicePrincipalName .

5.  En el active directory, localizar y eliminar las cuentas de servicio de RTC: 
  • RTCComponentService
  • RTCGuestAccessUser
  • RTCService
6. Eliminar el BackCompatSite (Migración de Office Comminucations Server 2007)

Una vez eliminado todos los componentes de OCS 2007 R2 en nuestro Active Direcotory, es necesario eliminarlo de la Topología de Lync 2010, donde configuramos la convivencia de ambos entornos.
Tenemos que iniciar sesión en un servidor donde tengamos instalado el Topology Builder del Lync 2010

Y después publicamos la topología para aplicar los cambios.



Links:
https://www.simple-talk.com/sysadmin/unified-messaging/migrating-from-ocs-2007-r2-to-lync-part-4/
http://technet.microsoft.com/en-us/library/dd572507(v=office.13).aspx
http://www.ucprofessional.com/2011/04/decommisioning-ocs-2007-r2-after.html