summaryrefslogtreecommitdiff
path: root/cmps/serverlib
diff options
context:
space:
mode:
Diffstat (limited to 'cmps/serverlib')
-rw-r--r--cmps/serverlib/include/MediaServerConfig.h39
-rw-r--r--cmps/serverlib/nbproject/Makefile-Debug.mk20
-rw-r--r--cmps/serverlib/nbproject/Makefile-Release.mk20
-rw-r--r--cmps/serverlib/nbproject/configurations.xml2
-rw-r--r--cmps/serverlib/src/MediaServerConfig.cc128
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