⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 root_desc.c

📁 UPnP协议中的控制设备(CD)的例子程序
💻 C
字号:
/*** Copyright (c) 2004 Axis Communications AB.** All rights reserved.** ** Redistribution and use in source and binary forms, with or without** modification, are permitted provided that the following conditions are met:** ** * Redistributions of source code must retain the above copyright notice,**   this list of conditions and the following disclaimer.** * Redistributions in binary form must reproduce the above copyright notice,**   this list of conditions and the following disclaimer in the documentation**   and/or other materials provided with the distribution.** * Neither name of Axis Communications AB nor the names of its contributors**   may be used to endorse or promote products derived from this software**   without specific prior written permission.** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS** ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY** OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/#define _GNU_SOURCE#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <syslog.h>#include <upnp/upnp.h>#include "../main/debug.h"#include "basic_device.h"static char *rootDeviceDesc = "\<?xml version=\"1.0\"?>\r\n\<root xmlns=\"urn:schemas-upnp-org:device-1-0\">\r\n\  <specVersion>\r\n\    <major>1</major>\r\n\    <minor>0</minor>\r\n\  </specVersion>\r\n\  <device>\r\n\    <deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType>\r\n\    <friendlyName>%s</friendlyName>\r\n\    <manufacturer>%s</manufacturer>\r\n\    <manufacturerURL>%s</manufacturerURL>\r\n\    <modelDescription>%s</modelDescription>\r\n\    <modelName>%s</modelName>\r\n\    <modelNumber>%s</modelNumber>\r\n\    <modelURL>%s</modelURL>\r\n\    <serialNumber>%s</serialNumber>\r\n\    <UDN>uuid:Upnp-BasicDevice-1_0-%s</UDN>\r\n\    <serviceList>\r\n\      <service>\r\n\        <serviceType>urn:axis-com:service:BasicService:1</serviceType>\r\n\        <serviceId>urn:axis-com:serviceId:BasicServiceId</serviceId>\r\n\        <controlURL>/upnp/control/BasicServiceId</controlURL>\r\n\        <eventSubURL>/upnp/event/BasicServiceId</eventSubURL>\r\n\        <SCPDURL>/%s</SCPDURL>\r\n\      </service>\r\n\    </serviceList>\r\n\   <presentationURL>http://%s/</presentationURL>\r\n\</device>\r\n\</root>\r\n";voidcreateRootDescDoc(struct GlobalConfig *config){  char *tmp;  FILE *doc;  if (config->friendlyName == NULL ||      config->friendlyName[0] == '\0') {    free(config->friendlyName);    asprintf(&config->friendlyName, "%s - %s",              config->prodShortName, config->serialNumber);  }  DBG1(syslog(LOG_DEBUG, "Friendly name: %s", config->friendlyName));  /* Create root device description document. */  asprintf(&tmp, "%s/%s", WEB_SERVER_ROOT, ROOT_DESC_DOC);  doc = fopen(tmp, "w+");  if (doc == NULL) {    syslog(LOG_CRIT, "fopen(%s): %s", tmp, strerror(errno));    exit(EXIT_FAILURE);  }  fprintf(doc, rootDeviceDesc,           config->friendlyName,          config->brand,          config->webURL,          config->prodFullName,          config->prodShortName,          config->prodNbr,          config->webURL,          config->serialNumber,          config->serialNumber,          SCPD_BASIC_DOC,          UpnpGetServerIpAddress());  fclose(doc);  free(tmp);}voidremoveRootDescDoc(){  char *tmp;  asprintf(&tmp, "%s/%s", WEB_SERVER_ROOT, ROOT_DESC_DOC);  unlink(tmp);  free(tmp);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -