跳转到主要内容

Ni! Ni! Ni!

项目描述

Ni! Ni! Ni!

  1. 访问软件许可页面。

  2. 给我一棵灌木丛,即付钱。

  3. 接收许可代码。

  4. 使用用户名和许可代码配置软件。

快速入门

$ pip install knightswhosayni
$ python -m knightswhosayni.main [path/to/src] [module-name] [prefix] [license-key]
$ tox -e py
$ python -m build
$ twine upload dist/*

许可用户

选项1:使用代码

import builtins
builtins.[prefix]LICENSE_USER = '[username]'
builtins.[prefix]LICENSE_CODE = '[license code]'

选项2:使用环境变量

export [prefix]LICENSE_USER=[username]
export [prefix]LICENSE_CODE=[license code]

选项3:使用许可文件

# [prefix.lower()]license.ini
[prefix.strip('_')]
LICENSE_USER=[username]
LICENSE_CODE=[license code]

示例

给定

  • 前缀 – ‘PACKAGE_NAME_V1_’

  • 用户名 – name@example.com

import builtins
builtins.PACKAGE_NAME_V1_LICENSE_USER = 'name@example.com'
builtins.PACKAGE_NAME_V1_LICENSE_CODE = 'e385cf4c-be9a-4389-82ba-bfa85b8ad17c'
export PACKAGE_NAME_V1_LICENSE_USER=name@example.com
export PACKAGE_NAME_V1_LICENSE_CODE=e385cf4c-be9a-4389-82ba-bfa85b8ad17c
# package_name_v1_license.ini
[PACKAGE_NAME_V1]
LICENSE_USER=name@example.com
LICENSE_CODE=e385cf4c-be9a-4389-82ba-bfa85b8ad17c

注意事项

也许这个包是个坏主意。但这是我是如何到达这里的

  1. 我偶尔会制作有用的包。

  2. 人们使用它们,偶尔会贡献(这是好事!)。

  3. 很少有人向项目捐款(数额很小)。

  4. 我考虑过使用GitHub Donors,但感觉这需要整个在线“个性”。我喜欢交朋友,但也许老式软件许可可以行得通。

  5. 使用RSA或类似的真正加密引入了过于沉重的依赖(我的库通常没有依赖)。

  6. 我也不想在每次运行代码时都强制代码调用网络服务器(隐私问题等等)。

  7. 我仍然相信大多数人愿意“做正确的事”,特别是如果“做错事”更麻烦的话。

  8. 我仍然想制作开源软件,如果您想窃取代码,它就像ctrl-c ctrl-v一样简单。但是,我要打赌,失去“pip install thing”的便捷性已经足够烦人了(商标)。

  9. 因此,“说Ni的骑士”是我的典范。他们足够麻烦,以至于需要带他们一丛灌木,但又不至于麻烦到需要RSA加密、许可证服务器和律师介入。

在实际应用中,该包分为四个部分

  1. __license__.py文件添加到Python包中以进行分发。

  2. 修改Python包的__init__.py文件以进行新的编码。

  3. 将许可证检查注入到Python包源文件中。

  4. 将Python包源文件加密,嗯,混淆,嗯,隐藏,嗯,用新的编码编码。

这实现了三个目标

  1. 在导入源文件时进行许可证检查。

  2. 包中的源文件难以更改。

  3. 修改包的__init__.py会破坏编码。

我希望这足以让人感到烦恼,从而促使用户购买许可证而不是绕过它。

以下是一些它无法保护的事项

  1. 创建自己的密钥生成器 - 正确,RSA很棒,但太重了。

  2. 解码源代码 - 正确,它已经在网上开源。

  3. 提供未混淆的代码 - 正确,但那样就没有pip更新了。

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

knightswhosayni-0.2.0.tar.gz (11.8 kB 查看散列)

上传时间

构建分发

knightswhosayni-0.2.0-py3-none-any.whl (14.9 kB 查看散列)

上传时间 Python 3

由以下支持