Site Tools


software:ssdpd:config

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
software:ssdpd:config [2016/02/09 22:31]
– [ifList, if] root
software:ssdpd:config [2022/02/04 18:43]
– removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-В 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 
- 
- 
-====== Настройка сети ====== 
- 
-===== IPv4 ===== 
-  * разрешить IGMP с опциями на вход и на выход с адресом назначения: 224.0.0.0/4 
-  * разрешить UDP на вход с адресом назначения: 224.0.0.0/4, на выход с любым адресом 
- 
-<code>pass out quick inet proto udp to 224.0.0.0/4 no state allow-opts 
-pass out quick inet proto igmp to 224.0.0.0/4 no state allow-opts 
-pass in quick inet proto udp to 224.0.0.0/4 no state # Allow receive multicast 
-pass in quick inet proto igmp to 224.0.0.0/4 no state allow-opts 
-</code> 
- 
-===== IPv6 ===== 
-  * разрешить icmp6 с опциями на вход и на выход 
-  * разрешить UDP на вход с адресом назначения: ff00::/8, на выход с любым адресом 
- 
-<code>pass out quick inet6 proto udp to ff00::/8 no state allow-opts # Allow send multicast 
-pass out quick inet6 proto icmp6 no state allow-opts # mld (igmp6) also here 
-pass in quick inet6 proto udp to ff00::/8 no state # Allow receive multicast 
-pass in quick inet6 proto icmp6 no state allow-opts # mld (igmp6) also here 
-</code> 
- 
- 
- 
-====== 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 == 
-Имя сетевого интерфейса для отсылки анонсов, так как его выдает ifconfig, например: eth0, re0, em1.\\ 
- 
-== 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 описано ТРИ сервиса, нужно править для всех трёх!**\\ 
  
software/ssdpd/config.txt · Last modified: 2022/02/04 18:43 by root