User Tools

Site Tools


en:software:ssdpd:config

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

en:software:ssdpd:config [2014/10/23 00:16] (current)
root created
Line 1: Line 1:
 +FIXME **This page is not fully translated, yet. Please help completing the translation.**\\ //(remove this paragraph once the translation is finished)//
 +
 +В ssdpd.conf - файл конфигурации,​ подробнее ниже.\\
 +
 +ssdpd и веб сервер могут быть запущены на разных серверах,​ можно запускать ssdpd на нескольких серверах (резервирование),​ важно чтобы root.xml был везде одинаковый.\\
 +
 +SSDPd и nginx должны отдавать клиентам одинаковый XML файл с описанием UPnP устройства и его сервисов,​ далее везде root.xml\\
 +/upnp/ - положить/​сделать симлинк в wwwroot веб сервера.\\
 +/​upnp/​control/​ContentDirectory.php - отредактировать в начале файла переменные с путями и разрешить выполнение.\\
 +Нужен PHP с поддержкой SOAP.\\
 +
 +Если потребуется изменить пути то нужно редактировать следующие файлы:
 +  * ssdpd.conf
 +  * nginx.conf
 +  * /​upnp/​descr/​root.xml
 +  * /​upnp/​control/​ContentDirectory.php
 +
 +
 +====== ssdpd.conf ======
 +
 +
 +===== log =====
 +Лог файл.
 +
 +<code xml><​log>​
 + <​file>/​root/​msd/​msd.log</​file>​
 +</​log></​code>​
 +
 +==== file ====
 +Имя файла. Запись производится если в командной строке не указан -v, иначе лог пишется в stdout.
 +
 +----
 +
 +
 +===== skt =====
 +Настройки сокета.
 +
 +<code xml><​skt>​
 + <​rcvBuf>​64</​rcvBuf>​
 + <​sndBuf>​64</​sndBuf>​
 + <​ttl>​2</​ttl>​
 + <​hopLimit>​5</​hopLimit>​
 +</​skt></​code>​
 +
 +==== rcvBuf ====
 +Максимальный размер буфера для приёма (SO_RCVBUF).
 +
 +==== sndBuf ====
 +Максимальный размер буфера для отправки (SO_SNDBUF).
 +
 +==== ttl ====
 +TTL - Только для IPv4. IP_MULTICAST_TTL
 +
 +==== hopLimit ====
 +TTL - Только для IPv6. IPV6_MULTICAST_HOPS
 +
 +----
 +
 +
 +===== Общие настройки =====
 +
 +<code xml><​flagEnableIPv4/>​
 +<​flagEnableIPv6/>​
 +<​httpServer></​httpServer>​
 +</​code>​
 +
 +==== flagEnableIPv4 ====
 +Включить IPv4.
 +
 +==== flagEnableIPv6 ====
 +Включить IPv6.
 +
 +==== httpServer ====
 +Если не задано или пустое то автоматически генерируется поле Server вида: '​OS/​version UPnP/1.1 product/​version'​
 +
 +----
 +
 +
 +===== announceList =====
 +Список устройств для анонсирования.\\
 +
 +<code xml><​announceList>​
 + <​announce>​
 + <​xmlDevDescr>/​usr/​local/​www/​upnp/​descr/​root.xml</​xmlDevDescr>​
 + <​maxAge>​1800</​maxAge>​
 + <​interval>​10</​interval>​
 + <​ifList>​
 + <​if>​
 + <​ifName>​vlan777</​ifName>​
 + <​DevDescrURL4><​![CDATA[http://​0.0.0.0:​80/​upnp/​descr/​root.xml]]></​DevDescrURL4>​
 + <​DevDescrURL6><​![CDATA[http://​[::​]:​80/​upnp/​descr/​root.xml]]></​DevDescrURL6>​
 + </​if>​
 + </​ifList>​
 + </​announce>​
 +</​announceList></​code>​
 +
 +==== announce ====
 +Описание UPnP устройства для анонсирования.
 +
 +=== xmlDevDescr ===
 +Путь к XML файлу с описанием устройства.\\
 +SSDPd загружает из этого файла описание устройства и его сервисов.\\
 +
 +=== maxAge ===
 +Время в секундах,​ используется клиентами для кеширования.\\
 +
 +=== interval ===
 +Время в секундах,​ указывает как часто SSDPd посылает анонс в сеть.\\
 +
 +=== ifList, if ===
 +Список сетевых интерфейсов для отсылки анонсов данного устройства.\\
 +
 +== ifName ==
 +Имя сетевого интерфейса для отсылки анонсов.\\
 +
 +== DevDescrURL4 ==
 +URL для IPv4 анонсов.\\
 +Адрес "​0.0.0.0"​ автоматически заменяется на IPv4 адрес на данном интерфейсе.\\
 +URL должен указывать на файл с XML описанием UPnP устройства и его сервисов,​ это должен быть тот же самый файл что и [[ru:​software:​ssdpd:​config#​xmlDevDescr|xmlDevDescr]] только доступный все по протоколу HTTP.
 +
 +== DevDescrURL6 ==
 +Аналогично DevDescrURL4.\\
 +Адрес "​[::​]"​ автоматически заменяется на IPv6 адрес на данном интерфейсе.\\
 +
 +----
 +
 +
 +
 +
 +
 +====== Настройка nginx ======
 +Здесь самый минимум настроек,​ всё что связано с безопасностью/​доступом,​ логами удалено.
 +
 +Расшариваем папку с контентом:​
 +<​code>​
 +# allow files listing: DataStore
 +location ^~ /DataStore/ {
 + root /usr/;
 + add_header TransferMode.DLNA.ORG '​Streaming';​
 + add_header ContentFeatures.DLNA.ORG '​DLNA.ORG_OP=01;​DLNA.ORG_CI=0;​DLNA.ORG_FLAGS=01700000000000000000000000000000';​
 +}
 +</​code>​
 +Дополнительные заголовки часто требуются UPnP/DLNA клиентам для работы.
 +
 +Поддержка UPnP SUBSCRIBE/​UNSUBSCRIBE (они нужны для VLC и WMP)
 +<​code>​
 +# UPnP SUBSCRIBE/​UNSUBSCRIBE handle
 +location ^~ /​upnp/​subscribe/​ {
 + if ($request_method = SUBSCRIBE) {
 + add_header Pragma "​no-cache";​
 + add_header SID "​uuid:​7CF21CB0-2266-47BE-A608-3CC1F5210BB4";​
 + add_header Timeout "​Second-1800";​
 + return 200;
 + }
 + if ($request_method = UNSUBSCRIBE) {
 + add_header Pragma "​no-cache";​
 + return 200;
 + }
 +}</​code>​
 +Далее можно будет превратить их в POST с доп заголовком и передать в скрипт,​ пример описан здесь: http://​serverfault.com/​questions/​347663/​nginx-convert-head-to-get-requests\\
 +
 +Разрешаем PHP для UPnP скриптов:​
 +<​code>​
 +# php for: UPnP
 +location ^~ /​upnp/​control/​ {
 + root /​usr/​local/​www/;​
 +
 + try_files $fastcgi_script_name = 404;
 + #​fastcgi_pass 127.0.0.1:​54475;​
 + fastcgi_pass unix:/​var/​run/​spawn-fcgi.sock;​
 + fastcgi_connect_timeout 30;
 + fastcgi_read_timeout 600;​
 + fastcgi_send_timeout 600;​
 + fastcgi_ignore_client_abort off;
 + #​fastcgi_cache_valid any 10s;
 + fastcgi_intercept_errors off;
 + include fastcgi_params;​
 + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;​
 +}</​code>​
 +
 +
 +
 +====== Расширенная настройка и кастомизация под себя ======
 +В файле root.xml\\
 +**root/​device**\\
 +friendlyName - отображаемое имя UPnP устройства;​\\
 +UDN - UUID идетификатор устройства,​ его нужно изменять только если хотим больше одного устройства (или кто то уже его занял),​ длинна обязательно 36 символов;​\\
 +presentationURL - можно указать там страничку с описанием или админкой.\\
 +
 +**root/​device/​iconList/​icon**\\
 +url - URL на png иконку 48х48;\\
 +
 +**root/​device/​serviceList/​service**\\
 +SCPDURL - URL до хмл файла с описанием;​\\
 +controlURL - URL куда будут прилетать HTTP POST запросы к сервисам;​\\
 +eventSubURL - URL куда будут идти HTTP SUBSCRIBE/​UNSUBSCRIBE,​ можно оставить пустым.\\
 +
 +**root.xml описано ТРИ сервиса,​ нужно править для всех трёх!**\\
  
en/software/ssdpd/config.txt · Last modified: 2014/10/23 00:16 by root