博文

DD脚本 在日志输出curl被调用的序号 输出curl命令和参数 执行预设的命令

图片
前言 在 DD脚本群 https://t.me/reinstall_os 有群友遇到网络不好, 脚本下载资源时容易中断的问题. 思路 上一篇我们发现不能简单的将某个资源提前放到VPS指定的位置 因为会出现 不同的资源 放到VPS上同一个位置的情况. 那么我们换个思路. 在整个脚本的执行过程中, 所有的curl命令的内容和次序是固定的. 换句话说, 我们每次执行脚本时, 第1句, 第2句, 第3句, ... 第n句curl命令的内容是固定的. 哪怕脚本中某一条curl语句被放在了循环中, 被执行了多次. 但是从展开后的执行序列来说, 每次curl命令的内容是固定的. 实践 所以我们 在已有的脚本头部添加一个这样的curl壳子: 1) 记录并打印一个调用序号. 每次调用序号增1 2) 输出 pwd 当前目录 3) 输出完整的 curl 命令及全部参数 4) 这个curl壳, 并不去真正下载文件. 5) 根据调用序号, 执行预设的命令. 如,  cp file1 /path/to/file 或 cat file2 来替代 curl -LO 或 curl  -Lo 的保存文件的命令 或 curl -L 的输出到stdout的命令 6) 这些预设命令是会被人工编辑而增加的. 用case实现 5) 的逻辑. 7) 这个curl壳, 永远返回成功.  把这个要求发给GPT, 得到 # 全局调用计数器 curl_call_count=0 curl() {     curl_call_count=$((curl_call_count + 1))     # 输出调用序号和当前目录(到 stderr)     echo "[DEBUG] curl call # $curl_call_count" >&2     echo "[DEBUG] Current directory: $(pwd)" >&2     # 输出完整命令(包含所有参数,安全转义)     printf '[DEBUG] Command: curl ' >&2     printf '%q ' "$@" ...

DD脚本 输出所需资源的链接

图片
前言 在 DD脚本群 https://t.me/reinstall_os 有群友遇到网络不好, 脚本下载资源时容易中断的问题. 思路 我有一个想法,  1) 让这个脚本把所有需要下载的资源的链接输出 2) 使用者自己去下载资源, 并上传到VPS上 实践 分析一下这个DD脚本 https://github.com/bin456789/reinstall/raw/refs/heads/main/reinstall.sh 在脚本的开头, 看到作者已经实现了一个 curl 函数, 用于包装系统的curl. 这是一个很好的思路. 我们可以在此基础上, 作如下修改: 1. 输出 pwd 当前目录 2. 输出完整的 curl 命令及全部参数 3. 这个curl壳, 并不去真正下载文件. 4. 这个curl壳, 永远返回成功. 拿着这些去问GPT. 最终修改成这样: curl() {     # 输出当前工作目录     echo "[DEBUG] Current directory: $(pwd)" >&2     # 输出完整命令(含全部参数)     printf 'curl ' >&2     printf '%q ' "$@" >&2     printf '\n' >&2     echo >&2     # 不执行真实下载,只打印信息     # 永远返回成功     return 0 } 我们把修改过的 reinstall-edited.sh 上传到 VPS, 测试 bash reinstall-edited.sh debian 13 *  debian 13  为示例. 日志打印为: [DEBUG] Current directory: /root curl -L http://www.qualcomm.cn/cdn-cgi/trace 我们在脚本中搜索  http://www.qualcomm.cn/cdn-cgi/trace 找到如下代码 我们需要让此处的...

分析 xray 代码 DNS解析

图片
书接上文, 我们通过测试, 知道了xray在一定的条件下会调用系统的getaddrinfo 分析 Xray 的代码, 在哪里进行DNS解析 分析 xray 日志 [Debug] app/log: Logger started [Debug] app/proxyman/inbound: creating stream worker on 127.0.0.1:1080 [Info] transport/internet/tcp: listening TCP on 127.0.0.1:1080 [Warning] core: Xray 25.10.15 started [Info] [304315699] proxy/socks: TCP Connect request to tcp:api.myip.la:80 [Info] [304315699] app/dispatcher: default route for tcp:api.myip.la:80 [Info] [304315699] transport/internet/tcp:  dialing TCP to  tcp:api.myip.la:80 [Debug] [304315699] transport/internet: dialing to tcp:api.myip.la:80 [Info] [304315699] proxy/freedom: connection opened to tcp:api.myip.la:80, local endpoint 198.23.254.247:57912, remote endpoint 149.28.31.24:80 [Info] [304315699] proxy: CopyRawConn splice 可以发现一些关键词, 比如 dialing TCP to   我们打开xray源码 https://github. dev /XTLS/Xray-core/ * 对, 就是把 Xray 项目的 github.com 改为 .dev  ** 当然, 我这是图省事的操作. 你愿意下载源码再用M$ VS打开也是一样的. 搜索  dialing TCP to   这就是xray打印日志的地方了. https:...

xray的IPv4优先 IPv6优先行为受 gai.conf 控制?

图片
前言 群友反馈在Deiban13下不能设置IPv4优先 通过进一步的交流, 群友的意思是 sing-box 向外访问, 无法通过 gai.conf 来设置是 IPv4优先 还是 IPv6优先 群友用的是fakeip的模式, 翻墙客户端发给梯子的数据包中只有域名, 没有IP. 上一篇我们测试了sing-box , 这次我们再测试一下 xray 技术基础 用 curl socks5h 模拟翻墙客户端 fakeip 行为 编译getaddrinfo钩子 钩Go程序 编译xray https://github.com/XTLS/Xray-core#one-line-compilation 准备测试环境 搭建一个简单的xray服务端 官方安装脚本  bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install 把service自动启动的xray关掉 systemctl stop xray  配置文件 nano /usr/local/etc/xray/test-config.json {   "log": {     "access": "/var/log/xray/test-access.log",     "error": "/var/log/xray/test-error.log",     "loglevel": "debug"   },   "inbounds": [     {       "listen":"127.0.0.1",       "port":1080,       "protocol":"socks"     }   ],   "outbounds": [     {       "protocol": "freedom",       "tag": "di...

sing-box的IPv4优先 IPv6优先行为受 gai.conf 控制?

图片
前言 群友反馈在Deiban13下不能设置IPv4优先 通过进一步的交流, 群友的意思是 sing-box 向外访问, 无法通过 gai.conf 来设置是 IPv4优先 还是 IPv6优先 群友用的是fakeip的模式, 翻墙客户端发给梯子的数据包中只有域名, 没有IP. 技术基础 用 curl socks5h 模拟翻墙客户端 fakeip 行为 编译getaddrinfo钩子 钩Go程序 编译sing-box https://sing-box.sagernet.org/zh/installation/build-from-source/ 准备测试环境 搭建一个简单的sing-box服务端 官方安装脚本  curl -fsSL https://sing-box.app/install.sh | sh 配置文件 nano /etc/sing-box/test-config.json {   "log": {     "level": "debug",     "output": "test-box.log",     "timestamp": true   },   "inbounds": [     {       "type": "socks",       "tag": "socks-in",       "listen": "127.0.0.1",       "listen_port": 1080     }   ],   "outbounds": [     {       "type": "direct"     }   ] } 命令行前台运行sing-box(不能Ctrl+C中断, 就这么放着) /usr/bin/sing-box -D /var/lib/sing-box -c /etc/sing-box/test-config.json run 新开一个SSH终端窗口. cur...

The Hot3 in Last 7 Days

酒馆SillyTavern 玩英文角色卡 也能以中文输出 设置世界书Lorebooks

极简一键脚本 搭NaiveProxy梯子 自定义端口 与Caddy V2前置的VLESS/Vmess V2Ray共存 可开CDN