import React, { createContext, useContext, useEffect, useState } from 'react';
import { VPNService } from '../../services';
-import { ConfirmRevoke, CreateVPNClientDialog, VPNStatusDialog } from '../index';
+import { ConfirmRevoke, CreateVPNClientDialog } from '../index';
const VPNContext = createContext( undefined );
{ createOpen && <CreateVPNClientDialog open={ createOpen }
onClose={ () => setCreateOpen( false ) }
onCreate={ handleCreateClientSubmit }/> }
- { statusOpen && <VPNStatusDialog open={ statusOpen }
- onClose={ () => setStatusOpen( false ) }
- status={ serverStatus }/> }
{ children }</VPNContext.Provider>;
};
+++ /dev/null
-import { Dialog, DialogTitle, DialogContent, DialogActions, Button} from '@mui/material';
-
-export default function VPNStatusDialog( { open, onClose, status } ) {
- return (
- <Dialog open={ open } onClose={ onClose } >
- <DialogTitle>VPN Status</DialogTitle>
- <DialogContent>{ status }</DialogContent>
- <DialogActions>
- <Button onClick={ onClose }>OK</Button>
- </DialogActions>
- </Dialog>
- );
-};
\ No newline at end of file
import ConfirmRevoke from './VPN/ConfirmRevoke';
import CreateVPNClientDialog from './VPN/CreateVPNClientDialog';
-import VPNStatusDialog from './VPN/VPNStatusDialog';
export * from './VPN/VPNContext';
-export { ConfirmRevoke, CreateVPNClientDialog, VPNStatusDialog };
\ No newline at end of file
+export { ConfirmRevoke, CreateVPNClientDialog };
\ No newline at end of file
availableClients,
message,
setCreateOpen,
- setStatusOpen } = useVPN();
+ serverStatus } = useVPN();
const clientTable = useMaterialReactTable( {
columns: [
{ accessorKey: 'name', header: 'Name' },
onClick={ () => setCreateOpen( true ) }>
Create Client
</Button>
- <Button variant='contained'
- color='warning'
- size='small'
- onClick={ () => setStatusOpen( true ) }>
- Show VPN Status
- </Button>
</>
)
});
return (
<Container>
- <Typography variant="h5" className="mt-6">Available OpenVPN Clients</Typography>
+ <Typography variant="h5" className="mt-6">Available OpenVPN Clients<small>Status: <small style={{ color: serverStatus ? '#00FF00' : '#FF0000' }}>{ serverStatus ? 'Active' : 'Inactive' }</small></small></Typography>
<MaterialReactTable table={ availableTable } />
<Typography variant="h5" className="mt-6">Connected OpenVPN Clients</Typography>