Commit Graph
13 Commits
Author SHA1 Message Date
chiyiandDevin e54f989f98 pay: submit.php 回到 302,收银台页落在 /cashier.php
直出页面时 POST 表单刷新会丢/重复提交。改为 PRG:
submit.php 建单后 302 到 /cashier.php?trade_no=(后端渲染同一
收银台页,按订单当前状态展示,刷新安全);nginx 放行 cashier.php。

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-11-02 23:45:45 +08:00
chiyiandDevin 2f3bd7fc7b pay: submit.php 直出收银台页(new-api 易支付对接)
- submit.php 验签建单后不再 302,直接渲染自包含收银台 HTML,
  支付宝二维码由服务端 skip2/go-qrcode 生成 PNG data URL 内嵌
- 新增公开轮询端点 /cashier-status(页面经 /api 前缀访问),
  与 PaySvc.CashierStatus 共用 cashierStatusReply
- Cashier.vue 收银台页同步改版:取景框二维码、倒计时进度条,
  去掉跳上游收银台的外链

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-11-02 23:20:11 +08:00
chiyiandDevin 5a884cab97 proxy probe: verify CONNECT+TLS+data-plane, extract accepts target host
HTTP probe previously tested forward-proxy GET only, so extraction
returned "alive" proxies that cannot tunnel HTTPS (CONNECT 400/EOF).
All three protocol probes now require: handshake -> CONNECT target:443
-> real TLS handshake with cert verify -> tunneled HTTPS HEAD reply.
Extraction accepts ?host= to probe the consumer's real target site
(e.g. vivid2api sends host=chatgpt.com); probe timeout 3s->6s and
batches 4->8 since the usable rate against strict checks is ~7%.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 17:43:09 +08:00
chiyiandDevin d2206e7aa0 proxy probe: require real success replies, kill CDN false positives
HTTP: require a 2xx status line for generate_204 (Cloudflare edge IPs
answered "HTTP/1.1 409" and were marked alive). SOCKS5: require
REP=0x00 granted. SOCKS4: require REP=0x5a. Verified live: CF anycast
samples now dead, real socks5/http stay alive.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-18 14:52:54 +08:00
chiyiandDevin d805f28024 payx: auto re-login on upstream token expiry
merchantPost now retries once after clearing the cached token and
re-authenticating when the upstream signals an invalid session:
HTML login page, HTTP 401, or business msgs containing login-expiry
keywords. Previously a stale token left stock queries returning
empty until manual intervention.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-11 22:54:12 +08:00
chiyiandDevin 2ab39ecfab proxy extract: always return scheme://ip:port
The plain ip:port output forced consumers to guess the protocol.
The probe already knows it from the handshake, so return the full
URL directly (socks5h/http/socks4).

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-08 20:39:06 +08:00
chiyiandDevin 70022f15d6 feat: 测活覆盖全部代理(含死记录),拨活即复活
ListProxiesDue 去掉 alive=1 限制:死代理每小时也重测,协议级握手
成功就 MarkProxyAlive 复活(fail_count 清零),不再只能等同步时
重新出现在源列表才复活。

附带:提取页加「带协议前缀」开关,复制链接自动带 fmt=url。

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-08 19:54:19 +08:00
chiyiandDevin c0a24faf8e feat: 代理提取接口支持 fmt=url——返回握手实测协议的 scheme://ip:port
proxyx.Check 改回返回胜出协议名(socks5/socks4/http),提取接口加 fmt=url
时输出 socks5h:// / http:// / socks4:// 完整代理 URL(socks5h 让 DNS 走代理端),
供 auto-registr 这类需要带 scheme 的消费端直接使用;默认 ip:port 行为不变。

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-08 19:37:50 +08:00
chiyiandDevin fa6ab5d3c7 dim zero-alive regions in proxy sidebar
Fresh-deployed instances run the first alive-check and most free
proxies die, leaving long lists of "0" regions. Dim them so alive
regions stand out; data itself is correct.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-08 17:01:14 +08:00
chiyiandDevin e2ba38a0c7 docker: nginx listens on 80 and 8890, backend moves to internal 8891
Deploy platforms that route to the container's exposed/compose port
(8890) were hitting the fun backend directly, which 404s unmatched
GET paths. Now nginx answers on both ports so either routing lands
on the SPA/API proxy layer.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-08 16:57:46 +08:00
chiyiandDevin ee65242a7a add compose.yaml alias for platforms that only detect the canonical name
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-08 09:40:20 +08:00
chiyiandDevin 5621c32dec add Dockerfile + docker-compose: single-image deploy (nginx + backend)
Multi-stage build: node builds frontend dist, golang builds static
binary (modernc sqlite, CGO off), alpine runtime runs nginx :80 +
backend :8890 in one container. nginx serves SPA with fallback, strips
/api prefix (same as vite dev proxy), proxies protocol endpoints
(/mcp, /m/*, /v1/*, /d/*, /ws/*, *.php) with buffering off for
NDJSON/SSE streams and WS upgrade headers.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-08 08:57:30 +08:00
chiyiandDevin 834ecacdb9 cyi-box: Memphis-style toolbox admin platform
Go(fun)+SQLite backend, Vue 3 frontend. Modules: dashboard, pay gateway
(Epay-compatible + CDK stock), license/card system (per-app appid, domain
binding), AI memory bank with built-in MCP server (/mcp, FTS5 search,
signed read links), server SSH monitor + terminal + SFTP, proxy pool with
protocol-level alive checks, DB manager (mysql/pg/sqlite + SQL
autocomplete + import/export), disk share, vault (AES-GCM + TOTP),
bookmarks, dev tools.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-01 01:58:47 +08:00