1/* MiniDLNA project 2 * 3 * http://sourceforge.net/projects/minidlna/ 4 * 5 * MiniDLNA media server 6 * Copyright (C) 2008-2009 Justin Maggard 7 * 8 * This file is part of MiniDLNA. 9 * 10 * MiniDLNA is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License version 2 as 12 * published by the Free Software Foundation. 13 * 14 * MiniDLNA is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with MiniDLNA. If not, see <http://www.gnu.org/licenses/>. 21 * 22 * Portions of the code from the MiniUPnP project: 23 * 24 * Copyright (c) 2006-2007, Thomas Bernard 25 * All rights reserved. 26 * 27 * Redistribution and use in source and binary forms, with or without 28 * modification, are permitted provided that the following conditions are met: 29 * * Redistributions of source code must retain the above copyright 30 * notice, this list of conditions and the following disclaimer. 31 * * Redistributions in binary form must reproduce the above copyright 32 * notice, this list of conditions and the following disclaimer in the 33 * documentation and/or other materials provided with the distribution. 34 * * The name of the author may not be used to endorse or promote products 35 * derived from this software without specific prior written permission. 36 * 37 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 38 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 39 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 40 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 41 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 42 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 43 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 44 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 45 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 47 * POSSIBILITY OF SUCH DAMAGE. 48 */ 49#ifndef __UPNPGLOBALVARS_H__ 50#define __UPNPGLOBALVARS_H__ 51 52#include <time.h> 53 54#include "minidlnatypes.h" 55#include "clients.h" 56#include "config.h" 57 58#include <sqlite3.h> 59 60#define MINIDLNA_VERSION "1.1.5" 61 62#ifdef NETGEAR 63# define SERVER_NAME "ReadyDLNA" 64#else 65# define SERVER_NAME "MiniDLNA" 66#endif 67 68#define USE_FORK 1 69#define DB_VERSION 9 70 71#ifdef ENABLE_NLS 72#define _(string) gettext(string) 73#else 74#define _(string) (string) 75#endif 76#define THISORNUL(s) (s ? s : "") 77 78#ifndef PNPX 79#define PNPX 0 80#endif 81 82#define RESOURCE_PROTOCOL_INFO_VALUES \ 83 "http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN," \ 84 "http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM," \ 85 "http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED," \ 86 "http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG," \ 87 "http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO," \ 88 "http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_60_AC3_ISO," \ 89 "http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HP_HD_AC3_ISO," \ 90 "http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO," \ 91 "http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AC3_ISO," \ 92 "http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO," \ 93 "http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO," \ 94 "http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AC3_ISO," \ 95 "http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO," \ 96 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC," \ 97 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL," \ 98 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_HD_NA_ISO," \ 99 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO," \ 100 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO," \ 101 "http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1," \ 102 "http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5," \ 103 "http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3," \ 104 "http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF15_AAC_520," \ 105 "http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF30_AAC_940," \ 106 "http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L31_HD_AAC," \ 107 "http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L32_HD_AAC," \ 108 "http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L3L_SD_AAC," \ 109 "http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC," \ 110 "http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC," \ 111 "http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC," \ 112 "http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC," \ 113 "http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_VGA_AAC," \ 114 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3," \ 115 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T," \ 116 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_60_AC3," \ 117 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_60_AC3_T," \ 118 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HP_HD_AC3_T," \ 119 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5," \ 120 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T," \ 121 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AC3," \ 122 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AC3_T," \ 123 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3," \ 124 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T," \ 125 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5," \ 126 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T," \ 127 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AC3," \ 128 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AC3_T," \ 129 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3," \ 130 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T," \ 131 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_NA," \ 132 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_NA_T," \ 133 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU," \ 134 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T," \ 135 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA," \ 136 "http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T," \ 137 "http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPLL_BASE," \ 138 "http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_BASE," \ 139 "http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_MP3," \ 140 "http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE," \ 141 "http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL," \ 142 "http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO," \ 143 "http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL," \ 144 "http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO," \ 145 "http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AAC," \ 146 "http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AMR," \ 147 "http-get:*:audio/mpeg:DLNA.ORG_PN=MP3," \ 148 "http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE," \ 149 "http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL," \ 150 "http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAPRO," \ 151 "http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMALSL," \ 152 "http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMALSL_MULT5," \ 153 "http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO_320," \ 154 "http-get:*:audio/3gpp:DLNA.ORG_PN=AAC_ISO_320," \ 155 "http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO," \ 156 "http-get:*:audio/mp4:DLNA.ORG_PN=AAC_MULT5_ISO," \ 157 "http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM," \ 158 "http-get:*:image/jpeg:*," \ 159 "http-get:*:video/avi:*," \ 160 "http-get:*:video/divx:*," \ 161 "http-get:*:video/x-matroska:*," \ 162 "http-get:*:video/mpeg:*," \ 163 "http-get:*:video/mp4:*," \ 164 "http-get:*:video/x-ms-wmv:*," \ 165 "http-get:*:video/x-msvideo:*," \ 166 "http-get:*:video/x-flv:*," \ 167 "http-get:*:video/x-tivo-mpeg:*," \ 168 "http-get:*:video/quicktime:*," \ 169 "http-get:*:audio/mp4:*," \ 170 "http-get:*:audio/x-wav:*," \ 171 "http-get:*:audio/x-flac:*," \ 172 "http-get:*:application/ogg:*" 173 174#define DLNA_FLAG_DLNA_V1_5 0x00100000 175#define DLNA_FLAG_HTTP_STALLING 0x00200000 176#define DLNA_FLAG_TM_B 0x00400000 177#define DLNA_FLAG_TM_I 0x00800000 178#define DLNA_FLAG_TM_S 0x01000000 179#define DLNA_FLAG_LOP_BYTES 0x20000000 180#define DLNA_FLAG_LOP_NPT 0x40000000 181 182/* startup time */ 183extern time_t startup_time; 184 185extern struct runtime_vars_s runtime_vars; 186/* runtime boolean flags */ 187extern uint32_t runtime_flags; 188#define INOTIFY_MASK 0x0001 189#define TIVO_MASK 0x0002 190#define DLNA_STRICT_MASK 0x0004 191#define NO_PLAYLIST_MASK 0x0008 192#define SYSTEMD_MASK 0x0010 193#define MERGE_MEDIA_DIRS_MASK 0x0020 194 195#define SETFLAG(mask) runtime_flags |= mask 196#define GETFLAG(mask) (runtime_flags & mask) 197#define CLEARFLAG(mask) runtime_flags &= ~mask 198 199extern const char *pidfilename; 200 201extern char uuidvalue[]; 202 203#define MODELNAME_MAX_LEN 64 204extern char modelname[]; 205 206#define MODELNUMBER_MAX_LEN 16 207extern char modelnumber[]; 208 209#define SERIALNUMBER_MAX_LEN 18 210extern char serialnumber[]; 211 212#define PRESENTATIONURL_MAX_LEN 64 213extern char presentationurl[]; 214 215#if PNPX 216extern char pnpx_hwid[]; 217#endif 218 219/* lan addresses */ 220extern int n_lan_addr; 221extern struct lan_addr_s lan_addr[]; 222extern int sssdp; 223 224extern const char *minissdpdsocketpath; 225 226/* UPnP-A/V [DLNA] */ 227extern sqlite3 *db; 228#define FRIENDLYNAME_MAX_LEN 64 229extern char friendly_name[]; 230extern char db_path[]; 231extern char db_path_spec[]; 232extern char log_path[]; 233extern struct media_dir_s *media_dirs; 234extern struct album_art_name_s *album_art_names; 235extern short int scanning; 236extern volatile short int quitting; 237extern volatile uint32_t updateID; 238extern const char *force_sort_criteria; 239extern short int rescan_db; 240 241#endif 242