Site Tools


software:ssdpd:index

This is an old revision of the document!


SSDP announcer for UPnP/DLNA

- это программа для анонсирования в сеть UPnP/DLNA устройств.
Анонсы передаются с помощью IPv4 и IPv6 на специальные multicast адреса.

SSDP announcer позволяет проанонсировать в своей локальной сети любой UPnP/DLNA сервер, расположенный в интернете, другом сегменте сети.

UPnP - базируется на SSDP анонсах для автоматического обнаружения доступных устройств в локальной сети и HTTP для взаимодействия с найденными устройствами.
В HTTP данные передаются с помощью XML-SOAP.

Архив с SSDP announcer содержит реализацию UPnP/DLNA сервера на nginx и PHP.
Nginx берёт на себя работу с http, php скрипт обрабатывает XML-SOAP запросы от клиентских устройств.
Скрипт обеспечивает браузинг по файловой системе и доступ к мультимедиа которая найдётся.

Благодаря SSDP announcer можно написать свой собственный UPnP/DLNA сервер на любом скриптовом языке, с которым умеет работать nginx.

Поддерживаемые OS

  • FreeBSD
  • Linux

Принцип работы

UPnP клиенты (например AnDLNA для андройд, VLC под линукс и тп), слушают в сети мультикаст анонсы и периодически сами шлют запросы для получения анонсов.
Анонсы представляют из себя IPv4/IPv6 мультикаст UDP пакеты с HTTP форматом содержимого. Запросы отправляются напрямую к анонсерам.
Анонс содержит в себе:

  • UUID - уникальный идентификатор устройства;
  • тип анонсируемого устройства;
  • сервисы, которые предоставляет устройство;
  • URL для получения по HTTP-GET XML файла с подробным описанием устройства и ссылками на XML файлы-описания его сервисов.

SSDPd требует указания на каких интерфейсах работать, какие URL анонсировать и XML файл с описанием устройства.
На этом работа SSDPd заканчивается. Всё остальное общение клиента происходит с сервером по HTTP.

Клиент, после получения анонсов, если его заинтересовал тип UPnP устройства, по HTTP-GET забирает XML файл с указанного в анонсе URL, разбирает его, далее забирает XML файлы с описанием сервисов.
XML файлы статичны, примеры приложены в дистрибутиве.

После разбора XML файлов клиент обращается к сервисам по URL указанным в XML файлах используя HTTP, с помощью методов: POST, SUBSCRIBE, UNSUBSCRIBE.
В простом случае (для минимального функционала) обработка HTTP request методов SUBSCRIBE, UNSUBSCRIBE сводится к выдаче 200 + пара доп заголовков, с этим без труда справляется nginx.

Мультикаст адреса

  • 239.255.255.250:1900
  • [FF02::C]:1900 - link local scope
  • [FF05::C]:1900 - site local scope

Установка

wget http://www.netlab.linkpc.net/download/software/ssdpd/ssdpd-1.01.tar.gz
tar -xf ssdpd-1.01.tar.gz
cd ./ssdpd-1.01
./configure
make install

В директории: ssdpd-1.01/rc.d - скрипт rc.d для FreeBSD.
ssdpd-1.01/upnp/ - положить/сделать симлинк в wwwroot веб сервера.
ssdpd-1.01/upnp/descr - содержит xml и wsdl файлы для описания UPnP устройства MediaServer версии 3 и нескольких сервисов для него.
ssdpd-1.01/ssdpd.conf - пример конфиг файла.

Настройка

Скачать

Поддержка

software/ssdpd/index.1414032764.txt.gz · Last modified: 2014/10/23 02:52 (external edit)