const express = require("express"); const cp = require('child_process'); const router= express.Router(); const detect = require('detect-port'); const oneport = require('oneport'); const fs = require('fs'); let User = require("../DBcollection/user.js"); const detectPort = require("detect-port"); let servers = new Set(); router.get('/', function(req, res) { if (req.session.user) { // res.render('home', { // user: req.session.user, // title: 'HOME', // }); oneport.acquire(function (err, port) { if (err) return console.error(err); console.log('port:', port); codeserver = cp.execFile('sudo', [ 'PASSWORD=' + req.session.user.password, 'code-server', '--auth=password', '--bind-addr=0.0.0.0:' + port, '--user-data-dir=/root/codeserver/userdata/' + req.session.user.name + '/', '--extensions-dir=/root/codeserver/extensions/' + req.session.user.name + '/', '--config=/root/codeserver/config/' + req.session.user.name, '-e', '--home=http://106.75.254.18/logoff' ], function(error, stdout, stderr) { console.log(error + '\n' + stdout + '\n' + stderr); }); servers.add({ user: req.session.user, server: codeserver }); dirpath = '/root/codeserver/user/' + req.session.user.name + '/'; fs.mkdirSync(dirpath, { recursive: true }); res.redirect('http://106.75.254.18:' + port + '/?folder=' + dirpath); }); } else { res.render('home-signin', { user: req.session.user, title: "user Sign in", }); } }); router.get('/logoff', function(req, res) { servers.forEach(function(server) { if (server.user == req.session.user) { server.server.exit(0); servers.delete(server); } }) delete req.session.user; res.redirect('/'); }) router.post('/', function(req, res) { let query = { name: req.body.name, password: req.body.password }; User.findOne(query, function(err, user) { if (err) { res.end("some thing wrong") return console.log(err); } if (user != undefined) { req.session.user = user; // return res.render('home', { // title: "HOME", // user: req.session.user // }); return res.redirect('/'); } else { return res.render('home-signin', { title: "Sorry, no this user", user: req.session.user }) } }); }); router.get('/signup', function(req, res) { res.render('home-signup', { user: req.session.user, title: "user Sign up", }); }); router.post('/signup', function(req, res) { User.find({name: req.body.name}, function(err, find) { if (find.length) { console.log(find); res.render("home-signup", { user: req.session.user, title: "Same User Name - plz try again", }); } else { let user = new User(); console.log(user); user.name = req.body.name; user.password = req.body.password; user.save(function(err) { if (err) { res.end("some thing wrong"); return console.log(err); } req.session.user = user; res.redirect('/'); }); } }); }); module.exports = router;