Skip to content

Commit

Permalink
fix: tg推送代理设置出错 (#298)
Browse files Browse the repository at this point in the history
Fixed #289
  • Loading branch information
shanmiteko committed Jul 10, 2023
1 parent a7e31b4 commit ef8366b
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 8 deletions.
4 changes: 2 additions & 2 deletions lib/helper/notify.js
Original file line number Diff line number Diff line change
Expand Up @@ -495,8 +495,8 @@ function tgBotNotify(text, desp) {
}
if (TG_PROXY_HOST && TG_PROXY_PORT) {
options.proxy = {
hostname: TG_PROXY_HOST,
port: TG_PROXY_PORT * 1
url: "http://" + TG_PROXY_HOST + ":" + TG_PROXY_PORT,
auth_headers: []
}
}
send(options)
Expand Down
23 changes: 18 additions & 5 deletions lib/net/http.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,16 @@
* @property {boolean} [redirect] 是否重定向
* @property {number} [retry_times] 重试次数
*
* @typedef ProxyConfig
* @property {string} url https?://{IP}:{PORT}
* @property {[[string, string]]} auth_headers [[k,v],[k,v]]
*
* @typedef {object} RequestOptions Http请求选项
* @property {string} [method] 请求方法
* @property {string} url 完整链接
* @property {boolean} [stream] 是否流式数据
* @property {RequestConfig} [config] 设置
* @property {string} [proxy] HTTP代理 IP:PORT
* @property {ProxyConfig} [proxy] HTTP代理 IP:PORT
* @property {Object.<string, string|number>} [query] 查询选项
* @property {Object.<string, string|number> | string} [contents] 内容
* @property {HttpHeaders} [headers] 请求头
Expand All @@ -34,7 +38,9 @@
*/

const { request: http_request } = require('http');
const { HttpProxyAgent } = require('http-proxy-agent');
const { request: https_request } = require('https');
const { HttpsProxyAgent } = require('https-proxy-agent');
const { stringify } = require('querystring');

/**默认编码 */
Expand Down Expand Up @@ -64,7 +70,10 @@ function send(detail) {
const { timeout, wait, retry, redirect, retry_times } = config;
const thisURL = new URL(url)
, content = formatContents(headers["content-type"], contents)
, request = (thisURL.protocol === 'https:') && !proxy ? https_request : http_request;
, request = (thisURL.protocol === 'https:') ? https_request : http_request;
/**
* @type {import("https").RequestOptions}
*/
let options = {
timeout,
method: method.toUpperCase(),
Expand All @@ -80,9 +89,13 @@ function send(detail) {
options.headers['content-length'] = Buffer.byteLength(content, 'utf-8').toString();
}
if (proxy) {
options.headers.host = thisURL.host;
options.path = thisURL.href;
[options.host, options.port] = proxy.split(':');
options.agent = (thisURL.protocol === 'https:')
? new HttpsProxyAgent(proxy.url)
: new HttpProxyAgent(proxy.url);
for (const ah of proxy.auth_headers) {
options.headers[ah[0]] = ah[1]
}
options.rejectUnauthorized = false
}
const req = request(options, res => {
let protodata = '';
Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
},
"dependencies": {
"chalk": "^4.1.2",
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.0",
"nodemailer": "^6.7.0"
}
}
}

0 comments on commit ef8366b

Please sign in to comment.