import React, { useEffect, useState } from 'react'; import { ActionIcon, Badge, Button, Divider, Group, Image, Menu, Modal, Notification, Space, Switch, TextInput, Tooltip, FloatingTooltip, MediaQuery } from '@mantine/core'; import style from "./Header.module.scss"; import { changepassword, errorNotify, generalstats, logout, okNotify } from '../../js/utils'; import { ChangePassword, GeneralStats, update_freq } from '../../js/models'; import { BsPlusLg } from "react-icons/bs" import { AiFillHome } from "react-icons/ai" import { useLocation, useNavigate, useParams } from 'react-router-dom'; import AddNewRegex from '../AddNewRegex'; import AddNewService from '../AddNewService'; import { MdSettings } from 'react-icons/md'; import { FaLock } from 'react-icons/fa'; import { ImCross, ImExit } from 'react-icons/im'; import { useForm } from '@mantine/hooks'; function Header() { const [generalStats, setGeneralStats] = useState({closed:0, regexes:0, services:0}); const location = useLocation() const navigator = useNavigate() const updateInfo = () => { generalstats().then(res => { setGeneralStats(res) }).catch( err => errorNotify("General Info Auto-Update failed!", err.toString()) ) } useEffect(()=>{ updateInfo() const updater = setInterval(updateInfo, update_freq) return () => { clearInterval(updater) } }, []); const logout_action = () => { logout().then(r => { window.location.reload() }).catch(r => { errorNotify("Logout failed!",`Error: ${r}`) }) } const form = useForm({ initialValues: { password:"", expire:true }, validationRules:{ password: (value) => value !== "" } }) const [loadingBtn, setLoadingBtn] = useState(false) const [error, setError] = useState(null) const [changePasswordModal, setChangePasswordModal] = useState(false); const submitRequest = async (values:ChangePassword) => { setLoadingBtn(true) await changepassword(values).then(res => { if(!res){ okNotify("Password change done!","The password of the firewall has been changed!") setChangePasswordModal(false) form.reset() }else{ setError(res) } }).catch( err => setError(err.toString())) setLoadingBtn(false) } const {srv_id} = useParams() const [open, setOpen] = useState(false); const closeModal = () => {setOpen(false);} return
Firegex logonavigator("/")}/>
Services: {generalStats.services} Filtered Connections: {generalStats.closed} Regexes: {generalStats.regexes}
Services: {generalStats.services} Filtered Connections: {generalStats.closed} Regexes: {generalStats.regexes}
Firewall Access } onClick={logout_action}>Logout } onClick={() => setChangePasswordModal(true)}>Change Password
{ location.pathname !== "/"? navigator("/")}> :null} { srv_id? setOpen(true)} size="xl" radius="md" variant="filled"> : setOpen(true)} size="xl" radius="md" variant="filled"> } {srv_id? : } setChangePasswordModal(false)} closeOnClickOutside={false} centered>
{error?<> } color="red" onClose={()=>{setError(null)}}> Error: {error} :null}
} export default Header;