SRS with WebRTC
August 16, 2023 by walter
1. RTMP to WebRTC Start SRS with configuration – rtpm2rtc.conf CANDIDATE="192.168.1.10" docker run –rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \ –env CANDIDATE=$CANDIDATE -p 8000:8000/udp \ registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/rtmp2rtc.conf use ffmpeg to push stream docker run –rm -it registry.cn-hangzhou.aliyuncs.com/ossrs/srs:encoder ffmpeg -stream_loop -1 -re -i doc/source.flv \ -c copy -f flv rtmp://host.docker.internal/live/livestream 2. WebRTC […] →Read more
Poco project
August 16, 2023 by walter
Overview The POCO C++ Libraries are a collection of open source C++ class libraries that simplify and accelerate the development of network-centric, portable applications in C++. The libraries integrate perfectly with the C++ Standard Library and fill many of the functional gaps left open by it. Their modular and efficient design and implementation makes the […] →Read more
build pipeline
August 14, 2023 by walter
提交代码到开发分支: 在本地构建并通过单元测试之后,可以将代码提交到代码仓库的开发分支中。 自动构建: 包括编译、链接、打包,在一些大型项目中,这个过程往往需要几十分钟以上。 自动代码检查: 各种语言都有各自的代码静态检查工具,例如C++ 的 CppCheck、CppLint,Java的CheckStyle、PMD、FindBug,Python 的Pylint、Pyflakes、Pycodestyle 等。如果检查出严重的错误,并立即终止构建流水线,检查结果会生成检查报告。 自动执行单元测试: 确保这次提交不会造成其他模块的单元测试失败,任何一条单元测试不通过,也会终止构建流水线,我们也会在这个阶段执行一个不依赖于外部环境的API 测试. 测试的结果会生成测试报告。 自动生成文档: 利用 Doxygen、Javadoc、Sphinx 之类的自动文档生成工具, 分析代码并生成 API 和帮助文档。 自动部署在测试环境: 利用Puppet、Ansible 之类的部署脚本将软件包部署到测试环境,注入预设的配置变量并启动服务。 自动执行功能测试: 在测试环境中,自动运行所有需要依赖外部环境的 API 和 E2E(端到端)的测试,如果有一条测试不通过,也会终止构建流水线,自动测试的结果会生成报告。 将代码合并入主分支: 这个点可以设置一个批准环节,由产品负责人决定是否立即合并到主分支,如果改动太大,自动化测试覆盖率不够,开发人员信心不足的话,可以暂时不并入主分支,在开发分支添加更多测试。 自动运行性能测试: 性能测试分为基准性能指标测试和压力测试,各种压测参数需要事先设定,性能测试会生成性能测试和剖析报告,包括吞吐量(TPS)、最耗时模块和函数,以及对系统资源消耗的各种指标。 探索性测试: 指望自动化测试把一切潜在问题找出来往往是不现实的,手工进行一些探索性测试在发布在产线之前是必不可少的。 自动部署到产品环境上: 这个环节当然也是需要产品负责人批准的,由产品负责人根据测试报告来决定何时部署到产线上 →Read more
创业公司的 IT 架构
August 14, 2023 by walter
→Read more
信息保护的八个设计原则
August 9, 2023 by walter
Protecting Against Insider Attacks — Jereome Saltzer, Michael Schroeder 最小权限 一个实体应该只拥有执行授权操作所需的权限集合,而不是更多。 权限可以根据需要进行添加,而当不再使用时就应当被撤销。 故障安全默认值 强调了默认状态下保证系统安全的重要性,用户对任何资源的默认访问级别都应该是“拒绝访问”,除非系统明确赋予用户“允许访问”的权限。 结构精简 完全控制 开放设计 权限隔离 最少共有原则 心理承载力 →Read more
WebRTC 安全之道
August 2, 2023 by walter
概述 WebRTC 的安全需要满足三个基本需求 Authentication 用户访问需要认证 Authorization 用户访问需要授权 Audit 用户的访问应该可被追踪和审查 其中前两项也可以归结为 CIA Confidentiality 机密性:信息需要保密, 访问权限也需要控制 Integrity 完整性:信息需要保持完整,在存储和传输过程不被未授权,未预期或无意地篡改或销毁,或者可以快速检测到被篡改 Availablity 可用性: 信息可被合法用户访问并向其提供所需的功能和特性,例如拒绝服务攻击就是对可用性的破坏 WebRTC 的安全在 "RFC8826 Security Considerations for WebRTC" 有较为详细的阐述。 以一个简单的 WebRTC 应用为例, 我们需要考虑浏览器在客户端的安全及隐私,通信和传输的安全 +—————-+ | | | Web Server | | | +—————-+ ^ ^ / \ HTTPS / \ HTTPS or / \ or WebSockets / […] →Read more
何以解忧,唯有编程
August 1, 2023 by walter
何以解忧, 唯有编程 让程序在手指尖跳动, 让程序在电脑上奔跑 管它这个需求,管它那个规定, 在这一方天地里, 我写,我运行,我快乐 →Read more
openssl adapter in WebRTC
June 25, 2023 by walter
Overview DTLS Flow Client Server —— —— ClientHello ——–> Flight 1 <——- HelloVerifyRequest Flight 2 ClientHello ——–> Flight 3 ServerHello \ Certificate* \ ServerKeyExchange* Flight 4 CertificateRequest* / <——– ServerHelloDone / Certificate* \ ClientKeyExchange \ CertificateVerify* Flight 5 [ChangeCipherSpec] / Finished ——–> / [ChangeCipherSpec] \ Flight 6 <——– Finished / TLS with session ticket Client […] →Read more
RFC5077 TLS Session Resumption without Server-Side State
June 23, 2023 by walter
概述 这篇 RFC 废弃了 "RFC4507: Transport Layer Security (TLS) Session Resumption without Server-Side State" 主要描述了在不需要维护服务器状态的情况下如何重启一个 TLS Session 状态总归是要有的, 比如加密套件, 加密的主密钥, 它们都保存在一个由服务器知道的密钥加密过的一个 ticket 里 it stores its session state (such as ciphersuite and master secret) to a ticket that is encrypted and integrity-protected by a key known only to the server. The ticket is distributed to […] →Read more
失业意味着什么
June 22, 2023 by walter
现在经济环境糟糕, 政治环境不可说,看不到未来的希望,公司刚刚经历大裁员,失业的老同事找工作很难, 年龄越大,机会越少。 失业对我意味着什么呢? 没有收入, 没有施展平生所学的舞台,失去自信,尊严受到了打击。 可是我还是我, 我自己没做错什么, 没有必要惩罚自己,反而要相信自己天生我材必有用, 千金散尽还复来。 中国的互联网界很奇怪, 程序员35岁似乎就感觉岁数太大了,不适合在这行工作了, 而我已经年过四十,年近半百,在大多数互联网公司, 这么大岁数的程序员差不多绝迹了。现在即使顶个 Tech Leader 的 title, 做的还是一线设计和编程,我也乐此不疲,虽然也常常给难搞的 bug 折磨。 如何未来有一天我失业了, 我不知道该去做什么, 写书,翻译,或者去家小公司打工,或者去跑外卖, 我不知道,我只知道自己不可能在家歇着啥事不干,这既不是我的作风, 也不符合我们家的家风,母亲曾经在工厂发不出工资的窘况下,一边独自抚养我们兄弟, 一边兼职做各种小生意,卖过水果,矿泉水,报纸等等。 我是我妈的儿子,我也是打不垮的小强,我能在这浊世自处,为家人撑起一片天。 只是当下的时光里, 我需要做点什么未雨绸缪的事情呢? →Read more