UNPKG

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