dsh-host-router 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.cjs CHANGED
@@ -49,7 +49,6 @@ td{overflow:hidden;text-overflow:ellipsis}
49
49
  th{font-size:11px;color:var(--theme-text-secondary,#999);font-weight:600}
50
50
  thead th{position:sticky;top:0;background:var(--theme-bg,#1b1b1c);z-index:1}
51
51
  td.c,th.c{text-align:center}
52
- tr.stale-row{opacity:.5}
53
52
  .st-ok{color:#2ecc71}.st-fail{color:#e74c3c}.st-gray{color:#888}
54
53
  .empty{padding:12px;text-align:center;color:var(--theme-text-secondary,#888)}
55
54
  .hr-tip{position:fixed;z-index:1000;pointer-events:none;background:var(--theme-input-bg,#111);border:1px solid var(--theme-border,#444);color:var(--theme-text,#ccc);padding:4px 8px;border-radius:5px;font-size:12px;max-width:440px;white-space:normal;word-break:break-all;box-shadow:0 2px 8px rgba(0,0,0,.35)}
@@ -130,15 +129,7 @@ function HostRouterPage() {
130
129
  key: txt
131
130
  }, txt);
132
131
  const endpoint = `${cfg.proxyHost ?? "127.0.0.1"}:${cfg.proxyPort ?? 7897}`;
133
- const doCleanStale = async () => {
134
- setBusy(true);
135
- setMsg("清理过期…");
136
- const r = await jpost("/clean-stale");
137
- setBusy(false);
138
- setMsg(r?.ok ? `已清理 ${r.removed?.length ?? 0} 个过期 host:${(r.removed ?? []).join(", ") || "无"}` : "清理失败");
139
- if (r?.ok) refreshAll();
140
- };
141
- return react.default.createElement("div", { className: "hr-page" }, react.default.createElement("style", null, STYLES), react.default.createElement("h3", null, "网络路由(dsh-host-router)"), react.default.createElement("p", { className: "hr-ep" }, "代理: ", react.default.createElement("code", null, endpoint)), react.default.createElement("p", { className: "hr-hint" }, "勾选走代理,保存即生效。绿=本次扫到在用,灰=本次没扫到(几次重启都灰可删),过期=白名单里但久未用。"), react.default.createElement("div", { className: "hr-bar" }, react.default.createElement("button", {
132
+ return react.default.createElement("div", { className: "hr-page" }, react.default.createElement("style", null, STYLES), react.default.createElement("h3", null, "网络路由(dsh-host-router)"), react.default.createElement("p", { className: "hr-ep" }, "代理: ", react.default.createElement("code", null, endpoint)), react.default.createElement("p", { className: "hr-hint" }, "勾选走代理,保存即生效。绿=本次进程实际用到过,灰=本次还没用到;取消勾选再保存即可移除。"), react.default.createElement("div", { className: "hr-bar" }, react.default.createElement("button", {
142
133
  className: "hr-btn",
143
134
  onClick: doScan,
144
135
  disabled: busy
@@ -147,10 +138,6 @@ function HostRouterPage() {
147
138
  onClick: doSave,
148
139
  disabled: busy
149
140
  }, "保存勾选"), react.default.createElement("button", {
150
- className: "hr-btn ghost",
151
- onClick: doCleanStale,
152
- disabled: busy
153
- }, "清理过期"), react.default.createElement("button", {
154
141
  className: "hr-btn ghost",
155
142
  onClick: refreshData
156
143
  }, "刷新")), msg && react.default.createElement("div", { className: "hr-msg" }, msg), react.default.createElement("table", null, react.default.createElement("colgroup", null, react.default.createElement("col", { style: { width: "200px" } }), react.default.createElement("col", { style: { width: "44px" } }), react.default.createElement("col", { style: { width: "64px" } }), react.default.createElement("col", { style: { width: "68px" } }), react.default.createElement("col", { style: { width: "56px" } }), react.default.createElement("col", { style: { width: "76px" } }), react.default.createElement("col", { style: { width: "44px" } })), react.default.createElement("thead", null, react.default.createElement("tr", null, th("hostname", false), th("代理"), th("归属"), th("本次命中"), th("状态"), th("耗时"), th("测"))), react.default.createElement("tbody", null, seen.length === 0 ? react.default.createElement("tr", null, react.default.createElement("td", {
@@ -158,10 +145,7 @@ function HostRouterPage() {
158
145
  colSpan: 5
159
146
  }, "暂无数据,先用 dsh 一会儿或点「扫描配置」")) : seen.map((h) => {
160
147
  const alive = h.alive !== false && (h.count ?? 0) > 0;
161
- return react.default.createElement("tr", {
162
- key: h.host,
163
- className: h.stale ? "stale-row" : void 0
164
- }, react.default.createElement("td", {
148
+ return react.default.createElement("tr", { key: h.host }, react.default.createElement("td", {
165
149
  onMouseEnter: (e) => showTip(e, h.host),
166
150
  onMouseLeave: hideTip
167
151
  }, h.host), react.default.createElement("td", { className: "c" }, react.default.createElement("input", {
@@ -1 +1 @@
1
- {"version":3,"file":"client.cjs","names":["path: string","body?: any","ev: any","text: string","h: string","h: any","txt: string","e: any","ctx: ClientContext","props: any"],"sources":["../src/client/index.ts"],"sourcesContent":["/**\n * dsh-host-router · client 设置页(纯 React)。\n *\n * 挂 settings.section slot:设置页里独立一页「网络路由」。\n * 通信:同源 fetch → host webServer API(/api/dsh-host-router/{seen,scan,save,test,config})。\n *\n * 渲染:纯 React(createElement + hooks),React 管 mount/unmount,切走回来自动重渲染不丢。\n * (之前 useEffect+ref 塞原生 DOM,切走回来组件未 remount 时 DOM 丢失 → 改纯 React。)\n */\nimport React from 'react'\n\ntype SlotsService = any\ntype ClientContext = { slots: SlotsService }\n\nexport const inject = ['slots']\n\nconst API = '/api/dsh-host-router'\n\nconst STYLES = `\n.hr-page{font-family:ui-monospace,monospace;font-size:13px;line-height:1.55;padding:10px 14px;max-width:900px}\n.hr-page h3{margin:0 0 4px;font-size:14px}\n.hr-ep{color:var(--theme-text-secondary,#999);margin:0 0 6px;font-size:12px}\n.hr-hint{color:var(--theme-text-tertiary,#777);font-size:12px;margin:0 0 10px}\n.hr-bar{display:flex;gap:6px;align-items:center;margin-bottom:8px;flex-wrap:wrap}\n.hr-btn{background:var(--theme-accent,#4a9eff);color:#fff;border:none;border-radius:6px;padding:4px 10px;cursor:pointer;font-size:12px;white-space:nowrap}\n.hr-btn.ghost{background:transparent;border:1px solid var(--theme-border,#444);color:var(--theme-text,#ccc)}\n.hr-btn:disabled{opacity:.45;cursor:not-allowed}\n.hr-msg{color:var(--theme-text-secondary,#999);font-size:12px;padding:5px 8px;border-radius:6px;background:var(--theme-input-bg,#111);border:1px solid var(--theme-border,#333);white-space:pre-wrap;max-height:90px;overflow:auto;margin:6px 0}\n.table-wrap{overflow:auto;max-height:55vh;margin-bottom:10px}\ntable{border-collapse:separate;border-spacing:0;width:auto;table-layout:fixed}\nth,td{border-bottom:1px solid var(--theme-border,#333);padding:3px 6px;text-align:left;font-size:12px;white-space:nowrap}\ntd{overflow:hidden;text-overflow:ellipsis}\nth{font-size:11px;color:var(--theme-text-secondary,#999);font-weight:600}\nthead th{position:sticky;top:0;background:var(--theme-bg,#1b1b1c);z-index:1}\ntd.c,th.c{text-align:center}\ntr.stale-row{opacity:.5}\n.st-ok{color:#2ecc71}.st-fail{color:#e74c3c}.st-gray{color:#888}\n.empty{padding:12px;text-align:center;color:var(--theme-text-secondary,#888)}\n.hr-tip{position:fixed;z-index:1000;pointer-events:none;background:var(--theme-input-bg,#111);border:1px solid var(--theme-border,#444);color:var(--theme-text,#ccc);padding:4px 8px;border-radius:5px;font-size:12px;max-width:440px;white-space:normal;word-break:break-all;box-shadow:0 2px 8px rgba(0,0,0,.35)}\n.h4{margin:14px 0 4px;font-size:12px;color:var(--theme-text-secondary,#aaa)}\n`\n\nasync function jget(path: string): Promise<any> { return fetch(API + path).then((r) => r.json()).catch(() => null) }\nasync function jpost(path: string, body?: any): Promise<any> {\n return fetch(API + path, { method: 'POST', headers: { 'content-type': 'application/json' }, body: body ? JSON.stringify(body) : undefined })\n .then((r) => r.json()).catch(() => null)\n}\n\ninterface SeenHost {\n host: string; lastStatus?: number | string; lastMs?: number; count?: number\n owner?: string; source?: string; proxied?: boolean; hits?: number; stale?: boolean; alive?: boolean\n}\ninterface Cfg { proxyHost?: string; proxyPort?: number; proxiedHosts?: string[] }\n\nfunction HostRouterPage() {\n const [cfg, setCfg] = React.useState<Cfg>({})\n const [draft, setDraft] = React.useState<Set<string>>(new Set())\n const [seen, setSeen] = React.useState<SeenHost[]>([])\n const [msg, setMsg] = React.useState('')\n const [busy, setBusy] = React.useState(false)\n const [tip, setTip] = React.useState<{ x: number; y: number; text: string } | null>(null)\n\n // 超长内容浮窗(fixed 定位,不被表格 overflow 裁剪;右缘 clamp 防出屏)。\n const showTip = (ev: any, text: string) => setTip({ x: Math.min(ev.clientX + 12, window.innerWidth - 452), y: ev.clientY + 16, text })\n const hideTip = () => setTip(null)\n\n // 只刷数据(seen/cfg),不重置草稿:轮询与手动刷新不覆盖用户编辑到一半的勾选(2026-08-29)。\n const refreshData = React.useCallback(async () => {\n const [seenR, cfgR] = await Promise.all([jget('/seen'), jget('/config')])\n if (cfgR?.ok) setCfg(cfgR.value)\n setSeen(seenR?.ok ? seenR.hosts : [])\n }, [])\n // 全量刷新:数据 + 草稿同步磁盘白名单(首次加载/清理过期后用)。\n const refreshAll = React.useCallback(async () => {\n const [seenR, cfgR] = await Promise.all([jget('/seen'), jget('/config')])\n if (cfgR?.ok) { setCfg(cfgR.value); setDraft(new Set(cfgR.value.proxiedHosts ?? [])) }\n setSeen(seenR?.ok ? seenR.hosts : [])\n }, [])\n\n React.useEffect(() => {\n refreshAll()\n const t = window.setInterval(refreshData, 5000)\n return () => window.clearInterval(t)\n }, [refreshAll, refreshData])\n\n const toggle = (h: string) => setDraft((d) => { const n = new Set(d); n.has(h) ? n.delete(h) : n.add(h); return n })\n\n const doScan = async () => {\n setMsg('扫描中…'); setBusy(true)\n const r = await jpost('/scan')\n setBusy(false)\n if (!r?.ok) { setMsg('扫描失败'); return }\n setMsg(`扫描完成,${r.hosts.filter((h: any) => h.needsProxy).length} 个直连不通(建议代理)`)\n await refreshData() // 扫描结果已 upsert 进 seen,刷新拉合并表(不动草稿)\n }\n\n const doSave = async () => {\n setBusy(true); setMsg('保存中…')\n const r = await jpost('/save', { proxiedHosts: [...draft] })\n setBusy(false)\n setMsg(r?.ok ? '已保存并即时生效' : '保存失败')\n if (r?.ok) refreshData()\n }\n\n const doTest = async (h: string) => {\n const r = await jpost('/test', { host: h })\n setMsg(`${h}: ${r.status} · ${r.ms}ms · ${r.proxy ? '代理' : '直连'}` + (r.message ? ` · ${r.message}` : ''))\n }\n\n const th = (txt: string, c = true) => React.createElement('th', { className: c ? 'c' : '', key: txt }, txt)\n const endpoint = `${cfg.proxyHost ?? '127.0.0.1'}:${cfg.proxyPort ?? 7897}`\n\n const doCleanStale = async () => {\n setBusy(true); setMsg('清理过期…')\n const r = await jpost('/clean-stale')\n setBusy(false)\n setMsg(r?.ok ? `已清理 ${r.removed?.length ?? 0} 个过期 host:${(r.removed ?? []).join(', ') || '无'}` : '清理失败')\n if (r?.ok) refreshAll() // 磁盘白名单被清理,草稿需同步\n }\n\n return React.createElement('div', { className: 'hr-page' },\n React.createElement('style', null, STYLES),\n React.createElement('h3', null, '网络路由(dsh-host-router)'),\n React.createElement('p', { className: 'hr-ep' }, '代理: ', React.createElement('code', null, endpoint)),\n React.createElement('p', { className: 'hr-hint' }, '勾选走代理,保存即生效。绿=本次扫到在用,灰=本次没扫到(几次重启都灰可删),过期=白名单里但久未用。'),\n React.createElement('div', { className: 'hr-bar' },\n React.createElement('button', { className: 'hr-btn', onClick: doScan, disabled: busy }, '扫描配置'),\n React.createElement('button', { className: 'hr-btn ghost', onClick: doSave, disabled: busy }, '保存勾选'),\n React.createElement('button', { className: 'hr-btn ghost', onClick: doCleanStale, disabled: busy }, '清理过期'),\n React.createElement('button', { className: 'hr-btn ghost', onClick: refreshData }, '刷新'),\n ),\n msg && React.createElement('div', { className: 'hr-msg' }, msg),\n // 合一表:嗅探 + 白名单(没扫到也显示);精简 5 列,tip 浮窗展示超长内容\n React.createElement('table', null,\n React.createElement('colgroup', null,\n React.createElement('col', { style: { width: '200px' } }),\n React.createElement('col', { style: { width: '44px' } }),\n React.createElement('col', { style: { width: '64px' } }),\n React.createElement('col', { style: { width: '68px' } }),\n React.createElement('col', { style: { width: '56px' } }),\n React.createElement('col', { style: { width: '76px' } }),\n React.createElement('col', { style: { width: '44px' } }),\n ),\n React.createElement('thead', null, React.createElement('tr', null,\n th('hostname', false), th('代理'), th('归属'), th('本次命中'), th('状态'), th('耗时'), th('测'))),\n React.createElement('tbody', null,\n seen.length === 0\n ? React.createElement('tr', null, React.createElement('td', { className: 'empty', colSpan: 5 }, '暂无数据,先用 dsh 一会儿或点「扫描配置」'))\n : seen.map((h: any) => {\n const alive = h.alive !== false && (h.count ?? 0) > 0\n return React.createElement('tr', { key: h.host, className: h.stale ? 'stale-row' : undefined },\n React.createElement('td', { onMouseEnter: (e: any) => showTip(e, h.host), onMouseLeave: hideTip }, h.host),\n React.createElement('td', { className: 'c' }, React.createElement('input', { type: 'checkbox', checked: draft.has(h.host), onChange: () => toggle(h.host) })),\n React.createElement('td', { className: 'c', onMouseEnter: (e: any) => showTip(e, `${h.owner ?? '未知'} · ${h.source ?? '-'}`), onMouseLeave: hideTip }, h.owner ?? '未知'),\n React.createElement('td', { className: 'c' }, React.createElement('span', { className: alive ? 'st-ok' : 'st-gray' }, alive ? `●${h.count}` : '○')),\n React.createElement('td', { className: 'c' }, React.createElement('span', { className: h.lastStatus === 'ERR' ? 'st-fail' : 'st-ok' }, String(h.lastStatus ?? '—'))),\n React.createElement('td', { className: 'c' }, h.lastMs != null ? `${h.lastMs}ms` : ''),\n React.createElement('td', { className: 'c' }, React.createElement('button', { className: 'hr-btn ghost', onClick: () => doTest(h.host), style: { padding: '0 6px' } }, '测')),\n )\n })\n ),\n ),\n tip && React.createElement('div', { className: 'hr-tip', style: { left: tip.x, top: tip.y } }, tip.text),\n )\n}\n\nexport function apply(ctx: ClientContext): void {\n // slots.inject 必须裸调用(不包 ctx.effect),否则注册时机错位——\n // 切走设置页再切回时组件被重建、draft 状态丢失(对勾消失)。照 dsh-capture 写法。\n ctx.slots.inject('settings.section', () =>\n ctx.slots.register(\n { name: 'settings.section', id: 'dsh-host-router', order: 60, label: '网络路由' },\n (props: any) => React.createElement(HostRouterPage, props),\n ),\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.cjs","names":["path: string","body?: any","ev: any","text: string","h: string","h: any","txt: string","e: any","ctx: ClientContext","props: any"],"sources":["../src/client/index.ts"],"sourcesContent":["/**\n * dsh-host-router · client 设置页(纯 React)。\n *\n * 挂 settings.section slot:设置页里独立一页「网络路由」。\n * 通信:同源 fetch → host webServer API(/api/dsh-host-router/{seen,scan,save,test,config})。\n *\n * 渲染:纯 React(createElement + hooks),React 管 mount/unmount,切走回来自动重渲染不丢。\n * (之前 useEffect+ref 塞原生 DOM,切走回来组件未 remount 时 DOM 丢失 → 改纯 React。)\n */\nimport React from 'react'\n\ntype SlotsService = any\ntype ClientContext = { slots: SlotsService }\n\nexport const inject = ['slots']\n\nconst API = '/api/dsh-host-router'\n\nconst STYLES = `\n.hr-page{font-family:ui-monospace,monospace;font-size:13px;line-height:1.55;padding:10px 14px;max-width:900px}\n.hr-page h3{margin:0 0 4px;font-size:14px}\n.hr-ep{color:var(--theme-text-secondary,#999);margin:0 0 6px;font-size:12px}\n.hr-hint{color:var(--theme-text-tertiary,#777);font-size:12px;margin:0 0 10px}\n.hr-bar{display:flex;gap:6px;align-items:center;margin-bottom:8px;flex-wrap:wrap}\n.hr-btn{background:var(--theme-accent,#4a9eff);color:#fff;border:none;border-radius:6px;padding:4px 10px;cursor:pointer;font-size:12px;white-space:nowrap}\n.hr-btn.ghost{background:transparent;border:1px solid var(--theme-border,#444);color:var(--theme-text,#ccc)}\n.hr-btn:disabled{opacity:.45;cursor:not-allowed}\n.hr-msg{color:var(--theme-text-secondary,#999);font-size:12px;padding:5px 8px;border-radius:6px;background:var(--theme-input-bg,#111);border:1px solid var(--theme-border,#333);white-space:pre-wrap;max-height:90px;overflow:auto;margin:6px 0}\n.table-wrap{overflow:auto;max-height:55vh;margin-bottom:10px}\ntable{border-collapse:separate;border-spacing:0;width:auto;table-layout:fixed}\nth,td{border-bottom:1px solid var(--theme-border,#333);padding:3px 6px;text-align:left;font-size:12px;white-space:nowrap}\ntd{overflow:hidden;text-overflow:ellipsis}\nth{font-size:11px;color:var(--theme-text-secondary,#999);font-weight:600}\nthead th{position:sticky;top:0;background:var(--theme-bg,#1b1b1c);z-index:1}\ntd.c,th.c{text-align:center}\n.st-ok{color:#2ecc71}.st-fail{color:#e74c3c}.st-gray{color:#888}\n.empty{padding:12px;text-align:center;color:var(--theme-text-secondary,#888)}\n.hr-tip{position:fixed;z-index:1000;pointer-events:none;background:var(--theme-input-bg,#111);border:1px solid var(--theme-border,#444);color:var(--theme-text,#ccc);padding:4px 8px;border-radius:5px;font-size:12px;max-width:440px;white-space:normal;word-break:break-all;box-shadow:0 2px 8px rgba(0,0,0,.35)}\n.h4{margin:14px 0 4px;font-size:12px;color:var(--theme-text-secondary,#aaa)}\n`\n\nasync function jget(path: string): Promise<any> { return fetch(API + path).then((r) => r.json()).catch(() => null) }\nasync function jpost(path: string, body?: any): Promise<any> {\n return fetch(API + path, { method: 'POST', headers: { 'content-type': 'application/json' }, body: body ? JSON.stringify(body) : undefined })\n .then((r) => r.json()).catch(() => null)\n}\n\ninterface SeenHost {\n host: string; lastStatus?: number | string; lastMs?: number; count?: number\n owner?: string; source?: string; proxied?: boolean; hits?: number; alive?: boolean\n}\ninterface Cfg { proxyHost?: string; proxyPort?: number; proxiedHosts?: string[] }\n\nfunction HostRouterPage() {\n const [cfg, setCfg] = React.useState<Cfg>({})\n const [draft, setDraft] = React.useState<Set<string>>(new Set())\n const [seen, setSeen] = React.useState<SeenHost[]>([])\n const [msg, setMsg] = React.useState('')\n const [busy, setBusy] = React.useState(false)\n const [tip, setTip] = React.useState<{ x: number; y: number; text: string } | null>(null)\n\n // 超长内容浮窗(fixed 定位,不被表格 overflow 裁剪;右缘 clamp 防出屏)。\n const showTip = (ev: any, text: string) => setTip({ x: Math.min(ev.clientX + 12, window.innerWidth - 452), y: ev.clientY + 16, text })\n const hideTip = () => setTip(null)\n\n // 只刷数据(seen/cfg),不重置草稿:轮询与手动刷新不覆盖用户编辑到一半的勾选(2026-08-29)。\n const refreshData = React.useCallback(async () => {\n const [seenR, cfgR] = await Promise.all([jget('/seen'), jget('/config')])\n if (cfgR?.ok) setCfg(cfgR.value)\n setSeen(seenR?.ok ? seenR.hosts : [])\n }, [])\n // 全量刷新:数据 + 草稿同步磁盘白名单(首次加载用)。\n const refreshAll = React.useCallback(async () => {\n const [seenR, cfgR] = await Promise.all([jget('/seen'), jget('/config')])\n if (cfgR?.ok) { setCfg(cfgR.value); setDraft(new Set(cfgR.value.proxiedHosts ?? [])) }\n setSeen(seenR?.ok ? seenR.hosts : [])\n }, [])\n\n React.useEffect(() => {\n refreshAll()\n const t = window.setInterval(refreshData, 5000)\n return () => window.clearInterval(t)\n }, [refreshAll, refreshData])\n\n const toggle = (h: string) => setDraft((d) => { const n = new Set(d); n.has(h) ? n.delete(h) : n.add(h); return n })\n\n const doScan = async () => {\n setMsg('扫描中…'); setBusy(true)\n const r = await jpost('/scan')\n setBusy(false)\n if (!r?.ok) { setMsg('扫描失败'); return }\n setMsg(`扫描完成,${r.hosts.filter((h: any) => h.needsProxy).length} 个直连不通(建议代理)`)\n await refreshData() // 扫描结果已 upsert 进 seen,刷新拉合并表(不动草稿)\n }\n\n const doSave = async () => {\n setBusy(true); setMsg('保存中…')\n const r = await jpost('/save', { proxiedHosts: [...draft] })\n setBusy(false)\n setMsg(r?.ok ? '已保存并即时生效' : '保存失败')\n if (r?.ok) refreshData()\n }\n\n const doTest = async (h: string) => {\n const r = await jpost('/test', { host: h })\n setMsg(`${h}: ${r.status} · ${r.ms}ms · ${r.proxy ? '代理' : '直连'}` + (r.message ? ` · ${r.message}` : ''))\n }\n\n const th = (txt: string, c = true) => React.createElement('th', { className: c ? 'c' : '', key: txt }, txt)\n const endpoint = `${cfg.proxyHost ?? '127.0.0.1'}:${cfg.proxyPort ?? 7897}`\n\n return React.createElement('div', { className: 'hr-page' },\n React.createElement('style', null, STYLES),\n React.createElement('h3', null, '网络路由(dsh-host-router)'),\n React.createElement('p', { className: 'hr-ep' }, '代理: ', React.createElement('code', null, endpoint)),\n React.createElement('p', { className: 'hr-hint' }, '勾选走代理,保存即生效。绿=本次进程实际用到过,灰=本次还没用到;取消勾选再保存即可移除。'),\n React.createElement('div', { className: 'hr-bar' },\n React.createElement('button', { className: 'hr-btn', onClick: doScan, disabled: busy }, '扫描配置'),\n React.createElement('button', { className: 'hr-btn ghost', onClick: doSave, disabled: busy }, '保存勾选'),\n React.createElement('button', { className: 'hr-btn ghost', onClick: refreshData }, '刷新'),\n ),\n msg && React.createElement('div', { className: 'hr-msg' }, msg),\n // 合一表:嗅探 + 白名单(没扫到也显示);精简 5 列,tip 浮窗展示超长内容\n React.createElement('table', null,\n React.createElement('colgroup', null,\n React.createElement('col', { style: { width: '200px' } }),\n React.createElement('col', { style: { width: '44px' } }),\n React.createElement('col', { style: { width: '64px' } }),\n React.createElement('col', { style: { width: '68px' } }),\n React.createElement('col', { style: { width: '56px' } }),\n React.createElement('col', { style: { width: '76px' } }),\n React.createElement('col', { style: { width: '44px' } }),\n ),\n React.createElement('thead', null, React.createElement('tr', null,\n th('hostname', false), th('代理'), th('归属'), th('本次命中'), th('状态'), th('耗时'), th('测'))),\n React.createElement('tbody', null,\n seen.length === 0\n ? React.createElement('tr', null, React.createElement('td', { className: 'empty', colSpan: 5 }, '暂无数据,先用 dsh 一会儿或点「扫描配置」'))\n : seen.map((h: any) => {\n const alive = h.alive !== false && (h.count ?? 0) > 0\n return React.createElement('tr', { key: h.host },\n React.createElement('td', { onMouseEnter: (e: any) => showTip(e, h.host), onMouseLeave: hideTip }, h.host),\n React.createElement('td', { className: 'c' }, React.createElement('input', { type: 'checkbox', checked: draft.has(h.host), onChange: () => toggle(h.host) })),\n React.createElement('td', { className: 'c', onMouseEnter: (e: any) => showTip(e, `${h.owner ?? '未知'} · ${h.source ?? '-'}`), onMouseLeave: hideTip }, h.owner ?? '未知'),\n React.createElement('td', { className: 'c' }, React.createElement('span', { className: alive ? 'st-ok' : 'st-gray' }, alive ? `●${h.count}` : '○')),\n React.createElement('td', { className: 'c' }, React.createElement('span', { className: h.lastStatus === 'ERR' ? 'st-fail' : 'st-ok' }, String(h.lastStatus ?? '—'))),\n React.createElement('td', { className: 'c' }, h.lastMs != null ? `${h.lastMs}ms` : ''),\n React.createElement('td', { className: 'c' }, React.createElement('button', { className: 'hr-btn ghost', onClick: () => doTest(h.host), style: { padding: '0 6px' } }, '测')),\n )\n })\n ),\n ),\n tip && React.createElement('div', { className: 'hr-tip', style: { left: tip.x, top: tip.y } }, tip.text),\n )\n}\n\nexport function apply(ctx: ClientContext): void {\n // slots.inject 必须裸调用(不包 ctx.effect),否则注册时机错位——\n // 切走设置页再切回时组件被重建、draft 状态丢失(对勾消失)。照 dsh-capture 写法。\n ctx.slots.inject('settings.section', () =>\n ctx.slots.register(\n { name: 'settings.section', id: 'dsh-host-router', order: 60, label: '网络路由' },\n (props: any) => React.createElement(HostRouterPage, props),\n ),\n )\n}\n"],"mappings":"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"}
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * dsh-host-router · host 入口。
3
3
  *
4
4
  * 外挂式 host 路由:按 hostname 给 dsh 请求分流(勾选走代理,其余直连)+ 嗅探
5
- * + 设置页 API(/api/dsh-host-router/{seen,scan,clean-stale,save,test,config})。
5
+ * + 设置页 API(/api/dsh-host-router/{seen,scan,save,test,config})。
6
6
  *
7
7
  * 全程在 globalThis.fetch 层替换(白名单走 undici+ProxyAgent,其余原样直连),
8
8
  * 位于 LLM 适配器之下,不碰 settings.yaml
@@ -19,8 +19,6 @@ import { homedir } from 'node:os';
19
19
  import { pathToFileURL } from 'node:url';
20
20
  let undiciMod = null;
21
21
  let installed = false;
22
- /** 7 天没嗅探到 = stale(清理过期用)。 */
23
- const STALE_MS = 7 * 24 * 3600 * 1000;
24
22
  /** 解析 undici 绝对路径:插件目录可能无 node_modules,从 profile node_modules 找。
25
23
  * 优先 DSH_HOME/profiles/web/node_modules,退 homedir/.dsh/...
26
24
  * 返回 file:// URL(Windows 绝对路径不能直接 import,需转 URL)。 */
@@ -249,7 +247,6 @@ export function apply(ctx) {
249
247
  catch { }
250
248
  const cfg = readConfig();
251
249
  const proxied = new Set(cfg.proxiedHosts ?? []);
252
- const now = Date.now();
253
250
  // 合并:嗅探到的 host + 白名单 host(没嗅探到也显示,灰)
254
251
  const map = new Map();
255
252
  for (const h of seen.list())
@@ -260,8 +257,7 @@ export function apply(ctx) {
260
257
  }
261
258
  const hosts = [...map.values()].map((h) => {
262
259
  const hits = h.count ?? 0;
263
- const stale = proxied.has(h.host) && (hits === 0 || (h.lastSeen ? now - h.lastSeen > STALE_MS : true));
264
- return { ...h, proxied: proxied.has(h.host), hits, stale, alive: hits > 0 };
260
+ return { ...h, proxied: proxied.has(h.host), hits, alive: hits > 0 };
265
261
  });
266
262
  json(res, 200, { ok: true, hosts, installed, diag, fetchPatched });
267
263
  return;
@@ -293,31 +289,6 @@ export function apply(ctx) {
293
289
  json(res, 200, { ok: true, hosts: results });
294
290
  return;
295
291
  }
296
- if (url.endsWith('/clean-stale') && req.method === 'POST') {
297
- // 一键清灰:移除 stale(本次 run hits=0 或 7 天没动)的白名单 host
298
- const cfg = readConfig();
299
- const proxied = new Set(cfg.proxiedHosts ?? []);
300
- const now = Date.now();
301
- const seenList = new Map(seen.list().map((h) => [h.host, h]));
302
- const removed = [];
303
- cfg.proxiedHosts = (cfg.proxiedHosts ?? []).filter((h) => {
304
- const s = seenList.get(h);
305
- const hits = s?.count ?? 0;
306
- const stale = hits === 0 || (s?.lastSeen ? now - s.lastSeen > STALE_MS : true);
307
- if (stale) {
308
- removed.push(h);
309
- return false;
310
- }
311
- return true;
312
- });
313
- writeConfig(cfg);
314
- try {
315
- reloadFetch(undiciMod, cfg);
316
- }
317
- catch { }
318
- json(res, 200, { ok: true, removed });
319
- return;
320
- }
321
292
  if (url.endsWith('/save') && req.method === 'POST') {
322
293
  const body = await readBody(req);
323
294
  const cfg = readConfig();
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/host/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/host/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,81 +1 @@
1
- {
2
- "name": "dsh-host-router",
3
- "version": "0.1.2",
4
- "type": "module",
5
- "main": "lib/index.js",
6
- "description": "dsh 外挂式网络路由:按 hostname 给 dsh 请求分流——勾选的域名走本地代理(Clash 等),其余直连。内置嗅探,自动扫描 dsh 访问过的 hostname,设置页勾选即生效(保存即热生效,免重启)。纯外挂:dependencies 空,运行时零 require,全靠宿主 ctx 注入;不碰 settings.yaml provider 配置。",
7
- "license": "MIT",
8
- "author": "",
9
- "engines": {
10
- "node": ">=18"
11
- },
12
- "repository": {
13
- "type": "git",
14
- "url": ""
15
- },
16
- "keywords": [
17
- "deepseek",
18
- "dsh",
19
- "deepseek-harness",
20
- "proxy",
21
- "clash",
22
- "undici",
23
- "routing",
24
- "dispatcher",
25
- "network",
26
- "sniff",
27
- "cordis-plugin"
28
- ],
29
- "dsh": {
30
- "bundle": {
31
- "patch": "./cordis.patch.yml"
32
- },
33
- "client": {
34
- "platform": "web",
35
- "inject": [
36
- "@deepseek-ai/dsh-client-runtime",
37
- "@deepseek-ai/dsh-client-ui-slots",
38
- "@deepseek-ai/dsh-client-ui-settings"
39
- ]
40
- }
41
- },
42
- "exports": {
43
- ".": "./lib/index.js",
44
- "./client": "./dist/client.cjs",
45
- "./cordis.patch.yml": "./cordis.patch.yml",
46
- "./package.json": "./package.json"
47
- },
48
- "files": [
49
- "lib",
50
- "dist",
51
- "cordis.patch.yml",
52
- "README.md"
53
- ],
54
- "scripts": {
55
- "build:host": "tsc -p tsconfig.json",
56
- "build:client": "tsdown",
57
- "build": "npm run build:host && npm run build:client",
58
- "typecheck": "tsc -p tsconfig.json --noEmit",
59
- "prepublishOnly": "node scripts/build.mjs"
60
- },
61
- "dependencies": {},
62
- "peerDependencies": {
63
- "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6",
64
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
65
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.6"
66
- },
67
- "devDependencies": {
68
- "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6",
69
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
70
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.6",
71
- "typescript": "^5.6.0",
72
- "tsdown": "^0.3.0",
73
- "@types/node": "^22.0.0"
74
- },
75
- "pnpm": {
76
- "onlyBuiltDependencies": ["esbuild"]
77
- },
78
- "publishConfig": {
79
- "access": "public"
80
- }
81
- }
1
+ { "name": "dsh-host-router", "version": "0.1.3", "type": "module", "main": "lib/index.js", "description": "dsh 外挂式网络路由:按 hostname 给 dsh 请求分流——勾选的域名走本地代理(Clash 等),其余直连。内置嗅探,自动扫描 dsh 访问过的 hostname,设置页勾选即生效(保存即热生效,免重启)。纯外挂:dependencies 空,运行时零 require,全靠宿主 ctx 注入;不碰 settings.yaml provider 配置。", "license": "MIT", "author": "", "engines": { "node": ">=18" }, "repository": { "type": "git", "url": "" }, "keywords": [ "deepseek", "dsh", "deepseek-harness", "proxy", "clash", "undici", "routing", "dispatcher", "network", "sniff", "cordis-plugin" ], "dsh": { "bundle": { "patch": "./cordis.patch.yml" }, "client": { "platform": "web", "inject": [ "@deepseek-ai/dsh-client-runtime", "@deepseek-ai/dsh-client-ui-slots", "@deepseek-ai/dsh-client-ui-settings" ] } }, "exports": { ".": "./lib/index.js", "./client": "./dist/client.cjs", "./cordis.patch.yml": "./cordis.patch.yml", "./package.json": "./package.json" }, "files": [ "lib", "dist", "cordis.patch.yml", "README.md" ], "scripts": { "build:host": "tsc -p tsconfig.json", "build:client": "tsdown", "build": "npm run build:host && npm run build:client", "typecheck": "tsc -p tsconfig.json --noEmit", "prepublishOnly": "node scripts/build.mjs" }, "dependencies": {}, "peerDependencies": { "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6", "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6", "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.6" }, "devDependencies": { "@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6", "@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6", "@deepseek-ai/dsh-client-ui-settings": "^0.1.0-rc.6", "typescript": "^5.6.0", "tsdown": "^0.3.0", "@types/node": "^22.0.0" }, "pnpm": { "onlyBuiltDependencies": ["esbuild"] }, "publishConfig": { "access": "public" } }