package zutil.net.upnp; import java.util.Map; import java.util.UUID; import zutil.net.http.HttpPrintStream; /** * This class is a UPnP AV Media Server that handles all the * other UPnP services * * @author Ziver */ public class UPnPMediaServer extends UPnPRootDevice{ public static final String RELATIVE_URL = "upnp/rootdev"; private String url; private String uuid; public UPnPMediaServer(String location){ url = location; } public void respond(HttpPrintStream out, Map clientInfo, Map session, Map cookie, Map request) { out.enableBuffering(true); out.setHeader("Content-Type", "text/xml"); out.println(""); out.println(""); out.println(" "); out.println(" 1"); out.println(" 0"); out.println(" "); out.println(" "+url+"");//"+ssdp.getLocation()+" out.println(" "); out.println(" urn:schemas-upnp-org:device:MediaServer:1"); out.println(" ZupNP AV Media Server"); out.println(" Ziver Koc"); out.println(" http://ziver.koc.se"); out.println(""); out.println(" ZupNP Server"); out.println(" UPnP AV Media Server"); out.println(" 0.1"); out.println(" "+getUUID()+""); out.println(" "); out.println(" "); out.println(" urn:schemas-upnp-org:service:ConnectionManager:1"); out.println(" urn:upnp-org:serviceId:CMGR_1-0"); out.println(" CMGR_Control/GetServDesc"); out.println(" CMGR_Control"); out.println(" CMGR_Event"); out.println(" "); out.println(" "); out.println(" urn:schemas-upnp-org:service:ContentDirectory:1"); out.println(" urn:upnp-org:serviceId:CDS_1-0"); out.println(" SCP/ContentDir"); out.println(" Action/ContentDir"); out.println(" Event/ContentDir"); out.println(" "); out.println(" "); out.println(" "); out.println(""); out.flush(); } public long getExpirationTime() { return 60*30; // 30min } public String getLocation() { return url+"RootDesc"; } public String getSearchTarget() { return "upnp:rootdevice"; } public String getUSN() { return getUUID()+"::upnp:rootdevice"; } public String getUUID() { if(uuid==null){ uuid = "uuid:"+UUID.nameUUIDFromBytes( this.getClass().toString().getBytes() ); //(url+Math.random()).getBytes() } return uuid; } }