Proksea/app.js

68 lines
1.6 KiB
JavaScript

//config.json
const fs = require('fs');
const path = require('path');
require('./meowLog')
console.info("Loading config...")
function getConfig() {
const configPath = path.join(__dirname, 'config.json');
try {
const rawConfig = fs.readFileSync(configPath, 'utf8');
const config = JSON.parse(rawConfig);
return config;
} catch (error) {
console.error('Error reading config file:', error);
process.exit(1);
}
}
const config = getConfig();
//启动本地服务器作为default和fallback
let defaultServer = require('./localServer')(config)
//启动代理服务器
let proxy = require('./proxy')(config)
//控制台指令处理
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function handleCommand(command) {
const args = command.trim().split(' ');
const cmd = args[0].toLowerCase();
switch (cmd) {
case 'greet':
const name = args[1] || 'stranger';
console.log(`Hello, ${name}!`);
break;
case 'exit':
console.log('Goodbye!');
rl.close();
break;
default:
console.log(`Unknown command: ${cmd}`);
}
}
rl.setPrompt('> ');
rl.prompt();
rl.on('line', (input) => {
handleCommand(input);
rl.prompt();
});
rl.on('close', () => {
console.log('Stopping server...')
Object.values(proxy.clients).forEach(client => {
client.write('kick_disconnect', {
reason: '111'
})
})
process.exit(0);
});