📄 crenderer.cc.svn-base
字号:
fputs("#MPLAYER_BIN=/usr/bin/mplayer\n\n",file); fclose(file); myfile.open(home_conf,ifstream::in); //exit(1); } string line; string str_xmlIcon = ""; string str_friendlyName = ""; string varName,value; while (! myfile.eof() ) { // Zeile holen getline (myfile,line); // Kommentare entfernen if (line.find_first_of('#') == 0) line=""; if (strcmp(line.c_str(),"")) { // Zeile trimmen trim(line); // Name und Wert holen getVarName(varName, line); getValue(value, line); //Hostname einkleben char hostname[50]; gethostname(hostname,50); str_replace("%h",hostname,value); // zuweisen if (!strcmp(varName.c_str(),"FRIENDLYNAME")) { sprintf(friendlyName,"%s",value.c_str()); } else if (!strcmp(varName.c_str(),"IP_ADDRESS")) { sprintf(ip_addr,"%s",value.c_str()); } else if (!strcmp(varName.c_str(),"MPLAYER_BIN")) { sprintf(mplayer_bin,"%s",value.c_str()); } } } myfile.close(); this->udn = strdup(this->get_uuid());// strcpy(udn,str_udn.c_str()); }IXML_Document* cRenderer::getDescriptionDoc(){ IXML_Document* descDoc; IXML_Node* node; IXML_Node* node2; IXML_Node* node3; IXML_Element* Ele; IXML_Element* Ele2; IXML_Element* Ele3; IXML_Element* Ele4; descDoc = ixmlParseBuffer("<root></root>"); node = ixmlNode_getFirstChild( (IXML_Node*) descDoc ); Ele = ixmlDocument_createElement( descDoc, "specVersion" ); Ele2 = ixmlDocument_createElement( descDoc, "major" ); node2 = ixmlDocument_createTextNode( descDoc, "1" ); ixmlNode_appendChild((IXML_Node*) Ele2, (IXML_Node*) node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "minor" ); node2 = ixmlDocument_createTextNode( descDoc, "0" ); ixmlNode_appendChild((IXML_Node*) Ele2, (IXML_Node*) node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); ixmlNode_appendChild(node, (IXML_Node*) Ele); // Beginn <device> Ele = ixmlDocument_createElement( descDoc, "device" ); Ele2 = ixmlDocument_createElement( descDoc, "deviceType" ); node2 = ixmlDocument_createTextNode(descDoc, "urn:schemas-upnp-org:device:MediaRenderer:1"); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "friendlyName" ); node2 = ixmlDocument_createTextNode(descDoc, this->friendlyName); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "manufacturer" ); node2 = ixmlDocument_createTextNode(descDoc, "PG483"); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "manufacturerURL" ); node2 = ixmlDocument_createTextNode(descDoc, "http://www.ubiquitous-media.de"); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "modelDescription" ); node2 = ixmlDocument_createTextNode(descDoc, "Linux-Renderer(C++,PG483) 1.0"); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "modelName" ); node2 = ixmlDocument_createTextNode(descDoc, "AV Renderer"); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "modelNumber" ); node2 = ixmlDocument_createTextNode(descDoc, "1.0"); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "modelURL" ); node2 = ixmlDocument_createTextNode(descDoc, "http://www.ubiquitous-media.de"); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "serialNumber" ); node2 = ixmlDocument_createTextNode(descDoc, "000000000001"); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "UDN" ); node2 = ixmlDocument_createTextNode(descDoc, this->udn); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "UPC" ); node2 = ixmlDocument_createTextNode(descDoc, "000000000001"); ixmlNode_appendChild((IXML_Node*) Ele2, node2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "iconList" ); Ele3 = ixmlDocument_createElement(descDoc, "icon"); Ele4 = ixmlDocument_createElement(descDoc, "mimeType"); node3 = ixmlDocument_createTextNode(descDoc, "image/gif"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "width"); node3 = ixmlDocument_createTextNode(descDoc, "32"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "height"); node3 = ixmlDocument_createTextNode(descDoc, "32"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "depth"); node3 = ixmlDocument_createTextNode(descDoc, "8"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "url"); node3 = ixmlDocument_createTextNode(descDoc, "/upnpmplayer.gif"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); ixmlNode_appendChild((IXML_Node*) Ele2, (IXML_Node*) Ele3); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele2 = ixmlDocument_createElement( descDoc, "serviceList" ); Ele3 = ixmlDocument_createElement(descDoc, "service"); Ele4 = ixmlDocument_createElement(descDoc, "serviceType"); node3 = ixmlDocument_createTextNode(descDoc, "urn:schemas-upnp-org:service:RenderingControl:1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "serviceId"); node3 = ixmlDocument_createTextNode(descDoc, "urn:upnp-org:serviceId:RenderingControl1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "controlURL"); node3 = ixmlDocument_createTextNode(descDoc, "/upnp/control/RenderingControl1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "eventSubURL"); node3 = ixmlDocument_createTextNode(descDoc, "/upnp/event/RenderingControl1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "SCPDURL"); node3 = ixmlDocument_createTextNode(descDoc, "RendererControl.xml"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); ixmlNode_appendChild((IXML_Node*) Ele2, (IXML_Node*) Ele3); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele3 = ixmlDocument_createElement(descDoc, "service"); Ele4 = ixmlDocument_createElement(descDoc, "serviceType"); node3 = ixmlDocument_createTextNode(descDoc, "urn:schemas-upnp-org:service:ConnectionManager:1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "serviceId"); node3 = ixmlDocument_createTextNode(descDoc, "urn:upnp-org:serviceId:ConnectionManager1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "controlURL"); node3 = ixmlDocument_createTextNode(descDoc, "/upnp/control/ConnectionManager1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "eventSubURL"); node3 = ixmlDocument_createTextNode(descDoc, "/upnp/event/ConnectionManager1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "SCPDURL"); node3 = ixmlDocument_createTextNode(descDoc, "ConnectionManager.xml"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); ixmlNode_appendChild((IXML_Node*) Ele2, (IXML_Node*) Ele3); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); Ele3 = ixmlDocument_createElement(descDoc, "service"); Ele4 = ixmlDocument_createElement(descDoc, "serviceType"); node3 = ixmlDocument_createTextNode(descDoc, "urn:schemas-upnp-org:service:AVTransport:1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "serviceId"); node3 = ixmlDocument_createTextNode(descDoc, "urn:upnp-org:serviceId:AVTransport1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "controlURL"); node3 = ixmlDocument_createTextNode(descDoc, "/upnp/control/AVTransport1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "eventSubURL"); node3 = ixmlDocument_createTextNode(descDoc, "/upnp/event/AVTransport1"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); Ele4 = ixmlDocument_createElement(descDoc, "SCPDURL"); node3 = ixmlDocument_createTextNode(descDoc, "AVTransport.xml"); ixmlNode_appendChild((IXML_Node*) Ele4, node3); ixmlNode_appendChild((IXML_Node*) Ele3, (IXML_Node*) Ele4); ixmlNode_appendChild((IXML_Node*) Ele2, (IXML_Node*) Ele3); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); ixmlNode_appendChild((IXML_Node*) Ele, (IXML_Node*) Ele2); ixmlNode_appendChild(node, (IXML_Node*) Ele); return descDoc;}char* cRenderer::get_uuid() { char* home=getenv("HOME"); char pfad_to_uuid[100]; sprintf(pfad_to_uuid,"%s/.renderer/uuid",home); // uuid holen, bzw generieren char uuid[42]; ifstream uuid_in; uuid_in.open(pfad_to_uuid,ifstream::in) ; if (!uuid_in.is_open()) { return generate_uuid(); } uuid_in.read(uuid,45); if(strlen(uuid)!=41) { return generate_uuid(); } uuid_in.close(); cout << "alt: " << uuid << endl; return strdup(uuid);}char* cRenderer::generate_uuid() { char* home=getenv("HOME"); char pfad_to_uuid[100]; sprintf(pfad_to_uuid,"%s/.renderer/uuid",home); //uuid generieren char uuid[42]; uuid_t uu; uuid_generate(uu); sprintf(uuid,"uuid:%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", uu[0],uu[1],uu[2],uu[3],uu[4],uu[5],uu[6],uu[7],uu[8],uu[9],uu[10],uu[11],uu[12],uu[13],uu[14],uu[15]); ofstream uuid_out; uuid_out.open(pfad_to_uuid,ofstream::out); if (!uuid_out.is_open()) cout << "couldn't open uuidfile" << endl; uuid_out.write(uuid,strlen(uuid)); uuid_out.close(); cout << "neu: " << uuid << endl; return strdup(uuid);}void cRenderer::trim(string& str){ string::size_type start = str.find_first_not_of(' '); string::size_type end = str.find_last_not_of(' '); str = str.substr( start == string::npos ? 0 : start, end == string::npos ? str.length()-1 : end-start+1);}void cRenderer::str_replace(string needle, string replacement, string& haystack){ string::size_type start = haystack.find(needle); if (start!=string::npos && start>0) haystack = haystack.replace( start, needle.length(), replacement);}void cRenderer::getVarName(string& varName, string& haystack){ int end = haystack.find_first_of("="); if (end>0) { varName = haystack.substr(0,end); }}void cRenderer::getValue(string& value, string& haystack){ int begin = haystack.find_first_of("="); if (begin>0) { value = haystack.substr(begin+1,haystack.length()); }}void cRenderer::handleOptions(int argc,char* argv[]){ char* optionName; char* optionValue; if(argc!=0) { for(int i=0;i<argc;i++) { optionName=argv[i]; if(!strcmp(optionName,"-a")) { i++; optionValue=argv[i]; this->ip_addr=strdup(optionValue); }else if(!strcmp(optionName,"-f")) { this->fullscreen="-fs"; } } }}void cRenderer::initVar(){ ip_addr=NULL; fullscreen=NULL; mplayer_bin="/usr/bin/mplayer"; char hostname[50]; gethostname(hostname,50); sprintf(friendlyName,"Linux-Renderer(%s)",hostname);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -