diff options
author | geronimo <geronimo013@gmx.de> | 2012-07-29 15:11:47 +0200 |
---|---|---|
committer | geronimo <geronimo013@gmx.de> | 2012-07-29 15:11:47 +0200 |
commit | 85cb3f04252b0228830903b21c08bb64e9919c18 (patch) | |
tree | 5c00dbd8d296861aa56cca598ee2a36e51971822 /libs/networking | |
parent | 736033f3d532c4814eeff84db5dbf99f0249df6e (diff) | |
download | cmp-85cb3f04252b0228830903b21c08bb64e9919c18.tar.gz cmp-85cb3f04252b0228830903b21c08bb64e9919c18.tar.bz2 |
changed server setup to config file, little rearrangement of sources
Diffstat (limited to 'libs/networking')
-rw-r--r-- | libs/networking/include/Credentials.h | 7 | ||||
-rw-r--r-- | libs/networking/include/HTTPResponse.h | 12 | ||||
-rw-r--r-- | libs/networking/include/ServerConfig.h | 38 | ||||
-rw-r--r-- | libs/networking/include/Url.h | 67 | ||||
-rw-r--r-- | libs/networking/nbproject/Makefile-Debug.mk | 50 | ||||
-rw-r--r-- | libs/networking/nbproject/Makefile-Release.mk | 6 | ||||
-rw-r--r-- | libs/networking/nbproject/configurations.xml | 39 | ||||
-rw-r--r-- | libs/networking/nbproject/private/configurations.xml | 2 | ||||
-rw-r--r-- | libs/networking/nbproject/project.xml | 6 | ||||
-rw-r--r-- | libs/networking/networking.cbp | 9 | ||||
-rw-r--r-- | libs/networking/networking.layout | 30 | ||||
-rw-r--r-- | libs/networking/networking.layout.save | 24 | ||||
-rw-r--r-- | libs/networking/src/ConnectionHandler.cc | 12 | ||||
-rw-r--r-- | libs/networking/src/HTTPResponse.cc | 12 | ||||
-rw-r--r-- | libs/networking/src/ServerConfig.cc | 127 | ||||
-rw-r--r-- | libs/networking/src/Url.cc | 229 |
16 files changed, 270 insertions, 400 deletions
diff --git a/libs/networking/include/Credentials.h b/libs/networking/include/Credentials.h index cdc7903..44dc17c 100644 --- a/libs/networking/include/Credentials.h +++ b/libs/networking/include/Credentials.h @@ -26,10 +26,11 @@ #define CREDENTIALS_H #include <Principal.h> +#include <Persistable.h> #include <string> #include <tr1/unordered_map> -class cCredentials { +class cCredentials : public cPersistable { public: typedef std::tr1::unordered_map<std::string, cPrincipal *>::const_iterator const_iterator; cCredentials(); @@ -39,8 +40,8 @@ public: const char *ApplicationRealm(void) const; void SetApplicationRealm(const char *ApplicationRealm = "knownUser@myApp"); - int Load(const char *FileName); - int Store(const char *FileName); + virtual int Load(const char *FileName); + virtual int Store(const char *FileName); void Put(const char *Key, cPrincipal *p); cPrincipal *Get(const char *Key); diff --git a/libs/networking/include/HTTPResponse.h b/libs/networking/include/HTTPResponse.h index dbc0969..0bb6d72 100644 --- a/libs/networking/include/HTTPResponse.h +++ b/libs/networking/include/HTTPResponse.h @@ -1,25 +1,25 @@ /** * ======================== legal notice ====================== - * + * * File: HTTPResponse.h * Created: 4. Juli 2012, 06 * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a> * Project: libnetworking: classes for tcp/ip sockets and http-protocol handling - * + * * 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 HTTPRESPONSE_H diff --git a/libs/networking/include/ServerConfig.h b/libs/networking/include/ServerConfig.h index 0f9efec..88789cb 100644 --- a/libs/networking/include/ServerConfig.h +++ b/libs/networking/include/ServerConfig.h @@ -1,57 +1,73 @@ /** * ======================== legal notice ====================== - * + * * File: ServerConfig.h * Created: 8. Juli 2012, 06 * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a> * Project: libnetworking: classes for tcp/ip sockets and http-protocol handling - * + * * 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 SERVERCONFIG_H #define SERVERCONFIG_H +#include <Persistable.h> #include <ServerSocket.h> #include <Authorization.h> -class cServerConfig -{ +class cServerConfig : public cPersistable { public: - cServerConfig(int Port); + cServerConfig(const char *ConfigBaseDir); virtual ~cServerConfig(); bool AuthorizationRequired(void) { return authorizationRequired; } const char *AppIconPath(void) const { return appIconPath; } const char *DocumentRoot(void) const { return documentRoot; } - + bool WantExtendedScan(void) const { return wantExtendedScan; } + const char *CredentialsFile(void) const { return credentialsFile; } + const char *MediaInfo(void) const { return mediaInfo; } + const char *FFMpeg(void) const { return ffmpeg; } + void Dump(void); + virtual int Load(const char *FileName); + virtual int Store(const char *FileName); void SetAppIcon(const char *AppIcon); void SetAuthorizationRequired(bool Authorize) { authorizationRequired = Authorize; } + void SetConfigBaseDir(const char *ConfigBaseDir); + void SetCredentialsFile(const char *FileName); void SetDocumentRoot(const char *DocumentRoot); + void SetMediaInfo(const char *MediaInfo); + void SetFFMpeg(const char *FFMpeg); void SetPort(int port); + void SetWantExtendedScan(bool wantScan) { wantExtendedScan = wantScan; } private: cServerSocket server; cAuthorizations authorizations; bool authorizationRequired; + bool wantExtendedScan; + char *configBaseDir; + char *credentialsFile; char *documentRoot; char *appIconPath; + char *mediaInfo; + char *ffmpeg; friend class cHTTPServer; friend class cConnectionHandler; -}; + }; #endif /* SERVERCONFIG_H */ diff --git a/libs/networking/include/Url.h b/libs/networking/include/Url.h deleted file mode 100644 index f4dc1af..0000000 --- a/libs/networking/include/Url.h +++ /dev/null @@ -1,67 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: Url.h - * Created: 4. Juli 2012, 05 - * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a> - * Project: libnetworking: classes for tcp/ip sockets and http-protocol handling - * - * 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 URL_H -#define URL_H - -#include <stddef.h> -#include <string> -#include <tr1/unordered_map> -class cURLEncoder; -class cURLDecoder; - -class cUrl { -///< splits an url into machine readable parts: -///< from top-level sight, an url consists of url and querystring. Looking bit closer, -///< the url consists of toplevel and path, where as the querystring is a list of -///< name/value tuples with value being an optional part. -public: - cUrl(const char *RawURL); - virtual ~cUrl(); - const char *Parameter(const char *Name); - void SetParameter(const char* Name, const char* Value = NULL); - size_t EstimatedSize(void) const; ///< is a rough guess about the size of the final encoded url - void ParseURL(const char *URL); - char *ToString(void) const; ///< writes the url to a newly allocated buffer - int WriteBuf(char *buf, size_t bufSize) const; ///< writes the url to preexisting buffer - ///< returns the characters written. -1 as return value indicates a buffer overrun. - const char * Path() const { return path; } -#ifdef DEBUG - void Dump(void); -#endif - static void Cleanup(void); - static cURLEncoder *Encoder(void); - static cURLDecoder *Decoder(void); - -protected: - void ParseQueryString(const char *QueryString); - -private: - typedef std::tr1::unordered_map<std::string, std::string> ParameterMap; - char *path; - ParameterMap parameters; - }; - -#endif /* URL_H */ - diff --git a/libs/networking/nbproject/Makefile-Debug.mk b/libs/networking/nbproject/Makefile-Debug.mk index e971c9e..8c52867 100644 --- a/libs/networking/nbproject/Makefile-Debug.mk +++ b/libs/networking/nbproject/Makefile-Debug.mk @@ -38,7 +38,6 @@ OBJECTFILES= \ ${OBJECTDIR}/src/HTTPRequest.o \ ${OBJECTDIR}/src/ServerSocket.o \ ${OBJECTDIR}/src/HTTPAuthorizationRequest.o \ - ${OBJECTDIR}/src/Url.o \ ${OBJECTDIR}/src/Principal.o \ ${OBJECTDIR}/src/Authorization.o \ ${OBJECTDIR}/src/ServerConfig.o \ @@ -60,8 +59,8 @@ OBJECTFILES= \ CFLAGS= # CC Compiler Flags -CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi -CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi +CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration +CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration # Fortran Compiler Flags FFLAGS= @@ -85,100 +84,97 @@ ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libnetworking.a: ${OBJECTFILES} ${OBJECTDIR}/src/HTTPRequest.o: src/HTTPRequest.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPRequest.o src/HTTPRequest.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPRequest.o src/HTTPRequest.cc ${OBJECTDIR}/src/ServerSocket.o: src/ServerSocket.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ServerSocket.o src/ServerSocket.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ServerSocket.o src/ServerSocket.cc ${OBJECTDIR}/src/HTTPAuthorizationRequest.o: src/HTTPAuthorizationRequest.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPAuthorizationRequest.o src/HTTPAuthorizationRequest.cc - -${OBJECTDIR}/src/Url.o: src/Url.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Url.o src/Url.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPAuthorizationRequest.o src/HTTPAuthorizationRequest.cc ${OBJECTDIR}/src/Principal.o: src/Principal.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Principal.o src/Principal.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Principal.o src/Principal.cc ${OBJECTDIR}/src/Authorization.o: src/Authorization.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Authorization.o src/Authorization.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Authorization.o src/Authorization.cc ${OBJECTDIR}/src/ServerConfig.o: src/ServerConfig.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ServerConfig.o src/ServerConfig.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ServerConfig.o src/ServerConfig.cc ${OBJECTDIR}/src/HTTPServer.o: src/HTTPServer.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPServer.o src/HTTPServer.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPServer.o src/HTTPServer.cc ${OBJECTDIR}/src/ConnectionPoint.o: src/ConnectionPoint.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ConnectionPoint.o src/ConnectionPoint.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ConnectionPoint.o src/ConnectionPoint.cc ${OBJECTDIR}/src/HTTPResponse.o: src/HTTPResponse.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPResponse.o src/HTTPResponse.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPResponse.o src/HTTPResponse.cc ${OBJECTDIR}/src/ConnectionHandler.o: src/ConnectionHandler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ConnectionHandler.o src/ConnectionHandler.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ConnectionHandler.o src/ConnectionHandler.cc ${OBJECTDIR}/src/Credentials.o: src/Credentials.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Credentials.o src/Credentials.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Credentials.o src/Credentials.cc ${OBJECTDIR}/src/HTTPRequestHandler.o: src/HTTPRequestHandler.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPRequestHandler.o src/HTTPRequestHandler.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPRequestHandler.o src/HTTPRequestHandler.cc ${OBJECTDIR}/src/HTTPMessage.o: src/HTTPMessage.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPMessage.o src/HTTPMessage.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPMessage.o src/HTTPMessage.cc ${OBJECTDIR}/src/HTTPFileResponse.o: src/HTTPFileResponse.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPFileResponse.o src/HTTPFileResponse.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPFileResponse.o src/HTTPFileResponse.cc ${OBJECTDIR}/src/HTTPParser.o: src/HTTPParser.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPParser.o src/HTTPParser.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPParser.o src/HTTPParser.cc ${OBJECTDIR}/src/ClientSocket.o: src/ClientSocket.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ClientSocket.o src/ClientSocket.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/ClientSocket.o src/ClientSocket.cc ${OBJECTDIR}/src/AbstractSocket.o: src/AbstractSocket.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractSocket.o src/AbstractSocket.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractSocket.o src/AbstractSocket.cc ${OBJECTDIR}/src/HTTPStatus.o: src/HTTPStatus.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPStatus.o src/HTTPStatus.cc + $(COMPILE.cc) -g -Wall -D_GNU_SOURCE=1 -D_REENTRANT -Iinclude -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPStatus.o src/HTTPStatus.cc # Subprojects .build-subprojects: + cd ../vdr && ${MAKE} -f Makefile CONF=Debug + cd ../util && ${MAKE} -f Makefile CONF=Debug # Clean Targets .clean-conf: ${CLEAN_SUBPROJECTS} @@ -187,6 +183,8 @@ ${OBJECTDIR}/src/HTTPStatus.o: src/HTTPStatus.cc # Subprojects .clean-subprojects: + cd ../vdr && ${MAKE} -f Makefile CONF=Debug clean + cd ../util && ${MAKE} -f Makefile CONF=Debug clean # Enable dependency checking .dep.inc: .depcheck-impl diff --git a/libs/networking/nbproject/Makefile-Release.mk b/libs/networking/nbproject/Makefile-Release.mk index c5df60f..50a2158 100644 --- a/libs/networking/nbproject/Makefile-Release.mk +++ b/libs/networking/nbproject/Makefile-Release.mk @@ -38,7 +38,6 @@ OBJECTFILES= \ ${OBJECTDIR}/src/HTTPRequest.o \ ${OBJECTDIR}/src/ServerSocket.o \ ${OBJECTDIR}/src/HTTPAuthorizationRequest.o \ - ${OBJECTDIR}/src/Url.o \ ${OBJECTDIR}/src/Principal.o \ ${OBJECTDIR}/src/Authorization.o \ ${OBJECTDIR}/src/ServerConfig.o \ @@ -97,11 +96,6 @@ ${OBJECTDIR}/src/HTTPAuthorizationRequest.o: src/HTTPAuthorizationRequest.cc ${RM} $@.d $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/HTTPAuthorizationRequest.o src/HTTPAuthorizationRequest.cc -${OBJECTDIR}/src/Url.o: src/Url.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Url.o src/Url.cc - ${OBJECTDIR}/src/Principal.o: src/Principal.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d diff --git a/libs/networking/nbproject/configurations.xml b/libs/networking/nbproject/configurations.xml index 65b61b7..acb657c 100644 --- a/libs/networking/nbproject/configurations.xml +++ b/libs/networking/nbproject/configurations.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<configurationDescriptor version="80"> +<configurationDescriptor version="84"> <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT"> <logicalFolder name="HeaderFiles" displayName="Header Files" @@ -22,7 +22,6 @@ <itemPath>include/Principal.h</itemPath> <itemPath>include/ServerConfig.h</itemPath> <itemPath>include/ServerSocket.h</itemPath> - <itemPath>include/Url.h</itemPath> </logicalFolder> <logicalFolder name="ResourceFiles" displayName="Resource Files" @@ -49,7 +48,6 @@ <itemPath>src/Principal.cc</itemPath> <itemPath>src/ServerConfig.cc</itemPath> <itemPath>src/ServerSocket.cc</itemPath> - <itemPath>src/Url.cc</itemPath> </logicalFolder> <logicalFolder name="TestFiles" displayName="Test Files" @@ -75,10 +73,11 @@ <ccTool> <incDir> <pElem>include</pElem> + <pElem>../IO/include</pElem> <pElem>../util/include</pElem> <pElem>../vdr/include</pElem> </incDir> - <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi</commandLine> + <commandLine>-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration</commandLine> <preprocessorList> <Elem>_GNU_SOURCE=1</Elem> <Elem>_REENTRANT</Elem> @@ -87,6 +86,38 @@ </ccTool> <archiverTool> </archiverTool> + <requiredProjects> + <makeArtifact PL="../vdr" + CT="3" + CN="Debug" + AC="true" + BL="true" + WD="../vdr" + BC="${MAKE} -f Makefile CONF=Debug" + CC="${MAKE} -f Makefile CONF=Debug clean" + OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libvdr.a"> + </makeArtifact> + <makeArtifact PL="../util" + CT="3" + CN="Debug" + AC="true" + BL="true" + WD="../util" + BC="${MAKE} -f Makefile CONF=Debug" + CC="${MAKE} -f Makefile CONF=Debug clean" + OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libutil.a"> + </makeArtifact> + <makeArtifact PL="../IO" + CT="3" + CN="Debug" + AC="true" + BL="false" + WD="../IO" + BC="${MAKE} -f Makefile CONF=Debug" + CC="${MAKE} -f Makefile CONF=Debug clean" + OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libio.a"> + </makeArtifact> + </requiredProjects> </compileType> </conf> <conf name="Release" type="3"> diff --git a/libs/networking/nbproject/private/configurations.xml b/libs/networking/nbproject/private/configurations.xml index fa15dc7..616cc91 100644 --- a/libs/networking/nbproject/private/configurations.xml +++ b/libs/networking/nbproject/private/configurations.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<configurationDescriptor version="80"> +<configurationDescriptor version="84"> <projectmakefile>Makefile</projectmakefile> <confs> <conf name="Debug" type="3"> diff --git a/libs/networking/nbproject/project.xml b/libs/networking/nbproject/project.xml index 45ed83d..33cec47 100644 --- a/libs/networking/nbproject/project.xml +++ b/libs/networking/nbproject/project.xml @@ -8,7 +8,11 @@ <cpp-extensions>cc</cpp-extensions> <header-extensions>h</header-extensions> <sourceEncoding>UTF-8</sourceEncoding> - <make-dep-projects/> + <make-dep-projects> + <make-dep-project>../IO</make-dep-project> + <make-dep-project>../vdr</make-dep-project> + <make-dep-project>../util</make-dep-project> + </make-dep-projects> <sourceRootList/> <confList> <confElem> diff --git a/libs/networking/networking.cbp b/libs/networking/networking.cbp index fc36817..9fbdf1b 100644 --- a/libs/networking/networking.cbp +++ b/libs/networking/networking.cbp @@ -7,7 +7,7 @@ <Option compiler="gcc" /> <Build> <Target title="Debug"> - <Option output="libnetworking" prefix_auto="1" extension_auto="1" /> + <Option output="networking" prefix_auto="1" extension_auto="1" /> <Option working_dir="" /> <Option object_output="obj/Debug/" /> <Option type="2" /> @@ -19,7 +19,7 @@ </Compiler> </Target> <Target title="Release"> - <Option output="libnetworking" prefix_auto="1" extension_auto="1" /> + <Option output="networking" prefix_auto="1" extension_auto="1" /> <Option working_dir="" /> <Option object_output="obj/Release/" /> <Option type="2" /> @@ -35,11 +35,12 @@ </Target> </Build> <Compiler> - <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -ansi" /> + <Add option="-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration" /> <Add option="-D_REENTRANT" /> <Add option="-D_GNU_SOURCE=1" /> <Add directory="../vdr/include" /> <Add directory="../util/include" /> + <Add directory="../IO/include" /> <Add directory="include" /> </Compiler> <Unit filename="include/AbstractSocket.h" /> @@ -59,7 +60,6 @@ <Unit filename="include/Principal.h" /> <Unit filename="include/ServerConfig.h" /> <Unit filename="include/ServerSocket.h" /> - <Unit filename="include/Url.h" /> <Unit filename="src/AbstractSocket.cc" /> <Unit filename="src/Authorization.cc" /> <Unit filename="src/ClientSocket.cc" /> @@ -77,7 +77,6 @@ <Unit filename="src/Principal.cc" /> <Unit filename="src/ServerConfig.cc" /> <Unit filename="src/ServerSocket.cc" /> - <Unit filename="src/Url.cc" /> <Extensions> <code_completion /> <envvars /> diff --git a/libs/networking/networking.layout b/libs/networking/networking.layout index ec82f77..d908ef8 100644 --- a/libs/networking/networking.layout +++ b/libs/networking/networking.layout @@ -1,44 +1,54 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <CodeBlocks_layout_file> <ActiveTarget name="Debug" /> - <File name="src/HTTPFileResponse.cc" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="src/ConnectionHandler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> - <Cursor1 position="0" topLine="0" /> + <Cursor1 position="1551" topLine="0" /> </Cursor> </File> - <File name="include/HTTPResponse.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="include/ConnectionPoint.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="include/ConnectionHandler.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="src/ConnectionPoint.cc" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="src/ConnectionHandler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="src/HTTPFileResponse.cc" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> - <Cursor1 position="1551" topLine="0" /> + <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="include/ConnectionPoint.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="include/HTTPMessage.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="include/HTTPMessage.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="include/ConnectionHandler.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="src/ConnectionPoint.cc" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="src/HTTPMessage.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="src/HTTPMessage.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="include/ServerConfig.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <Cursor> + <Cursor1 position="1684" topLine="0" /> + </Cursor> + </File> + <File name="include/HTTPResponse.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> </File> + <File name="src/ServerConfig.cc" open="1" top="1" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <Cursor> + <Cursor1 position="1670" topLine="0" /> + </Cursor> + </File> </CodeBlocks_layout_file> diff --git a/libs/networking/networking.layout.save b/libs/networking/networking.layout.save index 5cfe8a9..d0cb4d6 100644 --- a/libs/networking/networking.layout.save +++ b/libs/networking/networking.layout.save @@ -1,7 +1,12 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <CodeBlocks_layout_file> <ActiveTarget name="Debug" /> - <File name="include/HTTPResponse.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="src/ConnectionHandler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <Cursor> + <Cursor1 position="1551" topLine="0" /> + </Cursor> + </File> + <File name="include/ConnectionPoint.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> @@ -16,29 +21,34 @@ <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="src/HTTPMessage.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="include/HTTPMessage.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="include/ConnectionPoint.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="include/ConnectionHandler.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="include/HTTPMessage.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="src/HTTPMessage.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="include/ConnectionHandler.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="include/ServerConfig.h" open="1" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="0" topLine="0" /> </Cursor> </File> - <File name="src/ConnectionHandler.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="include/HTTPResponse.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> - <Cursor1 position="1551" topLine="0" /> + <Cursor1 position="0" topLine="0" /> + </Cursor> + </File> + <File name="src/ServerConfig.cc" open="1" top="1" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <Cursor> + <Cursor1 position="1538" topLine="0" /> </Cursor> </File> </CodeBlocks_layout_file> diff --git a/libs/networking/src/ConnectionHandler.cc b/libs/networking/src/ConnectionHandler.cc index abed00f..4e87750 100644 --- a/libs/networking/src/ConnectionHandler.cc +++ b/libs/networking/src/ConnectionHandler.cc @@ -1,25 +1,25 @@ /** * ======================== legal notice ====================== - * + * * File: ConnectionHandler.cc * Created: 4. Juli 2012, 07 * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a> * Project: libnetworking: classes for tcp/ip sockets and http-protocol handling - * + * * 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 <ConnectionHandler.h> diff --git a/libs/networking/src/HTTPResponse.cc b/libs/networking/src/HTTPResponse.cc index e9ae8eb..f76fff5 100644 --- a/libs/networking/src/HTTPResponse.cc +++ b/libs/networking/src/HTTPResponse.cc @@ -1,25 +1,25 @@ /** * ======================== legal notice ====================== - * + * * File: HTTPResponse.cc * Created: 4. Juli 2012, 06 * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a> * Project: libnetworking: classes for tcp/ip sockets and http-protocol handling - * + * * 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 <HTTPResponse.h> diff --git a/libs/networking/src/ServerConfig.cc b/libs/networking/src/ServerConfig.cc index a339497..0b29d8a 100644 --- a/libs/networking/src/ServerConfig.cc +++ b/libs/networking/src/ServerConfig.cc @@ -1,47 +1,60 @@ /** * ======================== legal notice ====================== - * + * * File: ServerConfig.cc * Created: 8. Juli 2012, 06 * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a> * Project: libnetworking: classes for tcp/ip sockets and http-protocol handling - * + * * 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 <ServerConfig.h> +#include <ConfigReader.h> +#include <LineReader.h> +#include <FileReader.h> +#include <File.h> #include <Logging.h> #include <util.h> #include <sys/stat.h> #include <sys/types.h> -cServerConfig::cServerConfig(int Port) - : server(Port, 5) +cServerConfig::cServerConfig(const char *ConfigBaseDir) + : server(12345, 5) + , authorizationRequired(false) + , wantExtendedScan(false) + , configBaseDir(ConfigBaseDir ? strdup(ConfigBaseDir) : NULL) + , credentialsFile(NULL) , documentRoot(NULL) , appIconPath(NULL) + , mediaInfo(NULL) + , ffmpeg(NULL) { } cServerConfig::~cServerConfig() { - FREE(appIconPath); + FREE(configBaseDir); FREE(documentRoot); + FREE(appIconPath); + FREE(mediaInfo); + FREE(ffmpeg); } -void cServerConfig::SetAppIcon(const char* AppIcon) +void cServerConfig::SetAppIcon(const char *AppIcon) { struct stat st; @@ -53,13 +66,103 @@ void cServerConfig::SetAppIcon(const char* AppIcon) else esyslog("ERROR: failed to stat application icon! %s", AppIcon); } -void cServerConfig::SetDocumentRoot(const char* DocumentRoot) +void cServerConfig::SetConfigBaseDir(const char *ConfigBaseDir) +{ + free(configBaseDir); + configBaseDir = ConfigBaseDir ? strdup(ConfigBaseDir) : NULL; +} + +void cServerConfig::SetCredentialsFile(const char *FileName) +{ + free(credentialsFile); + credentialsFile = FileName ? strdup(FileName) : NULL; +} + +void cServerConfig::SetDocumentRoot(const char *DocumentRoot) { free(documentRoot); documentRoot = DocumentRoot ? strdup(DocumentRoot) : NULL; } +void cServerConfig::SetMediaInfo(const char *MediaInfo) +{ + free(mediaInfo); + mediaInfo = MediaInfo ? strdup(MediaInfo) : NULL; +} + +void cServerConfig::SetFFMpeg(const char* FFMpeg) +{ + free(ffmpeg); + ffmpeg = FFMpeg ? strdup(FFMpeg) : NULL; +} + void cServerConfig::SetPort(int port) { server.SetPort(port); -}
\ No newline at end of file +} + +void cServerConfig::Dump(void) +{ + isyslog("server-config - socket #%d", server.Port()); + isyslog("server-config - authorization required: %s", authorizationRequired ? "yes" : "no"); + isyslog("server-config - do extended scan: %s", wantExtendedScan ? "yes" : "no"); + isyslog("server-config - application dir: %s", configBaseDir); + isyslog("server-config - credentials file: %s", credentialsFile); + isyslog("server-config - media root: %s", documentRoot); + isyslog("server-config - app icon: %s", appIconPath); + isyslog("server-config - mediainfo: %s", mediaInfo); + isyslog("server-config - ffmpeg: %s", ffmpeg); +} + +int cServerConfig::Load(const char* FileName) +{ + cConfigReader *cr = new cConfigReader(new cLineReader(new cFileReader(new cFile(configBaseDir, FileName)))); + cConfigReader::ConfigEntry *ce; + int numberOfEntries = 0; + + while ((ce = cr->ReadValue())) { + std::string name = std::get<0>(*ce); + + if (!strcmp("media-root", name.c_str())) { + SetDocumentRoot(std::get<1>(*ce).c_str()); + ++numberOfEntries; + } + else if (!strcmp("favicon", name.c_str())) { + SetAppIcon(std::get<1>(*ce).c_str()); + ++numberOfEntries; + } + else if (!strcmp("cmps-port", name.c_str())) { + SetPort(atoi(std::get<1>(*ce).c_str())); + ++numberOfEntries; + } +#ifdef NOT_YET + else if (!strcmp("want-auth", name.c_str())) { + SetAuthorizationRequired(!strcasecmp("true", std::get<1>(*ce).c_str())); + ++numberOfEntries; + } +#endif + else if (!strcmp("want-meta", name.c_str())) { + SetWantExtendedScan(!strcasecmp("true", std::get<1>(*ce).c_str())); + ++numberOfEntries; + } + else if (!strcmp("mediainfo", name.c_str())) { + SetMediaInfo(std::get<1>(*ce).c_str()); + ++numberOfEntries; + } + else if (!strcmp("ffmpeg", name.c_str())) { + SetFFMpeg(std::get<1>(*ce).c_str()); + ++numberOfEntries; + } + delete ce; + } + cr->Close(); + delete cr; + + return numberOfEntries > 0; +} + +int cServerConfig::Store(const char* FileName) +{ + //TODO: + return 0; +} diff --git a/libs/networking/src/Url.cc b/libs/networking/src/Url.cc deleted file mode 100644 index ce951e6..0000000 --- a/libs/networking/src/Url.cc +++ /dev/null @@ -1,229 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: Url.cc - * Created: 4. Juli 2012, 05 - * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a> - * Project: libnetworking: classes for tcp/ip sockets and http-protocol handling - * - * 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 <Url.h> -#include <Codec.h> -#include <util.h> -#ifdef DEBUG -#include <iostream> -#endif -#include <stdio.h> -#include <string.h> -#include <vector> - -static cURLEncoder * encoder = NULL; -static cURLDecoder * decoder = NULL; - -cUrl::cUrl(const char* RawURL) - : path(NULL) -{ - ParseURL(RawURL); -} - -cUrl::~cUrl() -{ - FREE(path); -} - -cURLDecoder* cUrl::Decoder(void) -{ - if (!decoder) decoder = new cURLDecoder(); - return decoder; -} - -cURLEncoder* cUrl::Encoder(void) -{ - if (!encoder) encoder = new cURLEncoder(); - return encoder; -} - -const char *cUrl::Parameter(const char* Name) -{ - std::tr1::unordered_map<std::string, std::string>::iterator found = parameters.find(Name); - if (found != parameters.end()) return found->second.c_str(); - return NULL; -} - -void cUrl::SetParameter(const char* Name, const char* Value) -{ - std::string name = Name; - std::string value = Value ? Value : " "; - parameters[name] = value; -} - -size_t cUrl::EstimatedSize(void ) const -{ - size_t rv = parameters.size() * 3; - - if (path) rv += strlen(path) + 4; - ParameterMap::const_iterator pm = parameters.begin(); - - while (pm != parameters.end()) { - rv += pm->first.length() * 3; - rv += pm->second.length() * 3; - ++pm; - } - return rv; -} - -void cUrl::ParseURL(const char *URL) -{ - FREE(path); - parameters.clear(); - if (!URL) return; - const char *q = strchr(URL, '?'); // divider between url and querystring -// char *realURL; -// size_t l; - - if (!q) q = URL + strlen(URL); -// l = q - URL; -// realURL = (char *)malloc(l + 2); -// if (!realURL) return; -// strncpy(realURL, URL, l); -// realURL[l] = 0; - path = Decoder()->Decode(URL, q - URL); - if (*q) ParseQueryString(++q); -} - -void cUrl::ParseQueryString(const char* QueryString) -{ - if (!(QueryString && *QueryString)) return; - const char *start, *last; - char *scratch = strdup(QueryString); - char *p, *end; - size_t srcLen = strlen(QueryString); - - for (start = (const char *)scratch, end = (char *) start, last = scratch + srcLen; end && start < last; start = (const char *)++end) { - end = (char *) strchr(start, '&'); - if (!end) end = (char *)start + strlen(start); - *end = 0; - p = (char *) strchr(start, '='); - if (p) { - *p++ = 0; - char *pn = p ? Decoder()->Decode(start) : NULL; - char *pv = p ? Decoder()->Decode(p) : NULL; - - std::string name = pn; - std::string value = pv ? pv : " "; - - parameters[name] = value; - - free(pn); - free(pv); - } - else { - char *pn = Decoder()->Decode(start); - - std::string name = pn; - parameters[name] = " "; - free(pn); - } - } - free(scratch); -} - -char* cUrl::ToString(void) const -///< returns the address of the newly allocated buffer -{ - size_t bufSize = EstimatedSize(); - char *rv = (char *)malloc(bufSize); - - if (!rv) return NULL; - int n = WriteBuf(rv, bufSize); - - if (n < 0) { - bufSize += 128; - rv = (char *) realloc(rv, bufSize); - WriteBuf(rv, bufSize); - } - return rv; -} - -int cUrl::WriteBuf(char* buf, size_t bufSize) const -///< returns the characters written. -1 as return value indicates a buffer overrun. -{ - char *p, *tmp; - bool first = true; - int n = 0; - - if (path) n += snprintf(buf + n, bufSize - n, "%s", path); - p = buf + n; - ParameterMap::const_iterator pm = parameters.begin(); - - while (pm != parameters.end()) { - tmp = Encoder()->Encode(pm->first.c_str()); - if (p - buf + strlen(tmp) + 2 > bufSize) - return -1; - if (first) { - first = false; - *p++ = '?'; - } - else *p++ = '&'; - strcpy(p, tmp); - p += strlen(p); - FREE(tmp); - - if (strcmp(pm->second.c_str(), " ")) { - tmp = Encoder()->Encode(pm->second.c_str()); - if (p - buf + strlen(tmp) + 2 > bufSize) - return -1; - *p++ = '='; - strcpy(p, tmp); - p += strlen(p); - FREE(tmp); - } - ++pm; - } - p += strlen(p); - - return p - buf; -} - -#ifdef DEBUG -void cUrl::Dump(void ) -{ - ParameterMap::const_iterator pm = parameters.begin(); - - while (pm != parameters.end()) { - std::cout << "parameter [" << pm->first << "]"; - if (strcmp(pm->second.c_str(), " ")) - std::cout << " has value <|" << pm->second << "|>" << std::endl; - else - std::cout << " has NO value!" << std::endl; - ++pm; - } -} -#endif - -void cUrl::Cleanup(void ) -{ - if (encoder) { - delete encoder; - encoder = NULL; - } - if (decoder) { - delete decoder; - decoder = NULL; - } -}
\ No newline at end of file |