本文介绍自定义编写W5-SOAR的APP,通过编写APP可以实现我们特定运营场景的功能。
2.1 引用架构介绍
w5的app目录位于:/w5/apps/"appname"

这里以base64为例,看一下它的结构
base64/ #应用目录
├── app.json #APP 配置文件
├── icon.png #APP 图标
├── main #APP 代码目录
│ ├── __init__.py #根据需要添加即可,不必要
│ └── run.py #APP 入口文件
└── readme.md #APP 说明文件

2.2 app.json
app.json作为应用的配置文件,配置引用的功能:
{
"identification": "w5soar", // w5soar 签名,无需更改,必须存在
"is_public": true, // 是否为公开 APP,设置 false 为私有 APP
"name": "Hello World", // APP 名称
"version": "0.1", // APP 版本
"description": "W5 SOAR - Hello World", // APP 描述
"type": "基本应用", // APP 分类
"action": [ // APP 动作列表
{
"name": "HelloWorld", // APP 动作名称
"func": "hello_world" // 动作对应的函数名
}
],
"args": { // 动作参数
"hello_world": [ // 动作对应的函数名
{
"key": "name", // 动作参数名
"type": "text", // 动作参数类型
"required": true // 是否是必填项
}
]
}
}
多个动作
修改action字段
"action": [ // APP 动作列表
{
"name": "HelloWorld", // APP 动作名称
"func": "hello_world" // 动作对应的函数名
},
{
"name": "test", // APP 动作名称
"func": "app_test" // 动作对应的函数名
},
{
"name": "demo", // APP 动作名称
"func": "app_demo" // 动作对应的函数名
}
],
多个动作参数
"args": { // 动作参数
"hello_world": [ // 动作对应的函数名
{
"key": "name", // 动作参数名
"type": "text", // 动作参数类型
"required": true // 是否是必填项
}
],
"app_test": [ // 动作对应的函数名
{
"key": "name", // 动作参数名
"type": "text", // 动作参数类型
"required": true // 是否是必填项
},
{
"key": "sex", // 动作参数名
"type": "text", // 动作参数类型
"required": true // 是否是必填项
}
],
"app_demo": [ // 动作对应的函数名
{
"key": "name", // 动作参数名
"type": "text", // 动作参数类型
"required": true // 是否是必填项
},
{
"key": "age", // 动作参数名
"type": "text", // 动作参数类型
"required": false // 是否是必填项
},
{
"key": "test", // 动作参数名
"type": "text", // 动作参数类型
"required": false // 是否是必填项
}
]
}
参数类型
"args": { // 动作参数
"app_demo": [ // 动作对应的函数名
{
"key": "name", // 动作参数名
"type": "text", // 动作参数类型
"default": "W5", // 参数默认值,不写默认为空
"required": true // 是否是必填项
},
{
"key": "age", // 动作参数名
"type": "number", // 动作参数类型
"default": 18, // 参数默认值,不写默认为空
"required": true // 是否是必填项
},
{
"key": "desc", // 动作参数名
"type": "textarea", // 动作参数类型
"required": true // 是否是必填项
},
{
"key": "type", // 动作参数名
"type": "select", // 动作参数类型
"default": "test", // 参数默认值,不写默认不选择
"data": [ // 下拉列表
"test",
"test2",
"test3",
"test4"
],
"required": true // 是否是必填项
}
]
}
支持类型
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
已在FreeBuf发表 0 篇文章
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



