William Chan
William Chan
实现了两个版本,macOS 与 Windows,也尝试了下直接将 Objective-C 与 nodejs 插件混编。通常可以用于 Electron 场景。 https://github.com/luckyyyyy/node-system-proxy ## Support * macOS >= 10.10 * Windows >= NT 6.0 ## Example ```js import proxy from 'node-system-proxy'; proxy.enable('127.0.0.1', 8080);...
主要是赘述原理和过程,下方有抓包的内容。 * 本篇需要你了解基本的 VLAN HTTP 抓包 app开发模式 Web前端 流媒体协议。 * 本篇着重叙述机顶盒的认证原理。 * 本篇篇末还是继续介绍如何抓包。 ## 机顶盒 本质是个安卓大家都知道,这也是可以找到的技术成本最低的可安装APP,可扩展的方案。 从我拿到的这款中兴的机顶盒来看,所有的启动画面都是一个浏览器加原生app界面完成的,可以理解为完全就是一个`hybrid app`。 app提供了很多内置的接口,都是通过`JavaScript`调用的,并且杭州电信整个机顶盒登录流程走的均是http(专线内网),当然你需要过第一步DHCP认证加入专线。 ### 上游可控 机顶盒的固件升级(强制),机顶盒内的设置和家用的猫是一样的,均是上游可控,用户看到的设置界面都不是最高权限。 配置也可以做到上游下发,目前小部分配置是的,也许是因为各家使用的机顶盒型号太多,没有做到完全下发。 ### 认证过程 认证过程均为机顶盒打开浏览器使用`form`表单构建`POST`请求完成,由于需要调用机顶盒内部API获取一些关键信息,所以被做成了`hybrid`模式。 认证过程步骤较多,由于一些不可抗因素,这里不做分析和拆解,有兴趣的同学可自行抓包查看,整个过程其实非常简单 **是否通过认证不影响视频播放,只影响API的调用** 认证后端使用的是`Java`编写,其中有多个核验参数,例如MAC地址,机顶盒序列号等 ###...
最近这几天,后端代码写的超过前端了,也很忙,博客很久没写了,还是输出一些吧。 使用一些比较冷门的运算符,做一个简易的旗标,前端很少这么用,因为受限于JavaScript语言的弱类型不确定性。 ```javascript // 添加一个标记 0x20 | 0 // 32 // 添加多个标记 (0x40 | 0x80 | 0x100) | 32 // 480 // 查询一个标记 (0x20 & 480) !== 0 // true...
很久没写内容了,实在太忙了,不好意思。 最近折腾了一下pon stick模块,给大家避雷。 ## 购买指南 * 目前市面上方案几乎都一样,没有区别,成本其实很便宜。 * 模块本身是 RTL8672 方案,发热量较大,一般外表能到65度以上。 * 价格千兆普遍在300以内,不要买贵了。 * 有几家厂商做OEM,各自的固件不同,其他都一样。 * 模块本身挑网卡,不同的网卡会出现不同的情况,但有一点是一样的,插入后不用接光纤,模块即可发热。 * 大部分交换机中使用模块最稳定,但可能需要浪费一个RJ45端口。 目前正在x86 OpenWRT 上使用,暂时表现较为稳定。  
首先是需要魔改的 nginx-rtmp-module https://github.com/im-pingo/nginx-rtmp-module 由于我需要给移动设备观看 所以需要利用他自动唤起 ffmpeg,当没有人看的时候自动停止pull。 ```nginx server { listen 1935; chunk_size 4000; application hls { send_all off; zero_start off; mpegts_cache_time 20s; cache_time 2s; hls_path /dev/shm/hls; live on; hls on;...
https://www.kernel.org/doc/Documentation/networking/tuntap.txt TUN/TAP provides packet reception and transmission for user space programs. It can be seen as a simple Point-to-Point or Ethernet device, which, instead of receiving packets from physical media,...
也是因为今年的疫情原因,所以才有空来好好折腾自己的家庭网络。 作为互联网相关行业的从业者和对科技的爱好和热情,还是有必要为自己打造一套舒适的上网和工作环境的。 下面有一些自己的看法,分享给大家。 ## 运营商网络选择 从目前国内的情况来看,选择电信对于南方还是没有错的,且上海的国际出口是非常优秀的。 当然对于北方来说,联通也是可选的,不同的运营商拥有自己的骨干网络,对于国际的出口也各不相同。 从数据来看,电信的国际出口依然是最大的,并且有用高端CN2(GIA)出口,晚上的时候依然稳定不丢包。 ## 速率选择 下面说的速率都是内网速率,外网速率只要给够了钱都可以,当然建议大家选择性价比最高的方案,因为你并不是无时不刻的在下载。 如果普通家用速率千兆足以,这并不是说和当年很多人说百兆足以一样。 且千兆其实是个槛,普通用户普及万兆的可能性目前来看并不高,且性价比非常低。 如果考虑日后的万兆(NAS)使用,布线是可以提前做调整的,可以选择光纤或超六类及以上(也不是说六类不可以万兆)。 光纤价格便宜但依赖特定设备和模块(服务器淘汰设备较便宜),电口兼容性好但价格较贵(个人用户普及度非常低,万兆电口交换目前也是天价)。 当然前提是你有 10Gbps sfp+ 的需求。 考虑光纤布线是比较靠谱的。如果你有自己的方案,也可以上万兆电口。 ### 设备选择 家庭设备选择其实比较简单,大多数人购买的是普通路由器,普通路由器对于只需要上网的同学来说,是完全可以满足的。 但是对于喜欢折腾和一些特殊出口的同学来说,其实还是很难的,下面我会详细说这部分的内容。 以下直接借用 lintel 的原话 * 当前能满足千兆NAT的路由器虽有很多,但是能满足无线千兆转发的路由器少之又少。 *...
这段时间活跃在openwrt社区,其实时间也不久 不过还是记录一下遇到的一个最大的坑。 首先由于各种原因,openwrt国内都把luci稳定在17或18的版本上,大家开发应用其实都是互相抄官方的写法,因为文档其实很稀缺或者说大多数都已经过时了。 近期用rust写了一个简单的demo(过段时间公开),但是开发时候遇到了不少问题总结一下。 1、首先大多数应用都是shell脚本读取配置交由应用来完成,会lua的同学其实不多,导致shell脚本会调用大量的grep sed等命令,性能不是很好。 2、大家的luci的lua脚本其实都是来自于官方,甚至找不到api直接exec shell脚本来实现。 3、官方的luci,19版本改造的前后端分离,导致大量老应用不兼容的情况。 今天发现,其实官方的API也非常坑,对于不了解lua的同学来说非常不友好。 我们后面再来介绍 openwrt uci 与 ubus之间的关系,这一篇且说遇到的坑。 `luci.model.uci`其实最终调用是ubus而非uci 这是最终触达代码 ```lua local _ubus_connection = nil local function ubus(object, method, data) if not _ubus_connection...
fdisk /dev/sdx g n t List all 31 or 8e by Linux LVM p (check) w pvcreate /dev/sdx1 vgcreate ssd /dev/sdx1 lvcreate --type thin-pool -L 100G -c 64K -n data...
先备份 vgdisplay 显示LVM卷组的信息 vgcreate 创建LVM卷组 vgscan 扫描并显示系统中的卷组 vgextend 向卷组中添加物理卷 vgreduce 从卷组中删除物理卷 vgchange 修改卷组属性 vgconvert 转换卷组元数据格式 vgremove 用于用户删除LVM卷组 pvcreate 将物理硬盘分区初始化为物理卷 pvdisplay 显示物理卷的属性 pvremove 删除一个存在的物理卷 pvck 检测物理卷的LVM元数据的一致性 pvchange 修改物理卷属性 pvs 输出物理卷信息报表 partprobe...