From: charleswrayjr Date: Mon, 15 Sep 2025 04:59:37 +0000 (-0500) Subject: Adding start, stop, and restart to vpn. X-Git-Url: https://git.phasecustomsoft.com/?a=commitdiff_plain;h=9d7b8acfc62cfeea11410180c40fab66fb1c879f;p=phs-api.git Adding start, stop, and restart to vpn. --- diff --git a/src/controllers/vpn.controller.js b/src/controllers/vpn.controller.js index 8b4f888..8655ff9 100644 --- a/src/controllers/vpn.controller.js +++ b/src/controllers/vpn.controller.js @@ -357,10 +357,59 @@ module.exports = { return next(new createError(500, `Failed to check VPN status: ${error.message}`)); } }, + stop: async ( req, res, next ) => { + try { + const conn = new Client(); + conn.on( 'ready', () => { + const command = `sudo systemctl stop openvpn@server`; + conn.exec( command, ( err, stream ) => { + if (err) { + conn.end(); + return next( new createError( 500, `SSH command failed: ${ err.message }` ) ); + } + res.json({ message: 'VPN stopped successfully' }); + } ); + }).on('error', (err) => { + next(new createError(500, `SSH connection failed: ${err.message}`)) + }).connect(sshConfig); + } catch (error) { + return next(new createError(500, `Failed to stop VPN: ${error.message}`)); + } + }, + start: async ( req, res, next ) => { + try { + const conn = new Client(); + conn.on( 'ready', () => { + const command = `sudo systemctl start openvpn@server`; + conn.exec( command, ( err, stream ) => { + if (err) { + conn.end(); + return next( new createError( 500, `SSH command failed: ${ err.message }` ) ); + } + res.json({ message: 'VPN started successfully' }); + } ); + }).on('error', (err) => { + next(new createError(500, `SSH connection failed: ${err.message}`)) + }).connect(sshConfig); + } catch (error) { + return next(new createError(500, `Failed to start VPN: ${error.message}`)); + } + }, restart: async ( req, res, next ) => { try { - await execPromise('systemctl restart openvpn@server'); - res.json({ message: 'VPN restarted successfully' }); + const conn = new Client(); + conn.on( 'ready', () => { + const command = `sudo systemctl restart openvpn@server`; + conn.exec( command, ( err, stream ) => { + if (err) { + conn.end(); + return next( new createError( 500, `SSH command failed: ${ err.message }` ) ); + } + res.json({ message: 'VPN restarted successfully' }); + } ); + }).on('error', (err) => { + next(new createError(500, `SSH connection failed: ${err.message}`)) + }).connect(sshConfig); } catch (error) { return next(new createError(500, `Failed to restart VPN: ${error.message}`)); } diff --git a/src/routes/vpn.routes.js b/src/routes/vpn.routes.js index eab5035..9d0408a 100644 --- a/src/routes/vpn.routes.js +++ b/src/routes/vpn.routes.js @@ -11,6 +11,8 @@ module.exports = ( passport ) => { router.get( '/clients', vpnController.getClients ); router.get( '/available-clients', vpnController.getAvailableClients ); router.put( '/disconnect', vpnController.disconnect ); + router.put( '/stop', vpnController.stop ); + router.put( '/start', vpnController.start ); router.put( '/restart', vpnController.restart ); return router;