블로그: http://www.ddcs.re/ko
이메일: exportit.ddcs@gmail.com
주 목적은 다른 안드로이드 시스템 또는 PC와 같은 다른 장치에서, 안드로이드 폰 또는 태블릿에있는 데이터의 사용을 허가하는대로이 있거나 매체가 TV 세트에 호환됩니다. 이를 위해, 가장 표준 프로토콜, UPNP 및 HTTP를 사용한다.
내보낼는 서버 및 클라이언트 (당신의 안드로이드 바탕 화면에 두 개의 아이콘)을 구현합니다. 서버는 비디오, 오디오 및 이미지 파일, 그리고 당신의 안드로이드 시스템에서 찾을 수있는 추가 문서와 전자 책 파일의 목록을 작성합니다. 자신의 특성과 이러한 파일의 목록은 메모리에 설정하고 UPNP 디렉토리 서비스 및 HTTP 서버를 통해 게시됩니다.
파일이 네 개의 범주로 배포됩니다 : 비디오 파일 (MP4, WebM을하고 3GPP) 오디오 파일 (MP3, OGG 및 M4A), 이미지 파일 (JPEG, GIF 또는 PNG), 전자 책 (PDF, 중화 인민 공화국, EPUB, PDB, MOBI 및 DJVU).
서버는 몇 백 우리가 전화 또는 타블렛에서 정상적으로 것 같아, 수천 개의 파일을 관리 할 수 있도록 설계되어 있지 않습니다.
우선, 단지 서버를 시작하고 초기화 과정의 마지막 기다립니다. 당신은 와이파이 또는 모바일 네트워크에있는 경우에는 상태를 시도하는 URL을 확인할 수 있습니다. 요새는 대부분의 사람들이 서버는 모바일 네트워크에서 액세스 할 수 없습니다. 먼저 서버가 로컬에 웹 브라우저를 가리키는으로 배포되는 것을 확인할 수 있습니다 URL은 서버 창 외출 후 (실제 서버는 백그라운드에서 실행됩니다). 이 브라우저에서 HTML 페이지에 액세스하도록 IPv6 루프백 주소를 사용하는 것도 가능하다 "http://[::1]:8192"와 같은 URL과 함께.
두 번째 단계로, 당신은 당신의 서버 이름을 변경하고 아마도 언어 및 장치에 글꼴 크기를 적응하기 위해 서버 구성을 사용할 수 있습니다.
다음 단계는 모든 범주에 대한 액세스 권한이있는 관리자로 사용자 이름과 암호를 정의로 구성되어 있습니다.
작동 할 때 특정 카테고리에 액세스 할 수있는 추가 사용자 이름을 정의 할 수 있습니다.
당신이 인터넷에서 액세스 할 수 있도록 홈 와이파이에 연결되어있을 때 그리고 마지막으로 당신은 "포트 포워딩"을 정의 할 수 있습니다. 당신은 UPnP를 지원하는 모든 응용 프로그램을 사용하는 경우 구성이 아닌 널 포트 별명을 정의하고 작동하는 경우 콘솔에 확인 그냥 있습니다. 무료 응용 프로그램을 사용하면 수동으로 ADSL 라우터를 구성해야합니다. 그것은 좋아 보인다 때 당신은 자바 스크립트를 지원하는 무료 공개 웹 프록시를 사용하여, 당신이 가진 모든 웹 브라우저와 함께 집에서 시도 할 수 있습니다.
지원되지만 HTTPS 때문에 간단한 HTTP에 비해 스마트 폰과 부진와 함께 사용하는 복잡성에 일반 사용자를위한 최선을 것으로 보이지 않는다.
포트 포워딩 및 인증 작업 할 때, 당신은 www.ddcs.re에 데이터를 게시, 인터넷에 쉽게 액세스 할 수 있도록 "클럽"옵션을 사용할 수 있습니다. 자신의 외부 IP 주소가 와이파이 네트워크에서 액세스 할 수 없기 때문에 자신의 서버가 웹 프록시의 사용을 필요로 테스트합니다. 이 옵션 허가는 서버 이름 작은 설명 문장 및 아이콘 등의 이미지 중 하나에 의해 정의되는 바로 서버 광고 클릭, IP 주소와 포트 번호와 함께 변화하는 URL의 유통을 방지한다.
UPnP 지원은 Teleal Cling 1.0.5 (저작권 (C) 2010 Teleal GmbH를, 스위스)에 의해 제공되고, HTTP 서버는 NanoHTTPD 버전 1.25, 저작권 2001,2005-2012의 Jarno Elonen 2010 콘스탄티노스 Togias의 상단에 내장되어 있습니다. 따라서이 응용 프로그램은 LGPL 소프트웨어가 포함되어 있습니다. 모두 수정 된 버전이 아닌 네이티브 코드입니다. TelealCling 라이브러리는 cling-core, cling-support (1.0.5) 및 teleal-common (1.0.14) jar 파일에서 응용 프로그램에 필요한 몇 가지 수정을 내장 하나의 jar 파일입니다 ... NanoHttpd는 DLNA의 HTTP 헤더 요청 로깅을 추가하고 초기 홈 페이지를 제공하기 위해, "HEAD"방법을 지원하도록 수정되었습니다. 소스 코드는 실행 파일로 사용할 수 있습니다.
댓글에 사용 된 모든 이모티콘 설계 및 엔리코 Gollnow (ERNI)에 의해 만들어졌다. 그와 그의 스마일 (http://www.gomotes.com)에 대한 자세한 정보를 찾기 위해 자신의 웹 사이트를 방문하십시오.
비밀번호 암호화 루틴은 웹 브라우저 측 및 서버 측의 SpongyCastle 자바 라이브러리에 톰 우의 jsbn 라이브러리 (자바 스크립트의 BigInteger와 RSA)를 사용합니다.
이 애플리케이션은 서비스 검색 및 등록을 위해 Java에서 멀티 캐스트 DNS 구현 인 JmDNS를 사용합니다. 이 라이브러리는 Apple의 Bonjour 프로토콜과 완벽하게 호환됩니다. Arthur van Hoff, Rick Blair와 Kai Kreuzer에게 Apache License, Version 2.0에 따라 라이센스가 부여 된이 효율적인 라이브러리에 대해 감사드립니다.
이 응용 프로그램은 MIT 라이센스하에 Julien 'delphiki'Villetorte gdelphiki@gmail.com에 의해 개발 된 Playr이라는 HTML5 비디오 플레이어를 사용합니다.이 훌륭한 작업과 사용 권한에 대해 감사드립니다.
WebView를 통해 PDF 파일을 표시하기 위해 PDF.JS를 사용하고 있습니다. 이 오픈 소스 프로젝트에는 Apache 버전 2 라이선스가 적용됩니다. PDF.js(https://mozilla.github.io/pdf.js/)는 HTML5로 구축된 PDF(Portable Document Format) 뷰어입니다. PDF.js는 커뮤니티 중심이며 Mozilla에서 지원합니다.
epubjs-reader 패키지(https://github.com/futurepress/epubjs-reader)는 epub eBook에 사용되며 책은 WebView에 표시됩니다. 이 소프트웨어는 MIT 라이선스를 통해 사용할 수 있습니다.
현재 RFC 8555(https://tools.ietf.org/html/rfc8555)에 지정된 _ACME(Automatic Certificate Management Environment)_ 프로토콜에 대한 Java 클라이언트(https://shredzone.org)로 Acme4J를 사용하고 있습니다. ). ACME는 인증 기관(CA)과 신청자가 확인 및 인증서 발급 프로세스를 자동화하는 데 사용할 수 있는 프로토콜입니다. Let's Encrypt와 제휴하거나 보증하지 않는 독립적인 오픈 소스 구현입니다.
Acme4J에는 JWT(JSON Web Token) 및 JOSE 사양 모음의 강력하고 사용하기 쉬운 오픈 소스 구현인 Jose4j 라이브러리(https://bitbucket.org/b_c/jose4j/wiki/Home)가 필요합니다.
두 가지 주요 구성 요소는 서버와 클라이언트, 그리고 설치 후, 바탕 화면에 두 개의 아이콘이 있습니다.
서버는 실제 미디어 서버에서 UPnP 및 HTTP 서비스를 제공하고, 사실에 긴 실행중인 서비스를 시작합니다. 이 서비스는 백그라운드에서 실행되고, 단지 작은 알림 아이콘은 안드로이드 작업 표시 줄에서 설정됩니다. 서버의 중요한 하위는 구성입니다. 서버 수출에게 로컬 와이파이 네트워크에있는 모든 데이터 파일을 기본적으로. 당신은 구성을 통해 파일을 선택 / 해제 할 수 있습니다.
지역 (와이파이) 네트워크에서 찾을 UPnP를 서버에서 분산 클라이언트 데이터를 처리. 그것은 MP4, WebM을 또는 3GPP 비디오를 보여주는 MediaPlayer를을 하위 작업으로 가지고 있으며, MP3, OGG 또는 M4A 오디오 파일, 사진을 표시하는 웹보기 대화 상자 창을 듣고. 또한, 배경 서비스는 서버에서 파일을 다운로드 시작할 수 있습니다. 서버 전에 시작했을 때, 클라이언트는하지만, 데이터 파일, 비어있는 서버의 종류를 배포하지 않고 UPnP 서비스를 초기화합니다. 이 서비스에 대한 액세스를 얻을하는 데 필요한 다른 UPnP를 서버.
시스템의 설정에서 다음 고급 설정, 당신은 배터리 관리자를 찾을 수 있습니다. 영구적으로 실행하는 서버 위를 유지하려면 전원 관리 성능을 선택하고 보호 된 애플리케이션과 전력이 많이 소모되는 응용 프로그램에서이 응용 프로그램을 활성화해야합니다.
가능한 경우 장치가 잠자기 상태 일 때 서버를 실행하고 장치에 통합 DLNA 스택이있는 경우 시스템 설정에서 "주변 장치"를 찾지 않아야 WiFi가 활성화되어 있어야합니다.
서버는 파일 시스템에 대한 액세스를 요구 및 WiFi 또는 모바일 네트워크에 접속하는 경우의 데이터 전송이 활성화되는 경우와 같이 상태의 변경을 검출하기위한 전화 설정을 읽어. 외부 IP 주소 ACCESS_COARSE_LOCATION 그래피 (구성의 옵션) 및 국가 코드가 변경되는 경우, 서버는 SMS를 전송할 수있다 선택적으로, (아닌 정확한 위치를 그냥 두 글자 국가 코드). 클라이언트 프로그램은 다운로드 한 파일을 저장하기위한 외부 저장소에 쓸 수있는 권한, 음악을들을 때 곡선을 표시하기위한 기록 오디오 권한을 사용합니다.
당신의 내보낼 서버와 인터넷에서 파일을 게시하려면, 당신은 당신의 ADSL 라우터의 HTTP 서버 포트 별명을 구성해야합니다. UPnP를 프로토콜은 인터넷에서 사용할 수없는 경우에만 HTTP. 기본 포트 번호는 (당신이 구성을 통해 수정할 수 있습니다) 8192이고, 공용 네트워크에 대한 별칭 포트, 내보낼 서버의 와이파이 IP 주소와 관련된 ADSL 라우터에 부여해야합니다. 구성의 기본 외부 포트 번호는 0입니다,하지만 당신은 8192 또는 80처럼 당신이 원하는 무엇을 설정할 수 있습니다. 서버에 액세스하는 데 사용하는 URL은 서버 컨트롤 창의 오른쪽 상단에 기재되어 있습니다.
내 웹 서버는 몇 년 동안 자체 서명된 인증서로 HTTPS를 지원해 왔지만, 이 방법은 작동하지만 문제와 오류 메시지를 제공합니다. 그래서 표준 X509 인증서를 얻고 유지하기 위해 ACME(Automatic Certificate Management Environment_) 프로토콜을 구현하기로 결정했습니다.
ACME 프로토콜에는 몇 가지 기술적 요구 사항이 있으며 모든 사람이 사용할 수 있는 것은 아닙니다. 이 프로토콜을 사용하려면 외부 IP 주소에 고정 DNS 이름이 필요합니다. X509 인증서는 IP 주소가 아닌 DNS 이름에만 설정해야 합니다.
Let's Encrypt에서 인증서를 받으려면 이 외부 DNS 이름에 표준 포트 번호(80)가 있는 HTTP 서버를 사용해야 합니다. 내 응용 프로그램을 사용하면 HTTP 외부 포트 별칭이 "80"으로 설정된 서버에서만 인증서를 얻을 수 있습니다. 하나의 서버만 홈 Wi-Fi 네트워크에서 이 값을 사용할 수 있습니다. 유효한 인증서가 있으면 "별칭 포트"로 설정된 웹 서버 중 하나에서만 HTTPS 기본 포트 "443"을 사용할 수 있습니다. 하지만 기기를 "루팅"하지 않으려면 HTTP의 경우 샘플 8080, HTTPS의 경우 8443에서 "로컬" 포트 번호로 1024 이상의 포트를 사용해야 합니다.
'구성' 패널은 HTTP 및 HTTPS 프로토콜 모두에 대한 포트 별칭을 지원하도록 수정되었으며, 외부 IP 주소에 대해 작동 중인 DNS 이름을 제공할 수 있습니다. 이 이름은 네트워크 공급자 이름(있는 경우)과 함께 X509 인증서에 정의됩니다. 인증서는 동일한 Wi-Fi 네트워크에서 실행되는 다른 export-it 서버에 자동으로 배포되어 인터넷을 통해 HTTPS를 사용할 수 있지만 다른 포트 별칭 값을 사용할 수 있습니다.