### 路由器端API: 0. 获取csrfToken(用于POST请求) ``` GET /cgi-bin/luci/admin/store/token {"token":"xxx"} ``` 1. 已安装软件列表 ``` GET /cgi-bin/luci/admin/store/installed [ { "description": "DDNS.TO内网穿透", "tags": [ "net", "tool" ], "entry": "/cgi-bin/luci/admin/services/ddnsto", "author": "xiaobao", "depends": [ "ddnsto", "luci-app-ddnsto", "luci-i18n-ddnsto-zh-cn" ], "title": "DDNS.TO", "time": 1629356347, "release": 1, "website": "https://www.ddnsto.com/", "name": "ddnsto", "version": "1.0.0" } ] ``` 2. 安装软件 ``` POST /cgi-bin/luci/admin/store/install token=xxx&package=upnp&autoconf=1&path=/mnt/nvme&enable=1 autoconf=1&path=/mnt/nvme&enable=1 是可选参数,表示安装完以后是否自动配置插件 {"code":0, "stdout":"", "stderr":""} ``` 3. 更新软件 ``` POST /cgi-bin/luci/admin/store/upgrade token=xxx&package=upnp {"code":0, "stdout":"", "stderr":""} ``` 4. 卸载软件 ``` POST /cgi-bin/luci/admin/store/remove token=xxx&package=upnp {"code":0, "stdout":"", "stderr":""} ``` 5. 刷新可用软件列表 ``` POST /cgi-bin/luci/admin/store/update token=xxx {"code":0, "stdout":"", "stderr":""} ``` 6. 查询特定软件状态 ``` GET /cgi-bin/luci/admin/store/status?package=ddnsto { "description": "DDNS.TO内网穿透", "tags": [ "net", "tool" ], "entry": "/cgi-bin/luci/admin/services/ddnsto", "author": "xiaobao", "depends": [ "ddnsto", "luci-app-ddnsto", "luci-i18n-ddnsto-zh-cn" ], "installed": true, "title": "DDNS.TO", "time": "1629356347", "release": 1, "website": "https://www.ddnsto.com/", "name": "ddnsto", "version": "1.0.0" } {"installed":false} ``` 7. 任务状态(日志),已废弃,使用luci-lib-taskd提供的封装 ``` GET /cgi-bin/luci/admin/store/log { "stdout": "Installing app-meta-ddnsto (1.0.0) to root...\nDownloading http://192.168.9.168:9999/packages/aarch64_cortex-a53/meta/app-meta-ddnsto_1.0.0_all.ipk\nConfiguring app-meta-ddnsto.\n", "stderr": "", "code": 206 } {"stdout":"","stderr":"","code":0} ``` 8. 上传安装 ``` POST /cgi-bin/luci/admin/store/upload (文件上传表单,支持文件扩展名".ipk,.run") {"code":0, "stdout":"", "stderr":""} ``` 9. 检查iStore自身更新 ``` GET /cgi-bin/luci/admin/store/check_self_upgrade {"code":500, "msg":"Internal Error"} {"code":200, "msg":"1.1.2"} {"code":304, "msg":""} ``` 1. 更新iStore自身 > 检查iStore自身更新接口返回code为200时才调用这个接口 ``` POST /cgi-bin/luci/admin/store/do_self_upgrade token=xxx {"code":0, "stdout":"", "stderr":""} ``` 2. 枚举块设备 ``` GET /cgi-bin/luci/admin/store/get_block_devices {"code":500, "msg":"Unable to execute block utility"} {"code":200, "data":{"sda1":{"dev":"\/dev\/sda1","uuid":"f54566dd-ec58-4e24-9451-bbf75834add3","version":"1.0","type":"ext4","size":"238.46 GB"},"mmcblk0p2":{"dev":"\/dev\/mmcblk0p2","uuid":"dba3d0dc-f072-4e81-a0ac-ac35197fb286","version":"1.0","label":"etc","mount":"\/overlay","type":"ext4","size":"6.87 GB"},"mmcblk0p1":{"dev":"\/dev\/mmcblk0p1","uuid":"8f9564a1-68006e25-c4c26df6-de88ef16","version":"4.0","mount":"\/rom","type":"squashfs","size":"127.99 MB"}}} ``` 3. 检查插件是否已经配置过 ``` GET /cgi-bin/luci/admin/store/configured?uci=ddnsto uci参数是uci配置文件的名称,不是包名,不过大部分情况下都是一致的。 {"code":200} {"code":200, "configured":true} ```