This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Last revisionBoth sides next revision | ||
software:ssdpd:config [2022/02/04 18:43] – removed - external edit (Unknown date) 127.0.0.1 | 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 и веб сервер могут быть запущены на разных серверах, | ||
+ | |||
+ | SSDPd и nginx должны отдавать клиентам одинаковый XML файл с описанием UPnP устройства и его сервисов, | ||
+ | /upnp/ - положить/ | ||
+ | / | ||
+ | Нужен PHP с поддержкой SOAP.\\ | ||
+ | |||
+ | Если потребуется изменить пути то нужно редактировать следующие файлы: | ||
+ | * ssdpd.conf | ||
+ | * nginx.conf | ||
+ | * / | ||
+ | * / | ||
+ | |||
+ | |||
+ | ====== Настройка сети ====== | ||
+ | |||
+ | ===== 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 ===== | ||
+ | Лог файл. | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ==== file ==== | ||
+ | Имя файла. Запись производится если в командной строке не указан -v, иначе лог пишется в stdout. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ===== skt ===== | ||
+ | Настройки сокета. | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ==== rcvBuf ==== | ||
+ | Максимальный размер буфера для приёма (SO_RCVBUF). | ||
+ | |||
+ | ==== sndBuf ==== | ||
+ | Максимальный размер буфера для отправки (SO_SNDBUF). | ||
+ | |||
+ | ==== ttl ==== | ||
+ | TTL - Только для IPv4. IP_MULTICAST_TTL | ||
+ | |||
+ | ==== hopLimit ==== | ||
+ | TTL - Только для IPv6. IPV6_MULTICAST_HOPS | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ===== Общие настройки ===== | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ==== flagEnableIPv4 ==== | ||
+ | Включить IPv4. | ||
+ | |||
+ | ==== flagEnableIPv6 ==== | ||
+ | Включить IPv6. | ||
+ | |||
+ | ==== httpServer ==== | ||
+ | Если не задано или пустое то автоматически генерируется поле Server вида: ' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ===== announceList ===== | ||
+ | Список устройств для анонсирования.\\ | ||
+ | |||
+ | <code xml>< | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== announce ==== | ||
+ | Описание UPnP устройства для анонсирования. | ||
+ | |||
+ | === xmlDevDescr === | ||
+ | Путь к XML файлу с описанием устройства.\\ | ||
+ | SSDPd загружает из этого файла описание устройства и его сервисов.\\ | ||
+ | |||
+ | === maxAge === | ||
+ | Время в секундах, | ||
+ | |||
+ | === interval === | ||
+ | Время в секундах, | ||
+ | |||
+ | === ifList, if === | ||
+ | Список сетевых интерфейсов для отсылки анонсов данного устройства.\\ | ||
+ | |||
+ | == ifName == | ||
+ | Имя сетевого интерфейса для отсылки анонсов, | ||
+ | |||
+ | == DevDescrURL4 == | ||
+ | URL для IPv4 анонсов.\\ | ||
+ | Адрес " | ||
+ | URL должен указывать на файл с XML описанием UPnP устройства и его сервисов, | ||
+ | |||
+ | == DevDescrURL6 == | ||
+ | Аналогично DevDescrURL4.\\ | ||
+ | Адрес " | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== Настройка nginx ====== | ||
+ | Здесь самый минимум настроек, | ||
+ | |||
+ | Расшариваем папку с контентом: | ||
+ | < | ||
+ | # allow files listing: DataStore | ||
+ | location ^~ /DataStore/ { | ||
+ | root /usr/; | ||
+ | add_header TransferMode.DLNA.ORG ' | ||
+ | add_header ContentFeatures.DLNA.ORG ' | ||
+ | } | ||
+ | </ | ||
+ | Дополнительные заголовки часто требуются UPnP/DLNA клиентам для работы. | ||
+ | |||
+ | Поддержка UPnP SUBSCRIBE/ | ||
+ | < | ||
+ | # UPnP SUBSCRIBE/ | ||
+ | location ^~ / | ||
+ | if ($request_method = SUBSCRIBE) { | ||
+ | add_header Pragma " | ||
+ | add_header SID " | ||
+ | add_header Timeout " | ||
+ | return 200; | ||
+ | } | ||
+ | if ($request_method = UNSUBSCRIBE) { | ||
+ | add_header Pragma " | ||
+ | return 200; | ||
+ | } | ||
+ | }</ | ||
+ | Если потребуется обрабатывать эти запросы в скриптах, | ||
+ | |||
+ | Разрешаем PHP для UPnP скриптов: | ||
+ | < | ||
+ | # php for: UPnP | ||
+ | location ^~ / | ||
+ | root / | ||
+ | |||
+ | 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; | ||
+ | }</ | ||
+ | |||
+ | |||
+ | |||
+ | ====== Расширенная настройка и кастомизация под себя ====== | ||
+ | В файле root.xml\\ | ||
+ | **root/ | ||
+ | friendlyName - отображаемое имя UPnP устройства; | ||
+ | UDN - UUID идетификатор устройства, | ||
+ | presentationURL - можно указать там страничку с описанием или админкой.\\ | ||
+ | |||
+ | **root/ | ||
+ | url - URL на png иконку 48х48;\\ | ||
+ | |||
+ | **root/ | ||
+ | SCPDURL - URL до хмл файла с описанием; | ||
+ | controlURL - URL куда будут прилетать HTTP POST запросы к сервисам; | ||
+ | eventSubURL - URL куда будут идти HTTP SUBSCRIBE/ | ||
+ | |||
+ | **root.xml описано ТРИ сервиса, | ||