博文

目前显示的是 十一月, 2024的博文

v2rayN-VLESS 订阅增加 是否Base64解码 选项 .net 4.8 WebClient下载中文乱码

图片
虽然v2rayN提供了导出base64编码后的订阅内容的功能. 但是不方便管理订阅内容, 特别增减个别节点的这种微调. 所以我们自己弄订阅方式干脆就纯文本保存, 不要搞Base64编解码了. 说干就干. 先在添加订阅的地方加个 "是否Base64解码" 的checkbox 订阅的数据结构要加个字段 来保存这个设置项. 订阅管理的窗口 SubSettingForm , 打开窗口设计器, 双击保存按钮, 再一路走读代码. 发现没对订阅项中的字段做什么处理, 直接就把订阅项的数据结构序列化为json文本保存到 v2rayN配置文件中去了. 那么就是说, 当 订阅管理的窗口 SubSettingForm 关闭的时候, v2rayN配置数据结构  中 订阅项 的数据已经被更新了. 插一句, 传统的窗口设计是, 在窗口 确认关闭之前, 窗口元素上的所有数据和变化都只停留在窗口上, 就像是一张草稿纸. 如果窗口取消了,那么程序本身的数据一点都不会改变. 如果窗口确认了, 才会用窗口元素的数据来改变程序. 找了一个订阅项的界面元素 chkEnabled. 在代码里全项目 Ctrl+Shift+F 搜一下. 找到这个结果. 可以看到, 当备注文本框的焦点离开时, 会把 界面上的订阅项数据 保存到程序的配置数据中. 继续想一想, 订阅项的界面元素并不是只有备注文本框啊. 而且, 话说回来, 备注文本框算是最不重要的数据了吧. 继续全项目搜索这个 txtRemarks_Leave 函数. 发现在 订阅url文本框 的离开焦点事件注册了这个函数, 在 是否启用订阅项的那个框框checkbox 的离开焦点事件 也注册了这个函数. 那么我们的修改就很明白了, 把 是否Base64解码checkbox 的焦点离开事件也注册这个函数就行了. (当然了, 我以前加的  AllowInsecure 焦点离开事件也要注册这个函数. 算是以前没做到位的, 现在来擦屁股了) 窗口设计器, 选中界面元素 Base64解码checkbox, 属性窗口 - 事件 - 焦点 - Leave,  下拉列表中 选择 txtRemarks_Leave  注册. 前面这么一大段大费周章, 是为了把这个 是否Base64解码 的设定值 能保存到配置文件, 程序启动时能正确读取. 接下来, 我们就要在更新订

v2rayN-VLESS 菜单项中文资源修改 .net 4.8项目多语言资源

图片
最方便在VS中的操作如下: 打开窗口设计器 选中窗口, 在属性表中 找到 Language, 下拉菜单中选择 语言. 对于 v2rayN 3.29 项目来说, 选择 "中文(简体)" 然后再找到菜单项进行修改, 改的就是中文资源属性了. 实际上中文(简体)资源 是保存在 .zh-Hans.resx 文件中. 你把这个文件用纯文本的方式打开就能看到. 从另一方面来说, 如果我选中窗口后的 Language 属性不是调整为 中文(简体), 那么会是不同的后缀的资源文件. 比如, 如果我选择的是 中文(简体, 中国)  那么资源文件后缀是 .zh-CN.resx 进一步的, 在不同的资源文件中, 是可以定义界面元素有不同的尺寸和位置的. 原因是, 不同的语言的文字, 写出来的长度是不一样的, 有可能需要不同大小的界面元素.  而且, 有些语言是从右往左写的. 那么, 你原本设计的界面元素的左右关系有可能暗示了先后或主次的顺序. 在这样的语言下, 界面元素的位置也应该重新安排.

v2rayN-VLESS 按键UTDB连续移动节点顺序

图片
原来的v2rayN用按键来移动节点顺序, 每次只能移一下. 比如, U键是用于上移一格. 按U键后, 节点列表项会失去焦点, 于是你再按U键就无效了. 修改内容如下: 在 主窗口 MainForm 的 MoveServer 函数中,  让真正干活的 (AppConfigHandler 模块中 MoveServer 函数) 返回 (移动后的节点项 在序列中的位置) 然后再让这个列表项 .Selected = true 被选中. 当然 AppConfigHandler 模块中 MoveServer 函数 内部实现也有一些小修改. 在函数的最后, 向调用者返回这个index. 修改记录 https://github.com/crazypeace/v2rayN-3.29-VLESS/commit/acc87e1 主程序补丁文件 https://github.com/crazypeace/v2rayN-3.29-VLESS/releases/download/v3.29.0.12/v2rayN-VLESS-v3.29.0.12-UDTB.zip

follow.it 邮件订阅服务 将 \\ 显示为 \

图片
我用了一个邮件订阅服务. https://follow.it/ 当我新发布了一篇博文后, 你会收到一封提醒邮件. 如, 最近我发了一篇文, 就发现了 follow.it 的一个问题. \\ 会被显示为 \ 如果大家有更好的免费邮件订阅服务, 欢迎留言.

RackNerd VPS搭Hysteria2 HY2梯子 年付 $10.98 1G端口 3T流量 17G存储 1GB内存

图片
点此链接购买 RackNerd 1G端口 3T流量 17G存储 1GB内存 VPS 年付 $10.98 https://my.racknerd.com/aff.php?aff=1374&pid=358 Disk Space 17 GB Bandwidth 3  TB Network Port  1 Gbps Memory          1 GB 点此链接购买 RackNerd 1G端口 1.5T流量 20G存储 1GB内存 VPS 年付 $10.99 https://my.racknerd.com/aff.php?aff=1374&pid=879 Disk Space 20  GB Bandwidth 1.5  TB Network Port  1 Gbps Memory          1 GB

Linux sed 命令添加多行文本 写在一行命令里

图片
TL;DR sed ' /要搜索的内容/   a  第1行 \\n 第2行 \\n 第3行' kejilion的脚本, 考虑使用者有可能在墙内, 或者是纯ipv6的网络环境,  1) 在Docker包管理器时会使用国内的源,  2) 在获取 github 资源时, 会加上 ghproxy. 脚本会根据一些条件来帮助使用者进行判断, 是否应该使用这些特殊处理. 但是, 使用者的环境千奇百怪, 脚本的判断并不一定是最优的处理. 那么群里就会冒一条消息. 唉呀, 脚本卡住啦, 脚本出错啦, 求求大神快来解救我呀. 如果我们不想等"大神"来救, 那么我们可以自己决定是否要做这些特殊处理. 思路和 以前类似 , 也是用sed修改文本流的内容, 再灌到bash里面去执行. 我们要在文本中找到 quanju_canshu() { 然后在下面添加3行 zhushi=0 gh_proxy="https://gh.kejilion.pro/" return 当然了, 根据你的需求, 这2个参数的值是可以修改的. 比如, zhushi=1, 或者 gh_proxy="" 到此为止, 和以前都差不多, 写一篇文出来太水了. 我想写文的原因是, 如何使用sed添加多行文本, 写在一行命令里. 要用sed添加多行文本, 我找到的资料都是写成多行命令的, 我的意思是这样的: https://www.runoob.com/linux/linux-comm-sed.html man sed 查出来的官方帮助文档 a \ - append - 在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用\续行 但是, 如果我要基于 bash <(...) 的模式修改, 我想还是保持一行命令的形式, 应该怎么写呢? 又经过一些搜索和尝试, 在 sed v4.9 版本下, 我实践成功的写法是这样的 sed ' /要搜索的内容/ a 第1行 \\n 第2行 \\n 第3行' 其中 /***/ 就是 搜索并定位 的功能, a 就是在下1行添加文本  的功能, \\n 实现了换行符. 回到我们的原始问题. bash <( curl -L "https://gh.kejilion.pro/h

v2rayN-VLESS 生成配置文件 Xray链式代理 多http代理inbound 多落地节点outbound 一对一 隧道节点方便切换

图片
之前 做了一个Xray 加载多个 链式代理 配置文件 多inbound 多outbound 一对一方案 , 要一个一个导出客户端配置文件, 还要修改 inbound 和 outbound 的 tag. 最终把多个配置文件放在同一个目录, 启动xray内核, 会合并所有配置文件的 inbound 和 outbound, 以及路由规则, 这样保证 inbound 和 outbound 一一对应. 整个过程还是有点麻烦的. 最近给 v2rayN-VLESS 开发 HY2 支持, 在处理  Reality 协议与 Hysteria2 协议节点并存 时, 走读代码的逻辑. 发现 如果多选了节点, 再用测速功能, 会先生成配置数据. 这个配置数据包含以下内容: 1. 在生成配置的时候, 会生成多个 http 代理的inbound. 2. 将你选择的那些节点也生成 outbound. 3. 生成很多个 路由规则  把这些http代理的inbound和要测试的节点的outbound 一一对应起来. 然后启动一个内核, 加载这个配置, 也就是包括了 上述这些 inbound, outbound, 路由规则. 然后再用这些inbound的http代理, 一个一个去访问测试URL, 也就一一测试了 outbound表示的节点. 那么我多想一步, 如果我们把这个配置数据用json文件保存出来. 自己另外用个裸内核加载跑起来, 不就是我们之前想达到的功能吗? 而且本来设置的下一跳socks5设置也保存, 方便你将一批落地节点套上隧道 加速. 在 GenerateClientSpeedtestConfigString 函数, 把生成的配置文本保存出来就行了. 那么, 实现原来这篇文  一个Xray 加载多个 链式代理 配置文件 多inbound 多outbound 一对一方案  的目的, 工作流程更新为: 在v2rayN (1)中添加隧道节点 在v2rayN (2)中添加全部落地节点 在v2rayN (2)中设置下一跳Socks5 为 v2rayN (1) 的监听Socks端口 在v2rayN (2)中 全选节点, Ctrl + R 测试真连接延迟. 此时, 会生成 testconfig.json 配置文件 在v2rayN (2)目录中, 命令行启动内核, 加载 testconfig.jso

Xshell 中 Ctrl + 鼠标左键 快速移动光标

图片
今天孤陋寡闻了. 才知道 Xshell 中 Ctrl + 鼠标左键 快速移动光标 这个功能. 使用终端命令行的时候, 如果网络不是那么快, 操作按个键, 要过段时间才会有反应. 我已经养成了 用 home 移动到行首, end 移动到行尾,  Ctrl + 方向键按单词移动的习惯, 移动起来会快一点了. 但是遇到要移动到一个很长的单词中间, 或者上下移动的行数比较多的时候, 连按了几个方向键后, 总是要等一下光标的反应, 看到底移动到哪一行了. 这时候, Ctrl + 鼠标左键 快速移动光标 的功能就方便了. Xshell 的功能开关在 菜单 工具 - 选项 - 键盘和鼠标, 勾选 用 Ctrl + 鼠标左键单击 移动终端光标 实际操作演示

谁有 win7 的环境 测试一下能不能 在 go v1.21.4 环境下编译 v2ray v5.18.0 以支持 hy2

图片
我有了 方便好用的 v2rayN - 3.29 支持 hy2 然后就一直在想, win7 环境下的用户, 怎么用 hy2 猛地发现 xray 还可以编译 win7 版本. 找了一圈信息源, 说是用 go v1.21.4 环境编译出来的是可以放在win7下跑的. 不知道读者里面有没有 win7 环境的, 试下能否安装 go v1.21.4 环境. 会不会在安装时就报错不让装. https://go.dev/dl/go1.21.4.windows-386.msi https://go.dev/dl/go1.21.4.windows-amd64.msi 如果可以安装编译环境成功的话, 是可以参考 这篇教程自己编译 v2ray v5.18.0 的. 放到 v2rayN-VLESS-3.29 目录里面就可以连hy2节点了. 我自己在 Win10 64位环境下, 先后安装了 go v1.21.4 32位环境 和 64位环境, 编译了 v2ray v5.18.0 上传到了 github  https://github.com/crazypeace/v2ray-hy2-v4json/ 不想自己操作编译的读者, 可以下载了试试. https://github.com/crazypeace/v2ray-hy2-v4json/raw/refs/heads/main/V2Ray-5.18.0(go1.21.4-windows-386).zip https://github.com/crazypeace/v2ray-hy2-v4json/raw/refs/heads/main/V2Ray-5.18.0(go1.21.4-windows-amd64).zip 欢迎反馈.

v2ranN-VLESS-HY2 支持 Reality 协议与 Hysteria2 协议节点并存

图片
需求 v2ranN-VLESS 支持了 reality, 基于 xray 内核 v2ranN-HY2 支持了 hy2, 基于 v2ray 内核 reality和hy2都好用, 都需要.  我是在VPS上同时部署了多个协议的(只要用不同的端口, 不冲突就可以了).  在客户端, 我可不想为了换个协议用用, 就要关个软件再开个软件. 那么, 就要在 v2rayn.exe 的目录下同时放 xray.exe 和 v2ray.exe 然后要根据不同的协议来调用不同的内核. 分析 我们先来看看目前的代码逻辑是怎样的. 根据 之前的开发经验 , 我们知道, 启动内核是在 V2rayHandler 模块的 V2rayStart 函数 里的 p.Start () 倒着走读代码, 发现 V2rayFindexe 函数是用来判断启动哪个内核程序的. 逻辑是, 在 lstV2ray 这个列表中取字符串出来, 再拼上 .exe 的后缀, 然后看当前目录有没有这样的文件存在. 而这个 lstV2ray 列表呢. 存着这些. 也就是说, v2rayN 3.29 的原始逻辑是, 当前目录下, 这3个内核的文件, 找到哪个就启动哪个. 那么, 我们要做的是: 建一个"全局"变量, 用于保存 指定的内核程序名称. 在启动内核之前, 要先根据使用的协议来判断是否需要指定内核程序名称. 实践 添加 模板内"全局"的变量 "设为活动服务器" 的功能, 最后启动内核之前, 加个判断内核的函数调用 测速功能. 最后启动内核之前, 加个判断内核的函数调用. 把v2rayN软件设置里面的 outbound 也就是节点信息传进去. 而这个新增的 SetCoreExeByConfig 函数的实现呢. 就是根据节点信息里的特定属性, 判断是否reality协议, 是否hy2协议. 最后一个修改, 在查找内核程序的函数 V2rayFindexe 中, 原来的逻辑是遍历 { "xray", "wv2ray", "v2ray"} 这个列表. 现在修改为, 先构造一个列表. 规则是: 如果指定了内核, 那么列表中只有这个内核程序. 如果没有指定内核, 那么列表和原来的逻辑保持一致, 就是 { "xra

v2rayN-HY2 测试真连接延迟

图片
总功能列表在 这篇分析 里. 我们现在实现第 9 项 Ctrl+R 测速 打开主窗口 .cs 文件的设计器 找到菜单项, 双击,  打开菜单项 "测试真连接延迟" 的响应函数 走读代码, 跳转到 RunRealPing 函数. 继续走读代码, 一路跳转到 V2rayStartNew 函数 我们用 上一篇 一样的方法, 在 p.Start() 上设置断点. 再检查设置的启动参数. 可以看到, 实际上相当于在命令行执行 D:\_work\v2rayN-3.29-VLESS\v2rayN\bin\Debug\v2ray.exe -config stdin: 同样的, 这是 v2ray v4版本的启动语法. 我们要参考 v5 版本的启动语法了. 官方文档 https://www.v2fly.org/guide/start.html#运行 要注意, 测速的启动过程, 并不要指定配置文件. 而是, 先把程序启动起来, 再往 stdin (标准输入流) 输入json格式的配置文本. 而 v2ray v5版本, 要从stdin (标准输入流) 获取json格式的文本, 就要以 不指定配置文件的方式启动, 而且在同目录下不能有 config.json 文件. 所以, 我们把 生成配置文件的文件名, 修改为 不是config.json  比如, runconfig.json 进一步的, 我们使用的是 v4格式的json配置文本, 所以参数还要加上 -format json 最终, 修改启动参数为 run -format json 跑起来测试一下.   记得把以前生成的 config.json 文件删掉哦. 功能正常. ======== 开了一个分支, 本文的修改内容已提交. https://github.com/crazypeace/v2rayN-3.29-VLESS/tree/hy2 如果你有兴趣, 可以看到整个的开发过程. 本次修改记录 https://github.com/crazypeace/v2rayN-3.29-VLESS/commit/3129b5e ======== 如果只是使用 hy2 的话, 应该是可用的状态了. 所以发布了一个 pre release https://github.com/crazypeace/v2rayN-3.29-VLESS

The Hot3 in Last 30 Days

RackNerd VPS搭V2Ray WSS梯子 年付 $10.98 1G端口 3T流量 17G存储 1GB内存