Compare commits

...

2 Commits

Author SHA1 Message Date
xiaojunnuo bd511f97cb fix: 修复新网找错域名的bug 2026-02-03 18:28:41 +08:00
xiaojunnuo 560bf40e4b chore: 1 2026-02-03 16:28:11 +08:00
5 changed files with 152 additions and 46 deletions
@@ -9,6 +9,7 @@ import { Application } from '@midwayjs/koa';
import { httpsServer, HttpsServerOptions } from './https/server.js';
import { UserService } from '../sys/authority/service/user-service.js';
import { UserSettingsService } from '../mine/service/user-settings-service.js';
import { startProxyServer } from './proxy/server.js';
@Autoload()
@Scope(ScopeEnum.Request, { allowDowngrade: true })
@@ -37,6 +38,7 @@ export class AutoZPrint {
async init() {
//监听https
this.startHttpsServer();
// this.startProxyServer();
logger.info("ENV:", process.env.NODE_ENV);
if (isDev()) {
this.startHeapLog();
@@ -97,4 +99,8 @@ export class AutoZPrint {
hostname: this.httpsConfig.hostname || this.koaConfig.hostname,
});
}
startProxyServer() {
startProxyServer({port: 7003});
}
}
@@ -0,0 +1,88 @@
// proxy-server.js
import http from 'http';
import https from 'https';
import url from 'url';
import net from 'net';
import { logger } from '@certd/basic';
export function startProxyServer(opts:{port:number}) {
const {port} = opts;
// 创建 HTTP 代理服务器
const proxyServer = http.createServer((clientReq, clientRes) => {
logger.log(`[proxy] 收到请求: ${clientReq.method} ${clientReq.url}`);
// 解析请求的 URL
const parsedUrl = url.parse(clientReq.url);
const options = {
hostname: parsedUrl.hostname,
port: parsedUrl.port || (parsedUrl.protocol === 'https:' ? 443 : 80),
path: parsedUrl.path,
method: clientReq.method,
headers: clientReq.headers
};
// 根据协议选择不同的模块
const protocol = parsedUrl.protocol === 'https:' ? https : http;
// 移除可能会引起问题的 headers
delete options.headers['proxy-connection'];
delete options.headers['connection'];
delete options.headers['keep-alive'];
// 创建到目标服务器的请求
const proxyReq = protocol.request(options, (proxyRes) => {
// 将目标服务器的响应返回给客户端
clientRes.writeHead(proxyRes.statusCode, proxyRes.headers);
proxyRes.pipe(clientRes);
});
proxyReq.on('error', (err) => {
logger.error('[proxy] 代理请求错误:', err);
clientRes.writeHead(500);
clientRes.end('代理服务器错误');
});
// 将客户端请求体转发到目标服务器
clientReq.pipe(proxyReq);
});
// 处理 CONNECT 方法(HTTPS 代理)
proxyServer.on('connect', (req, clientSocket, head) => {
logger.log(`[proxy] HTTPS 连接请求: ${req.url}`);
const [hostname, port] = req.url.split(':');
const portNum = parseInt(port) || 443;
// 连接到目标服务器
const serverSocket = net.connect(portNum, hostname, () => {
// 告诉客户端连接已建立
clientSocket.write('HTTP/1.1 200 Connection Established\r\n' +
'Proxy-agent: Node.js-Proxy\r\n' +
'\r\n');
// 建立双向数据流
serverSocket.write(head);
serverSocket.pipe(clientSocket);
clientSocket.pipe(serverSocket);
});
serverSocket.on('error', (err) => {
logger.error('[proxy] HTTPS 代理错误:', err);
clientSocket.end();
});
clientSocket.on('error', (err) => {
logger.error('[proxy] 客户端 socket 错误:', err);
serverSocket.end();
});
});
// 监听端口
proxyServer.listen(port, () => {
logger.info(`[proxy] 正向代理服务器运行在 http://0.0.0.0:${port}`);
});
return proxyServer
}
@@ -44,7 +44,7 @@ export class XinnetAccess extends BaseAccess {
name: "api-test",
action: "TestRequest"
},
helper: "点击测试接口是否正常"
helper: "测试前请务必先在新网后台关闭异地登录保护、关闭动态口令验证\n如果提示需要短信验证码,请等几个小时后再试"
})
testRequest = true;
@@ -57,7 +57,19 @@ export class XinnetProvider extends AbstractDnsProvider<XinnetRecord> {
if (!res.list || res.list.length == 0) {
throw new Error("域名不存在");
}
const serviceCode = res.list[0].serviceCode;
let list = res.list.map((item) => ({
domainName: item.domainName,
serviceCode: item.serviceCode
}));
this.logger.info("域名列表:", JSON.stringify(list));
const domainItem = list.find((item) => item.domainName === domain);
if (!domainItem) {
throw new Error("域名(" + domain + ")不存在");
}
const serviceCode = domainItem.serviceCode;
const dcpCookie = await client.getDcpCookie({
serviceCode
+44 -44
View File
@@ -49,7 +49,7 @@ importers:
packages/core/acme-client:
dependencies:
'@certd/basic':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../basic
'@peculiar/x509':
specifier: ^1.11.0
@@ -213,10 +213,10 @@ importers:
packages/core/pipeline:
dependencies:
'@certd/basic':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../basic
'@certd/plus-core':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../pro/plus-core
dayjs:
specifier: ^1.11.7
@@ -412,7 +412,7 @@ importers:
packages/libs/lib-k8s:
dependencies:
'@certd/basic':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/basic
'@kubernetes/client-node':
specifier: 0.21.0
@@ -452,19 +452,19 @@ importers:
packages/libs/lib-server:
dependencies:
'@certd/acme-client':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../plugins/plugin-lib
'@certd/plus-core':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../pro/plus-core
'@midwayjs/cache':
specifier: 3.14.0
@@ -610,16 +610,16 @@ importers:
packages/plugins/plugin-cert:
dependencies:
'@certd/acme-client':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../plugin-lib
psl:
specifier: ^1.9.0
@@ -683,16 +683,16 @@ importers:
specifier: ^3.964.0
version: 3.964.0(aws-crt@1.26.2)
'@certd/acme-client':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/pipeline
'@certd/plus-core':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../pro/plus-core
'@kubernetes/client-node':
specifier: 0.21.0
@@ -783,16 +783,16 @@ importers:
packages/pro/commercial-core:
dependencies:
'@certd/basic':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/basic
'@certd/lib-server':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../libs/lib-server
'@certd/pipeline':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/pipeline
'@certd/plus-core':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../plus-core
'@midwayjs/core':
specifier: 3.20.11
@@ -865,16 +865,16 @@ importers:
packages/pro/plugin-plus:
dependencies:
'@certd/basic':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../plugins/plugin-lib
'@certd/plus-core':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../plus-core
crypto-js:
specifier: ^4.2.0
@@ -950,7 +950,7 @@ importers:
packages/pro/plus-core:
dependencies:
'@certd/basic':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/basic
dayjs:
specifier: ^1.11.7
@@ -1246,10 +1246,10 @@ importers:
version: 0.1.3(zod@3.24.4)
devDependencies:
'@certd/lib-iframe':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../libs/lib-iframe
'@certd/pipeline':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/pipeline
'@rollup/plugin-commonjs':
specifier: ^25.0.7
@@ -1438,46 +1438,46 @@ importers:
specifier: ^3.964.0
version: 3.964.0(aws-crt@1.26.2)
'@certd/acme-client':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/basic
'@certd/commercial-core':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../pro/commercial-core
'@certd/cv4pve-api-javascript':
specifier: ^8.4.2
version: 8.4.2
'@certd/jdcloud':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../libs/lib-jdcloud
'@certd/lib-huawei':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../libs/lib-huawei
'@certd/lib-k8s':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../libs/lib-k8s
'@certd/lib-server':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../libs/lib-server
'@certd/midway-flyway-js':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../libs/midway-flyway-js
'@certd/pipeline':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../core/pipeline
'@certd/plugin-cert':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../plugins/plugin-cert
'@certd/plugin-lib':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../plugins/plugin-lib
'@certd/plugin-plus':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../pro/plugin-plus
'@certd/plus-core':
specifier: ^1.38.3
specifier: ^1.38.5
version: link:../../pro/plus-core
'@google-cloud/publicca':
specifier: ^1.3.0
@@ -19971,13 +19971,13 @@ snapshots:
resolve: 1.22.10
semver: 6.3.1
eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8):
eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@7.32.0)(prettier@2.8.8):
dependencies:
eslint: 7.32.0
prettier: 2.8.8
prettier-linter-helpers: 1.0.0
optionalDependencies:
eslint-config-prettier: 8.10.0(eslint@7.32.0)
eslint-config-prettier: 8.10.0(eslint@8.57.0)
eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8):
dependencies:
@@ -22377,7 +22377,7 @@ snapshots:
eslint: 7.32.0
eslint-config-prettier: 8.10.0(eslint@7.32.0)
eslint-plugin-node: 11.1.0(eslint@7.32.0)
eslint-plugin-prettier: 3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8)
eslint-plugin-prettier: 3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@7.32.0)(prettier@2.8.8)
execa: 5.1.1
inquirer: 7.3.3
json5: 2.2.3