编辑 | blame | 历史 | 原始文档

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 :smirk: . 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.

编辑 | blame | 历史 | 原始文档

Contributing to Licensecc

Interacting with the team

If you're experiencing issues with the project, due to lack of documentation
or you want to ask a question you can contact us on
project forum.
The forum is the preferred way of contact because your question are useful
to other people.

If you're compiling licensecc following the guide and you meet a software issue
(eg. doesn't compile, it crashes) you can submit an issue. Please try to be very specific about your problem.
You can use the guidelines in "How to Submit A (Good) Bug Report" to structure your question.

Reporting Bugs

Before creating bug reports, please check the repository to see if the problem has already been reported. If it has and the issue is still open, add a comment to the existing issue instead of opening a new one. When you are creating a bug report, please include as many details as possible.

How to submit a good Bug Report

Bugs are tracked as GitHub issues. Explain the problem and include additional details to help maintainers reproduce the problem:

  • Use a clear and descriptive title for the issue to identify the problem.
  • Describe the exact steps which reproduce the problem in as many details as possible. For example, start by explaining how are you using Licensecc.
  • Provide specific examples to demonstrate the steps. Include links to files or GitHub projects, or licenses, which can cause the bug. If you're providing code snippets in the issue, use Markdown code blocks.
  • Describe the current behavior and the expected one* Describe the current result, and the expected behavior.
  • Provide a unit test to demonstrate the bug. The best way to report a bug, and to have it fixed forever is to design a test to demonstrate it.
  • If you're reporting that Licensecc crashed, include a crash dump and the associated message.
  • Label the issue as bug.

Provide more context by answering these questions:

  • Can you reproduce the problem using the example application?
  • Can you reliably reproduce the issue? If not, provide details about how often the problem happens and under which conditions it normally happens.
  • If the problem is related integrating Licensecc with your application, produce a minimal example to demonstrate it Does the problem happen only with some license type? Does the problem only happen in Linux/Docker/Windows?

Include details about your configuration and environment:

  • Update Licensecc to the latest version If possible try to pull the latest changes from develop branch.
  • What's the name and version of the OS you're using?
  • What's the name and version of the compiler you're using? Are you cross compiling? If you're cross compiling specify the host and the target operating system.
  • What's are the cmake command line you used to generate your build scripts?
  • Are you running Licensecc in a virtual machine/docker? If so, which VM software are you using and which operating systems and versions are used for the guest?

Suggesting Enhancements or new features

If you have an idea about a new feature or a question about an environment support, the simplest way you can reach the team is through the project forum.

Otherwise you can open an enhancement suggestion in github. Before you do so check existing enhancement request to see if the enhancement has already been suggested.

Please also check for the current and planned features in the wiki to see where the project is heading to.

Code contributions

Contributions to licensecc will be subject to the following rules:

  • small patches eg. documentation changes, small bug fixes can be submitted directly on github, use the description of the patch to shortly explain the content of the patch.
  • if the patch is not completely trivial please open an issue first and provide a description of what you want to achieve.
  • larger contributions should be discussed first on the project forum.

If you want to contribute we are happy to integrate your code. You can start by looking through the good first issue and help-wanted issues.

You can have a look to the project upcoming milestones to see what's going to be implemented soon and what is the project direction. If you decide to contribute on an issue scheduled in the current milestone, comment on the issue first. If the issue is marked as "assigned" there may be already some work done for it. Commenting on the issue will ensure we don't duplicate our work. Also have a look to the branches: there may be a feature branch corresponding to the issue with some work already done.

If you have already forked the repository to implement a specific feature, and you want your code to be merged in the main repository please first file an enhancement request as explained in suggesting enhancements. If you found a bug and you want to propose a fix please report a bug before.

We apply a subset of GitFlow development workflow. Be sure to work against develop branch, since master is reserved for stable releases, and may be outdated.

General coding rules (for larger contributions)

Supposing you already know how to contribute to an open source project on GitHub (if you have doubts you can check this short guide ), you're working on an existing issue the code is already committed on your fork.

  • Ensure your feature branch is up to date with the develop, eventually merge the latest changes from the develop branch. This will help us save time.
  • Reformat the changed code using "clang-format" to keep consistent formatting style. The style we use is in .clang-format at the base of the project.
  • Prepare your pull request, in the pull request comment reference the issue the pull request will fix.
  • Check your pull request compiles and pass the checks on Travis CI
  • In the pull request comment reference the issue you want to fix.
Don't
  • Don't reformat the code following your personal likes, it introduce a lot of "noise" and makes very hard to merge. Use the clang-format style provided at the base of the project.
  • Very large pull requests with few comments, no corresponding issue explaining what's it about will probably be rejected.
  • We understand that the project is still in beta stage, however we would like to discuss it with you before we take project changing decision. You can reach us on the project forum.
编辑 | blame | 历史 | 原始文档
Copyright (c) 2014, 2020 Gabriele Contini et al.

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

* Neither the name of "licensecc" nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission. 

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
CMakeLists 8 KB
CONTRIBUTING 7 KB
README 6 KB
doc/analysis/Backoffice 874 b
doc/analysis/Development-And-Usage-Workflow 2 KB
doc/development/Build-the-library 6 KB
doc/development/Dependencies 3 KB
doc/development/Development-Environment-Setup 2 KB
doc/other/CREDITS 649 b
doc/other/QA 4 KB
doc/snippets 2 KB
doc/usage/License-retrieval 1 KB
doc/usage/issue-licenses 3 KB
requirements 177 b
src/CMakeLists 353 b
src/inspector/CMakeLists 255 b
src/library/CMakeLists 2 KB
src/library/base/CMakeLists 379 b
src/library/hw_identifier/CMakeLists 287 b
src/library/locate/CMakeLists 462 b
src/library/os/CMakeLists 1 KB
test/CMakeLists 567 b
test/functional/CMakeLists 2 KB
test/library/CMakeLists 1 KB
test/library/hw_identifier/CMakeLists 378 b
test/library/os/CMakeLists 1 KB