miniupnp/minissdpd
Thomas Bernard b24d44c7f5
minissdpd: sample code in Python
2021-01-07 19:43:31 +01:00
..
.gitignore minissdpd: add a notification mode. Bump to version 1.5 2016-01-13 16:14:02 +01:00
Changelog.txt send the startup M-SEARCH message on the right interface(s) 2020-06-06 22:21:43 +02:00
LICENSE 2019 => 2020 2020-10-31 11:36:06 +01:00
Makefile minissdpd: update config.h. Automatically update version in config.h 2018-02-23 15:00:18 +01:00
README =>2017. http => https 2017-07-06 00:03:12 +02:00
README.fr minissdpd: add a notification mode. Bump to version 1.5 2016-01-13 16:14:02 +01:00
VERSION minissdpd: add a notification mode. Bump to version 1.5 2016-01-13 16:14:02 +01:00
asyncsendto.c update minissdpd/asyncsendto.c 2020-06-06 21:54:58 +02:00
asyncsendto.h minissdpd: update Changelog. minor modifs 2018-02-23 14:02:23 +01:00
codelength.h DECODELENGTH_READ 2015-07-15 18:11:27 +02:00
config.h send the startup M-SEARCH message on the right interface(s) 2020-06-06 22:21:43 +02:00
daemonize.c no more strlen(xxx) == 0. 2018-04-20 17:19:52 +02:00
daemonize.h Rename all include guards to not clash with C99 (7.1.3 Reserved identifiers). 2012-09-20 17:52:51 -03:00
getifaddr.c minissdpd/getifaddr.c: update 2019-08-24 11:06:49 +02:00
getifaddr.h minissdpd: update getifaddr.c/.h 2019-02-10 16:06:34 +01:00
getroute.c Fixes #290 2018-03-12 20:12:01 +01:00
getroute.h minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
ifacewatch.c minissdpd: remove warning when IPV6 is disabled 2018-03-12 20:14:30 +01:00
ifacewatch.h minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
listifaces.c fix realloc failure issues detected thanks to cppcheck 2015-02-08 10:23:22 +01:00
minissdpd.1 minissdpd/minissdpd.1: update man page 2018-02-03 01:26:54 +08:00
minissdpd.c improve syslog 2020-06-08 13:17:16 +02:00
minissdpd.init.d.script Update minissdpd.init.d.script 2015-05-18 15:53:17 -05:00
minissdpdtypes.h minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
openssdpsocket.c improve syslog 2020-06-08 13:17:16 +02:00
openssdpsocket.h minissdpd: set multicast TTL to 2 by default and configurable 2015-07-21 17:40:51 +02:00
printresponse.c improve printresponse() to consume all buffer bytes 2016-01-17 19:36:11 +01:00
printresponse.h minissdpd: add a notification mode. Bump to version 1.5 2016-01-13 16:14:02 +01:00
showminissdpdnotif.c handle SIGTERM as well 2016-01-18 00:19:32 +01:00
submit_to_minissdpd.py minissdpd: sample code in Python 2021-01-07 19:43:31 +01:00
testcodelength.c => 2018 + https 2018-02-03 22:56:41 +01:00
testminissdpd.c => 2018 + https 2018-02-03 22:56:41 +01:00
testminissdpd.sh Fix OS detection for Debian kFreeBSD 2018-05-08 21:59:15 +08:00
testminissdpdnotif.sh Update Changelogs + 2019 2019-02-10 16:11:16 +01:00
upnputils.c minissdpd/upnputils.c: includes for gettimeofday() etc. 2019-08-24 11:07:47 +02:00
upnputils.h minissdpd: use upnp_gettimeofday() 2019-02-10 16:03:26 +01:00

README

 * MiniSSDPd - SSDP daemon

(c) Thomas Bernard
http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
https://github.com/miniupnp/miniupnp/

MiniSSDPd is a daemon that :
1 - keeps track of all UPnP devices announcing themselves on the network.
its database can be queried by local processes using a protocol based on
a unix socket. That enables local processes to quickly discover UPnP devices
without broadcasting SSDP message and waiting several seconds for a response.
2 - keeps a database of local UPnP devices hosted on the machine and
answering SSDP searchs on their behalf. It enables to run several UPnP devices,
like an IGD and a MediaServer, on the same machine.

to build, use GNU Make.


* protocol :

Connect to the unix socket.
Sent request, get response.
close unix socket connection.

* Request format :
1st byte : request type
           0 - version
           1 - type
           2 - USN (unique id)
           3 - everything
           4 - submit service (see below)
           5 - switch connection to notification mode
n bytes : string length : 1 byte if < 128 else the upper bit indicate that
one additional byte should be read, etc. (see codelength.h)
n bytes = string

Response format :

request type 0 (version) :
n bytes string length
n bytes = version string

request type 1 / 2 / 3 / 5 :
1st byte : number of services/devices, from 0 to 254.
           255 is a special value, see below
For each service/device :
URL :
  n bytes string length
  n bytes = Location string
ST:
  n bytes string length
  n bytes = type string
USN:
  n bytes string length
  n bytes = identifier string

if the 1st byte is 255, the format is as follows :
1st byte = 255
2nd byte = notification type (1=NEW, 2=UPDATE, 3=REMOVE)
3rd byte = number of services/devices, from 0 to 255.


request type 4 = submit service
1st byte  = 4
(k,n) bytes : length and string "ST" (service type)
(k,n) bytes : length and string "USN"
(k,n) bytes : length and string "Server"
(k,n) bytes : length and string "Location"
No answer