Blog: http://www.ddcs.re/pt
e-mail: exportit.ddcs@gmail.com
Tem como principal objetivo permitir o uso de seus dados localizados no seu telefone ou tablet Android, em outros dispositivos, como um outro sistema Android ou PC, ou se a mídia é compatível com seu aparelho de TV. Para isso, ele usa os protocolos mais padrão, o UPnP e HTTP.
exportá-lo implementa um servidor e um cliente (dois ícones na área de trabalho Android). O servidor de construir uma lista de arquivos de imagem de vídeo, áudio e, e, adicionalmente, a arquivos PDF e e-book que pode encontrar no seu sistema Android. A lista destes arquivos com as suas características são definidas na memória e publicado através de um serviço de diretório UPnP e um servidor HTTP.
Os arquivos são distribuídos apenas em quatro categorias: os arquivos de vídeo (mp4, webm e 3GPP) os arquivos de áudio (mp3, ogg e m4a), os arquivos de imagem (JPEG, GIF ou PNG) e ebooks (pdf, prc, epub, pdb, mobi e djvu).
O servidor não foi projetado para gerenciar milhares de arquivos, algumas centenas parece com o que temos normalmente em um telefone ou tablet.
Primeiro de tudo, basta iniciar o servidor e aguardar o fim do processo de inicialização. Se você estiver em Wifi ou na rede móvel você pode verificar o status e as URLs para experimentá-lo. Fort maioria das pessoas o servidor está inacessível a partir da rede móvel. Você pode verificar primeiro o que seu servidor está distribuindo com um apontador navegador da Web para o local, URL depois de passar pela janela do servidor (o servidor real é executado em segundo plano). Também é possível usar o endereço de loopback IPv6 para acessar a página HTML do seu navegador com uma URL como "http://[::1]:8192".
Como segundo passo, você pode usar a configuração do servidor para mudar o nome do servidor e, talvez, adaptar o tamanho da fonte para o seu idioma e dispositivo.
O próximo passo consiste em definir um nome de usuário e senha como administrador com acesso a todas as categorias.
Quando funciona, você pode definir nomes de usuários adicionais com acesso a categorias específicas.
E, finalmente, você pode definir "encaminhamento de porta" quando você está conectado no seu Wifi casa para ser acessível a partir da Internet. Se você estiver usando o aplicativo completo com suporte UPnP, você tem apenas para definir um nome alternativo não porta nula na configuração e verificar o console se ele funciona. Com o aplicativo gratuito você tem que configurar manualmente o router ADSL. Quando parece bom que você pode experimentá-lo a partir de casa com qualquer navegador web que você tem, usando um proxy público Web livre com suporte Javascript.
HTTPS, embora apoiado, não parece ser o melhor para usuários normais, devido à complexidade usá-lo com smartphones e as performances baixa comparado com simples HTTP.
Quando o encaminhamento de porta e autenticação estão trabalhando, você pode usar a opção "clube" para ser facilmente acessível na Internet, a publicação de seus dados em www.ddcs.re. Para testar o seu próprio servidor requer o uso de um proxy da Web, porque o seu próprio endereço IP externo não é acessível a partir de sua rede Wifi. Esta opção permite evitar a distribuição de um URL mudando com o endereço IP eo número da porta, basta clicar na linha de servidores dos direitos definidos pelo seu nome do servidor, uma descrição pequena frase e um de sua imagem como ícone.
O apoio é fornecido pelo UPnP Teleal Cling 1.0.5 (Copyright (C) 2010 Teleal GmbH, Suíça), eo Http Server é construído em cima de NanoHTTPD versão 1.25, Copyright 2001,2005-2012 Jarno Elonen e 2010 Konstantinos Togias. Assim, este aplicativo contém software LGPL. Ambos são versões modificadas, e não de código nativo. A biblioteca Cling teleal é apenas um arquivo jar construído com algumas modificações exigidas pela aplicação de cling-core, cling-support (1.0.5) e jar teleal-common (1.0.14) ... NanoHttpd foi modificado para suportar o método de "Cabeça", para adicionar os cabeçalhos HTTP DLNA, registro de pedido e para fornecer uma home page inicial. O código fonte está disponível como o executável.
Todos os emoticons usados nos comentários foram desenhados e feitos por Enrico Gollnow (Erni). Visite o site para encontrar mais informações sobre ele e seus smileys (http://www.gomotes.com).
A rotina de criptografia de senha usa a biblioteca jsbn de Tom Wu (Javascript BigInteger e RSA) no lado do navegador web ea biblioteca java SpongyCastle no lado do servidor.
Este aplicativo usa JmDNS, uma implementação de DNS multi-cast em Java para descoberta e registro de serviços. Esta biblioteca é totalmente interoperável com o protocolo Bonjour da Apple. Todos os meus agradecimentos a Arthur van Hoff, Rick Blair e Kai Kreuzer, por esta eficiente biblioteca licenciada sob a Licença Apache, Versão 2.0.
Este aplicativo usa um player de vídeo HTML5 chamado Playr desenvolvido por Julien 'delphiki' Villetorte gdelphiki@gmail.com sob licença MIT, todos os meus agradecimentos por este excelente trabalho e a permissão para usá-lo.
Estamos usando PDF.JS para mostrar arquivos PDF por meio de um WebView. Este projeto Open Source está sujeito a uma licença Apache Versão 2. PDF.js (https://mozilla.github.io/pdf.js/) é um visualizador de formato de documento portátil (PDF) criado com HTML5. PDF.js é orientado pela comunidade e suportado pela Mozilla.
O pacote epubjs-reader (https://github.com/futurepress/epubjs-reader) é usado para epub eBooks e os livros são exibidos em um WebView. Este software está disponível por meio de uma licença MIT.
Agora estamos usando o Acme4J como Java Client (https://shredzone.org) para o protocolo _Automatic Certificate Management Environment_ (ACME), conforme especificado no RFC 8555 (https://tools.ietf.org/html/rfc8555 ). ACME é um protocolo que uma autoridade de certificação (CA) e um candidato podem usar para automatizar o processo de verificação e emissão de certificados. É uma implementação de código aberto independente que não é afiliada ou endossada pela Let's Encrypt.
Acme4J precisa da biblioteca Jose4j (https://bitbucket.org/b_c/jose4j/wiki/Home), que é uma implementação de código aberto robusta e fácil de usar do JSON Web Token (JWT) e do conjunto de especificações JOSE.
Os dois principais componentes são o servidor eo cliente, e, após a instalação, você tem dois ícones na área de trabalho.
O servidor é iniciado um serviço de longa duração que é de fato, o servidor de mídia real fornecendo UPnP e serviços HTTP. Este serviço está sendo executado em segundo plano, apenas um pequeno ícone de notificação está definido na barra de tarefas Android. Uma subtarefa importante do servidor, é a configuração. Por padrão, o servidor exporta todos os seus arquivos de dados na rede Wifi local. Você pode selecionar / desmarcar arquivos através da configuração.
Os dados dos processos dos clientes distribuídos por servidores UPnP encontrados na rede local (Wi-Fi). Tem como subtarefas um Mediaplayer para mostrar mp4, WebM ou 3GPP e vídeos ouvir mp3, ogg ou arquivos de áudio m4a, uma janela de diálogo WebView para exibir fotos. Além disso, um serviço de fundo pode ser iniciado para download de arquivos do servidor. Quando iniciado antes do servidor, o cliente inicializar o serviço UPnP, mas sem distribuição de arquivos de dados, uma espécie de servidor vazio. Este serviço é necessário para obter acesso a outros servidores UPnP.
Nas configurações do sistema, em seguida, as configurações avançadas, você pode encontrar gerenciador de bateria. Para manter o servidor a funcionar permanentemente, você deve selecionar desempenho para o plano de energia e ativar o aplicativo em aplicativos protegidos e em aplicações que exijam muita energia.
Se possível, você deve manter seu Wi-Fi ativo quando o dispositivo estiver dormindo eo servidor for executado e, além disso, se o dispositivo tiver uma pilha DLNA integrada, não deverá procurar "dispositivos próximos" nas configurações do sistema.
o servidor requer acesso ao sistema de arquivos e para ler as configurações do telefone para detectar mudanças de estado como no Wifi ou se a transmissão de dados é ativado se conectado à rede móvel. Opcionalmente, o servidor pode enviar SMS quando o endereço IP externo é alterado (opção na configuração) eo código do país por ACCESS_COARSE_LOCATION, (Não um local preciso apenas o código do país duas letras). o programa cliente usa a permissão para gravar de armazenamento externo para salvar os arquivos baixados, ea permissão de gravar áudio para mostrar as curvas ao ouvir música.
Para publicar arquivos na Internet com o seu servidor exportá-lo, você tem que configurar a porta aliasing servidor HTTP em seu roteador ADSL. Protocolo UPnP não está disponível na Internet, apenas HTTP. O número de porta padrão é 8192 (você pode modificá-lo através da configuração), e uma porta de alias para a rede pública, deve ser dada no roteador ADSL associado ao endereço Wifi IP do servidor exportá-lo. O número da porta externa padrão na configuração é 0, mas você pode definir o que você quer, como 8192 ou 80. A URL a ser usada para acessar o servidor, é inscrito no lado superior direito da janela do controle de servidor.
Meu servidor Web tem suportado HTTPS com certificados autoassinados por anos, mas, embora funcione, desta forma dá problemas e mensagens de erro. É por isso que decidi implementar o protocolo ACME (Automatic Certificate Management Environment) para obter e manter certificados X509 padrão.
O protocolo ACME tem alguns requisitos técnicos, não é utilizável para todos. Para usar este protocolo, você precisa de um nome DNS fixo em seu endereço IP externo. O certificado X509 deve ser definido apenas em um nome DNS e não em endereços IP.
Para obter o certificado da Let's Encrypt, você precisa usar um servidor HTTP com o número de porta padrão (80) neste nome de DNS externo. Com meu aplicativo, você pode obter o certificado apenas em um servidor em execução com o alias de porta externa HTTP definido como "80". Apenas um servidor pode usar esse valor em sua rede Wi-Fi doméstica. Quando você tiver um certificado válido, poderá usar a porta padrão HTTPS de "443" apenas em um de seus servidores da Web definido como "porta de alias". Mas para evitar "fazer root" no seu dispositivo, você deve usar portas acima de 1024 como números de porta "local" por exemplo 8080 para HTTP e 8443 para HTTPS.
O painel de "configuração" foi modificado para oferecer suporte a aliases de porta para os protocolos HTTP e HTTPS e, além disso, você pode fornecer um nome DNS que saiba que está funcionando, para seu endereço IP externo Esse nome será definido em seu certificado X509, além do nome de seu provedor de rede, se você tiver um. O certificado é distribuído automaticamente para outros servidores de exportação em execução na mesma rede Wi-Fi, permitindo o uso de HTTPS pela Internet, mas com outros valores de alias de porta.