基本站2.0.6 2022年1月的文件

杯子协议

LORA BASICS™电台定期向Cups服务器查询更新。该协议是使用客户端/服务器身份验证方法的HTTP/REST证书。每个查询都可以提供有关其当前状态的信息,并收到包含其LNS和CUPS凭据更新的二进制BLOB,以及具有任意更新的通用数据段。

通用数据段的格式取决于平台。下载后,该电台只需执行此文件即可。通常这是一个自我提取的壳脚本。但是,它也可能是二进制可执行文件。

杯子协议

HTTP POST请求

杯子更新终点的URI是根据内容的内容构建的cups.urifile(或其后备替代方案之一证书)。路径/更新信息添加并与身体提交HTTP POST请求。HTTP POST请求包含以下JSON对象:

{“路由器”ID6,,,,“杯子”“ Uri”,,,,“ tcuri”“ Uri”,,,,“ Cupscredcrc”int,,,,“ tccredcrc”int,,,,“车站”细绳,,,,“模型”细绳,,,,“包裹”细绳,,,,“钥匙”[[int这是给予的}

路由器字段是网关身份的ID6表示。

值的值杯子tcuri字段是凭据文件的内容cups.uritc.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响应的消息主体。