分类下相关文章
2023-06-22 · 阅读 1916 · 字数 457
login 时,用户不存在的逻辑在哪里 使用 admin/teamsacs 登录时,发现无法登录,提示用户不存在。 于是查看了一下登录的处理逻辑: // 登录提交 webserver.POST("/login", func(c echo.Context) error { username := c.FormValue("username") password := c.FormValue("password") if username == "" || password == "" { ...
2023-05-07 · 阅读 1643 · 字数 395
TeamsACS 是一个开源的 tr069 ACS 实现。其在处理 CPE 发送的 BootStrap 事件时,逻辑有点绕。 BootStrap 处理逻辑 判断 CPE 请求的 body 非空时,如果是 BootStrap 事件,生成连接用的账号/密码。注意,这里没有直接返回给 CPE,而是通过 golang channel 缓存了起来。 判断 CPE 请求的 body 为空时,不再判断事项类型,从 golang channel 中获取之前生成的账号/密码,以 soap 格式返回给了 CPE 我不太理解 tr069 协议为何要这样设计。为何要多走一步? 返回的 SOAP XML 数据格式 ...
2023-05-02 · 阅读 1413 · 字数 628
实际上类似于 TeamsACS 对于 PERIODIC Event 的处理逻辑 的处理逻辑, 只不过多了一个 UpdateManagementAuthInfo 的处理流程。 UpdateManagementAuthInfo 的调用参数 err = cpe.UpdateManagementAuthInfo("bootstrap-session-"+common.UUID(), 1000, false) UpdateManagementAuthInfo 的定义 主要逻辑就是由 ACS 向 CPE 发送 auth 用的 username / password。 usernam ...
2023-04-30 · 阅读 1605 · 字数 853
Event 类型的判别 tr069/handlers.go func (s *Tr069Server) processInformEvent(c echo.Context, lastInform *cwmp.Inform) { ... cpe := app.GApp().CwmpTable().GetCwmpCpe(lastInform.Sn) cpe.CheckRegister(c.RealIP(), lastInform) cpe.UpdateStatus(lastInform) // 通知系统更新数据 cpe.NotifyDataUpdate(false) log.In ...
2023-04-29 · 阅读 1565 · 字数 824
由于没有在 TeamsACS 的 tr069 server 部分代码中没有找到 HTTP Digest Auth Middleware 的逻辑。 我开始怀疑我对 tr069 协议的 auth 部分理解有问题。所以查询了 tr069 协议文档。 参考: https://www.broadband-forum.org/download/TR-069_Amendment-1.pdf 第一版,不推荐 https://www.broadband-forum.org/technical/download/TR-069_Amendment-5.pdf 推荐看第五版,这部分说明跟第一版有差异。这个文档真是 ...
2023-04-29 · 阅读 1593 · 字数 487
我在 TeamsACS tr069/server.go 中只找到了 BasicAuth middleware, 并没有 http digest auth (准确地说 auth_client.go 中有实现,但是 server 逻辑里没有). Basic Auth TeamsACS 中 basic auth 的实现很敷衍,并没有校验密码。有几种可能: 要么我代码没有看仔细,逻辑有遗漏。可以给 CPE 模拟器增加 BootStrap 事件等模拟通信,由后台生成账号/密码,并观察后续流程 要么 TeamsACS 作为开源版本,隐藏了部分实现 支持 TLS 的情况下,ACS 不需要实现 http d ...
2023-04-27 · 阅读 2354 · 字数 320
cpe 端模拟器 genieacs sim 的日志 > ./genieacs-sim --acs-url=http://127.0.0.1:2999 Simulator 000000 started Simulator 000000 listening for connection requests on http://127.0.0.1:53849/ acs 端日志 增加了部分 debug 日志: message 类型是 Inform Inform 消息的 Event 类型是 PERIODIC 第一次请求的 body 长度是 2066, 第二次请求的 body 长度是 0 Con ...
2023-04-27 · 阅读 2688 · 字数 486
Inform 类型的消息中,包含 Event 信息。 All communications and operations are performed in the scope of the provisioning session. The session is always started by the device (CPE) and begins with the transmission of an Inform message. 触发 provisioning session 的事件列表: Event List Bootstrap – when device contacts ...
2023-04-26 · 阅读 2710 · 字数 439
tr069 是基于 SOAP 的 RPC 协议。 message type 可以理解为每个 RPC 的方法名。 这里有趣的地方是,既然是远程调用,那么就存在两种情况: ACS 调用 CPE 的方法 CPE 调用 ACS 的方法 ACS 调用 CPE 的方法列表 GetPRCMethods: 获取 CPE 所支持的方法集合 GetParameterNames: Retrieve list of supported parameters from the device. GetParameterValues: Retrieve current value of the parameter(s ...
2023-04-26 · 阅读 2234 · 字数 1295
粗略浏览一遍,大概了解每个模块的每个文件是实现什么功能的。可以 tree 一下结构,把每个文件的注释加上。 查看目录 排除 assets 子目录,因为下面的 js 文件太多。 tree -I assets 目录结构 . ├── Dockerfile ├── Dockerfile.local ├── License ├── Makefile // 里面的生成证书和部署方式可以借鉴 ├── README.md ├── assets // 前端代码 ├── app │ ├── app.go │ ├── constant.go │ ├── cwmp.go │ ├── cwmp_p ...
2023-04-26 · 阅读 3667 · 字数 354
TR-069协议是一种用于远程管理设备、进行配置和故障排除的协议。它使用客户端/服务器模型,其中ACS(自动配置服务器)充当服务器,CPE(客户端设备)作为客户端。 之前刚接触 tr069 协议的时候,简单了解过 TR-069 协议中 CPE 与 ACS 的会话过程 。但是整体流程还是不够清晰,网上也没有完整的逻辑流程图。 向 ChatGPT 请教 tr069 协议中,acs 与 cpe 的完整通信过程 还是 AI 解释的更通俗易懂一些。 以下是TR-069协议中ACS与CPE之间的完整通信过程: 0. 前置条件 在 CPE 配置 ACS 的 URL 地址 设置连接周期 In ord ...
2023-04-18 · 阅读 2731 · 字数 496
开发环境没有真实的 CPE 设备,只能找一个虚拟的 CPE 模拟器,来模拟与 ACS 的通信。 同时需要能支持 CPE Server 服务来处理 ACS 的请求。 找到一个开源的实现。唯一不确定的是,是否是标准的 TR069 协议。 项目地址 https://github.com/genieacs/genieacs-sim 安装 git clone https://github.com/zaidka/genieacs-sim.git cd genieacs-sim npm install Unsupported engine > npm install npm WARN EBADENG ...
2023-03-17 · 阅读 2874 · 字数 205
HTTP Digest method,即,Digest access authentication,中文名为"摘要访问认证"。 digest 摘要/文摘的意思。 实际上就是,不以明文发送密码的验证方式。例如,TR069 协议中,ACS 与 CPE 之间的通信都是基于 HTTP Digest method。 HTTP Digest 的逻辑 客户端发起 GET 请求 服务器响应 401 Unauthorized 未认证,HTTP 头信息中的 WWW-Authenticate 指定认证算法,realm 指定安全域 (realm 领域的意思,一般指域名),同时返回随机字符串 no ...
2023-04-26 · 阅读 3301 · 字数 484
建立连接前 CPE 需要的配置 ACS 的 URL 地址 CPE 与 ACS 的通信频率。Inform Interval。两者间不是长期保持连接,而是周期性的通信一会,大概几秒钟,即可完成关键数据的交换。这个短暂的过程称为 provisioning session。 用户名/密码。验证是可选的,这取决于 ACS 是否需要验证,及安全级别。 会话 (Session) 发起者 CPE,即由设备向 ACS 发起会话。 注意:ACS 并不能发起 session 会话,只能由 CPE 发起。 但是,ACS 可以向 CPE 请求 (Connection Request),请求 CPE 发起会话。 对应 ...
2023-03-08 · 阅读 2019 · 字数 582
排查无法收到蓝牙设备语音流的问题时,发现仅仅阅读 SDK 源代码很难定位到问题根源,主要是不了解整个通信过程。 所以阅读了一下 STM32WB 的官方专题文档,确实收获不少。 文档地址 https://www.stmcu.com.cn/Article/ArticleCat/cat_code/mkt_info/art_id/2121 报警推送 opus 服务下有两个 notify 特性: Audio 特性。用于对讲 Ctrl 特性。用于发送控制数据。这个可以作为报警信息接收使用。 之前没仔细看,以为两个特性 id 一致,实际上不一样。正好区分了音频和控制功能。 手机 App 和蓝牙设备在对讲 ...
生活 | 跑步 清单 足球 鲁班 探索 孤独的美食家 驾驶 电视剧 收纳 奶爸 健康 game 电影 周末 joke |
---|---|
Geek | 健身 Laravel Git Vim MySQL Linux UI Windows SVN 纪录片 管理 Shell 游记 工具 手机 BackboneJS 自建博客 Mac DNS Tornado CDN Django Python AngularJS 理财 前端 Nginx 爬虫 Redis Javascript Browser 浏览器 推广 OAuth CSS PHP Social Networks 安全 运维 创业 杂记 VueJS Android Image IDE Java ReactJS 数据分析 SQLite RESTful 读书笔记 家电 ecshop Vagrant wordpress docker SEO GTD magento mongodb nodejs weex 冷知识 ruby iOS 微信小程序 AI CMS 快应用 backpack 广告联盟 OA 短信 UWP Win CSharp Tampermonkey graphviz 钉钉 WPS 数据字典 微信公众号 Fuchsia Adobe XD SQL Server thinkphp 代码规范 商业模式 Flutter 头痛的问题 serverless 视频制作 国际化 golang 服务器 Kotlin 网站建设 5G 笔记本 图片 spark spring 物联网 InfluxDB 图像识别 postgre rust |
成长的烦恼 | 闲言碎语 待产 不睡觉 写作 程序员 孙心然语录 原则 大鸿语录 |
地球 | 植物 时间 中文 赚钱 国家地理 烟台 一生伏首拜阳明 emoji 弟子规 英文 国际贸易 |