This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
software:ssdpd:config [2014/10/22 21:05] – root | software:ssdpd:config [2022/02/04 18:43] – ↷ Page moved from ru:software:ssdpd:config to software:ssdpd:config root | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Настройка ====== | + | В ssdpd.conf |
- | В ssdpd.conf указываем | + | |
ssdpd и веб сервер могут быть запущены на разных серверах, | ssdpd и веб сервер могут быть запущены на разных серверах, | ||
+ | SSDPd и nginx должны отдавать клиентам одинаковый XML файл с описанием UPnP устройства и его сервисов, | ||
/upnp/ - положить/ | /upnp/ - положить/ | ||
/ | / | ||
Нужен PHP с поддержкой SOAP.\\ | Нужен PHP с поддержкой SOAP.\\ | ||
+ | Если потребуется изменить пути то нужно редактировать следующие файлы: | ||
+ | * ssdpd.conf | ||
+ | * nginx.conf | ||
+ | * / | ||
+ | * / | ||
- | ===== ssdpd.conf ===== | ||
+ | ====== Настройка сети ====== | ||
- | ==== log ==== | + | ===== IPv4 ===== |
+ | * разрешить IGMP с опциями на вход и на выход с адресом назначения: | ||
+ | * разрешить UDP на вход с адресом назначения: | ||
+ | |||
+ | < | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | ===== IPv6 ===== | ||
+ | * разрешить icmp6 с опциями на вход и на выход | ||
+ | * разрешить UDP на вход с адресом назначения: | ||
+ | |||
+ | < | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ====== ssdpd.conf ====== | ||
+ | |||
+ | ===== log ===== | ||
Лог файл. | Лог файл. | ||
Line 19: | Line 48: | ||
</ | </ | ||
- | === file === | + | ==== file ==== |
Имя файла. Запись производится если в командной строке не указан -v, иначе лог пишется в stdout. | Имя файла. Запись производится если в командной строке не указан -v, иначе лог пишется в stdout. | ||
Line 25: | Line 54: | ||
- | ==== skt ==== | + | ===== skt ===== |
Настройки сокета. | Настройки сокета. | ||
Line 35: | Line 64: | ||
</ | </ | ||
- | === rcvBuf === | + | ==== rcvBuf |
Максимальный размер буфера для приёма (SO_RCVBUF). | Максимальный размер буфера для приёма (SO_RCVBUF). | ||
- | === sndBuf === | + | ==== sndBuf |
Максимальный размер буфера для отправки (SO_SNDBUF). | Максимальный размер буфера для отправки (SO_SNDBUF). | ||
- | === ttl === | + | ==== ttl ==== |
TTL - Только для IPv4. IP_MULTICAST_TTL | TTL - Только для IPv4. IP_MULTICAST_TTL | ||
- | === hopLimit === | + | ==== hopLimit |
TTL - Только для IPv6. IPV6_MULTICAST_HOPS | TTL - Только для IPv6. IPV6_MULTICAST_HOPS | ||
Line 50: | Line 79: | ||
- | ==== Общие настройки ==== | + | ===== Общие настройки |
<code xml>< | <code xml>< | ||
Line 57: | Line 86: | ||
</ | </ | ||
- | === flagEnableIPv4 === | + | ==== flagEnableIPv4 |
Включить IPv4. | Включить IPv4. | ||
- | === flagEnableIPv6 === | + | ==== flagEnableIPv6 |
Включить IPv6. | Включить IPv6. | ||
- | === httpServer === | + | ==== httpServer |
Если не задано или пустое то автоматически генерируется поле Server вида: ' | Если не задано или пустое то автоматически генерируется поле Server вида: ' | ||
Line 69: | Line 98: | ||
- | ==== announceList ==== | + | ===== announceList |
Список устройств для анонсирования.\\ | Список устройств для анонсирования.\\ | ||
Line 85: | Line 114: | ||
</ | </ | ||
</ | </ | ||
- | </ | + | </ |
- | </ | + | |
- | === announce === | + | ==== announce |
Описание UPnP устройства для анонсирования. | Описание UPnP устройства для анонсирования. | ||
- | == xmlDevDescr == | + | === xmlDevDescr |
Путь к XML файлу с описанием устройства.\\ | Путь к XML файлу с описанием устройства.\\ | ||
SSDPd загружает из этого файла описание устройства и его сервисов.\\ | SSDPd загружает из этого файла описание устройства и его сервисов.\\ | ||
- | == maxAge == | + | === maxAge |
Время в секундах, | Время в секундах, | ||
- | == interval == | + | === interval |
Время в секундах, | Время в секундах, | ||
- | == ifList, if == | + | === ifList, if === |
Список сетевых интерфейсов для отсылки анонсов данного устройства.\\ | Список сетевых интерфейсов для отсылки анонсов данного устройства.\\ | ||
- | = ifName = | + | == ifName |
- | Имя сетевого интерфейса для отсылки анонсов.\\ | + | Имя сетевого интерфейса для отсылки анонсов, так как его выдает ifconfig, например: |
- | = DevDescrURL4 = | + | == DevDescrURL4 |
URL для IPv4 анонсов.\\ | URL для IPv4 анонсов.\\ | ||
Адрес " | Адрес " | ||
URL должен указывать на файл с XML описанием UPnP устройства и его сервисов, | URL должен указывать на файл с XML описанием UPnP устройства и его сервисов, | ||
+ | == DevDescrURL6 == | ||
+ | Аналогично DevDescrURL4.\\ | ||
+ | Адрес " | ||
---- | ---- | ||
Line 120: | Line 150: | ||
- | ===== Настройка nginx ===== | + | ====== Настройка nginx ====== |
Здесь самый минимум настроек, | Здесь самый минимум настроек, | ||
Расшариваем папку с контентом: | Расшариваем папку с контентом: | ||
- | [code] | + | <code> |
- | # allow files listing: DataStore | + | # allow files listing: DataStore |
- | location ^~ /DataStore/ { | + | location ^~ /DataStore/ { |
- | root /usr/; | + | root /usr/; |
- | + | add_header TransferMode.DLNA.ORG ' | |
- | add_header TransferMode.DLNA.ORG ' | + | add_header ContentFeatures.DLNA.ORG ' |
- | add_header ContentFeatures.DLNA.ORG ' | + | } |
- | } | + | </code> |
- | [/code] | + | Дополнительные заголовки часто требуются UPnP/DLNA клиентам для работы. |
Поддержка UPnP SUBSCRIBE/ | Поддержка UPnP SUBSCRIBE/ | ||
- | [code] | + | <code> |
- | # UPnP SUBSCRIBE/ | + | # UPnP SUBSCRIBE/ |
- | location ^~ / | + | location ^~ / |
- | if ($request_method = SUBSCRIBE) { | + | if ($request_method = SUBSCRIBE) { |
- | add_header Pragma " | + | add_header Pragma " |
- | add_header SID " | + | add_header SID " |
- | add_header Timeout " | + | add_header Timeout " |
- | return 200; | + | return 200; |
- | } | + | } |
- | if ($request_method = UNSUBSCRIBE) { | + | if ($request_method = UNSUBSCRIBE) { |
- | add_header Pragma " | + | add_header Pragma " |
- | return 200; | + | return 200; |
- | } | + | } |
- | } | + | }</code> |
- | [/code] | + | Если потребуется обрабатывать эти запросы в скриптах, |
- | Далее можно | + | |
Разрешаем PHP для UPnP скриптов: | Разрешаем PHP для UPnP скриптов: | ||
- | [code] | + | <code> |
- | # php for: UPnP | + | # php for: UPnP |
- | location ^~ / | + | location ^~ / |
- | root / | + | root / |
- | + | ||
- | include fastcgi_params; | + | |
- | # | + | |
- | fastcgi_pass unix:/ | + | |
- | fastcgi_connect_timeout 30; | + | |
- | fastcgi_read_timeout 600; | + | |
- | fastcgi_send_timeout 600; | + | |
- | fastcgi_ignore_client_abort off; | + | |
- | # | + | |
- | fastcgi_intercept_errors off; | + | |
- | fastcgi_param SCRIPT_FILENAME | + | |
- | } | + | |
- | [/code] | + | |
+ | try_files $fastcgi_script_name = 404; | ||
+ | # | ||
+ | fastcgi_pass unix:/ | ||
+ | fastcgi_connect_timeout 30; | ||
+ | fastcgi_read_timeout 600; | ||
+ | fastcgi_send_timeout 600; | ||
+ | fastcgi_ignore_client_abort off; | ||
+ | # | ||
+ | fastcgi_intercept_errors off; | ||
+ | include fastcgi_params; | ||
+ | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
+ | }</ | ||
- | ==== Расширенная настройка и кастомизация под себя ==== | ||
- | В файле [b]root.xml[/ | ||
- | [b]root/ | ||
- | friendlyName - отображаемое имя UPnP устройства; | ||
- | UDN - UUID идетификатор устройства, | ||
- | presentationURL - можно указать там страничку с описанием или админкой | ||
- | [b]root/device/ | + | ====== Расширенная настройка и кастомизация под себя ====== |
- | url - URL на png иконку 48х48; | + | В файле root.xml\\ |
+ | **root/device**\\ | ||
+ | friendlyName | ||
+ | UDN - UUID идетификатор устройства, | ||
+ | presentationURL - можно указать там страничку с описанием или админкой.\\ | ||
- | [b]root/ | + | **root/ |
- | SCPDURL | + | url - URL на png иконку 48х48;\\ |
- | controlURL - URL куда будут прилетать HTTP POST запросы | + | |
- | eventSubURL - URL куда будут идти HTTP SUBSCRIBE/ | + | |
- | [b]root.xml описано ТРИ сервиса, | + | |
+ | **root/ | ||
+ | SCPDURL - URL до хмл файла с описанием; | ||
+ | controlURL - URL куда будут прилетать HTTP POST запросы к сервисам; | ||
+ | eventSubURL - URL куда будут идти HTTP SUBSCRIBE/ | ||
+ | **root.xml описано ТРИ сервиса, | ||