DeepSeek Harness 插件

ozanstn1-stack/dsh-port-map

Star 数 ★ 0 下载量(近 30 天) 331 分类 工具与能力 收录于 2026-11-02 npm dsh-port-map

只读的 Linux 端口、服务与 Caddy 路由地图:监听套接字及其所属 unit 或容器、反向服务视图,以及 reverse_proxy 存活检查。需要 iproute2(ss),docker 与 Caddyfile 可选。

安装

# npm 包(预构建)

dsh plugin --profile web add dsh-port-map

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:ozanstn1-stack/dsh-port-map

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

该插件的 README 只有英文版本。

Port, service and Caddy route map for DeepSeek Harness.

dsh-port-map answers the questions a busy server keeps asking: what is on 9094? which unit owns this port? is every Caddy route still pointing at something alive? what is exposed to the internet?

Every tool is read-only. Nothing is opened, closed or reconfigured.

Tools

Tool Kind What it does
listening_ports read-only TCP listening sockets: port, bound address, reachability scope (public / localhost / interface), process, and the systemd unit or docker container that owns it. Filters: scope, port.
service_map read-only The reverse view: every unit/container with the ports it listens on, plus the ports nothing claims.
caddy_routes read-only Parses the Caddyfile into site → path → reverse_proxy upstream, then checks each upstream against the listening sockets.
url_check read-only HTTP status, latency and content type for an allow-listed host. A redirect is reported, not followed.

Example output

Listening TCP sockets (39):
  port  address         scope     owner
   8790  127.0.0.1       localhost dsh-web.service
  1933  127.0.0.1       localhost docker:openviking
  9090  0.0.0.0         public    map-service.service

Bound to all interfaces: 22, 443, 8642, 8799, 9090, 9091, 9094, 11434
Caddy routes (11) from /etc/caddy/Caddyfile:
  example.org /panel → 127.0.0.1:8788 · up (vps-panel.service)
  example.org /gone  → 127.0.0.1:9999 · DOWN

Install

dsh plugin --profile web add dsh-port-map
systemctl restart dsh-web   # or restart your DSH process
- id: port-map
  config:
    caddyfile: /etc/caddy/Caddyfile
    urlCheck:
      hosts:
        - 127.0.0.1
        - localhost
        - example.org
      timeoutMs: 10000
    docker: true
    safety:
      timeoutMs: 15000
      maxOutputBytes: 65536

Configuration

Key Default Meaning
caddyfile /etc/caddy/Caddyfile File parsed by caddy_routes.
urlCheck.hosts ["127.0.0.1", "localhost"] Hosts url_check may request; everything else is refused.
urlCheck.timeoutMs 10000 Per-request timeout.
docker true Resolve container names for published ports.
safety.timeoutMs 15000 Default command timeout.
safety.maxOutputBytes 65536 Output cap per call.

How the owner is resolved

  1. ss -tlnpH gives the socket, its bound address and the owning PID.
  2. The PID's cgroup gives the systemd unit (/proc/<pid>/cgroup).
  3. A docker-proxy socket is matched to its container through the published port (docker ps --format '{{.Names}}\t{{.Ports}}'), so the map shows docker:openviking rather than docker.service.

Nothing is guessed: an unclaimed socket is reported as unowned:<process>.

Honest limits

  • Read-only: it reports, it does not fix. No firewall changes, no restarts.
  • The Caddyfile parser understands site blocks, handle/handle_path and reverse_proxy (with or without an options block). !!js expressions, imported snippets or php_fastcgi-style directives are not modelled and are simply not reported.
  • Docker name resolution needs docker ps to work for the current user; without it the socket is still listed with its docker:<id> marker.
  • url_check never follows a redirect, so a redirect chain is reported as one hop, not resolved to the final page.

Requirements

  • DSH >= 0.2.1-rc.4 (Node ^22.19.0 || >=24.0.0).
  • ss (iproute2) for the socket tools; docker optional; the Caddyfile optional.

Development

npm run link-peers
node --test

License

MIT

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。