UNPKG

cisco-vpn-rdp-connecter

Version:

Connect to Cisco AnyConnect VPN and open a Microsoft Remote Desktop (RDP) window

56 lines (55 loc) 2.77 kB
/* eslint-disable react/require-default-props */ import React, { useEffect, useState } from 'react'; import Conf from 'conf'; import { isCiscoAnyConnectInstalled } from './index.js'; import Connecter from './components/Connecter.js'; import Disconnecter from './components/Disconnecter.js'; import ConnectionStatuses from './components/ConnectionStatuses.js'; import ErrorMessage from './components/ErrorMessage.js'; import LoadingMessage from './components/LoadingMessage.js'; import ConfigPrinter from './components/ConfigPrinter.js'; import { schema } from './config.js'; const config = new Conf({ projectName: 'cisco-vpn-rdp-connecter', schema }); export default function App({ command, setup: requestedSetup = false, onlyVpn = false, saveOnlyVpn = false, showPassword = false, }) { const [hasCheckedVpnInstallation, setHasCheckedVpnInstallation] = useState(false); const [foundCiscoAnyConnectInstallation, setFoundCiscoAnyConnectInstallation] = useState(); useEffect(() => () => { // eslint-disable-next-line unicorn/no-process-exit process.exit(0); }, []); useEffect(() => { async function checkVpnInstallation() { const isVpnInstalled = await isCiscoAnyConnectInstalled(); setFoundCiscoAnyConnectInstallation(isVpnInstalled); setHasCheckedVpnInstallation(true); } checkVpnInstallation(); }, []); if (!hasCheckedVpnInstallation) { return React.createElement(LoadingMessage, { loadingMessage: "Checking for Cisco AnyConnect installation" }); } if (!foundCiscoAnyConnectInstallation) { return React.createElement(ErrorMessage, { message: "Could not find any Cisco AnyConnect installation" }); } switch (command) { case undefined: // Change the behavior of the default command to only connect to VPN if (saveOnlyVpn && onlyVpn) { config.set('onlyVpn', true); } // eslint-disable-next-line no-case-declarations const savedOnlyVpn = config.get('onlyVpn'); return React.createElement(Connecter, { requestedSetup: requestedSetup, onlyVpn: onlyVpn || savedOnlyVpn }); case 'd': case 'disconnect': return React.createElement(Disconnecter, null); case 's': case 'status': return React.createElement(ConnectionStatuses, { onlyVpn: onlyVpn }); case 'p': case 'print-config': return React.createElement(ConfigPrinter, { showPassword: showPassword }); default: return (React.createElement(ErrorMessage, { message: "Invalid input", commandSuggestion: "`cisco-vpn-rdp-connecter --help`", commandSuggestionSuffix: "to show valid input." })); } }