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