const express = require('express'); const morgan = require('morgan'); const { createProxyMiddleware } = require('http-proxy-middleware'); const url = require('url'); const app = express(); app.use(morgan('dev')); // 从环境变量获取代理配置 const proxyUrl = process.env.PROXY || ''; console.log(`Proxy configuration: ${proxyUrl ? '已配置' : '未配置'}`); // 解析代理URL let proxyConfig = null; if (proxyUrl) { try { const parsedUrl = url.parse(proxyUrl); proxyConfig = { host: parsedUrl.hostname, port: parsedUrl.port || 80, auth: parsedUrl.auth ? { username: parsedUrl.auth.split(':')[0], password: parsedUrl.auth.split(':')[1] } : undefined }; // 打印代理配置(安全处理密码) const maskedConfig = { ...proxyConfig, auth: proxyConfig.auth ? { username: proxyConfig.auth.username, password: '******' } : undefined }; console.log('Using proxy:', JSON.stringify(maskedConfig)); } catch (error) { console.error('Failed to parse proxy URL:', error.message); } } // 配置代理中间件 app.use('/hf/v1/chat/completions', createProxyMiddleware({ target: 'http://localhost:3010/v1/chat/completions', changeOrigin: true, // 添加代理配置 proxy: proxyConfig, // 增加错误处理 onError: (err, req, res) => { console.error('Proxy error:', err); res.status(500).send('Proxy error occurred: ' + err.message); }, onProxyReq: (proxyReq, req, res) => { console.log(`Proxying request to chat completions ${proxyConfig ? 'using proxy' : 'directly'}`); }, onProxyRes: (proxyRes, req, res) => { console.log(`Received response with status: ${proxyRes.statusCode}`); } })); app.get('/', (req, res) => { const htmlContent = ` Cursor To OpenAI

Cursor To OpenAI Server

聊天来源: 自定义(兼容 OpenAI)
自定义端点(基本URL):
自定义API密钥:[抓取的Cursor Cookie,格式为user_...]
代理状态: ${proxyConfig ? '已启用' : '未启用'} ${proxyConfig ? `

代理服务器: ${proxyConfig.host}:${proxyConfig.port}

` : ''}
`; res.send(htmlContent); }); const port = process.env.HF_PORT || 7860; app.listen(port, () => { console.log(`HF Proxy server is running at PORT: ${port}`); console.log(`Proxy status: ${proxyConfig ? 'Enabled' : 'Disabled'}`); });