📄 root_desc.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 + -