{"id":23087636,"url":"https://github.com/exp-codes/software-certificate","last_synced_at":"2025-07-30T07:37:22.052Z","repository":{"id":49963625,"uuid":"116791099","full_name":"EXP-Codes/software-certificate","owner":"EXP-Codes","description":"软件授权插件","archived":false,"fork":false,"pushed_at":"2023-01-16T18:08:23.000Z","size":491,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2024-05-01T13:12:12.802Z","etag":null,"topics":["certificate","programming"],"latest_commit_sha":null,"homepage":"https://exp-codes.github.io/software-certificate/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EXP-Codes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://lyy289065406.github.io/sponsor/"]}},"created_at":"2018-01-09T08:56:10.000Z","updated_at":"2023-05-03T15:54:09.000Z","dependencies_parsed_at":"2023-01-20T07:50:17.771Z","dependency_job_id":null,"html_url":"https://github.com/EXP-Codes/software-certificate","commit_stats":null,"previous_names":["lyy289065406/software-certificate"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fsoftware-certificate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fsoftware-certificate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fsoftware-certificate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fsoftware-certificate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EXP-Codes","download_url":"https://codeload.github.com/EXP-Codes/software-certificate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230019716,"owners_count":18160587,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["certificate","programming"],"created_at":"2024-12-16T19:59:25.820Z","updated_at":"2024-12-16T19:59:26.641Z","avatar_url":"https://github.com/EXP-Codes.png","language":"Java","readme":"# software-certificate\r\n\r\n\u003e \u003cb\u003e软件授权清单\u0026nbsp;:\u0026nbsp;\u003c/b\u003e[[ Management-Page ]](https://lyy289065406.github.io/software-certificate/)\r\n\r\n------\r\n\r\n## 运行环境\r\n\r\n![](https://img.shields.io/badge/JDK-1.8%2B-brightgreen.svg)\r\n\r\n![](https://img.shields.io/badge/Platform-Windows-brightgreen.svg) ![](https://img.shields.io/badge/Platform-Mac-brightgreen.svg)\r\n\r\n\r\n## 插件介绍\r\n\r\n此插件是供开发者使用的，通过它可以利用 Github 服务器发布若干个应用的授权信息。\r\n\r\n然后这些应用可以通过 Github 服务器提取自身的授权信息完成自检。\r\n\r\n目前**提供的自检方案**主要有：\r\n\r\n- 有效版本校验\r\n- 有效时间校验\r\n- 黑名单校验\r\n- 白名单校验\r\n\r\n\r\n## 实现原理\r\n\r\n![实现原理](./imgs/01-软件授权校验原理.png)\r\n\r\n\r\n在 Github 的每个 Repository 都是可以发布一个静态页面的，而且这个静态页面可以在公网访问。\r\n\r\n这个静态页面初衷是用来介绍 Repository 的，但是也可以利用它作为一个静态服务页，实现其他功能。\r\n\r\n\r\n\u003e **为某个 Repository 发布静态页面的方法：**\r\n\u003cbr/\u003e　　（1） 打开这个 Repository 的仓库首页\r\n\u003cbr/\u003e　　（2） 进入 `Settings` 页面\r\n\u003cbr/\u003e　　（3） 找到 `GitHub Pages`，在 `Source`下面有一个下拉框， 默认是 `None`， 修改为 `master branch`\r\n\u003cbr/\u003e　　（4） 然后刷新 `Settings` 页面，在 `GitHub Pages` 的位置会提示：Your site is published at `xxx-url`\r\n\u003cbr/\u003e　　（5） 在Repository根目录新建一个 `index.html` 文件，写入页面内容，就可以通过这个 `xxx-url` 访问它了\r\n\r\n\r\n回到这个插件，其实原理就很简单了，要实现的功能主要有两个：\r\n\r\n- （在开发环境）通过更新 `index.html`，在 `xxx-url` 静态页面维护被授权应用的信息\r\n- （在生产环境）应用从 `xxx-url` 静态页面提取自身的授权信息进行自检\r\n\r\n\r\n## 使用方式\r\n\r\n由于插件存在两部分功能，因此使用方式也是对应拆分为两部分。\r\n\r\n\u003cbr/\u003e　**（开发环境）在 `xxx-url` 静态页面维护被授权应用的信息：**\r\n\r\n1. 通过 git 命令 clone 这个插件仓库到本地\r\n2. 修改 `./conf/ec_conf.xml` 配置文件，在节点 `\u003cappInfos\u003e` 下配置被授权的应用信息，格式为：\r\n\r\n```xml\r\n\u003c!-- 具体的值根据实际需要去配置即可 --\u003e\r\n\u003cappInfo\u003e\r\n  \u003cname caption=\"应用名称\"\u003exxx\u003c/name\u003e\r\n  \u003cversions caption=\"有效版本列表\"\u003exxx\u003c/versions\u003e\r\n  \u003ctime caption=\"到期时间\"\u003exxx\u003c/time\u003e\r\n  \u003cblacklist caption=\"黑名单列表\"\u003exxx\u003c/blacklist\u003e\r\n  \u003cwhitelist caption=\"白名单列表\"\u003exxx\u003c/whitelist\u003e\r\n\u003c/appInfo\u003e\r\n```\r\n\r\n3. 运行 `exp.certificate.Main` 类，会自动根据 `./conf/ec_conf.xml` 配置文件的内容刷新 `./index.html` 文件\r\n4. 通过 git 提交变更，即成功把被授权应用的信息提交到了 Github服务器\r\n5. 此时刷新静态页面地址 `xxx-url`，会发现页面内容已变更（**为了保证信息安全，所生成的授权信息均已加密处理**），如：\r\n![静态页面](./imgs/02-静态页面的授权应用信息.png)\r\n\r\n\r\n\r\n\u003cbr/\u003e　**（生产环境）应用从 `xxx-url` 静态页面提取自身的授权信息进行自检：**\r\n\r\n1. 通过 `maven install` 命令发布本插件作为 jar 构件，目标应用通过 pom.xml 依赖此构件：\r\n\r\n```xml\r\n\u003cdependency\u003e\r\n    \u003cgroupId\u003ecom.exp-blog\u003c/groupId\u003e\r\n    \u003cartifactId\u003esoftware-certificate\u003c/artifactId\u003e\r\n    \u003cversion\u003e${LATEST_VERSION}\u003c/version\u003e\r\n\u003c/dependency\u003e\r\n```\r\n\r\n2. 构件内提供了 API：`exp.certificate.api.Certificate.getAppInfo()` ，可据此从 `xxx-url` 获取自身的授权信息\r\n3. 获取到的授权信息会以明文方式保存到 `exp.certificate.bean.AppInfo`， 按需使用即可\r\n\r\n","funding_links":["https://lyy289065406.github.io/sponsor/"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexp-codes%2Fsoftware-certificate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexp-codes%2Fsoftware-certificate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexp-codes%2Fsoftware-certificate/lists"}