open-license-manager
2014-08-04 7b5931685caf55b7b974cb759e5018dbcf1a75c9
windows
5个文件已修改
66 ■■■■■ 已修改文件
CMakeLists.txt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/LicenseReader.cpp 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/api/datatypes.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/base/EventRegistry.cpp 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/library/base/StringUtils.cpp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CMakeLists.txt
@@ -12,7 +12,7 @@
SET(CMAKE_DISABLE_SOURCE_CHANGES OFF)
SET(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
project (license++ C CXX)
SET(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "CMake verbose" FORCE)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
@@ -24,7 +24,7 @@
        SET(CMAKE_EXE_LINKER_FLAGS "/machine:X64 /INCREMENTAL:NO" CACHE STRING "Linker flags")
    endif(CMAKE_CL_64)
    SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib ) #${CMAKE_FIND_LIBRARY_SUFFIXES}
    set_property(DIRECTORY PROPERTY COMPILE_DEFINITIONS_DEBUG _CRT_SECURE_NO_WARNINGS)
    add_definitions("/D_CRT_SECURE_NO_WARNINGS")
else(WIN32)
    SET(PLATFORM_LIBS "m")
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pipe -fmessage-length=0 -std=c++11 -Wall -Wuninitialized -fPIC") 
@@ -37,6 +37,8 @@
        SET(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Install path prefix" FORCE)
    ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
endif(WIN32)
project (license++ C CXX)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  SET(HAVE_64BIT_SIZE_T 1)
@@ -58,12 +60,12 @@
#include_directories(${Boost_INCLUDE_DIRS})
#link_directories ( ${Boost_LIBRARY_DIRS} )
if(NOT WIN32)
#find a static version of openssl crypto library
find_package(OpenSSL REQUIRED)
include_directories(${OPENSSL_INCLUDE_DIR})
list(APPEND EXTERNAL_LIBS ${OPENSSL_CRYPTO_LIBRARY})
if(NOT WIN32)
    FIND_PACKAGE(Dbus REQUIRED)
    include_directories(${DBUS_INCLUDE_DIR})
    include_directories(${DBUS_ARCH_INCLUDE_DIR})
src/library/LicenseReader.cpp
@@ -52,17 +52,17 @@
    bool sigVerified = OsFunctions::verifySignature(printForSign().c_str(),
            license_signature.c_str());
    if (sigVerified) {
        er.addEvent(LICENSE_VERIFIED, INFO);
        er.addEvent(LICENSE_VERIFIED, SVRT_INFO);
    } else {
        er.addEvent(LICENSE_CORRUPTED, SEVERITY_ERROR);
        er.addEvent(LICENSE_CORRUPTED, SVRT_ERROR);
    }
    if (has_expiry) {
        time_t now = time(NULL);
        if (expires_on() < now) {
            er.addEvent(PRODUCT_EXPIRED, SEVERITY_ERROR, "");
            er.addEvent(PRODUCT_EXPIRED, SVRT_ERROR, "");
        }
        if (valid_from() > now) {
            er.addEvent(PRODUCT_EXPIRED, SEVERITY_ERROR);
            er.addEvent(PRODUCT_EXPIRED, SVRT_ERROR);
        }
    }
    if (has_client_sig) {
@@ -70,7 +70,7 @@
        strncpy(str_code, client_signature.c_str(), sizeof(str_code));
        EVENT_TYPE event = validate_pc_signature(str_code);
        if (event != LICENSE_OK) {
            er.addEvent(event, SEVERITY_ERROR);
            er.addEvent(event, SVRT_ERROR);
        }
    }
    return er;
@@ -114,7 +114,7 @@
        ini.Reset();
        SI_Error rc = ini.LoadFile((*it).c_str());
        if (rc < 0) {
            result.addEvent(FILE_FORMAT_NOT_RECOGNIZED, SEVERITY_WARN, *it);
            result.addEvent(FILE_FORMAT_NOT_RECOGNIZED, SVRT_WARN, *it);
            continue;
        } else {
            loadAtLeastOneFile = true;
@@ -122,7 +122,7 @@
        const char* productNamePtr = product.c_str();
        int sectionSize = ini.GetSectionSize(productNamePtr);
        if (sectionSize <= 0) {
            result.addEvent(PRODUCT_NOT_LICENSED, SEVERITY_WARN, *it);
            result.addEvent(PRODUCT_NOT_LICENSED, SVRT_WARN, *it);
            continue;
        } else {
            atLeastOneProductLicensed = true;
@@ -162,7 +162,7 @@
            licenseInfoOut.push_back(licInfo);
            atLeastOneLicenseComplete = true;
        } else {
            result.addEvent(LICENSE_MALFORMED, SEVERITY_WARN, *it);
            result.addEvent(LICENSE_MALFORMED, SVRT_WARN, *it);
        }
    }
    if (!loadAtLeastOneFile) {
@@ -193,11 +193,11 @@
                for (auto it = existing_pos.begin(); it != existing_pos.end();
                        ++it) {
                    diskFiles.push_back(*it);
                    eventRegistry.addEvent(LICENSE_FILE_FOUND, INFO, *it);
                    eventRegistry.addEvent(LICENSE_FILE_FOUND, SVRT_INFO, *it);
                }
            }
        } else {
            eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND, SEVERITY_WARN,
            eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND, SVRT_WARN,
                    varName);
        }
    }
@@ -223,19 +223,19 @@
                    for (auto it = existing_pos.begin();
                            it != existing_pos.end(); ++it) {
                        diskFiles.push_back(*it);
                        eventRegistry.addEvent(LICENSE_FILE_FOUND, INFO, *it);
                        eventRegistry.addEvent(LICENSE_FILE_FOUND, SVRT_INFO, *it);
                    }
                } else {
                    eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND,
                            SEVERITY_WARN, env_var_value);
                            SVRT_WARN, env_var_value);
                }
            } else {
                eventRegistry.addEvent(ENVIRONMENT_VARIABLE_NOT_DEFINED,
                        SEVERITY_WARN);
                        SVRT_WARN);
            }
        } else {
            eventRegistry.addEvent(ENVIRONMENT_VARIABLE_NOT_DEFINED,
                    SEVERITY_WARN);
                    SVRT_WARN);
        }
    }
    return licenseFileFoundWithEnvVariable;
@@ -252,9 +252,9 @@
        if (f.good()) {
            foundNearModule = true;
            diskFiles.push_back(temptativeLicense);
            eventRegistry.addEvent(LICENSE_FILE_FOUND, INFO, temptativeLicense);
            eventRegistry.addEvent(LICENSE_FILE_FOUND, SVRT_INFO, temptativeLicense);
        } else {
            eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND, SEVERITY_WARN,
            eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND, SVRT_WARN,
                    temptativeLicense);
        }
        f.close();
src/library/api/datatypes.h
@@ -49,7 +49,7 @@
} LICENSE_TYPE;
typedef enum {
    INFO, SEVERITY_WARN, SEVERITY_ERROR
    SVRT_INFO, SVRT_WARN, SVRT_ERROR
} SEVERITY;
typedef struct {
src/library/base/EventRegistry.cpp
@@ -10,6 +10,8 @@
#include <string.h>
#include <algorithm>
using namespace std;
namespace license {
EventRegistry::EventRegistry() {
}
@@ -33,7 +35,7 @@
void EventRegistry::turnLastEventIntoError() {
    if (logs.size() > 0) {
        logs.back().severity = SEVERITY_ERROR;
        logs.back().severity = SVRT_ERROR;
    }
}
@@ -41,7 +43,7 @@
    bool eventFound = false;
    for (auto it = logs.begin(); it != logs.end(); ++it) {
        if (it->event_type == event) {
            it->severity = SEVERITY_ERROR;
            it->severity = SVRT_ERROR;
            eventFound = true;
        }
    }
@@ -56,7 +58,7 @@
    auto it = logs.end();
    do {
        --it;
        if (it->severity == SEVERITY_ERROR) {
        if (it->severity == SVRT_ERROR) {
            result = &(*it);
            break;
        }
@@ -68,7 +70,7 @@
bool EventRegistry::isGood() const {
    bool isGood = true;
    for (auto it = logs.begin(); it != logs.end(); ++it) {
        if (it->severity == SEVERITY_ERROR) {
        if (it->severity == SVRT_ERROR) {
            isGood = false;
            break;
        }
@@ -77,7 +79,7 @@
}
void EventRegistry::addError(EVENT_TYPE event) {
    addEvent(event, SEVERITY_ERROR);
    addEvent(event, SVRT_ERROR);
}
void EventRegistry::addEvent(EVENT_TYPE event, SEVERITY severity) {
@@ -102,8 +104,8 @@
bool EventRegistry::turnErrosIntoWarnings() {
    bool eventFound = false;
    for (auto it = logs.begin(); it != logs.end(); ++it) {
        if (it->severity == SEVERITY_ERROR) {
            it->severity = SEVERITY_WARN;
        if (it->severity == SVRT_ERROR) {
            it->severity = SVRT_WARN;
            eventFound = true;
        }
    }
@@ -111,7 +113,7 @@
}
void EventRegistry::exportLastEvents(AuditEvent* auditEvents, int nlogs) {
    int sizeToCopy = std::min(nlogs, (int) logs.size());
    int sizeToCopy = min(nlogs, (int) logs.size());
    std::copy(logs.begin(), logs.begin() + sizeToCopy, auditEvents);
}
}
src/library/base/StringUtils.cpp
@@ -12,6 +12,10 @@
#include <cstring>
#include <algorithm>
#ifdef WIN32
#include <time.h> //mktime under windows
#endif
namespace license {
using namespace std;