fix(TLS 驗證): 移除 git 與 OpenRouter 的不安全憑證略過設定
This commit is contained in:
@@ -64,7 +64,6 @@ function withAskpass(workspace, fn, token = GITEA_TOKEN) {
|
|||||||
const credEnv = {
|
const credEnv = {
|
||||||
...process.env,
|
...process.env,
|
||||||
GIT_ASKPASS: askpassScript,
|
GIT_ASKPASS: askpassScript,
|
||||||
GIT_SSL_NO_VERIFY: 'true',
|
|
||||||
GIT_USERNAME: 'x-token',
|
GIT_USERNAME: 'x-token',
|
||||||
GIT_TOKEN: token,
|
GIT_TOKEN: token,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ describe('commitAndPush', () => {
|
|||||||
|
|
||||||
for (const { args, opts } of networkCalls) {
|
for (const { args, opts } of networkCalls) {
|
||||||
assert.ok(opts?.env?.GIT_ASKPASS, `GIT_ASKPASS missing for git ${args[0]}`);
|
assert.ok(opts?.env?.GIT_ASKPASS, `GIT_ASKPASS missing for git ${args[0]}`);
|
||||||
assert.equal(opts.env.GIT_SSL_NO_VERIFY, 'true', `GIT_SSL_NO_VERIFY missing for git ${args[0]}`);
|
assert.equal(opts.env.GIT_SSL_NO_VERIFY, undefined, `GIT_SSL_NO_VERIFY must not be forced for git ${args[0]}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -267,7 +267,7 @@ describe('cloneRepo', () => {
|
|||||||
assert.ok(networkCalls.length > 0, 'expected at least one network git call');
|
assert.ok(networkCalls.length > 0, 'expected at least one network git call');
|
||||||
for (const { args, opts } of networkCalls) {
|
for (const { args, opts } of networkCalls) {
|
||||||
assert.ok(opts?.env?.GIT_ASKPASS, `GIT_ASKPASS missing for git ${args[0]}`);
|
assert.ok(opts?.env?.GIT_ASKPASS, `GIT_ASKPASS missing for git ${args[0]}`);
|
||||||
assert.equal(opts.env.GIT_SSL_NO_VERIFY, 'true', `GIT_SSL_NO_VERIFY missing for git ${args[0]}`);
|
assert.equal(opts.env.GIT_SSL_NO_VERIFY, undefined, `GIT_SSL_NO_VERIFY must not be forced for git ${args[0]}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -310,7 +310,7 @@ describe('verifyRemoteAccess', () => {
|
|||||||
const lsRemote = calls.find(c => c.args[0] === 'ls-remote');
|
const lsRemote = calls.find(c => c.args[0] === 'ls-remote');
|
||||||
assert.ok(lsRemote, 'expected git ls-remote to run');
|
assert.ok(lsRemote, 'expected git ls-remote to run');
|
||||||
assert.ok(lsRemote.opts?.env?.GIT_ASKPASS, 'expected GIT_ASKPASS env for ls-remote');
|
assert.ok(lsRemote.opts?.env?.GIT_ASKPASS, 'expected GIT_ASKPASS env for ls-remote');
|
||||||
assert.equal(lsRemote.opts.env.GIT_SSL_NO_VERIFY, 'true');
|
assert.equal(lsRemote.opts.env.GIT_SSL_NO_VERIFY, undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('does not leak the token in ls-remote args', () => {
|
it('does not leak the token in ls-remote args', () => {
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ describe('fetchAccountQuota', () => {
|
|||||||
const get = async (url, opts) => {
|
const get = async (url, opts) => {
|
||||||
assert.match(url, /openrouter\.ai\/api\/v1\/auth\/key$/);
|
assert.match(url, /openrouter\.ai\/api\/v1\/auth\/key$/);
|
||||||
assert.equal(opts.headers.Authorization, 'Bearer sk-or-xxx');
|
assert.equal(opts.headers.Authorization, 'Bearer sk-or-xxx');
|
||||||
assert.equal(opts.httpsAgent.options.rejectUnauthorized, false);
|
assert.equal(opts.httpsAgent, undefined);
|
||||||
return { data: { data: { usage: 12.4, limit: 100, limit_remaining: 87.6 } } };
|
return { data: { data: { usage: 12.4, limit: 100, limit_remaining: 87.6 } } };
|
||||||
};
|
};
|
||||||
const q = await fetchAccountQuota('openai', { apiKeys: ['sk-or-xxx'], baseURL: 'https://openrouter.ai/api/v1' }, { get });
|
const q = await fetchAccountQuota('openai', { apiKeys: ['sk-or-xxx'], baseURL: 'https://openrouter.ai/api/v1' }, { get });
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { getInsecureHttpsAgent } from './config.js';
|
|
||||||
import { warn } from './log.js';
|
import { warn } from './log.js';
|
||||||
|
|
||||||
/** 本次執行的 token 累計(跨所有 LLM 呼叫)。 */
|
/** 本次執行的 token 累計(跨所有 LLM 呼叫)。 */
|
||||||
@@ -177,7 +176,6 @@ async function fetchOpenRouterQuota({ apiKey, baseURL }, get) {
|
|||||||
const resp = await get(`${stripSlash(baseURL)}/auth/key`, {
|
const resp = await get(`${stripSlash(baseURL)}/auth/key`, {
|
||||||
headers: { Authorization: `Bearer ${apiKey}` },
|
headers: { Authorization: `Bearer ${apiKey}` },
|
||||||
timeout: 30000,
|
timeout: 30000,
|
||||||
httpsAgent: getInsecureHttpsAgent(),
|
|
||||||
});
|
});
|
||||||
const d = resp.data?.data || {};
|
const d = resp.data?.data || {};
|
||||||
const used = num(d.usage);
|
const used = num(d.usage);
|
||||||
|
|||||||
Reference in New Issue
Block a user