1.openbmc 基于qemu的端口端口调试环境搭建
2.极空间NAS终于可以远程访问Docker,还能给全家设备内网穿透!转发转
3.7. 用Rust手把手编写一个wmproxy(代理,源码源码内网穿透等),端口端口 HTTP及TCP内网穿透原理及运行篇
4.微信小程序反编译
5.NGINX Server匹配原理及源码分析
openbmc 基于qemu的调试环境搭建
基础知识略过,本文聚焦于openbmc开发调试的转发转核心部分——前后端联动单步调试,将全面展示搭建基于qemu的源码源码java mrp系统源码调试环境。
搭建环境前,端口端口确保基础环境准备就绪,转发转openbmc开发者通常具备所需基础知识。源码源码首先,端口端口下载SDK手册,转发转选用ASpeed芯片作为典型例子,源码源码多数openbmc项目采用此版本。端口端口
推荐使用自定义脚本辅助编译过程,转发转自行试验后发现效果显著。源码源码成功编译后,即完成基础环境搭建。接下来,转向前后端调试环境的构建。
使用qemu核心参数实现主机与虚拟机间端口转发,此操作相当于提供一块虚拟开发板,使得外部访问变得简单直接。主机端口转发命令示例为:hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport。此选项支持针对TCP或UDP协议的数据传输,且允许在单个命令中指定多个端口转发。
注意系统默认apt安装的版本为6.2,过时可能导致模拟运行失败。需进行升级操作。通过命令删除旧版本,并下载openbmc发布的8.2版本,确保模拟环境的兼容性。
前端UI运行与后端运行同步进行。通过qemu启动openbmc镜像,调整相关参数,确保与自身环境相适应。针对romulus测试镜像和ast,分别通过bitbake编译生成最新的(V.)版本,并增加gdb调试端口转发至主机端口。
前端代码准备阶段,openbmc前端已采用vue实现(vue2),app源码像网站源码webui-vue代码通过下载获得。老版本UI已不再维护,建议基于AngularJS的代码不再考虑。Node版本推荐使用。
项目文件修改涉及增加环境变量,可通过修改webui-vue中的配置文件vue.config.js完成,其中ip地址为Ubuntu宿主机的ip地址和转发端口。
项目运行阶段,使用vscode打开项目,并在edge中安装Vue开发者工具。前端效果验证通过后,应能通过前端链接访问到qemu中openbmc的web后端——bmcweb,用户名和密码默认为root/0penBmc,初次访问需确认风险继续。
VUE开发者工具的集成使得调试更加直观有效。后端调试方面,通过yocto的开发者工具devtool进行代码导出,这是整个openbmc作为大型Linux发布系统集成的体现。建议掌握两个基础命令,更详细的命令参考可获取。
源码编译阶段,推荐通过标准SDK进行,而非增量编译。标准SDK编译过程可控,参数调整方便。导出标准SDK后,无yocto环境的主机也可调试openbmc固件,下载配套源码进行编译。
bmcweb更新通过scp命令上传编译好的带debuginfo的版本,注意需先stop服务/kill相关进程,确保上传成功后再次启动服务。gdbserver交叉编译与安装则用于gdb调试,启动qemu时增加gdb调试端口转发至主机端口。通过gdbserver与宿主机连接,实现调试。
调试demo以获取NTP信息页面为例,展示调试流程。总结而言,通过以上步骤搭建的浩仔源码_源码搭建gdb调试环境适用于复杂如bmcweb后端的案例,其他dbus应用程序亦可基于此方法进行调试,核心要点在于掌握gdb调试技巧。相信有了gdb,openbmc的学习与理解将更深入。
极空间NAS终于可以远程访问Docker,还能给全家设备内网穿透!
大家好,我是噩梦飘雷~
自从去年入手了极空间新Z4,使用至今也有快一年的时间了。
极空间在NAS系统和APP的人性化、易用程度方面做得极佳,无论在PC端还是移动端,只需要一个APP就能完整使用NAS的所有功能,并且远程使用极为方便,所以家里老人和媳妇也能轻松学会用法,好评如潮。
不过有一说一,之前在使用这台新Z4时,还是有些遗憾的。
极空间虽然给NAS标配了非常方便的远程访问功能,我们不需要自己折腾内网穿透之类的骚操作就能轻松使用,但这只是针对极空间系统的官方功能而言。在之前,由于极空间的底层权限设置,个人最喜欢的Zerotier One无法安装使用。如果自己折腾Docker的话,也无法通过官方的中转服务来远程管理,只能通过自行折腾Tailscale或者DDNS之类的方式来解决。
不过前几天在电脑上用极空间客户端的时候,无意中发现系统通知Z4已经更新了新版本固件,其中有一条是“上线远程访问,外网控制Docker镜像”,这就让我一下子来了兴趣。
因为习惯了使用Docker版的Transmission来下载PT资源和保种,所以期待这个远程访问Docker的功能已经很久了,相信也有不少喜欢用Docker的老哥和我有一样的需求。
经过尝试,这次极空间听取用户意见后解决了这个大痛点,用着确实方便,源码编辑器源码所以就赶紧写篇笔记同大家分享一下具体的使用方法。
另外,根据@值友 老哥的经验,还可以用这个远程访问功能管理路由器之类的家中其他设备,连DDNS的麻烦都省去了,在此一并为大家介绍操作方法。
在将极空间NAS更新到最新版本后,可以在极空间NAS的客户端中找到远程访问功能的图标,点击运行即可:
会提示一个远程访问免责声明,无视即可,直接点确定:
远程访问功能的界面倒是挺简单的,打开之后我们直接选“添加新的连接”即可:
然后在这里填入相关信息。备注里填写入这个连接的名字就好,端口+URL部分,填入我们使用的Docker的相关端口号就行。
比如我用的Docker版Transmission的端口号是,在这里就这样填,非常简单:
点击保存后,即可看到刚才我们建立的新连接。
在使用时候,只需要直接点击这个连接,即可跳转出一个类似内置浏览器的窗口,直接可以访问到我们的Docker Transmission了,特别方便。
同样,再来尝试将安装的Docker版内网测速软件SpeedTest给加入进来:
使用起来同样极为方便:
这里我们需要使用iii大佬开发的“Lucky”的工具,可以替代socat来转发家中局域网内的ipv4设备地址,并进行反向代理,感谢大佬的无私奉献!源代码在这里:
github.com/iii/lucky#...
安装教程如下:
根据iii老哥的说明,lucky这个Docker在不挂载主机目录时,删除容器时会同步删除配置信息。
所以为了避免以后删除后需要重新配置,接下来我们随意在极空间中新建一个文件夹,用来将保存这个容器的本地配置文件。
然后在极空间客户端中的Docker——镜像——仓库中搜索gdy/lucky。
点击“下载”按钮后,保持默认的latest版本不用更改,继续点击”下载“。源码UI优yy源码
这时才发现原来极空间已经可以显示拉取的进度了,着实用心了。
下载完成后,就可以在本地镜像中找到我们刚才拉取的Docker了,接下来我们直接双击打开。
在文件夹路径中,用我们刚才新建的文件夹来装载Docker配置文件:
在网络选项中,将驱动更改为HOST模式,这样Docker容器相当于是宿主机中的一个进程,而不是一个独立的机器,其中所运行的程序同时也会占用宿主机的对应端口。
接下来,我们就可以在网页中输入NASIP地址+端口号进入lucky进行设置工作。当然如果此时你不在家的话,也同样可以通过极空间的远程访问功能给它新建一个连接:
连接lucky后,首先需要登录,默认管理账号和密码都是。
登录后界面如下,功能很多,大家可以多研究研究。
由于我们只是想转发家庭局域网中其他设备的管理端口,所以主要应用到端口转发的相关功能。在这里依次点击菜单——端口转发——转发规则列表,最后点击”添加转发规则”。
接下来说一下各个需要填入的参数:
点击添加后,即可看到转发规则已经生成了。
此时如果在家中的话,我们尝试一下,用极空间的局域网地址+端口能否打开软路由网关的管理页面。
如图所示,我的极空间局域网IP地址是...:
然后在浏览器中用极空间IP+端口号,能顺利访问软路由的后台管理页面:
输入账号密码后也能正常进行操作:
确认lucky转发规则生效后,我们就可以回到极空间的“远程管理”功能中,为路由器创建一个新连接:
点击这个新创建的连接,既可以在极空间客户端内,访问路由器的管理页面了:
再试一下,用极空间来查看和管理家中在跑的京东云无线宝也没问题,这下是真的方便很多了:
本文中的相关操作会涉及到Docker,在极空间NAS产品线中,能使用Docker的版本包括4G内存版的Z2S,以及新Z4、Z4S和Z4S旗舰版。
如果您是非NAS老鸟的新人用户,只是想买台NAS给家人保存资料和照片视频,顺便用极影视看看**电视剧的话,个人感觉入手双盘位的Z2S 4G版就足够了。Rockchip RK CPU性能很棒,4K播放没啥压力,还能学着玩一玩Docker,关键是价格还低,很适合入门使用。
我自己在用的这款新Z4的处理器是X平台4核心4线程的J,用了快一年后感觉对我来说性能完全溢出了,没遇到过性能瓶颈,而且标配了两个2.5G网口,传输速度更给力,我自己和家人都用得很满意。而且这一款现在价格也比发售时降了不少,个人强烈推荐。
不过美中不足的是,极空间新Z4只有一条M.2固态硬盘插槽,对插槽数量和处理器有更高要求的同学可以考虑入手Z4S和Z4S旗舰版。
其中极空间Z4S采用的是N处理器,而Z4S旗舰版使用的是更强的N处理器,性能更强,能通过两条M.2固态硬盘插槽启用读写双缓存,还有 HDMI2.0 接口可以直接输出画面给电视,属于一步到位的选择了。
另外,极空间的X处理器机型,包括Z4、Z4S、Z4S旗舰版等都全系采用了2个2.5G网口,能发挥机械硬盘的全部读写实力,传输数据更加快速,可以和现在基本标配了2.5G网口的电脑主板完美配合。
不过一般我们家里路由器的2.5G网口数量都比较有限,硬路由也就配备1-2个而已,软路由一般也不过4-5个。如果遇到家里2.5G设备多、路由器2.5G网口不够用的情况,就可以考虑增加2.5G交换机了。
正好最近2.5G交换机的硬件方案有了突破,不少厂商都推出的新型号产品,不止售价大幅度下降,而且更关键的是,交换机的发热更少、温度更低,已经很适合家庭长期使用了。
我家使用2.5G网口的设备比较多,所以自己也趁这机会入手了一台兮克的SKS-8GPY1XF,这台交换机2.5G交换机同时拥有8个2.5G电口+1个G光口(SFP+),其中光口还支持2.5G猫棒,售价却只要元,这价格放在半年前想都不敢想,属实太香了。
由于采用了被动散热设计,兮克SKS这台8口2.5G交换机用起来非常安静,但是实测运行温度并不高,而且使用一段之后稳定也很棒,有需要的朋友可以放心入手。
极空间这次新开发的远程访问功能用起来真的方便,可以通过简单的操作就可以轻松访问NAS中的Docker应用,对喜欢折腾Docker的用户来说极其实用。
另外,只要家里有一台极空间NAS,通过iii大佬开发的gdy/lucky这个Docker的帮助,就能为整个家庭局域网中的设备都进行内网穿透。这样即使我们人不在家,也能随意管理和配置家里的各个网络设备,充分利用了极空间提供了中转带宽,免去了折腾DDNS和其他内网穿透工具的麻烦和费用,这一点个人感觉超级方便。
好了,以上就是今天为大家分享的内容了。如果本文对您有帮助的话,期待大家给个关注点赞收藏三连,您的支持就是我持续更新的最大动力!
7. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP及TCP内网穿透原理及运行篇
内网与公网的差异:
内网通常指的是局域网环境,包括家庭、网吧、公司、学校网络,网络内部的设备可以互相访问,但一旦越出网络,无法访问该网络内的主机。公网则泛指互联网,是一个更大规模的网络环境,拥有单独的公网IP,任何外部地址可以直接访问,从而实现对外服务。
内网穿透的需求与场景:
场景一:开发人员本地调试接口,线上项目遇到问题或新功能上线,需要进行本地调试,且通常需要HTTP或HTTPS协议支持。
场景二:远程访问本地存储或公司内部系统,如外出工作或需要远程访问本地的私有数据,如git服务或照片服务等。
场景三:本地搭建私有服务器,为减少云上服务器高昂的费用,使用本地电脑作为服务器,满足对稳定性要求较低的场景。
内网穿透原理:
内网穿透通过在内网与公网之间建立长连接,实现数据转发,使外部用户能够访问到内网服务器的数据。客户端与服务端保持长连接,便于数据的推送,实质上是在转发数据以实现穿透功能。
Rust实现内网穿透:wmproxy工具实现简单易用的内网穿透功能。客户端与服务端分别配置yaml文件,启动程序以实现穿透。
HTTP与TCP内网穿透测试:
在本地端口启动一个简单的HTTP文件服务器,端口实现HTTP内网穿透,将流量映射到端口,通过访问/download/ 下载并安装。
wxappUnpacker:从 /xuedingmiaojun/wxappUnpacker 获取,注意安装。
微信开发者工具:访问 /miniprogram/dev/devtools/download.html 下载,直接安装。
二、小程序包提取使用模拟器或安卓手机,确保手机已root,安装文件管理器如re文件管理器或MT管理器。
在模拟器或手机中使用adb或夜神模拟器的nox_adb进行以下操作:
执行`adb shell ls -l /data/data/com.tencent.mm/MicroMsg/`查看目录。
在用户目录下查找exapkg包,执行`adb shell ls /data/data/com.tencent.mm/MicroMsg/db3beb9ebe0b5edab8d1/appbrand/pkg/`。
删除小程序目录下所有文件,执行`adb shell rm -f /data/data/com.tencent.mm/MicroMsg/db3beb9ebe0b5edab8d1/appbrand/pkg/*`。
三、使用微信开发者工具将提取的包发送到PC端,使用`adb pull`命令将整个pkg目录发送到PC的指定目录。
四、配置wxappUnpacker安装wxappUnpacker依赖:`npm install`。
五、运行wxappUnpacker执行`node wuWxapkg.js D:\tmp\tmp\pkg\_-_.wxapkg`。
反编译后的文件将生成同名的文件夹,包含反编译的js文件。
六、使用微信开发者工具打开源码点击“使用测试号创建”,即可查看反编译后的源码。
抓包流程使用Proxifier或Charles抓包,具体步骤如下:
对于Proxifier:安装Proxifier,添加代理指向burp/fuddler监听的端口。
设置代理规则匹配微信小程序相关进程。
对于Charles:下载并激活Charles代理软件。
在Windows选项卡中设置默认不开启window代理,配置代理规则匹配所有流量,通过代理转发。
最后提示:- 使用微信开发者工具和反编译工具进行微信小程序开发和研究。
- 使用安全工具如Proxifier或Charles抓包,确保遵守法律和伦理规范。
- 本教程仅用于学习和研究,避免非法用途。
NGINX Server匹配原理及源码分析
NGINX服务器的匹配机制关键在于将用户请求转发到正确的server,分为两个步骤:首先根据请求的地址和端口,然后根据server_name进一步确定。本文将深入解析其配置指令、源码和匹配过程。
配置指令是实现服务器匹配的关键,`listen`指令定义服务地址和端口,`server_name`则区分在相同地址和端口下的多个服务器。四层信息(地址和端口)由`listen`处理,七层信息(hostname和URL路径)则通过`server_name`和`location`指令来处理。
`listen`指令的语法和注意事项需理解,如`default_server`和`flags`选项。`server_name`支持多种配置形式,匹配时遵循特定优先级。服务器的匹配过程可通过举例来理解,例如,完全匹配、前缀和后缀通配、正则表达式匹配等规则。
源代码层面,涉及的数据结构如ngx_listening_t、ngx_http_port_t等在解析配置指令时起关键作用。`ngx_http_core_listen`和`ngx_http_core_server_name`函数负责指令的具体解析。在创建监听端口时,会根据配置生成多个ngx_listen_t,将服务器与地址和端口关联。
用户连接到达后,数据层面的源码分析揭示了服务器匹配的执行过程。通过一系列函数和数据结构,最终确定了请求应被转发到哪个server。
总结,NGINX的服务器匹配机制是其功能的核心,通过理解配置和源码,可以更深入地掌握其工作原理。后续文章将探讨location匹配的细节。