= Instalação do Servidor Z-Push = [[PageOutline(1-3, Conteúdo)]] == Pré-Requisitos == * O Z-Push deve ser instalado num servidor que tenha acesso lógico ao Servidor Expresso. [[BR]] * Deve existir uma regra no pg_hba.conf do PostgreSQL do Expresso, permitindo conexões vindas do servidor Z-Push;[[BR]] * Ambos servidores (PostgreSQL e Z-Push) devem estar sincronizados com algum servidor de hora;[[BR]] * Os seguintes pacotes devem estar instalados:[[BR]] - apache2[[BR]] - php5 (no mínimo a versão 5.2.6)[[BR]] - php5-imap[[BR]] - php5-pgsql[[BR]] - php5-ldap[[BR]] - postfix[[BR]] - html2text[[BR]] * É necessário que os protocolos IMAP e SMTP do servidor Expresso, estejam habilitados;[[BR]] * É necessário que o servidor do Z-Push tenha permissão de relay no servidor Expresso;[[BR]] * As seguintes portas precisam estar abertas (verificar regras de firewall) para o Z-Push acessar os servidores:[[BR]] - Servidor SMTP(S): 25 e/ou 465;[[BR]] - Servidor IMAP(S): 143 e/ou 993;[[BR]] - Banco de dados (postgreSQL): 5432;[[BR]] - Servidor LDAP: 389.[[BR]] == Instalação == 1) Faça o download da versão 1.4.3 do Z-Push no site [http://z-push.sourceforge.net/soswp/] e copie para a pasta raiz do Apache Web Server (Geralmente /var/www).[[BR]] 2) Sobrescreva com os arquivos customizados [http://trac.expressolivre.org/browser/contrib/z-push].[[BR]] 3) Mova o arquivo ''html2text'', obtido no passo anterior, para a pasta /usr/local/bin/. Use o comando ''chmod'' para atribuir direitos de execução. Esse executável foi compilado em um servidor Debian 32 bits, para S.O. de 64 bits recomenda-se compilar o código fonte que pode ser obtido no site [http://www.mbayer.de/html2text/].[[BR]] 4) Configure os parâmetros ''IMAP_SERVER'' e ''IMAP_PORT'' no arquivo ''config.php''.[[BR]] 5) Configure os parâmetros ''ANONYMOUS_BIND'', ''LDAP_BIND_USER'', ''LDAP_BIND_PASSWORD'', ''LDAP_HOST'', ''LDAP_PORT'', ''LDAP_SEARCH_BASE'' e ''LDAP_SEARCH_FILTER'' no arquivo ''config.php''.[[BR]] 6) Configure a conexão com o banco de dados no arquivo ''dbconnect.php'' que se encontra na pasta ''include''.[[BR]] 7) Configure o Postfix ([wiki:z-push_postfix main.cf]), para que utilize o serviço de SMTP do Expresso.[[BR]] 8) Crie arquivo de debug:[[BR]] ''touch /var/www/z-push/debug.txt'' [[BR]] 9) Crie um Alias no apache do z-push:[[BR]] ''Alias /Microsoft-Server-!ActiveSync /var/www/z-push/index.php''[[BR]] Dica: Caso seja usado um proxy para fazer redirecionamento de url, também deve ser incluída a regra:[[BR]] ''"!https://expresso.seu_dominio.gov.br/Microsoft-Server-ActiveSync"'' para: ''"!https://ip_do_zpush/z-push/index.php"'' 10) Insira no arquivo php.ini: [[BR]] ''php_flag magic_quotes_gpc off [[BR]] php_flag register_globals off [[BR]] php_flag magic_quotes_runtime off [[BR]] php_flag short_open_tag on'' [[BR]] 11) Configure permissões:[[BR]] ''chmod 755 /var/www/z-push/state [[BR]] chown -R www-data. /var/www/z-push/ [[BR]] chmod 777 /var/www/z-push/debug.txt [[BR]] '' 12) Reinicie os serviços:[[BR]] ''/etc/init.d/apache2 restart[[BR]] /etc/init.d/postfix restart''[[BR]] 13) Crie, no banco de dados do Expresso, [wiki:z-push_criausu o usuário zpush].[[BR]] 14) Crie, no banco de dados do Expresso, as [wiki:z-push_triggers triggers do Z-Push].[[BR]] 15) Agende, diariamente, a execução do seguinte script para excluir os arquivos da pasta ''state'' que não foram modificados nos últimos 4 meses.[[BR]] ''#!/bin/sh[[BR]] find /var/www/z-push/state/ -type f -mtime +120 -exec rm \{\} \;''[[BR]] == Administração == * Arquivos de Logs:[[BR]] ''/var/www/z-push/debug.txt[[BR]] /var/www/z-push/trace-.txt[[BR]] /var/log/apache2/ssl_access.log[[BR]] /var/log/apache2/access.log[[BR]] /var/log/apache2/error.log''[[BR]] * Nível de Debug:[[BR]] Para aumentar o nível de debug do arquivo ''/var/www/z-push/debug.txt'', definir a constante ''WBXML_DEBUG'' como “true” no arquivo ''/var/www/z-push/wbxml.php''. (este nível de debug detalhado aumenta muito o tamanho dos arquivos de log além de aumentar o tempo de sincronização dos dispositivos móveis, não sendo recomendado a sua utilização por padrão)[[BR]] * Configuração e uso do Trace:[[BR]] Como o Debug original do Z-Push mistura informações de todos usuários, foi criado o ''Trace'' por usuário para auxiliar na solução de bugs. O Trace também gera um log mais detalhado que o Debug.[[BR]] O Trace pode ser habilitado no arquivo ''/var/www/z-push/config.php''. Ele é habilitado por login, no parâmetro ''TRACE_UID'', e por tipo(''ALL'', ''IMAP'', ''CALENDAR'' ou ''CONTACTS''), no parâmetro ''TRACE_TYPE'', e gera um arquivo de saída chamado ''/var/www/z-push/trace-.txt'' . É recomendado que o Trace só fique habilitado quando necessário, caso contrário atribua o valor ''false''(sem aspas) ao parâmetro ''TRACE_UID''.[[BR]] Para que o Trace tenha um grande número de detalhes, deve-se atribuir ''true'' para a constante ''WBXML_DEBUG'' no arquivo ''/var/www/z-push/wbxml.php''. Evite deixar essa opção habilitada mais tempo que o necessário, para não sobrecarregar o servidor.[[BR]] Para que o arquivo de Trace não fique muito grande, no Exchange !ActiveSync do celular, desative a sincronização automática(PUSH) e em seguida sincronize uma vez para que o servidor do Z-Push entenda que a sincronização automática foi desativada.[[BR]] A cada sincronização, novos dados são adicionados ao arquivo de Trace do usuário. Para iniciar um Trace zerado, basta apagar o arquivo antes de sincronizar. Alguns problemas podem ser solucionados pesquisando pela palavra ''ERRO'' nas linhas que tem a string ''[TRACE]'', enquanto outros precisam ser inferidos através da análise do Trace, do código-fonte, do S.O., do banco de dados, do PHP, do IMAP e do SMTP.[[BR]] Para facilitar o entendimento do conteúdo do Trace, é recomendado ter uma noção do funcionamento do protocolo [http://msdn.microsoft.com/en-us/library/dd299446(v=exchg.80).aspx Exchange ActiveSync]. O protocolo tem um conjunto pré-definido de comandos que são enviados pelos celulares e respondidos pelo servidor.[[BR]] Segue exemplo de sequência de comandos do protocolo !ActiveSync quando o celular acabou de ser configurado para uma primeira sincronização:[[BR]][[BR]] 1) O celular envia o comando "Options request" e o servidor responde quais comandos o celular pode utilizar durante a sincronização.[[BR]] 2) O celular envia o comando "!FolderSync" solicitando a sincronização de pastas(pastas de e-mail, pasta de contatos denominada "root" e pasta de calendário denominada "calendar") e o servidor retorna a lista de pastas(Found n folder changes).[[BR]] 3) Para cada pasta configurada para sincronizar seus itens, o celular envia o comando "Sync" e o servidor responde com a chave única(!SyncKey) que será usada nas sincronizações desta pasta.[[BR]] 4) O celular envia o comando "!GetItemEstimate" e o servidor responde quantos itens(Found n message changes) serão sincronizados em cada pasta.[[BR]] 5) Para cada pasta, o celular envia o comando "Sync" para sincronizar seus itens.[[BR]] 5.1) Se existem mudanças de itens feitas no celular, elas são enviadas e processadas pelo servidor(Processed n incoming changes).[[BR]] 5.2) Se existem mudanças de itens feitas no servidor(Found n message changes) , elas são enviadas para o celular.[[BR]] O usuário é autenticado sempre que o celular envia um comando para o servidor.[[BR]] Veja os [wiki:z-push_exemp_depura_bugs exemplos de depuração de bugs.]