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}`));
}
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;