这两天把我的玩具服务器里的各个应用封装到docker来ALLINBOOM了,这就有一个很讨厌的问题,ps一下,docker里的进程全冒出来了,一堆nginx,一堆pg什么的,看着特烦。
搓了很久,终于搓出来了个新的ps(alias),它只显示宿主机的进程,然后也支持 ps -ax 和 ps -ef 等最常见的参数。
我就不说怎么用了,需要的人自然会用,不需要的人也别玩这个。

psh() {
    local mypid=$$
    command ps "$@" | awk -v mypid="$mypid" '
    function is_docker(pid) {
        cmd = "grep -qE \"docker|containerd|kubepods\" /proc/" pid "/cgroup 2>/dev/null"
        return (system(cmd) == 0)
    }
    
    function is_child_of_shell(pid) {
        cmd = "pgrep -P " mypid " 2>/dev/null | grep -q \"^" pid "$\""
        return (system(cmd) == 0)
    }
    
    function get_pid_from_line() {
        if (NF >= 2 && $2 ~ /^[0-9]+$/) {
            return $2  # ps -ef, ps aux format
        } else if ($1 ~ /^[0-9]+$/) {
            return $1  # ps -ax format
        }
        return ""
    }
    
    NR == 1 { print; next }
    
    {
        pid = get_pid_from_line()
        if (pid != "" && pid != mypid && !is_docker(pid) && !is_child_of_shell(pid)) {
            print
        }
    }'
}
alias ps='psh'

昨晚博客被人刷了几百条sql注射的扫描信息,比如 555-1 OR 156=(SELECT 156 FROM PG_SLEEP(15))-- 这样啥的评论。我以前是加了博客的反广告的AI检测,结果忘了sql这茬,加上吧。主要是图个好玩,其实也没多少人看,偶尔挂点垃圾信息也无所谓。 //手动狗头

代码都是现成的,我也放出来过,单纯就是改一下prompt了:

You are an assistant for detecting spam, advertisements, meaningless text, and malicious content such as SQL injection or XSS. Score user input from 0 to 9, where 0 means safe (e.g., programming or server-related), 5 means suspicious, and 9 means confirmed spam, ads, attacks, or nonsense like "asdf", "12345", "aaaa". Only return a single integer (0–9) with no explanation.

google翻译:
你是個偵測垃圾郵件、廣告、無意義文字以及惡意內容(例如 SQL 注入或 XSS)的助手。對使用者輸入進行 0 到 9 的評分,其中 0 表示安全(例如,程式設計或伺服器相關內容),5 表示可疑,9 表示已確認為垃圾郵件、廣告、攻擊或類似「asdf」、「12345」、「aaaa」之類的無意義內容。只傳回一個整數 (0-9),不作任何解釋。

虽然看参数和说明觉得在Cloudflare面前似乎没有什么优势,不过白嫖的小玩意总要试试对吧。

国内版是免费一个月,国际版看来是因为设置错误,在今天14:00前都允许无限续杯,有人续到30xx年去了。我考虑到我年纪也不小了,就续25年算了。看看以后阿里会如何处理这问题吧。

和cloudflare不同,esa支持cname模式,所以迁移比较方便,不用动ns。不过,我设定好后,始终出现521错误,当然,我源站肯定是好的。后面研究发现,是因为回源只支持协议跟随,就是https访问必须https回源了,我一向用http回源。。 具体原因有空再说。然后查找下来居然发现,esa居然要高级版本才能支持自定义回源协议。欧买噶。

未完,继续

我这博客也写了一年多了,中间换过很多次域名。换域名的原因或者是我自己不喜欢,或者是莫名被搜索引擎K掉等等。目前终于稳定下来了,这个域名应该不会变了,我还蛮喜欢的,搜索引擎权重也还可以。
我爸是去年过世的,他生前一直在做一个网站,做了20年,做得还可以。
我这两天发现的事就是,我的域名和他的域名,竟然高度相似,我的是 lost 头, 他的是 luos 头。 这绝对不是有意的,我以前从来没想到这一茬。
这难道就是所谓的冥冥中自有天意?

其它能见到的私聊转发机器人,比如 LivegramBot 等,都是在 Telegram 里进行操作,要用回复转发的对话等方式很不直观和方便,而且所有的会话都混在和机器人的单一对话窗口中,消息找不到啊。

现在这个机器人,在提供了基础的手机Telegram转发的同时提供了一个 web 界面,就像聊天 app 一样直接在 web 上操作了,和每个人的会话也是单独分开的。

附带的另一个好处是,这是直接访问自己服务器,不会被某种众所周知的玩意屏蔽,不用科学直接就可以上。

所有的数据均只保存于内存中,docker 一旦重启,就没有了。虽然不做违法乱纪的事,但也不想让别人来研究自己说了些啥和谁约了炮是吧。 数据指,对话人清单,对话的内容。

如果你想极致隐私,那就别填BOT_OWNER。这样,消息将不会转发到手机,只会在web会话可以看到,而且重启即永久消失。

操作很简单,首先加 @BotFather,建立自己的机器人,获得 token,然后,加 @userinfobot,获得自己的 id,然后填到 docker-compose.yml 中,然后 docker compose up -d,一把梭了。

同所有的bot一样,如果你想收到自己bot的消息,请先随便和自己的bot说句话,就是要/start,这样才能双向消息。

浏览器 http://你的ip:8010 就可以访问到机器人的消息页面,但强烈建议使用Cloudflare或者Caddy等通过https来访问。(回源用http)。

示例docker-compose.yml:

version: '3.8'

services:
  tg_bot:
    image: yessure/tg_fwd_web_bot:latest
    container_name: tg_fwd_web_bot
    environment:
      - BOT_TOKEN=botfather获得的token
      - BOT_OWNER=userinfobot获得的id。所有机器人收到的消息将会转发到这个号,当然,你也可以填0,或者压根不要这行,那就不转了。
    ports:
      - "8010:8010"

demp1.jpg