diff options
Diffstat (limited to 'cmps/serverlib')
-rw-r--r-- | cmps/serverlib/include/MediaServerConfig.h | 39 | ||||
-rw-r--r-- | cmps/serverlib/nbproject/Makefile-Debug.mk | 20 | ||||
-rw-r--r-- | cmps/serverlib/nbproject/Makefile-Release.mk | 20 | ||||
-rw-r--r-- | cmps/serverlib/nbproject/configurations.xml | 2 | ||||
-rw-r--r-- | cmps/serverlib/src/MediaServerConfig.cc | 128 |
5 files changed, 195 insertions, 14 deletions
diff --git a/cmps/serverlib/include/MediaServerConfig.h b/cmps/serverlib/include/MediaServerConfig.h new file mode 100644 index 0000000..9e07ea3 --- /dev/null +++ b/cmps/serverlib/include/MediaServerConfig.h @@ -0,0 +1,39 @@ +/** + * ======================== legal notice ====================== + * + * File: MediaServerConfig.h + * Created: 1. August 2012, 10:58 + * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a> + * Project: cmps - the backend (server) part of compound media player + * + * CMP - compound media player + * + * is a client/server mediaplayer intended to play any media from any workstation + * without the need to export or mount shares. cmps is an easy to use backend + * with a (ready to use) HTML-interface. Additionally the backend supports + * authentication via HTTP-digest authorization. + * cmpc is a client with vdr-like osd-menues. + * + * Copyright (c) 2012 Reinhard Mantey, some rights reserved! + * published under Creative Commons by-sa + * For details see http://creativecommons.org/licenses/by-sa/3.0/ + * + * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp + * + * -------------------------------------------------------------- + */ +#ifndef MEDIASERVERCONFIG_H +#define MEDIASERVERCONFIG_H + +#include <ServerConfig.h> + +class cMediaServerConfig : public cServerConfig { +public: + cMediaServerConfig(const char *ConfigBaseDir); + virtual ~cMediaServerConfig(); + + virtual bool Eval(cConfigReader::ConfigEntry *Entry); + }; + +#endif /* MEDIASERVERCONFIG_H */ + diff --git a/cmps/serverlib/nbproject/Makefile-Debug.mk b/cmps/serverlib/nbproject/Makefile-Debug.mk index 9b947b0..96d3da9 100644 --- a/cmps/serverlib/nbproject/Makefile-Debug.mk +++ b/cmps/serverlib/nbproject/Makefile-Debug.mk @@ -36,6 +36,7 @@ OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} # Object Files OBJECTFILES= \ ${OBJECTDIR}/src/JSonListAssembler.o \ + ${OBJECTDIR}/src/MediaServerConfig.o \ ${OBJECTDIR}/src/CommandHandler.o \ ${OBJECTDIR}/src/HTMLListAssembler.o \ ${OBJECTDIR}/src/AbstractMediaRequestHandler.o \ @@ -70,37 +71,42 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libserverlib.a: ${OBJECTFILES} ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libserverlib.a ${OBJECTFILES} $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libserverlib.a -${OBJECTDIR}/src/JSonListAssembler.o: src/JSonListAssembler.cc +${OBJECTDIR}/src/JSonListAssembler.o: nbproject/Makefile-${CND_CONF}.mk src/JSonListAssembler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/mediaScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/JSonListAssembler.o src/JSonListAssembler.cc -${OBJECTDIR}/src/CommandHandler.o: src/CommandHandler.cc +${OBJECTDIR}/src/MediaServerConfig.o: nbproject/Makefile-${CND_CONF}.mk src/MediaServerConfig.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/mediaScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaServerConfig.o src/MediaServerConfig.cc + +${OBJECTDIR}/src/CommandHandler.o: nbproject/Makefile-${CND_CONF}.mk src/CommandHandler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/mediaScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/CommandHandler.o src/CommandHandler.cc -${OBJECTDIR}/src/HTMLListAssembler.o: src/HTMLListAssembler.cc +${OBJECTDIR}/src/HTMLListAssembler.o: nbproject/Makefile-${CND_CONF}.mk src/HTMLListAssembler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/mediaScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTMLListAssembler.o src/HTMLListAssembler.cc -${OBJECTDIR}/src/AbstractMediaRequestHandler.o: src/AbstractMediaRequestHandler.cc +${OBJECTDIR}/src/AbstractMediaRequestHandler.o: nbproject/Makefile-${CND_CONF}.mk src/AbstractMediaRequestHandler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/mediaScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMediaRequestHandler.o src/AbstractMediaRequestHandler.cc -${OBJECTDIR}/src/HTTPMediaResponse.o: src/HTTPMediaResponse.cc +${OBJECTDIR}/src/HTTPMediaResponse.o: nbproject/Makefile-${CND_CONF}.mk src/HTTPMediaResponse.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/mediaScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPMediaResponse.o src/HTTPMediaResponse.cc -${OBJECTDIR}/src/MediaListHandler.o: src/MediaListHandler.cc +${OBJECTDIR}/src/MediaListHandler.o: nbproject/Makefile-${CND_CONF}.mk src/MediaListHandler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/mediaScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaListHandler.o src/MediaListHandler.cc -${OBJECTDIR}/src/MediaFileHandler.o: src/MediaFileHandler.cc +${OBJECTDIR}/src/MediaFileHandler.o: nbproject/Makefile-${CND_CONF}.mk src/MediaFileHandler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../../libs/mediaScan/include -I../../libs/networking/include -I../../libs/IO/include -I../../libs/util/include -I../../libs/vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaFileHandler.o src/MediaFileHandler.cc diff --git a/cmps/serverlib/nbproject/Makefile-Release.mk b/cmps/serverlib/nbproject/Makefile-Release.mk index 55f83a2..4ba9a41 100644 --- a/cmps/serverlib/nbproject/Makefile-Release.mk +++ b/cmps/serverlib/nbproject/Makefile-Release.mk @@ -36,6 +36,7 @@ OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} # Object Files OBJECTFILES= \ ${OBJECTDIR}/src/JSonListAssembler.o \ + ${OBJECTDIR}/src/MediaServerConfig.o \ ${OBJECTDIR}/src/CommandHandler.o \ ${OBJECTDIR}/src/HTMLListAssembler.o \ ${OBJECTDIR}/src/AbstractMediaRequestHandler.o \ @@ -70,37 +71,42 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libserverlib.a: ${OBJECTFILES} ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libserverlib.a ${OBJECTFILES} $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libserverlib.a -${OBJECTDIR}/src/JSonListAssembler.o: src/JSonListAssembler.cc +${OBJECTDIR}/src/JSonListAssembler.o: nbproject/Makefile-${CND_CONF}.mk src/JSonListAssembler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/JSonListAssembler.o src/JSonListAssembler.cc -${OBJECTDIR}/src/CommandHandler.o: src/CommandHandler.cc +${OBJECTDIR}/src/MediaServerConfig.o: nbproject/Makefile-${CND_CONF}.mk src/MediaServerConfig.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaServerConfig.o src/MediaServerConfig.cc + +${OBJECTDIR}/src/CommandHandler.o: nbproject/Makefile-${CND_CONF}.mk src/CommandHandler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/CommandHandler.o src/CommandHandler.cc -${OBJECTDIR}/src/HTMLListAssembler.o: src/HTMLListAssembler.cc +${OBJECTDIR}/src/HTMLListAssembler.o: nbproject/Makefile-${CND_CONF}.mk src/HTMLListAssembler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTMLListAssembler.o src/HTMLListAssembler.cc -${OBJECTDIR}/src/AbstractMediaRequestHandler.o: src/AbstractMediaRequestHandler.cc +${OBJECTDIR}/src/AbstractMediaRequestHandler.o: nbproject/Makefile-${CND_CONF}.mk src/AbstractMediaRequestHandler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMediaRequestHandler.o src/AbstractMediaRequestHandler.cc -${OBJECTDIR}/src/HTTPMediaResponse.o: src/HTTPMediaResponse.cc +${OBJECTDIR}/src/HTTPMediaResponse.o: nbproject/Makefile-${CND_CONF}.mk src/HTTPMediaResponse.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPMediaResponse.o src/HTTPMediaResponse.cc -${OBJECTDIR}/src/MediaListHandler.o: src/MediaListHandler.cc +${OBJECTDIR}/src/MediaListHandler.o: nbproject/Makefile-${CND_CONF}.mk src/MediaListHandler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaListHandler.o src/MediaListHandler.cc -${OBJECTDIR}/src/MediaFileHandler.o: src/MediaFileHandler.cc +${OBJECTDIR}/src/MediaFileHandler.o: nbproject/Makefile-${CND_CONF}.mk src/MediaFileHandler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaFileHandler.o src/MediaFileHandler.cc diff --git a/cmps/serverlib/nbproject/configurations.xml b/cmps/serverlib/nbproject/configurations.xml index b37dc04..3bf0fb8 100644 --- a/cmps/serverlib/nbproject/configurations.xml +++ b/cmps/serverlib/nbproject/configurations.xml @@ -11,6 +11,7 @@ <itemPath>include/JSonListAssembler.h</itemPath> <itemPath>include/MediaFileHandler.h</itemPath> <itemPath>include/MediaListHandler.h</itemPath> + <itemPath>include/MediaServerConfig.h</itemPath> </logicalFolder> <logicalFolder name="ResourceFiles" displayName="Resource Files" @@ -26,6 +27,7 @@ <itemPath>src/JSonListAssembler.cc</itemPath> <itemPath>src/MediaFileHandler.cc</itemPath> <itemPath>src/MediaListHandler.cc</itemPath> + <itemPath>src/MediaServerConfig.cc</itemPath> </logicalFolder> <logicalFolder name="TestFiles" displayName="Test Files" diff --git a/cmps/serverlib/src/MediaServerConfig.cc b/cmps/serverlib/src/MediaServerConfig.cc new file mode 100644 index 0000000..5ef3646 --- /dev/null +++ b/cmps/serverlib/src/MediaServerConfig.cc @@ -0,0 +1,128 @@ +/** + * ======================== legal notice ====================== + * + * File: MediaServerConfig.cc + * Created: 1. August 2012, 10:58 + * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a> + * Project: cmps - the backend (server) part of compound media player + * + * CMP - compound media player + * + * is a client/server mediaplayer intended to play any media from any workstation + * without the need to export or mount shares. cmps is an easy to use backend + * with a (ready to use) HTML-interface. Additionally the backend supports + * authentication via HTTP-digest authorization. + * cmpc is a client with vdr-like osd-menues. + * + * Copyright (c) 2012 Reinhard Mantey, some rights reserved! + * published under Creative Commons by-sa + * For details see http://creativecommons.org/licenses/by-sa/3.0/ + * + * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp + * + * -------------------------------------------------------------- + */ +#include <MediaServerConfig.h> +#include <AbstractMedia.h> +#include <Audio.h> +#include <DVDImage.h> +#include <Movie.h> +#include <Picture.h> +#include <LegacyVdrRecording.h> +#include <VdrRecording.h> +#include <pcrecpp.h> + +static pcrecpp::RE sequence("\\s*(\\S+)\\s*,\\s*(.+)"); +static pcrecpp::RE sequenceLast("(\\S+)\\s*"); + +cMediaServerConfig::cMediaServerConfig(const char *ConfigBaseDir) + : cServerConfig(ConfigBaseDir) +{ +} + +cMediaServerConfig::~cMediaServerConfig() +{ +} + +bool cMediaServerConfig::Eval(cConfigReader::ConfigEntry* Entry) +{ + std::string name = std::get<0>(*Entry); + + if (!strcmp("no-deep-scan", name.c_str())) { + int es[cAbstractMedia::Unknown] = {1}; + int mx = sizeof(es) / sizeof(int); + const char *rawValue = std::get<1>(*Entry).c_str(); + SetWantExtendedScan(true); + std::string cur, rest; + + for (int i=0; i < mx; ++i) es[i] = 1; + while (sequence.FullMatch(rawValue, &cur, &rest)) { + if (!strcmp("Audio", cur.c_str())) es[cAbstractMedia::Audio] = 0; + else if (!strcmp("Movie", cur.c_str())) es[cAbstractMedia::Movie] = 0; + else if (!strcmp("DVDImage", cur.c_str())) es[cAbstractMedia::DVDImage] = 0; + else if (!strcmp("LegacyVdrRecording", cur.c_str())) es[cAbstractMedia::LegacyVdrRecording] = 0; + else if (!strcmp("VdrRecording", cur.c_str())) es[cAbstractMedia::VdrRecording] = 0; + else if (!strcmp("Picture", cur.c_str())) es[cAbstractMedia::Picture] = 0; + rawValue = rest.c_str(); + } + cur = rawValue; + if (!strcmp("Audio", cur.c_str())) es[cAbstractMedia::Audio] = 0; + else if (!strcmp("Movie", cur.c_str())) es[cAbstractMedia::Movie] = 0; + else if (!strcmp("DVDImage", cur.c_str())) es[cAbstractMedia::DVDImage] = 0; + else if (!strcmp("LegacyVdrRecording", cur.c_str())) es[cAbstractMedia::LegacyVdrRecording] = 0; + else if (!strcmp("VdrRecording", cur.c_str())) es[cAbstractMedia::VdrRecording] = 0; + else if (!strcmp("Picture", cur.c_str())) es[cAbstractMedia::Picture] = 0; + + for (int i=0; i < mx; ++i) { + switch ((cAbstractMedia::SupportedMediaType) i) { + case cAbstractMedia::Audio: cAudio::EnableDeepScan(es[i]); break; + case cAbstractMedia::DVDImage: cDVDImage::EnableDeepScan(es[i]); break; + case cAbstractMedia::LegacyVdrRecording: cLegacyVdrRecording::EnableDeepScan(es[i]); break; + case cAbstractMedia::Movie: cMovie::EnableDeepScan(es[i]); break; + case cAbstractMedia::Picture: cPicture::EnableDeepScan(es[i]); break; + case cAbstractMedia::VdrRecording: cVdrRecording::EnableDeepScan(es[i]); break; + default: break; + } + } + return true; + } + else if (!strcmp("deep-scan", name.c_str())) { + int es[cAbstractMedia::Unknown] = {0}; + int mx = sizeof(es) / sizeof(int); + const char *rawValue = std::get<1>(*Entry).c_str(); + SetWantExtendedScan(true); + std::string cur, rest; + + for (int i=0; i < mx; ++i) es[i] = 0; + while (sequence.FullMatch(rawValue, &cur, &rest)) { + if (!strcmp("Audio", cur.c_str())) es[cAbstractMedia::Audio] = 1; + else if (!strcmp("Movie", cur.c_str())) es[cAbstractMedia::Movie] = 1; + else if (!strcmp("DVDImage", cur.c_str())) es[cAbstractMedia::DVDImage] = 1; + else if (!strcmp("LegacyVdrRecording", cur.c_str())) es[cAbstractMedia::LegacyVdrRecording] = 1; + else if (!strcmp("VdrRecording", cur.c_str())) es[cAbstractMedia::VdrRecording] = 1; + else if (!strcmp("Picture", cur.c_str())) es[cAbstractMedia::Picture] = 1; + rawValue = rest.c_str(); + } + cur = rawValue; + if (!strcmp("Audio", cur.c_str())) es[cAbstractMedia::Audio] = 1; + else if (!strcmp("Movie", cur.c_str())) es[cAbstractMedia::Movie] = 1; + else if (!strcmp("DVDImage", cur.c_str())) es[cAbstractMedia::DVDImage] = 1; + else if (!strcmp("LegacyVdrRecording", cur.c_str())) es[cAbstractMedia::LegacyVdrRecording] = 1; + else if (!strcmp("VdrRecording", cur.c_str())) es[cAbstractMedia::VdrRecording] = 1; + else if (!strcmp("Picture", cur.c_str())) es[cAbstractMedia::Picture] = 1; + + for (int i=0; i < mx; ++i) { + switch ((cAbstractMedia::SupportedMediaType) i) { + case cAbstractMedia::Audio: cAudio::EnableDeepScan(es[i]); break; + case cAbstractMedia::DVDImage: cDVDImage::EnableDeepScan(es[i]); break; + case cAbstractMedia::LegacyVdrRecording: cLegacyVdrRecording::EnableDeepScan(es[i]); break; + case cAbstractMedia::Movie: cMovie::EnableDeepScan(es[i]); break; + case cAbstractMedia::Picture: cPicture::EnableDeepScan(es[i]); break; + case cAbstractMedia::VdrRecording: cVdrRecording::EnableDeepScan(es[i]); break; + default: break; + } + } + return true; + } + else return cServerConfig::Eval(Entry); +}
\ No newline at end of file |