快速入门
依赖
建议使用64位操作系统,建议使用Linux/MacOS
JDK版本:17
1、Checkout源代码
从Github上获取主分支代码:
git clone https://github.com/hitsz-ids/argus.git
cd argus
export ARGUS_HOME=$(pwd)
2、配置证书
Argus的扩展模块与Server之间的通信使用证书加密,在服务启动前,需要生成并配置好证书。一般来说,CA证书仅生成一次,后续不同的扩展使用该CA生成即可。
2.1 生成证书
生成证书脚本在argus/certificate下,执行脚本即可生成对应的证书,证书输出目录在argus/output目录里。
./certificate/generate.sh
2.2 配置证书
将生成的扩展证书文件COPY到Server证书目录下,需要在Server证书目录下新建module目录,然后在module目录下创建扩展目录。
mkdir -p output/center/module/demo
cp output/module/module.pem output/center/module/demo
3、配置Argus Http Server
Argus HTTP Server同时接收外部请求和处理转发内部请求。底层使用Spring Boot接收外界请求,需要配置application.yml。
export ARGUS_RESOURCES_PATH='argus-http-server/src/main/resources'
cp ${ARGUS_RESOURCES_PATH}/application.yml.template ${ARGUS_RESOURCES_PATH}/application.yml
同时也需要配置argus-center.properties,执行以下命令或使用Vim等工具进行编辑:
cp ${ARGUS_RESOURCES_PATH}/argus-center.properties.template ${ARGUS_RESOURCES_PATH}/argus-center.properties
echo '' > ${ARGUS_RESOURCES_PATH}/argus-center.properties
echo "ca.public=${ARGUS_HOME}/output/ca/ca.pem" >> ${ARGUS_RESOURCES_PATH}/argus-center.properties
echo "server.port=9999" >> ${ARGUS_RESOURCES_PATH}/argus-center.properties
echo "server.public=${ARGUS_HOME}/output/center/center.pem" >> ${ARGUS_RESOURCES_PATH}/argus-center.properties
echo "server.pkcs8=${ARGUS_HOME}/output/center/center-pkcs8.key" >> ${ARGUS_RESOURCES_PATH}/argus-center.properties
echo "server.module.pub.dir=${ARGUS_HOME}/output/center/module" >> ${ARGUS_RESOURCES_PATH}/argus-center.properties
echo "modules=module://demo?version=1.0.0;2.0.0" >> ${ARGUS_RESOURCES_PATH}/argus-center.properties
4、配置扩展 - demo
接入的功能扩展需要配置argus-module.properties内容:
export ARGUS_DEMO_RESOURCES_PATH='extension/demo/src/main/resources'
cp ${ARGUS_DEMO_RESOURCES_PATH}/argus-module.properties.template ${ARGUS_DEMO_RESOURCES_PATH}/argus-module.properties
echo '' > ${ARGUS_DEMO_RESOURCES_PATH}/argus-module.properties
echo "center.host=127.0.0.1" >> ${ARGUS_DEMO_RESOURCES_PATH}/argus-module.properties
echo "center.port=9999" >> ${ARGUS_DEMO_RESOURCES_PATH}/argus-module.properties
echo "module.name=demo" >> ${ARGUS_DEMO_RESOURCES_PATH}/argus-module.properties
echo "module.version=1.0.0" >> ${ARGUS_DEMO_RESOURCES_PATH}/argus-module.properties
echo "module.public=${ARGUS_HOME}/output/module/module.pem" >> ${ARGUS_DEMO_RESOURCES_PATH}/argus-module.properties
echo "module.pkcs8=${ARGUS_HOME}/output/module/module-pkcs8.key" >> ${ARGUS_DEMO_RESOURCES_PATH}/argus-module.properties
echo "ca.public=${ARGUS_HOME}/output/ca/ca.pem" >> ${ARGUS_DEMO_RESOURCES_PATH}/argus-module.properties
5、编译
使用Maven编译Argus源码:
mvn clean install -DskipTests
如果您的JDK版本不是17,将会编译失败,请确保版本正确。如果您不知道当前JDK版本,可以执行以下命令查看:
mvn -v
6、启动
在编译成功后,可以启动Argus Server和Demo扩展。启动脚本在bin目录下,需要进入到该目录执行脚本。
6.1 启动Argus Server
bin/argus start
6.2 启动Demo扩展
bin/argus startExtension
7、访问
启动成功后,使用curl访问Argus的demo插件扩展,查看返回结果:
curl -X POST -H "Content-Type: application/json" -d "{\"path\":\"demo/1.0.0/api/test/returns\",\"params\":{\"foo\":\"bar\"}}" http://localhost:9000/argus/entry && echo
8、IDE启动
建议使用IntelliJ IDEA查看和运行Argus代码。 使用IDEA运行代码同样需要经过上述配置证书、配置Argus Http Server、配置扩展几个步骤。
8.1 启动类说明
目前的Argus的启动类主要有两类:Argus Server和扩展插件。在使用时,可以启动Demo扩展插件测试Argus。启动类如下:
- ArgusServer启动类:io.ids.argus.entry.Application
- Demo插件扩展启动类:io.ids.argus.extension.demo.DemoApplication
依次启动上述两个启动类,等待启动成功日志打印即可。
8.2 访问调用
可参考第7点或者使用Postman等工具进行访问测试,目前WebUI正在规划中,后续将可以直接启动WebUI进行测试。
如果您使用Postman,可以Post请求:http://localhost:9000/argus/entry
参数为JSON格式,测试参数如下:
{
"path": "demo/1.0.0/api/test/returns",
"params": {
"key": "value"
},
"customized": {
"foo": "bar"
}
}