init project
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
etc
|
||||||
|
opt/lic/docker/jar
|
||||||
|
|
||||||
10
DEBIAN/control
Executable file
10
DEBIAN/control
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
Package: license-server
|
||||||
|
Version: 1.0.0
|
||||||
|
Section: license-server
|
||||||
|
Prioritt: optional
|
||||||
|
Architecture: amd64
|
||||||
|
Maintainer: wfc
|
||||||
|
Depends:
|
||||||
|
Description: License Server
|
||||||
|
|
||||||
|
|
||||||
115
opt/lic/bin/generatelic.sh
Executable file
115
opt/lic/bin/generatelic.sh
Executable file
@@ -0,0 +1,115 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 默认值(可选)
|
||||||
|
TIME=""
|
||||||
|
declare -a IPS=() # 声明为数组
|
||||||
|
declare -a MACS=() # 声明为数组
|
||||||
|
CPU=""
|
||||||
|
MB=""
|
||||||
|
IP=""
|
||||||
|
MAC=""
|
||||||
|
CODE=""
|
||||||
|
|
||||||
|
# 解析命令行参数
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
-t|--t)
|
||||||
|
TIME="$2"
|
||||||
|
shift 2 # 移除选项和参数值
|
||||||
|
;;
|
||||||
|
-ip|--ip)
|
||||||
|
shift # 先移除 "-ip" 自身
|
||||||
|
# 收集所有后续非选项参数(直到遇到下一个以 "-" 开头的参数)
|
||||||
|
while [[ $# -gt 0 ]] && [[ ! "$1" =~ ^- ]]; do
|
||||||
|
IPS+=("$1")
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
# 检查是否至少有一个名字
|
||||||
|
if [[ ${#IPS[@]} -eq 0 ]]; then
|
||||||
|
echo "错误:-ip 参数需要至少一个名字"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-mac|--mac)
|
||||||
|
shift # 先移除 "-mac" 自身
|
||||||
|
# 收集所有后续非选项参数(直到遇到下一个以 "-" 开头的参数)
|
||||||
|
while [[ $# -gt 0 ]] && [[ ! "$1" =~ ^- ]]; do
|
||||||
|
MACS+=("$1")
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
# 检查是否至少有一个名字
|
||||||
|
if [[ ${#MACS[@]} -eq 0 ]]; then
|
||||||
|
echo "错误:-mac 参数需要至少一个名字"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-cpu|--cpu)
|
||||||
|
CPU="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-code|--code)
|
||||||
|
CODE="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-mb|--mb)
|
||||||
|
MB="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
*) # 未知选项
|
||||||
|
echo "错误:未知选项 $1"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# 检查必需参数
|
||||||
|
if [[ -z "$TIME" ]]; then
|
||||||
|
echo "错误:缺少 -t 参数"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 输出结果(或执行其他操作)
|
||||||
|
echo "失效时间: $TIME"
|
||||||
|
echo "ip地址: ${IPS[*]}"
|
||||||
|
echo "mac地址: ${MACS[*]}"
|
||||||
|
echo "cpu序列号: $CPU"
|
||||||
|
echo "ip序列号: $MB"
|
||||||
|
|
||||||
|
IP=$(printf "%s\",\"" "${IPS[@]}")
|
||||||
|
IP=${IP%\",\"}
|
||||||
|
if [ ! -z "$IP" ]; then
|
||||||
|
IP=\"$IP\"
|
||||||
|
fi
|
||||||
|
MAC=$(printf "%s\",\"" "${MACS[@]}")
|
||||||
|
MAC=${MAC%\",\"}
|
||||||
|
if [ ! -z "$MAC" ]; then
|
||||||
|
MAC=\"$MAC\"
|
||||||
|
fi
|
||||||
|
|
||||||
|
RAW='{
|
||||||
|
"expiryTime": "'$TIME'",
|
||||||
|
"ipAddress": ['$IP'],
|
||||||
|
"macAddress": ['$MAC'],
|
||||||
|
"cpuSerial": "'$CPU'",
|
||||||
|
"activationCode": "'$CODE'",
|
||||||
|
"mainBoardSerial": "'$MB'"
|
||||||
|
}'
|
||||||
|
|
||||||
|
res=$(curl --location --request GET 'http://localhost:8070/license/generateLicense' \
|
||||||
|
--header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VyX2tleSI6IjE3NTE3MTBkLWI5YzItNGRjYy1iZGUwLTNlMTEyYjY2OGYzZCIsInBsYXRmb3JtIjoic3lzdGVtIiwidXNlcm5hbWUiOiJhZG1pbiJ9.NG7WLME_mH6nPhfAwwqHD3kzdlZi6Zn1B4t5BG_IMWRh9ClsoM0dqRH9agq7FKL4fn68cahbJS7EpFwCXNgOWA' \
|
||||||
|
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
|
||||||
|
--header 'Content-Type: application/json' \
|
||||||
|
--header 'Accept: */*' \
|
||||||
|
--header 'Host: 192.168.2.249:8070' \
|
||||||
|
--header 'Connection: keep-alive' \
|
||||||
|
--data-raw "$RAW")
|
||||||
|
|
||||||
|
echo $res
|
||||||
|
isok=$(echo $res | grep "result\":\"ok")
|
||||||
|
#echo "$RAW"
|
||||||
|
echo "------------------------"
|
||||||
|
if [ -z "$isok" ]; then
|
||||||
|
echo "生成license证书失败"
|
||||||
|
else
|
||||||
|
echo "生成license证书成功,license.lic文件在/opt/lic/docker/license目录下"
|
||||||
|
fi
|
||||||
58
opt/lic/bin/licensecontrol.sh
Executable file
58
opt/lic/bin/licensecontrol.sh
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
WFCWorkDir=/opt/lic
|
||||||
|
DockerDir=${WFCWorkDir}/docker
|
||||||
|
DockerCompose=docker-compose
|
||||||
|
PIDFile=/run/licensecontrol.pid
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
cd ${DockerDir}
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
${DockerCompose} up -d
|
||||||
|
echo $! > ${PIDFile}
|
||||||
|
else
|
||||||
|
${DockerCompose} up -d $2
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
cd ${DockerDir}
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
${DockerCompose} stop
|
||||||
|
if [ -f ${PIDFile} ]; then
|
||||||
|
rm ${PIDFile}
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
${DockerCompose} stop $2
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
$0 stop $2
|
||||||
|
sleep 1
|
||||||
|
$0 start $2
|
||||||
|
;;
|
||||||
|
down)
|
||||||
|
cd ${DockerDir}
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
${DockerCompose} down --rmi all
|
||||||
|
if [ -f ${PIDFile} ]; then
|
||||||
|
rm ${PIDFile}
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
${DockerCompose} down --rmi $2
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
cd ${DockerDir}
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
${DockerCompose} ps
|
||||||
|
else
|
||||||
|
${DockerCompose} ps $2
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "License Server Service ... "
|
||||||
|
echo "Usage: $0 start|stop|restart|down|status"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
12
opt/lic/docker/docker-compose.yml
Normal file
12
opt/lic/docker/docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
wfc-license-serve:
|
||||||
|
# 使用前面创建的Dockerfile构建的镜像
|
||||||
|
build: .
|
||||||
|
# 指定容器名(可选)
|
||||||
|
container_name: wfc-license-server
|
||||||
|
# 指定端口映射(例如,将容器的8080端口映射到主机的8080端口)
|
||||||
|
ports:
|
||||||
|
- "8070:8070"
|
||||||
|
volumes:
|
||||||
|
- ./license:/opt/license
|
||||||
15
opt/lic/docker/dockerfile
Normal file
15
opt/lic/docker/dockerfile
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# 基础镜像
|
||||||
|
FROM openjdk:8-jre
|
||||||
|
# author
|
||||||
|
LABEL org.wfc.image.authors="wfc@wfc.org"
|
||||||
|
|
||||||
|
# 挂载目录
|
||||||
|
VOLUME /opt/wfc
|
||||||
|
# 创建目录
|
||||||
|
RUN mkdir -p /opt/wfc
|
||||||
|
# 指定路径
|
||||||
|
WORKDIR /opt/wfc
|
||||||
|
# 复制jar文件到路径
|
||||||
|
COPY jar/wfc-license-server-1.0.0.jar /opt/wfc/wfc-license-server.jar
|
||||||
|
# 启动licese-serve服务
|
||||||
|
ENTRYPOINT ["java","-jar","wfc-license-server.jar"]
|
||||||
36
opt/lic/docs/License软件操作手册.md
Normal file
36
opt/lic/docs/License软件操作手册.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Licence软件操作手册
|
||||||
|
|
||||||
|
## 项目介绍
|
||||||
|
|
||||||
|
License也就是版权许可证书,一般用于收费软件给付费用户提供的访问许可证明,License认证是一种基于授权许可的验证方式。应用程序在启动或运行过程中会检查License文件的有效性,如果检测到无效或过期的 License,应用程序将拒绝提供服务。
|
||||||
|
|
||||||
|
本项目用于生成license.lic证书,将证书供给用户使用。本项目不对外提供。
|
||||||
|
|
||||||
|
* 安装后目录树
|
||||||
|
|
||||||
|
```text
|
||||||
|
/opt/lic # work root directory
|
||||||
|
├── bin # shell script and binary file
|
||||||
|
├── docker # docker compose work directory
|
||||||
|
│ └── jar # jar package
|
||||||
|
└── docs # related document directory
|
||||||
|
```
|
||||||
|
|
||||||
|
* 启动项目
|
||||||
|
```sh
|
||||||
|
cd /opt/lic/bin
|
||||||
|
sudo ./licensecontrol.sh start
|
||||||
|
```
|
||||||
|
|
||||||
|
* 生成证书
|
||||||
|
```sh
|
||||||
|
cd /opt/lic/bin
|
||||||
|
sudo ./generatelic.sh -t "2026-05-31 23:59:59" -code "ud9BGY9yZzo/ekXvf5vXzS4RmyCXm9a7rBqiUy1q7x+0kIBSz6AJ98MtGQiojJLpFbYRD1RkP2UsbtGCxyyozTK69+OWukfq9zTMu2qCkXcajL+HhuF/0VJQDSWPjp+J"
|
||||||
|
```
|
||||||
|
generatelic脚本参数说明:
|
||||||
|
-t 证书到期时间,必填,格式如"2026-05-31 23:59:59"
|
||||||
|
-code 激活码,可选,格式如"ud9BGY9yZzo/ekXvf5vXzS4RmyCXm9a7rBqiUy1q7x+0kIBSz6AJ98MtGQiojJLpFbYRD1RkP2UsbtGCxyyozTK69+OWukfq9zTMu2qCkXcajL+HhuF/0VaJQDSWPjp+J"
|
||||||
|
激活码用于指定机器使用证书,激活码在wanfi项目运行后自动生成在/opt/wfc/docker/conf/license/activation_code.txt
|
||||||
|
|
||||||
|
证书生成在/opt/lic/docker/license/license.lic
|
||||||
|
将license.lic文件放入wanfi项目目录/opt/wfc/docker/conf/license/,wanfi项目才可使用
|
||||||
Reference in New Issue
Block a user