cisco-vpn-rdp-connecter
Version:
Connect to Cisco AnyConnect VPN and open a Microsoft Remote Desktop (RDP) window
40 lines (39 loc) • 2.12 kB
JavaScript
import React, { useState, useEffect } from 'react';
import { Text, useApp } from 'ink';
import logSymbols from 'log-symbols';
import Conf from 'conf';
import { isRdpWindowOpened, isCiscoVpnConnected } from '../index.js';
import LoadingMessage from './LoadingMessage.js';
import { schema } from '../config.js';
const config = new Conf({ projectName: 'cisco-vpn-rdp-connecter', schema });
function StatusMessage({ okStatus, type, message, extra, }) {
return (React.createElement(Text, null,
`${okStatus ? logSymbols.success : logSymbols.error} ${type}: ${message}`,
`${extra ? ` (${extra})` : ''}`));
}
export default function ConnectionStatuses({ onlyVpn }) {
const [isVpnConnected, setIsVpnConnected] = useState(false);
const [isRdpOpened, setIsRdpOpened] = useState(false);
const [hasCheckedStatuses, setHasCheckedStatuses] = useState(false);
const [vpnGroupName, setVpnGroupName] = useState('');
const { exit } = useApp();
useEffect(() => {
const checkStatuses = async () => {
const vpnConfig = config.get('vpn');
setVpnGroupName(vpnConfig.groupName);
const connectionStatusPromises = [isCiscoVpnConnected(), isRdpWindowOpened()];
const [vpnConnected, rdpOpened] = await Promise.all(connectionStatusPromises);
setIsVpnConnected(vpnConnected);
setIsRdpOpened(rdpOpened);
setHasCheckedStatuses(true);
exit();
};
checkStatuses();
}, []);
if (!hasCheckedStatuses) {
return React.createElement(LoadingMessage, { isCompleted: hasCheckedStatuses, loadingMessage: "Checking statuses" });
}
return (React.createElement(React.Fragment, null,
React.createElement(StatusMessage, { okStatus: isVpnConnected, type: "VPN", message: isVpnConnected ? 'connected' : 'disconnected', extra: isVpnConnected ? vpnGroupName : '' }),
onlyVpn ? (React.createElement(Text, null, "- RDP: skipped check")) : (React.createElement(StatusMessage, { okStatus: isRdpOpened, type: "RDP", message: isRdpOpened ? 'opened' : 'not opened' }))));
}