基本站2.0.6 2022年1月的文件
杯子协议¶
LORA BASICS™电台定期向Cups服务器查询更新。该协议是使用客户端/服务器身份验证方法的HTTP/REST证书。每个查询都可以提供有关其当前状态的信息,并收到包含其LNS和CUPS凭据更新的二进制BLOB,以及具有任意更新的通用数据段。
通用数据段的格式取决于平台。下载后,该电台只需执行此文件即可。通常这是一个自我提取的壳脚本。但是,它也可能是二进制可执行文件。
HTTP POST请求¶
杯子更新终点的URI是根据内容的内容构建的cups.uri
file(或其后备替代方案之一证书)。路径/更新信息
添加并与身体提交HTTP POST请求。HTTP POST请求包含以下JSON对象:
{“路由器”:ID6,,,,“杯子”:“ Uri”,,,,“ tcuri”:“ Uri”,,,,“ Cupscredcrc”:int,,,,“ tccredcrc”:int,,,,“车站”:细绳,,,,“模型”:细绳,,,,“包裹”:细绳,,,,“钥匙”:[[int这是给予的}
这路由器
字段是网关身份的ID6表示。
值的值杯子
和tcuri
字段是凭据文件的内容cups.uri
和tc.uri
, 分别。
这杯子
和TCCREDCRC
字段是通过串联凭据文件计算的CRC32校验和杯子。{trust,cert,key}
和tc。{trust,cert,key}
。
这车站
,,,,模型
, 和包裹
字段描述了电台,网关模型和软件包版本的当前版本。软件包版本可能包含有关基础系统状态及其配置的信息。
这钥匙
字段包含用于安装在电台运行的固件上的每个签名键的CRC32校验和。服务器的响应将提供签名的更新(如果有),签名匹配这些签名键之一。
HTTP帖子响应¶
CUPS服务器应使用HTTP状态代码200和二进制响应消息响应。这内容类型
标题设置为:
内容-类型:应用/八位字-溪流
响应主体应采用以下二元格式:
字节 |
场地 |
描述 |
---|---|---|
1 |
杯子 |
杯子的长度URI(CUN) |
Cun |
杯子 |
杯子Uri(cups.uri) |
1 |
Tcurilen |
LNS URI(TUN)的长度 |
tun |
tcuri |
lns uri(tc.uri) |
2 |
杯子 |
杯子凭证长度(CCN) |
CCN |
杯子 |
凭证斑点 |
2 |
tccredlen |
LNS凭证长度(TCN) |
TCN |
TCCRED |
凭证斑点 |
4 |
西格伦 |
更新BLOB的签名长度加键CRC字段的大小(4) |
4 |
keycrc |
用于签名的密钥的CRC |
信号 |
信号 |
更新斑点上的签名 |
4 |
UPDLEN |
通用更新数据的长度(UDN) |
udn |
UPDDATA |
通用更新数据斑点 |
长度字段应编码在Little Endian中。如果任何长度字段为零,则该特定组件没有更新。如果杯子返回所有长度字段的斑点,则没有更新待处理。
笔记
杯子空值响应由14个零字节组成:(十六进制)000000000000000000000000000000
。
凭证斑点是信任/证书/密钥
,它能够使用X509证书和使用令牌编码客户端身份验证。
对于使用X509证书的客户端认证,所有凭据均以DER格式编码:
相信
是受信任证书机构(CA)的证书证书
是网关的个人证书钥匙
是门户的个人私钥
对于基于令牌的身份验证,相信
与上述相同;然而:
私人
证书
不需要,如果不存在,则该部分的响应将包含四个“零”八位集这
钥匙
是必须将其添加到后续请求中的授权令牌,作为HTTP POST请求的标题一部分
该电台将非空字段拆除到各自的本地凭据文件中。如果存在通用更新数据并验证签名,则将更新保存到名为的文件中update.bin
并在成功下载后被执行。
此可执行/脚本可以替换二进制电台。然后,它可以在重新启动站点或重新启动网关之前更新配置文件和基础系统。
错误条件¶
CUPS服务器可能会以错误条件做出响应。在错误响应中,响应中的HTTP状态代码不得为200,并且在日志消息中呈现状态行中的文本的原因,可用于给出提示,以提示请求失败。丢弃了非200响应的消息主体。