| const express = require('express');
|
| const { Client } = require('ssh2');
|
| const app = express();
|
| const port = 7860;
|
|
|
| app.use(express.json());
|
| app.use(express.static('public'));
|
|
|
|
|
| app.get('/', (req, res) => {
|
| res.sendFile(__dirname + '/public/index.html');
|
| });
|
|
|
| app.post('/ssh', async (req, res) => {
|
| const conn = new Client();
|
|
|
| try {
|
| await new Promise((resolve, reject) => {
|
| conn.on('ready', resolve)
|
| .on('error', reject)
|
| .connect({
|
| host: 'localhost',
|
| port: 2202,
|
| username: 'user',
|
| password: 'password',
|
| readyTimeout: 5000,
|
| debug: console.log
|
| });
|
| });
|
|
|
| console.log('SSH Connection established');
|
|
|
| const { stdout, stderr } = await new Promise((resolve, reject) => {
|
| conn.exec(req.body.command, (err, stream) => {
|
| if (err) reject(err);
|
| let stdout = '', stderr = '';
|
| stream.on('close', (code, signal) => {
|
| resolve({ stdout, stderr, code, signal });
|
| }).on('data', (data) => {
|
| stdout += data;
|
| }).stderr.on('data', (data) => {
|
| stderr += data;
|
| });
|
| });
|
| });
|
|
|
| conn.end();
|
| res.json({ output: stdout, error: stderr });
|
| } catch (error) {
|
| console.error('SSH error:', error);
|
| res.status(500).json({ error: error.message });
|
| }
|
| });
|
|
|
| app.listen(port, () => {
|
| console.log(`Web SSH app listening at http://localhost:${port}`);
|
| }); |