UNPKG

cisco-vpn-rdp-connecter

Version:

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

51 lines (50 loc) 2.45 kB
import React, { useState, useEffect } from 'react'; import Conf from 'conf'; import { Text } from 'ink'; import logSymbols from 'log-symbols'; import LoadingMessage from './LoadingMessage.js'; import ErrorMessage from './ErrorMessage.js'; import { schema } from '../config.js'; const config = new Conf({ projectName: 'cisco-vpn-rdp-connecter', schema }); function TextConfig({ name, value, isMasked = false }) { const textValue = isMasked ? '*'.repeat(value.length) : value; return (React.createElement(Text, null, `${name}: ${textValue}`)); } export default function ConfigPrinter({ showPassword = false }) { const [savedConfig, setSavedConfig] = useState(); const [vpnGroupText, setVpnGroupText] = useState(); const [isConfigNotSet, setIsConfigNotSet] = useState(false); useEffect(() => { const loadConfig = async () => { const vpnConfig = config.get('vpn'); const rdpConfig = config.get('rdp'); const onlyVpn = config.get('onlyVpn'); // Check if config is empty if (!vpnConfig || !rdpConfig || onlyVpn === undefined) { setIsConfigNotSet(true); return; } setSavedConfig({ vpn: vpnConfig, rdp: rdpConfig, onlyVpn, }); const vpnGroupName = vpnConfig.groupName || 'Default'; setVpnGroupText(`${vpnGroupName} (${vpnConfig.group})`); }; loadConfig(); }, []); if (isConfigNotSet) { return React.createElement(ErrorMessage, { message: "Config is not set" }); } if (!savedConfig || !vpnGroupText) { return React.createElement(LoadingMessage, { loadingMessage: "Loading config" }); } return (React.createElement(React.Fragment, null, React.createElement(TextConfig, { name: "VPN server", value: savedConfig.vpn.server }), React.createElement(TextConfig, { name: "Group", value: vpnGroupText }), React.createElement(TextConfig, { name: "Username", value: savedConfig.vpn.username }), React.createElement(TextConfig, { name: "Password", value: savedConfig.vpn.password, isMasked: !showPassword }), React.createElement(TextConfig, { name: "RDP server", value: savedConfig.rdp.server }), React.createElement(TextConfig, { name: "Only connect to VPN", value: savedConfig.onlyVpn ? logSymbols.success : logSymbols.error }))); }