Code Monkey home page Code Monkey logo

open-license-manager / licensecc Goto Github PK

View Code? Open in Web Editor NEW
940.0 64.0 300.0 7.14 MB

Software licensing, copy protection in C++. It has few dependencies and it's cross-platform.

Home Page: http://open-license-manager.github.io/licensecc/

License: BSD 3-Clause "New" or "Revised" License

C 2.79% C++ 86.78% CMake 8.70% Objective-C 1.61% Batchfile 0.12%
licensing software-protection msvc linux cpp hardware-locking copy-protection license license-management license-generator

licensecc's Introduction

Licensecc

Copy protection, licensing library and license generator for Windows and Linux.

Standard unstable License travis Github_CI Codacy Badge codecov Github Issues

Protect the software you develop from unauthorized copies, limit the usage in time, to a specific set of machines, or prevent the usage in virtualized environments. It is an open source license manager that helps to keep your software closed 😏 . Among other features if it runs on a "real hardware" it can generate a signature of that hardware and report if the signature doesn't match.

A comprehensive list of features, and their status is available in the project site.

If you're experiencing problems, or you just need informations you can't find in the documentation please contact us on github discussions, we'll be happy to help.

Remember to show your appreciation giving us a star here on GitHub.

License

The project is donated to the community. It comes with freedom of use for everyone, and it always will be. It has a BSD 3 clauses licensing schema, that allows free modification and use in commercial software.

Project Structure

The software is made by 4 main sub-components:

  • a C++ library with a nice C api, licensecc with minimal (or no) external dependencies (the part you have to integrate in your software) that is the project you're currently in.
  • a license debugger lcc-inspector to be sent to the final customer when there are licensing problems or for calculating the pc hash before issuing the license.
  • a license generator (github project lcc-license-generator) lccgen for customizing the library and generate the licenses.
  • Usage examples to simplify the integration in your project.

How to build

Below an overview of the basic build procedure, you can find detailed instructions for Linux or Windows in the project web site.

Prerequisites

  • Operating system: Linux(Ubuntu, CentOS), Windows
  • compilers : GCC (Linux) MINGW (Linux cross compile for Windows), MINGW or MSVC (Windows)
  • tools : cmake(>3.6), git, make/ninja(linux)
  • libs : If target is Linux Openssl is required. Windows depends only on system libraries. Boost is necessary to build license generator and to run the tests but it's NOT a dependency of the final licensecc library.

For a complete list of dependencies and supported environments see the project website

Clone the project. It has submodules, don't forget the --recursive option.

git clone --recursive https://github.com/open-license-manager/licensecc.git
cd licensecc/build

build on Linux

cmake .. -DCMAKE_INSTALL_PREFIX=../install
make
make install

build on Windows (with MSVC 2017)

cmake .. -G "Visual Studio 15 2017 Win64" -DBOOST_ROOT="{Folder where boost is}" -DCMAKE_INSTALL_PREFIX=../install
cmake --build . --target install --config Release

cross compile with MINGW on Linux

x86_64-w64-mingw32.static-cmake .. -DCMAKE_INSTALL_PREFIX=../install
make
make install

How to test

on Linux

make test

on Windows (MSVC)

ctest -C Release

How to use

The examples repository that shows various ways to integrate licensecc into your project.

How to contribute

The easiest way you can solve your problems or ask help is through the discussions tab above, otherwise if you think there is a problem you can open an issue in the issue system. Have a look to the contribution guidelines before reporting. We use GitFlow (or at least a subset of it). Remember to install the gitflow git plugin and use develop as default branch for your pull requests.

licensecc's People

Contributors

botellaa avatar davidwed avatar emgstabilis avatar gcontini avatar gllamant avatar monsieurgustav avatar shaharhd avatar siavelism avatar tizzybec avatar toofics avatar willamowius avatar xoox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

licensecc's Issues

build error no such file public-key.h

[ 23%] Building C object src/library/os/CMakeFiles/os.dir/os.c.o
cd /root/open-license-manager-1.1.0/build/src/library/os && /usr/bin/cc -DBOOST_ALL_NO_LIB -DBOOST_LIB_DIAGNOSTIC -pipe -fmessage-length=0 -Wall -Wuninitialized -fPIC -I/root/open-license-manager-1.1.0/build -o CMakeFiles/os.dir/os.c.o -c /root/open-license-manager-1.1.0/src/library/os/os.c
/root/open-license-manager-1.1.0/src/library/os/os.c:3:24: fatal error: public-key.h: No such file or directory

Machine identifiers (disk id...) in containers

Machine identifiers (such as disk id or ethernet id) don't make sense in containerized environments, especially in dockers (imagine a docker that is running inside Kubernetes, ethernet adapters are added on the fly, disks are created on the fly, the docker instance can migrate from a physical node to another... ). However some part of the library are still useful (eg. date checks)

When docker/(LXC?) is detected skip the PC identifier verification or return a default identifier.
Create a license flag to allow/disallow run in containerized environments.

Tests failing if specify a project name (cmake -DLCC_PROJECT_NAME=...)

Ubuntu 18.04

I noticed the following compilation warning

[ 47%] Building CXX object src/library/os/CMakeFiles/os.dir/linux/network.cpp.o In file included from /usr/include/string.h:494:0, from /home/nyue/projects/Open-License-Manager/OLM/Open-License-Manager_git/src/library/os/linux/network.cpp:28: In function ‘char* strncpy(char*, const char*, size_t)’, inlined from ‘FUNCTION_RETURN license::os::getAdapterInfos(std::vector<license::os::OsAdapterInfo>&)’ at /home/nyue/projects/Open-License-Manager/OLM/Open-License-Manager_git/src/library/os/linux/network.cpp:71:11: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:71: warning: ‘char* __builtin___strncpy_chk(char*, const char*, long unsigned int, long unsigned int)’: specified bound 1025 exceeds the size 1024 of the destination [-Wstringop-overflow=] return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); ^ [ 48%] Building CXX object src/library/os/CMakeFiles/os.dir/linux/os_linux.cpp.o

Running tests...
Test project /home/nyue/projects/Open-License-Manager/OLM/build
Start 1: test_license
1/16 Test #1: test_license ..................... Passed 0.01 sec
Start 2: test_command-line
2/16 Test #2: test_command-line ................ Passed 0.04 sec
Start 3: test_project
3/16 Test #3: test_project ..................... Passed 0.06 sec
Start 4: test_cryptohelper
4/16 Test #4: test_cryptohelper ................ Passed 0.05 sec
Start 5: test_os_linux
5/16 Test #5: test_os_linux .................... Passed 0.00 sec
Start 6: test_license_reader
6/16 Test #6: test_license_reader .............. Passed 0.01 sec
Start 7: test_license_locator
7/16 Test #7: test_license_locator ............. Passed 0.01 sec
Start 8: test_event_registry
8/16 Test #8: test_event_registry .............. Passed 0.00 sec
Start 9: test_network
9/16 Test #9: test_network .....................***Failed 0.00 sec
Start 10: test_execution_environment
10/16 Test #10: test_execution_environment ....... Passed 0.00 sec
Start 11: test_hw_identifier
11/16 Test #11: test_hw_identifier ............... Passed 0.00 sec
Start 12: test_crack
12/16 Test #12: test_crack .......................***Failed 0.01 sec
Start 13: test_date
13/16 Test #13: test_date ........................***Failed 0.02 sec
Start 14: test_it_hw_identifier
14/16 Test #14: test_it_hw_identifier ............***Failed 0.02 sec
Start 15: test_standard_license
15/16 Test #15: test_standard_license ............***Failed 0.02 sec
Start 16: test_signature_verifier
16/16 Test #16: test_signature_verifier .......... Passed 0.02 sec

69% tests passed, 5 tests failed out of 16

Total Test time (real) = 0.30 sec

The following tests FAILED:
9 - test_network (Failed)
12 - test_crack (Failed)
13 - test_date (Failed)
14 - test_it_hw_identifier (Failed)
15 - test_standard_license (Failed)
Errors while running CTest
Makefile:151: recipe for target 'test' failed
make: *** [test] Error 8

*** buffer overflow detected ***: /home/nyue/projects/Open-License-Manager/OLM/build/test/library/os/test_network terminated *** buffer overflow detected ***: /home/nyue/projects/Open-License-Manager/OLM/build/test/functional/test_it_hw_identifier terminated *** buffer overflow detected ***: /home/nyue/projects/Open-License-Manager/OLM/build/test/functional/test_it_hw_identifier terminated

Calling the library from a Visual Studio C# application

Hi there,

thanks a lot for the great work. I am already using the library on my backend successfully. I need to use the same (or similar library) from my frontend which is in WPF/C#.

This question goes out to anybody who might have done this already. Any steps to follow on how to do this ? I think it can be wrapped into a managed C++ library, but still have to find out the specifics, if anybody has done this already, it would be much appreciated to get some guidance.

Thanks in advance..

Document MinGW usage

Cross compiling is a very nice feature, the project is reported working with MinGW but there is no detailed documentation about it.

  • Specify what's the host and what's the target operating system.
  • installation of prerequisites (boost, openssl)
  • cmake command line (and toolchain definition)

use #define(d) constants for all the fixed lenght arrays in the public api.

Moving here a discussion from another bug for simplicity

  • in some structs (e.g., AuditEvent, CallerInformations, LicenseInfo),
    there are fixed-length arrays whose dimensions are not "#defined," but are
    instead manifest constant integers (e.g., "11"). There is also one case
    of an expression in the dimension (proprietary_data in LicenseInfo).
    These dimensions are thus unavailable as constants into the binding
    language. So when the binding language tries to set/get these fields,
    there is risk of manually getting the length wrong (especially if it
    changes later), and Bad Things may happen.

Lcc submodule not found: _Could NOT find lcc (missing: lcc_DIR)

i compiler this project in win10,but i get this error follow below

_Could NOT find lcc (missing: lcc_DIR)
CMake Error at cmake/Findlcc.cmake:80 (add_subdirectory):
The source directory

E:/thirdParty_lib/encryption/open-license-manager-develop/extern/license-generator

does not contain a CMakeLists.txt file.
Call Stack (most recent call first):
CMakeLists.txt:30 (find_package)

Found openssl version 1.0.2p
architecture detected: x86_64
C compiler : D:/Code-software/vs2019/install/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe
C compiler flags : /DWIN32 /D_WINDOWS /W3
CXX compiler : D:/Code-software/vs2019/install/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe
CXX compiler flags: /DWIN32 /D_WINDOWS /W3 /GR /EHsc
CXX compiler flags debug : /MDd /Zi /Ob0 /Od /RTC1
CXX compiler flags release: /MD /O2 /Ob2 /DNDEBUG
Install prefix : C:/Program Files (x86)/licensecc
Project name : DEFAULT
Project base dir : E:/thirdParty_lib/encryption/open-license-manager-develop/projects/DEFAULT
Found Boost: E:/thirdParty_lib/boost/boost_1_69_0 (found version "1.69.0") found components: unit_test_framework system filesystem
Configuring incomplete, errors occurred!
See also "E:/thirdParty_lib/encryption/open-license-manager-develop/build/CMakeFiles/CMakeOutput.log"._

my env is :
system: windows10
cmake version : cmake 3.16.2
msvc version : msvc 14

Default strategy doesn't work well for pc with no disk

A general review around default strategy (and on the fact that there are environment that can't be "identified" eg.dockers) should be done.
EG default strategy should fall back from disk to network to none (and when it's none it should report info about the environment: is it a docker? is it a vm? how much memory? how many cpu?)

provide a better computer identifier

The computer identifier should be 12 bytes long (to be coded as 16 Base36 ascii chars)
It should include:

  1. physical memory
  2. cpu type
  3. license number(windows)/dbus guid (Linux)
  4. computer name(windows)/hostname (linux)
  5. 1 or more mac address of connected network cards
  6. 1 or more disk identifier

Improve issue licensing procedures - build procedures

There are many issues regarding license management right now:

  • deleting the build directory now deletes the primary key and make impossible issue new licenses for the previous product
  • it isn't clear how to build/customize/use this library. Everything comes as a source code...

Migrated from issue #7

Probably will be necessary to restructure the whole build process separating 4 3 different projects the first two to be compiled/launched when a new software provider registers:

First one:
Bootstrap + License Manager

The third one:
library
should be compiled in a second time (maybe from the software editor).

Fourth one:
tests

Generation of pc identifier fails with DEFAULT strategy if no disk

Short description

When run in a docker container, DEFAULT strategy fails if there are no attached disks (example: continuous integration environments).

Expected behaviour

I would expect the DEFAULT strategy to be robust against differences in real-life computer systems. In particular, I think it should fall back to another strategy if some information is not available.

Analysis of the problem

The directory /dev/disks is empty, thus there are no disks, whether they are accessed by UUID or by label.

Number of disks returned by getDiskInfos is 0. Thus, num_identifiers = disk_num * adapter_num is zero, and the identifier cannot be constructed. This problem would also occur if there were no network adapters.

Proposed solution

  • Fallback to generate_ethernet_pc_id if there are no disks.
  • Fallback to generate_disk_pc_id if there are no adapters.
  • Whether running the license on this kind of (virtual) machine is acceptable can be left to the person who generates the license, since the generated machine id includes information on what kind of id it is.

Log encryption

Log strings are one of the most easy point of attack and debugging of the code.

Log strings should be encrypted during the bootstrap phase and decrypted by an executable and/or by the php backoffice.

it is not useful

I test the software in two computers,which named A and B.A computer's signature is IAAA-AAAA-LzgV-7AAA , B computer's signature is IAAA-AAAA-KudG-xQAA。when i copy A's ./example and license to B, the B return "licence OK".
I did some experiments in different computers,I found the different computers has common prefix “ IAAA-AAAA“,the postfix didn't inflent the result,all return OK.only prefix influnt the resule,but the prefix is same.
Is my way of using it wrong?

Error generating dates in license file in windows

Line 207 of open-license-manager/src/tools/license-generator/license-generator.cpp is:
oss << year << "-" << setfill('0') << std::setw(2) << month << "-" << day;

should be:
oss << year << "-" << setfill('0') << std::setw(2) << month << "-" << std::setw(2) << day;

so day can have 2 digits in windows.

Crash when I push a wrong license

I'm running a ./example
I deliberately provided for example.exe a wrong license (specifically: I get your ID in introduce: Jaaa-aaaa-MG9F-ZhB to license_generator gen example.lic, then check this lic by example.exe) to handle a behaviors.
But It crash at

EVENT_TYPE result = acquire_license("example", licenseLocation, &licenseInfo);

Deeper, I creating debugger dump:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crt\src\vcruntime\thread_safe_statics.cpp --> static int __cdecl __scrt_initialize_thread_safe_statics() throw() --> auto const wake_all_condition_variable = GET_PROC_ADDRESS(kernel32, WakeAllConditionVariable);

How can I do?

boost 1.69

Hi there,

just wanted to report an error I had during compilation. I run Ubuntu 18.04 with boost 1.69 and I get following errors:

/usr/bin/c++ -pipe -fmessage-length=0 -std=c++11 -Wuninitialized -fPIC -O3 -DNDEBUG -pthread -static-libstdc++ -Wl,--strip-all -static-libstdc++ -rdynamic CMakeFiles/os_linux_test.dir/Os_Linux_test.cpp.o -o os_linux_test ../../lib/libos.a -Wl,-Bstatic -lboost_date_time -lboost_unit_test_framework -lboost_program_options -lboost_system -lboost_filesystem ../../lib/libbase.a -lcrypto -Wl,-Bdynamic -lz -ldl
CMakeFiles/os_linux_test.dir/Os_Linux_test.cpp.o: In function _GLOBAL__sub_I_Os_Linux_test.cpp': Os_Linux_test.cpp:(.text.startup+0x26): undefined reference to boost::unit_test::unit_test_log_t::instance()'
Os_Linux_test.cpp:(.text.startup+0x58): undefined reference to boost::unit_test::decorator::collector_t::instance()' Os_Linux_test.cpp:(.text.startup+0xea): undefined reference to boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector_t&, unsigned long)'
Os_Linux_test.cpp:(.text.startup+0x117): undefined reference to boost::unit_test::decorator::collector_t::instance()' Os_Linux_test.cpp:(.text.startup+0x192): undefined reference to boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector_t&, unsigned long)'
Os_Linux_test.cpp:(.text.startup+0x1bf): undefined reference to boost::unit_test::decorator::collector_t::instance()' Os_Linux_test.cpp:(.text.startup+0x23a): undefined reference to boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector_t&, unsigned long)'
Os_Linux_test.cpp:(.text.startup+0x267): undefined reference to boost::unit_test::decorator::collector_t::instance()' Os_Linux_test.cpp:(.text.startup+0x2e2): undefined reference to boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector_t&, unsigned long)'

If I compile against boost 1.65 using the -DBOOST_ROOT= flag, then it compiles fine.

Regards..

base64 not recognized value error

Hi, I am using ubuntu 16.04.

I am following the tutorial from this link to generate license
https://github.com/open-license-manager/examples/tree/develop/submodule

I get the error "base64 not recognized value error" after I run

$ bin/lcc license issue -p ../projects/DEFAULT/ -o example.lic

Besides that, it also shows "License writing error: Private key file [/home/ubuntu/open-license-manager/examples/submodule/build/private_key.rsa] does not exists"

Do I need to generate the private key file manually and put in /home/ubuntu/open-license-manager/examples/submodule/build/ directory?

a license for a year

May I generate a license for a year for the computer for node lock license? Is there any instruction how to do that?
Thanks in advance

Provide a backoffice to handle licenses

Provide a (php?) backoffice for handling license generation, renew
See the requirement doc

Probaby will be necessary to restructure the whole build process separating 4 different projects the first two to be compiled/launched when a new software provider registers:

  • Bootstrap
  • License Manager

The third one:

  • library
    should be compiled in a second time (maybe from the software editor).

Fourth one:

  • tests

Can't add extra data to the license

In the source code of the license generator there's an extra_data field but there is no command line option for it. Is it possible to have it back ?

Compile error in Centos7

After initial struggle i am compiling this program in centos 7, now halted at this error message:
Could proceed further, what library am i missing ??
proceeded as suggested in your page.

/usr/bin/c++ -pipe -fmessage-length=0 -std=c++11 -Wuninitialized -fPIC -pthread -static-libstdc++ -rdynamic CMakeFiles/bootstrap.dir/bootstrap.cpp.o -o bootstrap ../../../lib/libtools_base.a -lz -ldl
../../../lib/libtools_base.a(CryptoHelperLinux.cpp.o): In function license::CryptoHelperLinux::CryptoHelperLinux()': CryptoHelperLinux.cpp:(.text+0xd5): undefined reference to ERR_load_ERR_strings'
CryptoHelperLinux.cpp:(.text+0xda): undefined reference to ERR_load_crypto_strings' CryptoHelperLinux.cpp:(.text+0xdf): undefined reference to OPENSSL_add_all_algorithms_noconf'
../../../lib/libtools_base.a(CryptoHelperLinux.cpp.o): In function license::CryptoHelperLinux::generateKeyPair()': CryptoHelperLinux.cpp:(.text+0x107): undefined reference to RSA_generate_key'
../../../lib/libtools_base.a(CryptoHelperLinux.cpp.o): In function license::CryptoHelperLinux::exportPrivateKey() const': CryptoHelperLinux.cpp:(.text+0x1cc): undefined reference to BIO_s_mem'
CryptoHelperLinux.cpp:(.text+0x1d4): undefined reference to BIO_new' CryptoHelperLinux.cpp:(.text+0x20d): undefined reference to PEM_write_bio_RSAPrivateKey'
CryptoHelperLinux.cpp:(.text+0x228): undefined reference to BIO_ctrl' CryptoHelperLinux.cpp:(.text+0x25a): undefined reference to BIO_read'
CryptoHelperLinux.cpp:(.text+0x409): undefined reference to BIO_free_all' ../../../lib/libtools_base.a(CryptoHelperLinux.cpp.o): In function license::CryptoHelperLinux::exportPublicKey() const':
CryptoHelperLinux.cpp:(.text+0x608): undefined reference to BIO_s_mem' CryptoHelperLinux.cpp:(.text+0x610): undefined reference to BIO_new'
CryptoHelperLinux.cpp:(.text+0x62e): undefined reference to PEM_write_bio_RSAPublicKey' CryptoHelperLinux.cpp:(.text+0x649): undefined reference to BIO_ctrl'
CryptoHelperLinux.cpp:(.text+0x67b): undefined reference to BIO_read' CryptoHelperLinux.cpp:(.text+0x82a): undefined reference to BIO_free_all'
../../../lib/libtools_base.a(CryptoHelperLinux.cpp.o): In function license::CryptoHelperLinux::signString(void const*, unsigned long, std::string const&) const': CryptoHelperLinux.cpp:(.text+0x9ac): undefined reference to EVP_MD_CTX_create'
CryptoHelperLinux.cpp:(.text+0xa44): undefined reference to BIO_new_mem_buf' CryptoHelperLinux.cpp:(.text+0xa63): undefined reference to PEM_read_bio_PrivateKey'
CryptoHelperLinux.cpp:(.text+0xa73): undefined reference to BIO_free' CryptoHelperLinux.cpp:(.text+0xa78): undefined reference to EVP_sha256'
CryptoHelperLinux.cpp:(.text+0xa98): undefined reference to EVP_DigestSignInit' CryptoHelperLinux.cpp:(.text+0xaae): undefined reference to EVP_MD_CTX_destroy'
CryptoHelperLinux.cpp:(.text+0xae4): undefined reference to EVP_DigestUpdate' CryptoHelperLinux.cpp:(.text+0xafa): undefined reference to EVP_MD_CTX_destroy'
CryptoHelperLinux.cpp:(.text+0xb85): undefined reference to EVP_DigestSignFinal' CryptoHelperLinux.cpp:(.text+0xb9b): undefined reference to EVP_MD_CTX_destroy'
CryptoHelperLinux.cpp:(.text+0xc34): undefined reference to CRYPTO_malloc' CryptoHelperLinux.cpp:(.text+0xc50): undefined reference to EVP_MD_CTX_destroy'
CryptoHelperLinux.cpp:(.text+0xcdd): undefined reference to EVP_DigestSignFinal' CryptoHelperLinux.cpp:(.text+0xcf7): undefined reference to CRYPTO_free'
CryptoHelperLinux.cpp:(.text+0xd03): undefined reference to EVP_MD_CTX_destroy' CryptoHelperLinux.cpp:(.text+0xdaa): undefined reference to EVP_PKEY_free'
CryptoHelperLinux.cpp:(.text+0xdbd): undefined reference to CRYPTO_free' CryptoHelperLinux.cpp:(.text+0xdd0): undefined reference to EVP_MD_CTX_destroy'
../../../lib/libtools_base.a(CryptoHelperLinux.cpp.o): In function license::CryptoHelperLinux::Opensslb64Encode(unsigned long, unsigned char*) const': CryptoHelperLinux.cpp:(.text+0xf24): undefined reference to BIO_s_mem'
CryptoHelperLinux.cpp:(.text+0xf2c): undefined reference to BIO_new' CryptoHelperLinux.cpp:(.text+0xf35): undefined reference to BIO_f_base64'
CryptoHelperLinux.cpp:(.text+0xf3d): undefined reference to BIO_new' CryptoHelperLinux.cpp:(.text+0xf54): undefined reference to BIO_push'
CryptoHelperLinux.cpp:(.text+0xf69): undefined reference to BIO_set_flags' CryptoHelperLinux.cpp:(.text+0xf82): undefined reference to BIO_write'
CryptoHelperLinux.cpp:(.text+0xf9d): undefined reference to BIO_ctrl' CryptoHelperLinux.cpp:(.text+0xfba): undefined reference to BIO_ctrl'
CryptoHelperLinux.cpp:(.text+0xfee): undefined reference to BIO_free_all' ../../../lib/libtools_base.a(CryptoHelperLinux.cpp.o): In function license::CryptoHelperLinux::~CryptoHelperLinux()':
CryptoHelperLinux.cpp:(.text+0x1044): undefined reference to `RSA_free'
collect2: error: ld returned 1 exit status
make[2]: *** [src/tools/bootstrap/bootstrap] Error 1

Upload usage data to the server

Usage data can be uploaded to the server for license statistics.

The name of the server or its ip should be configurable by the software editor.

  • check if it is possible to connect to the server for uploading the licenses
  • if it fails check if it is possible to connect to google.
    • If this is possible means that the licensing server is actively shielded. Abort the program.
    • If connection to google fails assume that the pc running the license software is not connected to Internet. Continue using the software.

Pre-commit hook to do a clang-format

It would be a good idea to reformat the code before it's committed using a pre-commit hook (to standardize it when we accept commits from other developers)

Seem this project
pre-commit-clang-format

Debug build is broken in Linux (-DCMAKE_BUILD_TYPE=DEBUG)

Configure the project for debug build

cmake .. -DCMAKE_BUILD_TYPE=DEBUG

Compiling we get the following error:

/usr/bin/c++   -pipe -fmessage-length=0 -std=c++11 -Wuninitialized -fPIC -g  -pthread -rdynamic CMakeFiles/license_generator.dir/license-generator-main.cpp.o  -o license_generator ../../../lib/liblicense_generator_lib.a ../../../lib/libtools_base.a ../../../lib/liblicense++_static.a ../../../lib/libini.a ../../../lib/libos.a ../../../lib/libbase.a -Wl,-Bstatic -lboost_program_options -lboost_system -lcrypto -lz -Wl,-Bdynamic -ldl -Wl,-Bdynamic 
../../../lib/libos.a(os-linux.c.o): In function `getDiskInfos':
/home/devel/prj/misc/licman/open-license-manager/src/library/os/os-linux.c:150: undefined reference to `VALGRIND_CHECK_VALUE_IS_DEFINED'
collect2: error: ld returned 1 exit status
src/tools/license-generator/CMakeFiles/license_generator.dir/build.make:107: recipe for target 'src/tools/license-generator/license_generator' failed

Seem valgrind is missing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.