mirror of
https://github.com/DigitalDevices/octonet.git
synced 2023-10-10 13:36:52 +02:00
90 lines
2.9 KiB
Lua
90 lines
2.9 KiB
Lua
|
|
||
|
ConnectionManager = {}
|
||
|
|
||
|
function ConnectionManager:Description()
|
||
|
t = ""
|
||
|
local f = io.open("ConnectionManager.xml","r")
|
||
|
if not f then os.exit() end
|
||
|
while true do
|
||
|
local line = f:read()
|
||
|
if not line then break end
|
||
|
t = t .. line .. "\r\n"
|
||
|
end
|
||
|
f:close()
|
||
|
return t
|
||
|
end
|
||
|
|
||
|
local dlnaprofile = 'DLNA.ORG_PN=MPEG_TS;DLNA.ORG_OP=00;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000'
|
||
|
local dlnaschema = ' xmlns:dlna="urn:schemas-dlna-org:metadata-1-0"'
|
||
|
|
||
|
if DisableDLNA then
|
||
|
dlnaprofile = '*'
|
||
|
dlnaschema = ''
|
||
|
end
|
||
|
|
||
|
local Schema = 'xmlns:u="urn:schemas-upnp-org:service:ConnectionManager:1"'
|
||
|
|
||
|
|
||
|
local ProtocolInfo = 'rtsp-rtp-udp:*:video/mp2t:'..dlnaprofile
|
||
|
.. ','..'rtsp-rtp-udp:*:audio/mp2t:'..dlnaprofile
|
||
|
-- ','..'http-get:*:video/x-ms-wmv:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000' -- TEST
|
||
|
|
||
|
|
||
|
function ConnectionManager:Invoke(client,Attributes,Request)
|
||
|
local Action = string.match(Attributes["SOAPACTION"],".+%#([%a%d%-_]+)")
|
||
|
local Host = tostring(Attributes["host"])
|
||
|
|
||
|
print(Host,"ConnectionManager",Action)
|
||
|
|
||
|
if Action == "GetProtocolInfo" then
|
||
|
UPnP:SendResponse(client,UPnP:CreateResponse(Schema,Action,{{ n = "Source", v = ProtocolInfo }, { n = "Sink", v = "" }}))
|
||
|
elseif Action == "GetCurrentConnectionIDs" then
|
||
|
UPnP:SendResponse(client,UPnP:CreateResponse(Schema,Action,{{ n = "ConnectionIDs", v = "0" }}))
|
||
|
elseif Action == "GetCurrentConnectionInfo" then
|
||
|
UPnP:SendSoapError(client,706)
|
||
|
else
|
||
|
UPnP:SendSoapError(client,401)
|
||
|
end
|
||
|
return
|
||
|
end
|
||
|
|
||
|
|
||
|
function ConnectionManager:Subscribe(client,callback,timeout)
|
||
|
local r = "HTTP/1.1 200 OK\r\n"
|
||
|
.. 'Content-Type: text/xml; charset="utf-8"\r\n'
|
||
|
.. "Server: "..UPnP.Server.."\r\n"
|
||
|
.. "SID: uuid:50c95801-e839-4b96-b7ae-779d989e1399\r\n"
|
||
|
.. "Timeout: Second-1800\r\n"
|
||
|
.. "Content-Length: 0\r\n"
|
||
|
.. "Connection: close\r\n"
|
||
|
.. "EXT:\r\n"
|
||
|
.. "\r\n"
|
||
|
client:send(r)
|
||
|
|
||
|
local ipaddr,port = client:getpeername()
|
||
|
local Args = { { n = "SourceProtocolInfo", v = ProtocolInfo }, { n = "SourceProtocolInfo", v = "" }, { n = "CurrentConnectionIDs", v = "0" } }
|
||
|
UPnP:SendEvent(callback,"50c95801-e839-4b96-b7ae-779d989e1399",0,Args)
|
||
|
end
|
||
|
|
||
|
function ConnectionManager:Renew(client,sid,timeout)
|
||
|
local r = "HTTP/1.1 200 OK\r\n"
|
||
|
.. 'Content-Type: text/xml; charset="utf-8"\r\n'
|
||
|
.. "Server: "..UPnP.Server.."\r\n"
|
||
|
.. "SID: uuid:50c95801-e839-4b96-b7ae-779d989e1399\r\n"
|
||
|
.. "Timeout: Second-1800\r\n"
|
||
|
.. "Content-Length: 0\r\n"
|
||
|
.. "Connection: close\r\n"
|
||
|
.. "EXT:\r\n"
|
||
|
.. "\r\n"
|
||
|
client:send(r)
|
||
|
end
|
||
|
|
||
|
function ConnectionManager:Unsubscribe(client,sid)
|
||
|
local r = "HTTP/1.1 200 OK\r\n"
|
||
|
.. "Server: "..UPnP.Server.."\r\n"
|
||
|
.. "Connection: close\r\n"
|
||
|
.. "\r\n"
|
||
|
client:send(r)
|
||
|
end
|
||
|
|
||
|
return ConnectionManager
|