Commit 65e18b07 authored by jan.koester's avatar jan.koester
Browse files

file uplaod on work

parent 1d292c6c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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}
+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
+123 −2
Original line number Diff line number Diff line
@@ -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>

@@ -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];

@@ -279,6 +398,8 @@ namespace blogi {
        bool Controller(netplus::con *curcon,libhttppp::HttpRequest *req,libhtmlpp::HtmlElement page){
            return false;
        }
    private:
        redisContext *_RedisCTX;
    };
};

+4 −1
Original line number Diff line number Diff line
@@ -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());
                }
            }
        }