Loading CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ find_package(httppp REQUIRED) find_package(PostgreSQL REQUIRED) find_package(OpenLDAP REQUIRED) find_package(OpenSSL REQUIRED) find_package(Hiredis REQUIRED) include_directories( ${NETPLUS_INCLUDE_DIRS} Loading cmake/FindHiredis.cmake 0 → 100644 +137 −0 Original line number Diff line number Diff line # # This module is designed to find/handle hiredis library # # Requirements: # - CMake >= 2.8.12 (for new version of find_package_handle_standard_args) # # The following variables will be defined for your use: # - Hiredis_INCLUDE_DIRS : hiredis include directory # - Hiredis_LIBRARIES : hiredis libraries # - Hiredis_VERSION : complete version of hiredis (x.y.z) # - Hiredis_MAJOR_VERSION : major version of hiredis # - Hiredis_MINOR_VERSION : minor version of hiredis # - Hiredis_PATCH_VERSION : patch version of hiredis # # How to use: # 1) Copy this file in the root of your project source directory # 2) Then, tell CMake to search this non-standard module in your project directory by adding to your CMakeLists.txt: # set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) # 3) Finally call find_package(Hiredis) once # # Here is a complete sample to build an executable: # # set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) # # find_package(Hiredis REQUIRED) # Note: name is case sensitive # # include_directories(${HIREDIS_INCLUDE_DIRS}) # add_executable(myapp myapp.c) # target_link_libraries(myapp ${HIREDIS_LIBRARIES}) # #============================================================================= # Copyright (c) 2012, julp # # Distributed under the OSI-approved BSD License # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. #============================================================================= cmake_minimum_required(VERSION 2.8.12) ########## Private ########## if(NOT DEFINED HIREDIS_PUBLIC_VAR_NS) set(HIREDIS_PUBLIC_VAR_NS "Hiredis") endif(NOT DEFINED HIREDIS_PUBLIC_VAR_NS) if(NOT DEFINED HIREDIS_PRIVATE_VAR_NS) set(HIREDIS_PRIVATE_VAR_NS "_${HIREDIS_PUBLIC_VAR_NS}") endif(NOT DEFINED HIREDIS_PRIVATE_VAR_NS) function(hiredis_debug _VARNAME) if(${HIREDIS_PUBLIC_VAR_NS}_DEBUG) if(DEFINED ${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME}) message("${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME} = ${${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME}}") else(DEFINED ${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME}) message("${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME} = <UNDEFINED>") endif(DEFINED ${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME}) endif(${HIREDIS_PUBLIC_VAR_NS}_DEBUG) endfunction(hiredis_debug) # Workaround for find_package: no way to force case of variable's names it creates (I don't want to change MY coding standard) function(totitle _STRING _OUTPUT_VAR) string(SUBSTRING ${_STRING} 0 1 FIRST_CHAR) string(SUBSTRING ${_STRING} 1 -1 STRING_REST) string(TOLOWER ${STRING_REST} LOWCASE_STRING_REST) string(TOUPPER ${FIRST_CHAR} UPCASED_FIRST_CHAR) set(${_OUTPUT_VAR} "${UPCASED_FIRST_CHAR}${LOWCASE_STRING_REST}" PARENT_SCOPE) endfunction(totitle) totitle(${HIREDIS_PUBLIC_VAR_NS} ${HIREDIS_PRIVATE_VAR_NS}_FIND_PKG_PREFIX) # Alias all Hiredis_FIND_X variables to HIREDIS_FIND_X get_directory_property(${HIREDIS_PRIVATE_VAR_NS}_CURRENT_VARIABLES VARIABLES) foreach(${HIREDIS_PRIVATE_VAR_NS}_VARNAME ${${HIREDIS_PRIVATE_VAR_NS}_CURRENT_VARIABLES}) if(${HIREDIS_PRIVATE_VAR_NS}_VARNAME MATCHES "^${${HIREDIS_PRIVATE_VAR_NS}_FIND_PKG_PREFIX}") string(REGEX REPLACE "^${${HIREDIS_PRIVATE_VAR_NS}_FIND_PKG_PREFIX}" "${HIREDIS_PUBLIC_VAR_NS}" ${HIREDIS_PRIVATE_VAR_NS}_NORMALIZED_VARNAME ${${HIREDIS_PRIVATE_VAR_NS}_VARNAME}) set(${${HIREDIS_PRIVATE_VAR_NS}_NORMALIZED_VARNAME} ${${${HIREDIS_PRIVATE_VAR_NS}_VARNAME}}) endif(${HIREDIS_PRIVATE_VAR_NS}_VARNAME MATCHES "^${${HIREDIS_PRIVATE_VAR_NS}_FIND_PKG_PREFIX}") endforeach(${HIREDIS_PRIVATE_VAR_NS}_VARNAME) ########## Public ########## find_path( ${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS NAMES hiredis.h PATH_SUFFIXES "hiredis" ) if(${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS) find_library( ${HIREDIS_PUBLIC_VAR_NS}_LIBRARIES NAMES hiredis ) file(READ "${${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS}/hiredis.h" ${HIREDIS_PRIVATE_VAR_NS}_H_CONTENT) string(REGEX REPLACE ".*# *define *HIREDIS_MAJOR *([0-9]+).*" "\\1" ${HIREDIS_PUBLIC_VAR_NS}_MAJOR_VERSION ${${HIREDIS_PRIVATE_VAR_NS}_H_CONTENT}) string(REGEX REPLACE ".*# *define *HIREDIS_MINOR *([0-9]+).*" "\\1" ${HIREDIS_PUBLIC_VAR_NS}_MINOR_VERSION ${${HIREDIS_PRIVATE_VAR_NS}_H_CONTENT}) string(REGEX REPLACE ".*# *define *HIREDIS_PATCH *([0-9]+).*" "\\1" ${HIREDIS_PUBLIC_VAR_NS}_PATCH_VERSION ${${HIREDIS_PRIVATE_VAR_NS}_H_CONTENT}) set(${HIREDIS_PUBLIC_VAR_NS}_VERSION "${${HIREDIS_PUBLIC_VAR_NS}_MAJOR_VERSION}.${${HIREDIS_PUBLIC_VAR_NS}_MINOR_VERSION}.${${HIREDIS_PUBLIC_VAR_NS}_PATCH_VERSION}") include(FindPackageHandleStandardArgs) if(${HIREDIS_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${HIREDIS_PUBLIC_VAR_NS}_FIND_QUIETLY) find_package_handle_standard_args( ${HIREDIS_PUBLIC_VAR_NS} REQUIRED_VARS ${HIREDIS_PUBLIC_VAR_NS}_LIBRARIES ${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS VERSION_VAR ${HIREDIS_PUBLIC_VAR_NS}_VERSION ) else(${HIREDIS_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${HIREDIS_PUBLIC_VAR_NS}_FIND_QUIETLY) find_package_handle_standard_args(${HIREDIS_PUBLIC_VAR_NS} "hiredis not found" ${HIREDIS_PUBLIC_VAR_NS}_LIBRARIES ${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS) endif(${HIREDIS_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${HIREDIS_PUBLIC_VAR_NS}_FIND_QUIETLY) else(${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS) if(${HIREDIS_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${HIREDIS_PUBLIC_VAR_NS}_FIND_QUIETLY) message(FATAL_ERROR "Could not find hiredis include directory") endif(${HIREDIS_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${HIREDIS_PUBLIC_VAR_NS}_FIND_QUIETLY) endif(${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS) mark_as_advanced( ${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS ${HIREDIS_PUBLIC_VAR_NS}_LIBRARIES ) # IN (args) hiredis_debug("FIND_REQUIRED") hiredis_debug("FIND_QUIETLY") hiredis_debug("FIND_VERSION") # OUT # Linking hiredis_debug("INCLUDE_DIRS") hiredis_debug("LIBRARIES") # Version hiredis_debug("MAJOR_VERSION") hiredis_debug("MINOR_VERSION") hiredis_debug("PATCH_VERSION") hiredis_debug("VERSION") No newline at end of file plugins/media/media.cpp +123 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ #include <uuid/uuid.h> #include <hiredis/hiredis.h> #include <htmlpp/html.h> #include <httppp/http.h> Loading Loading @@ -142,11 +145,127 @@ namespace blogi { << "</div>"; } void viewAlbum(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){ setdiv << "<div><span>View media library</span><br>" void uploadMedia(int id,libhttppp::HttpForm::MultipartFormData *dat,libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){ std::string mediafile,mediafilename; if(dat){ for (libhttppp::HttpForm::MultipartFormData *curformdat = dat; curformdat; curformdat = curformdat->nextMultipartFormData()) { libhttppp::HttpForm::MultipartFormData::ContentDisposition* curctdisp = curformdat->getContentDisposition(); if(curctdisp && strcmp(curctdisp->getName(),"mediafile")==0){ mediafilename=curctdisp->getFilename(); mediafile.resize(curformdat->getDataSize()); std::copy(curformdat->getData(),curformdat->getData()+curformdat->getDataSize(),mediafile.begin()); } } if(!mediafile.empty() && !mediafilename.empty()){ std::string ext; size_t expos=mediafilename.rfind('.'); if(expos==std::string::npos){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "Upload media Wrong filename!"; throw excep; } if( (++expos) > mediafilename.length()){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "Upload media Wrong filename!"; throw excep; } ext=mediafilename.substr(expos,mediafilename.length()-expos); blogi::SQL sql; blogi::DBResult res; sql << "SELECT id FROM media_type where ext='"; sql.escaped(ext.c_str()) <<"' LIMIT 1"; int n = Args->database->exec(&sql,res); if(n<1){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "media type: " << ext.c_str() << " not found in Database aborting!"; throw excep; } int tid=atoi(res[0][0]); sql.clear(); sql << "INSERT INTO media_items (album_id,name) VALUES('" << id << "','"; sql.escaped(mediafilename.substr(0,expos).c_str()) << "') RETURNING id"; Args->database->exec(&sql,res); sql.clear(); int mid=atoi(res[0][0]); uuid_t fuuid; char cfuuid[512]; uuid_generate(fuuid); uuid_unparse(fuuid,cfuuid); uuid_clear(fuuid); sql << "INSERT INTO media_items_files (media_items_id,redis_uuid,media_type_id) VALUES('" << mid << "','" << cfuuid << "','" << tid << "')"; Args->database->exec(&sql,res); sql.clear(); } } setdiv << "<div><span>Upload Media:</span><br>" << "<form method=\"POST\" enctype=\"multipart/form-data\" >" << "<input style=\"display:none;\" type=\"text\" name=\"albumid\" value=\""<< id <<"\"/>" << "<input type=\"file\" name=\"mediafile\" />" << "<input type=\"submit\" value=\"upload\"/></form>" << "</div>"; } void viewAlbum(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){ int id; libhttppp::HttpForm form; form.parse(req); for(libhttppp::HttpForm::UrlcodedFormData *curdat=form.getUrlcodedFormData(); curdat; curdat=curdat->nextUrlcodedFormData()){ if(strcmp(curdat->getKey(),"albumid")==0) id=atoi(curdat->getValue()); } libhttppp::HttpForm::MultipartFormData *dat=form.getMultipartFormData(); for (libhttppp::HttpForm::MultipartFormData *curformdat = dat; curformdat; curformdat = curformdat->nextMultipartFormData()) { libhttppp::HttpForm::MultipartFormData::ContentDisposition* curctdisp = curformdat->getContentDisposition(); if(curctdisp && strcmp(curctdisp->getName(),"albumid")==0){ for(size_t i =0; i<curformdat->getDataSize(); ++i){ if(!isdigit(curformdat->getData()[i])){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "Wrong formted Pageid!"; throw excep; } } std::string buf; buf.resize(curformdat->getDataSize()); std::copy(curformdat->getData(),curformdat->getData()+curformdat->getDataSize(),buf.begin()); id=atoi(buf.c_str()); } } if(id<0){ libhttppp::HTTPException exp; exp[libhttppp::HTTPException::Warning] << "no album id found!"; throw exp; } setdiv << "<div><span>View media library</span><br>"; uploadMedia(id,dat,req,setdiv); setdiv << "</div>"; } void editMediaTypes(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){ char url[512]; Loading Loading @@ -279,6 +398,8 @@ namespace blogi { bool Controller(netplus::con *curcon,libhttppp::HttpRequest *req,libhtmlpp::HtmlElement page){ return false; } private: redisContext *_RedisCTX; }; }; Loading plugins/staticpage/static.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -228,7 +228,10 @@ void blogi::StaticPage::editPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlStr throw excep; } } id=atoi(curformdat->getData()); std::string buf; buf.resize(curformdat->getDataSize()); std::copy(curformdat->getData(),curformdat->getData()+curformdat->getDataSize(),buf.begin()); id=atoi(buf.c_str()); } } } Loading Loading
CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ find_package(httppp REQUIRED) find_package(PostgreSQL REQUIRED) find_package(OpenLDAP REQUIRED) find_package(OpenSSL REQUIRED) find_package(Hiredis REQUIRED) include_directories( ${NETPLUS_INCLUDE_DIRS} Loading
cmake/FindHiredis.cmake 0 → 100644 +137 −0 Original line number Diff line number Diff line # # This module is designed to find/handle hiredis library # # Requirements: # - CMake >= 2.8.12 (for new version of find_package_handle_standard_args) # # The following variables will be defined for your use: # - Hiredis_INCLUDE_DIRS : hiredis include directory # - Hiredis_LIBRARIES : hiredis libraries # - Hiredis_VERSION : complete version of hiredis (x.y.z) # - Hiredis_MAJOR_VERSION : major version of hiredis # - Hiredis_MINOR_VERSION : minor version of hiredis # - Hiredis_PATCH_VERSION : patch version of hiredis # # How to use: # 1) Copy this file in the root of your project source directory # 2) Then, tell CMake to search this non-standard module in your project directory by adding to your CMakeLists.txt: # set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) # 3) Finally call find_package(Hiredis) once # # Here is a complete sample to build an executable: # # set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) # # find_package(Hiredis REQUIRED) # Note: name is case sensitive # # include_directories(${HIREDIS_INCLUDE_DIRS}) # add_executable(myapp myapp.c) # target_link_libraries(myapp ${HIREDIS_LIBRARIES}) # #============================================================================= # Copyright (c) 2012, julp # # Distributed under the OSI-approved BSD License # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. #============================================================================= cmake_minimum_required(VERSION 2.8.12) ########## Private ########## if(NOT DEFINED HIREDIS_PUBLIC_VAR_NS) set(HIREDIS_PUBLIC_VAR_NS "Hiredis") endif(NOT DEFINED HIREDIS_PUBLIC_VAR_NS) if(NOT DEFINED HIREDIS_PRIVATE_VAR_NS) set(HIREDIS_PRIVATE_VAR_NS "_${HIREDIS_PUBLIC_VAR_NS}") endif(NOT DEFINED HIREDIS_PRIVATE_VAR_NS) function(hiredis_debug _VARNAME) if(${HIREDIS_PUBLIC_VAR_NS}_DEBUG) if(DEFINED ${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME}) message("${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME} = ${${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME}}") else(DEFINED ${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME}) message("${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME} = <UNDEFINED>") endif(DEFINED ${HIREDIS_PUBLIC_VAR_NS}_${_VARNAME}) endif(${HIREDIS_PUBLIC_VAR_NS}_DEBUG) endfunction(hiredis_debug) # Workaround for find_package: no way to force case of variable's names it creates (I don't want to change MY coding standard) function(totitle _STRING _OUTPUT_VAR) string(SUBSTRING ${_STRING} 0 1 FIRST_CHAR) string(SUBSTRING ${_STRING} 1 -1 STRING_REST) string(TOLOWER ${STRING_REST} LOWCASE_STRING_REST) string(TOUPPER ${FIRST_CHAR} UPCASED_FIRST_CHAR) set(${_OUTPUT_VAR} "${UPCASED_FIRST_CHAR}${LOWCASE_STRING_REST}" PARENT_SCOPE) endfunction(totitle) totitle(${HIREDIS_PUBLIC_VAR_NS} ${HIREDIS_PRIVATE_VAR_NS}_FIND_PKG_PREFIX) # Alias all Hiredis_FIND_X variables to HIREDIS_FIND_X get_directory_property(${HIREDIS_PRIVATE_VAR_NS}_CURRENT_VARIABLES VARIABLES) foreach(${HIREDIS_PRIVATE_VAR_NS}_VARNAME ${${HIREDIS_PRIVATE_VAR_NS}_CURRENT_VARIABLES}) if(${HIREDIS_PRIVATE_VAR_NS}_VARNAME MATCHES "^${${HIREDIS_PRIVATE_VAR_NS}_FIND_PKG_PREFIX}") string(REGEX REPLACE "^${${HIREDIS_PRIVATE_VAR_NS}_FIND_PKG_PREFIX}" "${HIREDIS_PUBLIC_VAR_NS}" ${HIREDIS_PRIVATE_VAR_NS}_NORMALIZED_VARNAME ${${HIREDIS_PRIVATE_VAR_NS}_VARNAME}) set(${${HIREDIS_PRIVATE_VAR_NS}_NORMALIZED_VARNAME} ${${${HIREDIS_PRIVATE_VAR_NS}_VARNAME}}) endif(${HIREDIS_PRIVATE_VAR_NS}_VARNAME MATCHES "^${${HIREDIS_PRIVATE_VAR_NS}_FIND_PKG_PREFIX}") endforeach(${HIREDIS_PRIVATE_VAR_NS}_VARNAME) ########## Public ########## find_path( ${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS NAMES hiredis.h PATH_SUFFIXES "hiredis" ) if(${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS) find_library( ${HIREDIS_PUBLIC_VAR_NS}_LIBRARIES NAMES hiredis ) file(READ "${${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS}/hiredis.h" ${HIREDIS_PRIVATE_VAR_NS}_H_CONTENT) string(REGEX REPLACE ".*# *define *HIREDIS_MAJOR *([0-9]+).*" "\\1" ${HIREDIS_PUBLIC_VAR_NS}_MAJOR_VERSION ${${HIREDIS_PRIVATE_VAR_NS}_H_CONTENT}) string(REGEX REPLACE ".*# *define *HIREDIS_MINOR *([0-9]+).*" "\\1" ${HIREDIS_PUBLIC_VAR_NS}_MINOR_VERSION ${${HIREDIS_PRIVATE_VAR_NS}_H_CONTENT}) string(REGEX REPLACE ".*# *define *HIREDIS_PATCH *([0-9]+).*" "\\1" ${HIREDIS_PUBLIC_VAR_NS}_PATCH_VERSION ${${HIREDIS_PRIVATE_VAR_NS}_H_CONTENT}) set(${HIREDIS_PUBLIC_VAR_NS}_VERSION "${${HIREDIS_PUBLIC_VAR_NS}_MAJOR_VERSION}.${${HIREDIS_PUBLIC_VAR_NS}_MINOR_VERSION}.${${HIREDIS_PUBLIC_VAR_NS}_PATCH_VERSION}") include(FindPackageHandleStandardArgs) if(${HIREDIS_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${HIREDIS_PUBLIC_VAR_NS}_FIND_QUIETLY) find_package_handle_standard_args( ${HIREDIS_PUBLIC_VAR_NS} REQUIRED_VARS ${HIREDIS_PUBLIC_VAR_NS}_LIBRARIES ${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS VERSION_VAR ${HIREDIS_PUBLIC_VAR_NS}_VERSION ) else(${HIREDIS_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${HIREDIS_PUBLIC_VAR_NS}_FIND_QUIETLY) find_package_handle_standard_args(${HIREDIS_PUBLIC_VAR_NS} "hiredis not found" ${HIREDIS_PUBLIC_VAR_NS}_LIBRARIES ${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS) endif(${HIREDIS_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${HIREDIS_PUBLIC_VAR_NS}_FIND_QUIETLY) else(${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS) if(${HIREDIS_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${HIREDIS_PUBLIC_VAR_NS}_FIND_QUIETLY) message(FATAL_ERROR "Could not find hiredis include directory") endif(${HIREDIS_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${HIREDIS_PUBLIC_VAR_NS}_FIND_QUIETLY) endif(${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS) mark_as_advanced( ${HIREDIS_PUBLIC_VAR_NS}_INCLUDE_DIRS ${HIREDIS_PUBLIC_VAR_NS}_LIBRARIES ) # IN (args) hiredis_debug("FIND_REQUIRED") hiredis_debug("FIND_QUIETLY") hiredis_debug("FIND_VERSION") # OUT # Linking hiredis_debug("INCLUDE_DIRS") hiredis_debug("LIBRARIES") # Version hiredis_debug("MAJOR_VERSION") hiredis_debug("MINOR_VERSION") hiredis_debug("PATCH_VERSION") hiredis_debug("VERSION") No newline at end of file
plugins/media/media.cpp +123 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ #include <uuid/uuid.h> #include <hiredis/hiredis.h> #include <htmlpp/html.h> #include <httppp/http.h> Loading Loading @@ -142,11 +145,127 @@ namespace blogi { << "</div>"; } void viewAlbum(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){ setdiv << "<div><span>View media library</span><br>" void uploadMedia(int id,libhttppp::HttpForm::MultipartFormData *dat,libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){ std::string mediafile,mediafilename; if(dat){ for (libhttppp::HttpForm::MultipartFormData *curformdat = dat; curformdat; curformdat = curformdat->nextMultipartFormData()) { libhttppp::HttpForm::MultipartFormData::ContentDisposition* curctdisp = curformdat->getContentDisposition(); if(curctdisp && strcmp(curctdisp->getName(),"mediafile")==0){ mediafilename=curctdisp->getFilename(); mediafile.resize(curformdat->getDataSize()); std::copy(curformdat->getData(),curformdat->getData()+curformdat->getDataSize(),mediafile.begin()); } } if(!mediafile.empty() && !mediafilename.empty()){ std::string ext; size_t expos=mediafilename.rfind('.'); if(expos==std::string::npos){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "Upload media Wrong filename!"; throw excep; } if( (++expos) > mediafilename.length()){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "Upload media Wrong filename!"; throw excep; } ext=mediafilename.substr(expos,mediafilename.length()-expos); blogi::SQL sql; blogi::DBResult res; sql << "SELECT id FROM media_type where ext='"; sql.escaped(ext.c_str()) <<"' LIMIT 1"; int n = Args->database->exec(&sql,res); if(n<1){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "media type: " << ext.c_str() << " not found in Database aborting!"; throw excep; } int tid=atoi(res[0][0]); sql.clear(); sql << "INSERT INTO media_items (album_id,name) VALUES('" << id << "','"; sql.escaped(mediafilename.substr(0,expos).c_str()) << "') RETURNING id"; Args->database->exec(&sql,res); sql.clear(); int mid=atoi(res[0][0]); uuid_t fuuid; char cfuuid[512]; uuid_generate(fuuid); uuid_unparse(fuuid,cfuuid); uuid_clear(fuuid); sql << "INSERT INTO media_items_files (media_items_id,redis_uuid,media_type_id) VALUES('" << mid << "','" << cfuuid << "','" << tid << "')"; Args->database->exec(&sql,res); sql.clear(); } } setdiv << "<div><span>Upload Media:</span><br>" << "<form method=\"POST\" enctype=\"multipart/form-data\" >" << "<input style=\"display:none;\" type=\"text\" name=\"albumid\" value=\""<< id <<"\"/>" << "<input type=\"file\" name=\"mediafile\" />" << "<input type=\"submit\" value=\"upload\"/></form>" << "</div>"; } void viewAlbum(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){ int id; libhttppp::HttpForm form; form.parse(req); for(libhttppp::HttpForm::UrlcodedFormData *curdat=form.getUrlcodedFormData(); curdat; curdat=curdat->nextUrlcodedFormData()){ if(strcmp(curdat->getKey(),"albumid")==0) id=atoi(curdat->getValue()); } libhttppp::HttpForm::MultipartFormData *dat=form.getMultipartFormData(); for (libhttppp::HttpForm::MultipartFormData *curformdat = dat; curformdat; curformdat = curformdat->nextMultipartFormData()) { libhttppp::HttpForm::MultipartFormData::ContentDisposition* curctdisp = curformdat->getContentDisposition(); if(curctdisp && strcmp(curctdisp->getName(),"albumid")==0){ for(size_t i =0; i<curformdat->getDataSize(); ++i){ if(!isdigit(curformdat->getData()[i])){ libhttppp::HTTPException excep; excep[libhttppp::HTTPException::Error] << "Wrong formted Pageid!"; throw excep; } } std::string buf; buf.resize(curformdat->getDataSize()); std::copy(curformdat->getData(),curformdat->getData()+curformdat->getDataSize(),buf.begin()); id=atoi(buf.c_str()); } } if(id<0){ libhttppp::HTTPException exp; exp[libhttppp::HTTPException::Warning] << "no album id found!"; throw exp; } setdiv << "<div><span>View media library</span><br>"; uploadMedia(id,dat,req,setdiv); setdiv << "</div>"; } void editMediaTypes(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){ char url[512]; Loading Loading @@ -279,6 +398,8 @@ namespace blogi { bool Controller(netplus::con *curcon,libhttppp::HttpRequest *req,libhtmlpp::HtmlElement page){ return false; } private: redisContext *_RedisCTX; }; }; Loading
plugins/staticpage/static.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -228,7 +228,10 @@ void blogi::StaticPage::editPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlStr throw excep; } } id=atoi(curformdat->getData()); std::string buf; buf.resize(curformdat->getDataSize()); std::copy(curformdat->getData(),curformdat->getData()+curformdat->getDataSize(),buf.begin()); id=atoi(buf.c_str()); } } } Loading