{"version":3,"sources":["lib/net.ts","lib/sessionutils.tsx","pages/toastmessage/toastMessage.tsx","pages/signin/signin.tsx","pages/signup/signup.tsx","pages/banner/banner.tsx","pages/menubar/menubar.tsx","pages/tutorial/SimpleInstallSSHKey.tsx","pages/tutorial/DownloadCSSH.tsx","pages/tutorial/OrgModeSwitcher.tsx","pages/tutorial/AdvancedInstallSSHKey.tsx","lib/validation.tsx","pages/tutorial/SimpleManageUsers.tsx","pages/tutorial/AdvancedManageUsers.tsx","pages/tutorial/tutorial.tsx","pages/profile/profile.tsx","pages/verifyemail/verifyemail.tsx","pages/resetpassword/resetpassword.tsx","pages/auditlogs/auditlogs.tsx","pages/expirationpicker/expirationpicker.tsx","pages/expiration/expiration.tsx","pages/levelup/levelup.tsx","lib/googleanalytics.tsx","App.js","serviceWorker.js","index.js"],"names":["getDomain","axios","require","isLoggedIn","trueCb","falseCb","get","concat","then","resp","data","status","catch","logout","navigateCallback","err","console","log","isAuthErrorResp","body","typeToIcon","type","classes","react_default","a","createElement","Error_default","className","icon","iconVariant","Check_default","ToastMessage","props","useStyles","isOpen","message","_useState","useState","_useState2","Object","slicedToArray","hasBeenClosed","setHasBeenClosed","useEffect","Snackbar","anchorOrigin","vertical","horizontal","open","autoHideDuration","autoClose","onClose","closed","SnackbarContent","aria-describedby","id","action","IconButton","key","aria-label","color","onClick","Close_default","makeStyles","theme","success","backgroundColor","green","error","palette","dark","info","primary","main","warning","amber","fontSize","opacity","marginRight","spacing","display","alignItems","@global","common","white","paper","marginTop","flexDirection","avatar","margin","secondary","form","width","submit","withRouter","email","setEmail","_useState3","_useState4","password","setPassword","_useState5","_useState6","totpCode","setTotpCode","_useState7","_useState8","loggedIn","setLoggedIn","_useState9","_useState10","toastData","setToastData","react_router","to","Container","component","maxWidth","CssBaseline","Avatar","LockOutlined_default","Typography","variant","noValidate","TextField","required","fullWidth","label","name","autoFocus","value","onChange","event","target","autoComplete","Button","post","response","history","push","window","location","reload","Grid","container","item","xs","Link","href","QRCode","company","setCompany","fname","setFname","lname","setLname","provisioningUrl","setProvisioningUrl","_useState11","_useState12","_useState13","_useState14","_useState15","_useState16","productEmails","setProductEmails","_useState17","_useState18","_useState19","_useState20","sm","gutterBottom","align","style","paddingBottom","FormControlLabel","control","Checkbox","checked","org_name","fullname","product_emails","justify","padding","borderBottomLeftRadius","borderBottomRightRadius","Banner","Fragment","Paper","elevation","wrap","actionText","drawerWidth","_drawerPaperClose","root","flexGrow","title","drawerPaper","position","whiteSpace","transition","transitions","create","easing","sharp","duration","enteringScreen","height","drawerPaperClose","overflowX","leavingScreen","defineProperty","breakpoints","up","toolbarIcon","objectSpread2","justifyContent","mixins","toolbar","appBar","zIndex","drawer","appBarShift","marginLeft","paddingRight","menuButton","menuButtonHidden","content","overflow","appBarSpacer","paddingTop","UnauthedEndpoints","_React$useState","React","_React$useState2","anchorEl","setAnchorEl","_React$useState3","_React$useState4","intervalId","setIntervalId","_React$useState5","_React$useState6","banners","setBanners","_React$useState7","_React$useState8","drawerOpen","setDrawerOpen","Boolean","isAuthed","i","pathname","startsWith","updateBanners","handleClose","setInterval","clearInterval","AppBar","clsx","Toolbar","edge","Menu_default","noWrap","currentTarget","AccountCircle_default","Menu_Menu","keepMounted","transformOrigin","MenuItem","Drawer","ChevronLeft_default","Divider","ListItem","button","ListItemIcon","Dashboard_default","ListItemText","QueryBuilder_default","Folder_default","ArrowUpward_default","map","bannerName","banner","banner_banner","paddingLeft","Email_default","renderBanner","children","explanation","caKey","setCaKey","prism","language","listItem","total","fontWeight","orgId","setOrgId","sshUser","setSshUser","addEmailButton","OrgModeSwitcher","orgMode","setOrgMode","simple_component","advanced_component","LinearProgress_default","prev","principals","setPrincipals","p","JSON","stringify","isValidEmail","includes","split","principal","setPrincipal","users","setUsers","successCount","setSuccessCount","toConsumableArray","filter","user","is_domain","helperText","Tooltip","arrow","Help_default","List","dense","idx","ListItemAvatar","u","ListItemSecondaryAction","_","Delete_default","AddCircle_default","emails","layout","marginBottom","addItemButton","userToPrincipals","setUserToPrincipals","length","entries","cleanedUserToPrincipals","_ref","_ref2","Tooltip_default","List_default","ListItem_default","ListItemAvatar_default","Avatar_default","ListItemSecondaryAction_default","IconButton_default","updated_principals","_ref3","_ref4","Button_default","Divider_default","_ref5","_ref6","selectedPrincipals","FormControlLabel_default","Checkbox_default","labelPlacement","username","fromEntries","stepper","buttons","steps","activeStep","setActiveStep","Stepper","Step","StepLabel","step","SimpleManageUsers","AdvancedManageUsers","SimpleInstallSSHKey","AdvancedInstallSSHKey","DownloadCSSH","Error","getStepContent","scrollTo","userInfo","setUserInfo","verified","setVerified","match","params","token","_paper","table","minWidth","logs","setLogs","method","Table","TableHead","TableRow","TableCell","TableBody","scope","flex","initExpiration","expiration","setExpiration","getEndpoint","setEndpoint","inputLabel","useRef","labelWidth","setLabelWidth","current","offsetWidth","number","e","FormControl","InputLabel","ref","htmlFor","Select","unit","input","OutlinedInput","description","tab","setTab","Tabs","val","indicatorColor","textColor","Tab","VpnKey_default","expirationpicker","_nestedPaper","nestedPaper","Box","borderRadius","borderColor","border","org_mode","GoogleAnalytics","initialize","withTracker","WrappedComponent","options","arguments","undefined","page","ReactGA","set","pageview","Landing","MyRouter","defaults","withCredentials","react_router_dom","menubar","exact","path","SignIn","SignUp","Tutorial","Profile","VerifyEmail","ResetPassword","AuditLogs","Expiration","LevelUp","hostname","ReactDOM","render","App","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.2e1035c3.chunk.js","sourcesContent":["let isProduction = () => process.env.NODE_ENV === \"production\"\n\nlet getDomain = () => {\n if (isProduction()) {\n return \"https://keys.cascarasecurity.com\"\n } else {\n return \"http://localhost:5000\"\n }\n}\n\nexport {\n isProduction,\n getDomain\n}","import {getDomain} from \"./net\";\n\nconst axios = require(\"axios\");\n\nlet isLoggedIn = (trueCb: () => void, falseCb: () => void) => {\n axios\n .get(`${getDomain()}/api/v1/is_authed`)\n .then((resp: any) => {\n if (resp.data.status) {\n trueCb();\n } else {\n falseCb();\n }\n })\n .catch(falseCb);\n};\n\nlet logout = (navigateCallback: (path: string) => void) => {\n axios.get(`${getDomain()}/api/v1/logout`)\n .then((resp: any) => {\n navigateCallback('/signin');\n })\n .catch((err: any) => {\n console.log(err)\n navigateCallback('/signin');\n })\n}\n\nlet isAuthErrorMessage = (message: string): boolean => message === \"Invalid Session. Please log in.\"\nlet isAuthErrorResp = (resp: any): boolean => isAuthErrorMessage(resp.data.body)\n\nexport {\n isLoggedIn,\n isAuthErrorMessage,\n isAuthErrorResp,\n logout\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport SnackbarContent from \"@material-ui/core/SnackbarContent\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { amber, green } from \"@material-ui/core/colors\";\n\nexport interface ToastData{\n message: string\n type: ToastType\n}\n\ntype ToastType = \"error\" | \"success\"\n\ntype ToastMessageProps = {\n message: string;\n isOpen: boolean;\n type: ToastType;\n closed?: () => void\n autoClose?: boolean;\n};\n\nlet typeToIcon = (type: ToastType, classes: any) => {\n if (type === \"error\") {\n return ();\n }\n if (type === \"success\") {\n return ();\n }\n}\n\nexport default function ToastMessage(props: ToastMessageProps) {\n const classes = useStyles();\n\n const { isOpen, message } = props;\n\n const [hasBeenClosed, setHasBeenClosed] = useState(false);\n\n useEffect(() => {\n setHasBeenClosed(false);\n }, [isOpen, message]);\n\n return (\n {\n setHasBeenClosed(true)\n if (props.closed) {\n props.closed()\n }\n }}\n >\n \n {typeToIcon(props.type, classes)}\n {message}\n \n }\n action={[\n {\n setHasBeenClosed(true)\n if (props.closed) {\n props.closed()\n }\n }}\n >\n \n \n ]}\n />\n \n );\n}\n\nconst useStyles = makeStyles(theme => ({\n success: {\n backgroundColor: green[600]\n },\n error: {\n backgroundColor: theme.palette.error.dark\n },\n info: {\n backgroundColor: theme.palette.primary.main\n },\n warning: {\n backgroundColor: amber[700]\n },\n icon: {\n fontSize: 20\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing(1)\n },\n message: {\n display: \"flex\",\n alignItems: \"center\"\n }\n}));\n\n","import React, { useEffect, useState } from \"react\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport Button from \"@material-ui/core/Button\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Link from \"@material-ui/core/Link\";\nimport Grid from \"@material-ui/core/Grid\";\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Container from \"@material-ui/core/Container\";\nimport {Redirect, withRouter} from \"react-router-dom\";\nimport {isAuthErrorResp, isLoggedIn, logout} from \"../../lib/sessionutils\";\nimport ToastMessage, {ToastData} from \"../toastmessage/toastMessage\";\nimport HistoryProps from \"../../types/history\";\nimport {getDomain} from \"../../lib/net\";\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n \"@global\": {\n body: {\n backgroundColor: theme.palette.common.white\n }\n },\n paper: {\n marginTop: theme.spacing(8),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\"\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main\n },\n form: {\n width: \"100%\", // Fix IE 11 issue.\n marginTop: theme.spacing(1)\n },\n submit: {\n margin: theme.spacing(3, 0, 2)\n }\n}));\n\nexport default withRouter(SignIn as any)\nfunction SignIn(props: {history: HistoryProps}) {\n const classes = useStyles();\n\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [totpCode, setTotpCode] = useState(\"\");\n const [loggedIn, setLoggedIn] = useState(null);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n useEffect(() => {\n isLoggedIn(() => setLoggedIn(true), () => setLoggedIn(false));\n }, []);\n\n if (loggedIn === true) {\n return ;\n }\n\n return (\n \n \n
\n \n \n \n \n Sign in\n \n
\n setEmail(event.target.value)}\n />\n setPassword(event.target.value)}\n />\n setTotpCode(event.target.value)}\n />\n {\n let body = {\n email: email,\n password: password,\n totpCode: totpCode,\n };\n axios\n .post(`${getDomain()}/api/v1/login`, body)\n .then(function(response: any) {\n if (response.data.status) {\n setLoggedIn(true);\n } else {\n if (isAuthErrorResp(response)) {\n logout(props.history.push)\n } else {\n setToastData({message: response.data.body, type: \"error\"});\n }\n }\n })\n .catch(function(error: any) {\n console.log(error);\n window.location.reload();\n });\n }}\n >\n Sign In\n \n \n \n \n Forgot password?\n \n \n \n \n {\"Don't have an account? Sign Up\"}\n \n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport Button from \"@material-ui/core/Button\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport TextField from \"@material-ui/core/TextField\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport Link from \"@material-ui/core/Link\";\nimport Grid from \"@material-ui/core/Grid\";\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Container from \"@material-ui/core/Container\";\nimport {Redirect, withRouter} from \"react-router-dom\";\nimport {isAuthErrorResp, isLoggedIn, logout} from \"../../lib/sessionutils\";\nimport ToastMessage, {ToastData} from \"../toastmessage/toastMessage\";\nimport HistoryProps from \"../../types/history\";\nimport {getDomain} from \"../../lib/net\";\n\nvar QRCode = require('qrcode.react');\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n \"@global\": {\n body: {\n backgroundColor: theme.palette.common.white\n }\n },\n paper: {\n marginTop: theme.spacing(8),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\"\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main\n },\n form: {\n width: \"100%\", // Fix IE 11 issue.\n marginTop: theme.spacing(3)\n },\n submit: {\n margin: theme.spacing(3, 0, 2)\n }\n}));\n\nexport default withRouter(SignUp)\nfunction SignUp(props: {history: HistoryProps}) {\n const classes = useStyles();\n const [company, setCompany] = useState(\"\");\n const [fname, setFname] = useState(\"\");\n const [lname, setLname] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [provisioningUrl, setProvisioningUrl] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [totpCode, setTotpCode] = useState(\"\");\n const [productEmails, setProductEmails] = useState(false);\n const [loggedIn, setLoggedIn] = useState(null);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n useEffect(() => {\n isLoggedIn(() => setLoggedIn(true), () => setLoggedIn(false));\n }, []);\n\n if (loggedIn === true) {\n return ;\n }\n\n return (\n \n \n
\n \n \n \n \n Sign up\n \n
\n \n \n setCompany(event.target.value)}\n />\n \n \n setFname(event.target.value)}\n />\n \n \n setLname(event.target.value)}\n />\n \n \n {\n setEmail(event.target.value);\n axios\n .get(`${getDomain()}/api/v1/generate_totp_provisioning_url?email=${event.target.value}`)\n .then(function(response: any) {\n if (response.data.status) {\n setProvisioningUrl(response.data.body)\n } else {\n if (isAuthErrorResp(response)) {\n logout(props.history.push)\n } else {\n setToastData({message: response.data.body, type: \"error\"});\n }\n }\n })\n .catch(function(error: any) {\n console.log(error);\n window.location.reload();\n });\n\n }}\n />\n \n \n setPassword(event.target.value)}\n />\n \n \n Scan the below QR code with Google Authenticator\n \n \n setTotpCode(event.target.value)}\n />\n \n \n setProductEmails(!productEmails)\n }\n />\n }\n label=\"I want to receive product updates via email.\"\n />\n \n \n {\n let body = {\n org_name: company,\n fullname: fname + \" \" + lname,\n email: email,\n password: password,\n product_emails: productEmails,\n totpCode: totpCode,\n provisioningUrl: provisioningUrl,\n };\n axios\n .post(`${getDomain()}/api/v1/signup`, body)\n .then(function(response: any) {\n if (response.data.status) {\n setLoggedIn(true);\n } else {\n if (isAuthErrorResp(response)) {\n logout(props.history.push)\n } else {\n setToastData({message: response.data.body, type: \"error\"});\n }\n }\n })\n .catch(function(error: any) {\n console.log(error);\n window.location.reload();\n });\n }}\n >\n Sign Up\n \n \n \n \n Already have an account? Sign in\n \n \n \n \n \n
\n
\n );\n}\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/styles\";\nimport Grid from \"@material-ui/core/Grid\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport Divider from \"@material-ui/core/Divider\";\nimport SignalWifiOffIcon from \"@material-ui/icons/SignalWifiOff\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Button from \"@material-ui/core/Button\";\n\ntype Props = {\n message: string\n icon: React.ReactNode\n actionText?: string\n action?: () => void\n style?: any\n}\n\nconst useStyles = makeStyles((theme: any) => ({\n paper: {\n padding: \"10px\",\n borderBottomLeftRadius: \"10px\",\n borderBottomRightRadius: \"10px\",\n backgroundColor: \"rgb(0,0,0,0.1)\"\n },\n avatar: {\n }\n}));\n\nfunction Banner(props: Props) {\n const classes = useStyles();\n return (\n <>\n \n \n \n \n {props.icon}\n \n \n \n \n {props.message}\n \n \n {props.action && props.actionText && (\n \n \n \n )}\n \n \n \n \n );\n}\n\nexport default Banner;\n","import React, { useEffect, useState } from \"react\";\nimport { makeStyles } from '@material-ui/core/styles';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport Drawer from '@material-ui/core/Drawer';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport Divider from '@material-ui/core/Divider';\nimport Container from '@material-ui/core/Container';\nimport Grid from '@material-ui/core/Grid';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Menu from '@material-ui/core/Menu';\nimport EmailIcon from \"@material-ui/icons/Email\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport DashboardIcon from \"@material-ui/icons/Dashboard\";\nimport QueryBuilderIcon from \"@material-ui/icons/QueryBuilder\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport ArrowUpwardIcon from \"@material-ui/icons/ArrowUpward\";\nimport {withRouter} from \"react-router\";\nimport ToastMessage, {ToastData} from \"../toastmessage/toastMessage\";\nimport Banner from \"../banner/banner\";\nimport {getDomain} from \"../../lib/net\";\nimport HistoryProps from \"../../types/history\";\nimport {isAuthErrorResp, logout} from \"../../lib/sessionutils\";\nimport clsx from 'clsx';\nconst axios = require(\"axios\");\n\nconst drawerWidth = 240;\n\nconst useStyles = makeStyles((theme: any) => ({\n root: {\n flexGrow: 1,\n display:\"flex\",\n },\n title: {\n flexGrow: 1,\n },\n drawerPaper: {\n position: 'relative',\n whiteSpace: 'nowrap',\n width: drawerWidth,\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n height: \"100vh\"\n },\n drawerPaperClose: {\n overflowX: 'hidden',\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n width: theme.spacing(7),\n [theme.breakpoints.up('sm')]: {\n width: theme.spacing(9),\n },\n height: \"100vh\"\n },\n toolbarIcon: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: '0 8px',\n ...theme.mixins.toolbar,\n },\n appBar: {\n zIndex: theme.zIndex.drawer + 1,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n },\n appBarShift: {\n marginLeft: drawerWidth,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n toolbar: {\n paddingRight: 24, // keep right padding when drawer closed\n },\n menuButton: {\n marginRight: 36,\n },\n menuButtonHidden: {\n display: 'none',\n },\n content: {\n flexGrow: 1,\n height: '100vh',\n overflow: 'auto',\n },\n appBarSpacer: theme.mixins.toolbar,\n container: {\n paddingTop: theme.spacing(4),\n paddingBottom: theme.spacing(4),\n },\n\n}));\n\ntype BannerType = \"VerificationBanner\"\ntype Props = {\n history: HistoryProps,\n}\n\nconst UnauthedEndpoints = ['/signin', '/signup', '/verify_email', '/reset_password']\n\nexport default withRouter(MenuBar as any)\nfunction MenuBar(props: any) {\n const classes = useStyles();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [intervalId, setIntervalId] = React.useState(null);\n const [banners, setBanners] = React.useState>([]);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n const [drawerOpen, setDrawerOpen] = React.useState(false);\n const open = Boolean(anchorEl);\n\n function isAuthed() {\n for (var i in UnauthedEndpoints) {\n if (props.history.location.pathname.startsWith(UnauthedEndpoints[i])) {\n return false\n }\n }\n return true\n }\n\n function updateBanners() {\n if (!isAuthed()) {\n return\n }\n axios\n .get(`${getDomain()}/api/v1/get_banners`)\n .then((resp: any) => {\n if (resp.data.status) {\n setBanners(resp.data.body)\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }\n\n useEffect(() => {\n setIntervalId(setInterval(updateBanners, 2000));\n\n return () => {\n // Run at unmount\n clearInterval(intervalId)\n }\n }, []);\n\n function renderBanner(banner: BannerType) {\n if (banner === \"VerificationBanner\") {\n return (\n {\n axios.post(`${getDomain()}/api/v1/resend_email`)\n .then((resp: any) => {\n if (resp.data.status) {\n setToastData({message: \"Email Sent\", type: \"success\"})\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }}\n icon={}\n />\n )\n }\n }\n\n function handleMenu(event: any) {\n setAnchorEl(event.currentTarget);\n }\n\n function handleClose() {\n setAnchorEl(null);\n }\n\n return (\n
\n \n \n \n {isAuthed() && (\n setDrawerOpen(!drawerOpen)}\n className={clsx(classes.menuButton, drawerOpen && classes.menuButtonHidden)}\n >\n \n \n )}\n \n Cascara\n \n {isAuthed() && (\n
\n \n \n \n \n {handleClose(); props.history.push(\"/profile\")}}>Profile\n {handleClose(); setBanners([]); logout(props.history.push)}}>Logout\n \n
\n )}\n
\n
\n {isAuthed() && (\n \n
\n setDrawerOpen(false)}>\n \n \n
\n \n
\n props.history.push(\"/console\")}>\n \n \n \n \n \n props.history.push(\"/expiration\")}>\n \n \n \n \n \n props.history.push(\"/audit_logs\")}>\n \n \n \n \n \n props.history.push(\"/level_up\")}>\n \n \n \n \n \n
\n \n \n )}\n
\n
\n {banners.map((bannerName) => renderBanner(bannerName))}\n \n {props.children}\n \n
\n \n
\n );\n}\n\n","import React, {useEffect, useState} from \"react\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport Grid from \"@material-ui/core/Grid\";\nimport ToastMessage, {ToastData} from \"../toastmessage/toastMessage\";\nimport {Prism as SyntaxHighlighter} from \"react-syntax-highlighter\";\nimport {withRouter} from \"react-router\";\nimport {isAuthErrorResp, logout} from \"../../lib/sessionutils\";\nimport HistoryProps from \"../../types/history\";\nimport {getDomain} from \"../../lib/net\";\nimport {Divider} from \"@material-ui/core\";\n\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n explanation: {\n paddingTop: \"40px\",\n },\n}))\n\nexport default withRouter(SimpleInstallSSHKey as any)\n\nfunction SimpleInstallSSHKey(props: { history: HistoryProps }) {\n const classes = useStyles();\n\n const [caKey, setCaKey] = React.useState(null);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n useEffect(() => {\n axios\n .get(`${getDomain()}/api/v1/get_ca_key`)\n .then((resp: any) => {\n if (resp.data.status) {\n setCaKey(resp.data.body);\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }, []);\n\n return (\n <>\n \n Deploy one key to all your servers\n \n \n {caKey\n ? 'echo \"' +\n caKey +\n '\" > /etc/ssh/ca.pub\\necho \"TrustedUserCAKeys /etc/ssh/ca.pub\" >> /etc/ssh/sshd_config\\nservice ssh restart'\n : \"Loading...\"}\n \n \n This one key is the certificate that will be used to grant SSH access. Our software will automatically\n provision short-lived SSH keys that are trusted by this certificate. This means that you will never again\n have to manage SSH keys!\n \n\n \n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport Grid from \"@material-ui/core/Grid\";\nimport ToastMessage, {ToastData} from \"../toastmessage/toastMessage\";\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport {isAuthErrorResp, logout} from \"../../lib/sessionutils\";\nimport {withRouter} from \"react-router\";\nimport HistoryProps from \"../../types/history\";\nimport {getDomain} from \"../../lib/net\";\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n listItem: {\n padding: theme.spacing(1, 0)\n },\n total: {\n fontWeight: 700\n },\n title: {\n marginTop: theme.spacing(2)\n }\n}));\n\nexport default withRouter(DownloadCSSH)\nfunction DownloadCSSH(props: {history: HistoryProps}) {\n const classes = useStyles();\n\n const [orgId, setOrgId] = useState(null);\n const [sshUser, setSshUser] = useState(\"root\");\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n useEffect(() => {\n axios\n .get(`${getDomain()}/api/v1/get_org_info`)\n .then((resp: any) => {\n if (resp.data.status) {\n setOrgId(resp.data.body.id);\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n axios\n .get(`${getDomain()}/api/v1/get_ssh_user`)\n .then((resp: any) => {\n if (resp.data.status) {\n if (resp.data.body) {\n setSshUser(resp.data.body);\n }\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }, []);\n\n return (\n <>\n \n Download and SSH!\n \n \n {orgId === null\n ? \"Loading...\"\n : \"curl -L https://binaries.cascarasecurity.com/cssh-\" +\n orgId +\n \" > cssh\\n\" +\n \"chmod +x cssh\\n\" +\n \"sudo mv cssh /usr/local/bin/cssh\\n\" +\n \"cssh \" +\n sshUser +\n \"@server\\n\"}\n \n \n That is really all there is to it!\n \n\n \n \n );\n}\n","import React, {useState, useEffect, Component} from \"react\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport ToastMessage, {ToastData} from \"../toastmessage/toastMessage\";\nimport {isAuthErrorResp, logout} from \"../../lib/sessionutils\";\nimport {withRouter} from \"react-router\";\nimport HistoryProps from \"../../types/history\";\nimport {getDomain} from \"../../lib/net\";\nimport SimpleManageUsers from \"./SimpleManageUsers\";\nimport AdvancedManageUsers from \"./AdvancedManageUsers\";\nimport LinearProgress from \"@material-ui/core/LinearProgress/LinearProgress\";\n\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n listItem: {\n padding: theme.spacing(1, 0)\n },\n total: {\n fontWeight: 700\n },\n title: {\n marginTop: theme.spacing(2)\n },\n addEmailButton: {\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\"\n },\n submit: {\n margin: theme.spacing(3, 0, 2)\n }\n}));\n\nexport default function OrgModeSwitcher(props: { history: HistoryProps, simple_component: any, advanced_component: any}) {\n const classes = useStyles();\n const [orgMode, setOrgMode] = useState(\"\");\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n useEffect(() => {\n axios.get(`${getDomain()}/api/v1/get_org_mode`)\n .then((resp: any) => {\n if (resp.data.status) {\n setOrgMode(resp.data.body)\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }, []);\n\n return (\n <>\n {orgMode === \"SIMPLE\" && props.simple_component}\n {orgMode == \"ADVANCED\" && props.advanced_component}\n {orgMode == \"\" && }\n setToastData((prev) => ({message: \"\", type: prev.type}))}/>\n \n );\n}\n","import React, {useEffect, useState} from \"react\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport Grid from \"@material-ui/core/Grid\";\nimport ToastMessage, {ToastData} from \"../toastmessage/toastMessage\";\nimport {Prism as SyntaxHighlighter} from \"react-syntax-highlighter\";\nimport {withRouter} from \"react-router\";\nimport {isAuthErrorResp, logout} from \"../../lib/sessionutils\";\nimport HistoryProps from \"../../types/history\";\nimport {getDomain} from \"../../lib/net\";\nimport {Divider} from \"@material-ui/core\";\n\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n explanation: {\n paddingTop: \"40px\",\n },\n}))\n\nexport default withRouter(AdvancedInstallSSHKey as any)\n\nfunction AdvancedInstallSSHKey(props: { history: HistoryProps }) {\n const classes = useStyles();\n\n const [caKey, setCaKey] = React.useState(null);\n const [principals, setPrincipals] = React.useState | null>(null);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n useEffect(() => {\n axios\n .get(`${getDomain()}/api/v1/get_ca_key`)\n .then((resp: any) => {\n if (resp.data.status) {\n setCaKey(resp.data.body);\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n axios\n .get(`${getDomain()}/api/v1/advanced_get_principals`)\n .then((resp: any) => {\n if (resp.data.status) {\n setPrincipals(resp.data.body)\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }, []);\n\n return (\n <>\n \n Deploy one key to all your servers\n \n \n On each server that you wish to manage with Cascara:\n \n \n {caKey !== null && principals !== null\n ? 'mkdir /etc/ssh/auth_principals/\\n' +\n 'echo \"' +\n caKey +\n '\" > /etc/ssh/ca.pub\\n' +\n 'echo \"TrustedUserCAKeys /etc/ssh/ca.pub\" >> /etc/ssh/sshd_config\\n' +\n 'echo \"AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u\" >> /etc/ssh/sshd_config\\n' +\n 'service ssh restart'\n : \"Loading...\"}\n \n {principals !== null && principals.map((p, i) => (\n <>\n \n On each server in {JSON.stringify(p)}:\n \n \n { 'echo \"' +\n p +\n '\" > /etc/ssh/auth_principals/root'\n }\n \n \n ))}\n \n This one key is the certificate that will be used to grant SSH access. Our software will automatically\n provision short-lived SSH keys that are trusted by this certificate. This means that you will never\n again\n have to manage SSH keys!\n \n\n \n \n );\n}","let isValidEmail = (email: string) => email.includes('@') && email.split('@')[1].includes('.')\n\nexport {\n isValidEmail\n}","import React, {useState, useEffect} from \"react\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport ListItemAvatar from \"@material-ui/core/ListItemAvatar\";\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Button from \"@material-ui/core/Button\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport Grid from \"@material-ui/core/Grid\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Divider from \"@material-ui/core/Divider\";\nimport ToastMessage, {ToastData} from \"../toastmessage/toastMessage\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport EmailIcon from \"@material-ui/icons/Email\";\nimport AddCircleIcon from \"@material-ui/icons/AddCircle\";\nimport HelpIcon from \"@material-ui/icons/Help\";\nimport {isValidEmail} from \"../../lib/validation\";\nimport {isAuthErrorResp, logout} from \"../../lib/sessionutils\";\nimport {withRouter} from \"react-router\";\nimport HistoryProps from \"../../types/history\";\nimport {getDomain} from \"../../lib/net\";\n\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n listItem: {\n padding: theme.spacing(1, 0)\n },\n total: {\n fontWeight: 700\n },\n title: {\n marginTop: theme.spacing(2)\n },\n addEmailButton: {\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\"\n },\n submit: {\n margin: theme.spacing(3, 0, 2)\n }\n}));\n\nexport default withRouter(SimpleManageUsers)\n\nfunction SimpleManageUsers(props: { history: HistoryProps }) {\n const classes = useStyles();\n const [principal, setPrincipal] = React.useState(\"\");\n const [users, setUsers] = React.useState>([\"\"]);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n const [successCount, setSuccessCount] = useState(0);\n\n useEffect(() => {\n axios.get(`${getDomain()}/api/v1/list_emails`)\n .then((resp: any) => {\n if (resp.data.status) {\n setUsers([...resp.data.body.filter((user: any) => !user.is_domain && user !== \"\").map((user: any) => user.email), \"\"])\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n axios.get(`${getDomain()}/api/v1/get_principal`)\n .then((resp: any) => {\n if (resp.data.status) {\n if (resp.data.body) {\n setPrincipal(resp.data.body)\n }\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }, []);\n\n if (successCount >= 2) {\n setSuccessCount(prev => prev >= 2 ? prev - 2 : prev)\n setToastData({message: \"Saved!\", type: \"success\"})\n }\n\n return (\n <>\n \n Manage users\n \n setPrincipal(event.target.value)}\n helperText=\"The SSH user used on all servers (root by default)\"\n />\n\n \n Cascara Users {\" \"}\n \n \n \n\n \n\n \n {users.map((user, idx) => (\n \n \n \n \n \n \n \n setUsers(\n users.map((u, i) => (i === idx ? event.target.value : u))\n )\n }\n />\n \n setUsers(users.filter((_, i) => i !== idx))}\n >\n \n \n \n \n ))}\n \n setUsers([...users, \"\"])}\n >\n \n \n \n {\n let body = {\n emails: users\n };\n axios\n .post(`${getDomain()}/api/v1/set_emails`, body)\n .then(function (response: any) {\n if (response.data.status) {\n setSuccessCount(successCount => successCount + 1)\n } else {\n if (isAuthErrorResp(response)) {\n logout(props.history.push)\n } else {\n setToastData({message: response.data.body, type: \"error\"});\n }\n }\n })\n .catch(function (error: any) {\n console.log(error);\n window.location.reload();\n });\n axios\n .post(`${getDomain()}/api/v1/set_principal`, {principal})\n .then((response: any) => {\n if (response.data.status) {\n setSuccessCount(successCount => successCount + 1)\n } else {\n if (isAuthErrorResp(response)) {\n logout(props.history.push)\n } else {\n setToastData({message: response.data.body, type: \"error\"});\n }\n }\n })\n .catch((error: any) => {\n console.log(error);\n window.location.reload();\n });\n }}\n >\n Save\n \n setToastData((prev) => ({message: \"\", type: prev.type}))}/>\n \n );\n}\n","import React, {useEffect, useState} from \"react\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {withRouter} from \"react-router\";\nimport {ToastData, default as ToastMessage} from \"../toastmessage/toastMessage\";\nimport {isAuthErrorResp, isLoggedIn, logout} from \"../../lib/sessionutils\";\nimport ExpirationPicker from \"../expirationpicker/expirationpicker\";\nimport HistoryProps from \"../../types/history\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Tab from \"@material-ui/core/Tab\";\nimport Tabs from \"@material-ui/core/Tabs\";\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport VpnKeyIcon from '@material-ui/icons/VpnKey';\nimport {InputLabel} from \"@material-ui/core\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Grid from \"@material-ui/core/Grid\";\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\nimport Box from \"@material-ui/core/Box\";\nimport {green} from \"@material-ui/core/colors\";\nimport {isValidEmail} from \"../../lib/validation\";\nimport Tooltip from \"@material-ui/core/Tooltip/Tooltip\";\nimport List from \"@material-ui/core/List/List\";\nimport ListItem from \"@material-ui/core/ListItem/ListItem\";\nimport ListItemAvatar from \"@material-ui/core/ListItemAvatar/ListItemAvatar\";\nimport Avatar from \"@material-ui/core/Avatar/Avatar\";\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction/ListItemSecondaryAction\";\nimport IconButton from \"@material-ui/core/IconButton/IconButton\";\nimport Button from \"@material-ui/core/Button/Button\";\nimport AddCircleIcon from \"@material-ui/icons/AddCircle\";\nimport HelpIcon from \"@material-ui/icons/Help\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport Divider from \"@material-ui/core/Divider/Divider\";\nimport Checkbox from \"@material-ui/core/Checkbox/Checkbox\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel/FormControlLabel\";\nimport {getDomain} from \"../../lib/net\";\n\nconst axios = require(\"axios\");\n\n\nconst useStyles = makeStyles(theme => ({\n layout: {\n width: \"auto\",\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(800 + theme.spacing(2) * 2)]: {\n width: 800,\n marginLeft: \"auto\",\n marginRight: \"auto\"\n }\n },\n paper: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n padding: theme.spacing(2),\n [theme.breakpoints.up(800 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(3)\n }\n },\n addItemButton: {\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\"\n },\n submit: {\n margin: theme.spacing(3, 0, 2)\n }\n}));\n\n// TODO(advanced): Yell at them if they try to save and there are no realms or no one has access to realms\n\nexport default withRouter(AdvancedManageUsers)\n\nfunction AdvancedManageUsers(props: { history: HistoryProps }) {\n const classes = useStyles();\n\n const [principals, setPrincipals] = React.useState>([\"\"]);\n const [userToPrincipals, setUserToPrincipals] = React.useState]>>([[\"\", []]])\n const [sshUser, setSshUser] = React.useState(\"\")\n const [successCount, setSuccessCount] = useState(0);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n useEffect(() => {\n axios.get(`${getDomain()}/api/v1/get_org_mode`)\n .then((resp: any) => {\n if (resp.data.status) {\n if (resp.data.body !== \"ADVANCED\") {\n props.history.push(\"/console\")\n }\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n axios.get(`${getDomain()}/api/v1/advanced_get_principals`)\n .then((resp: any) => {\n if (resp.data.status) {\n if (resp.data.body.length == 0) {\n setPrincipals([\"\"]);\n } else {\n setPrincipals(resp.data.body)\n }\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n axios.get(`${getDomain()}/api/v1/advanced_get_emails`)\n .then((resp: any) => {\n if (resp.data.status) {\n let data: Array<[string, Array]> = Object.entries(resp.data.body);\n if (data.length == 0) {\n setUserToPrincipals([[\"\", []]])\n } else {\n setUserToPrincipals(data);\n }\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n axios.get(`${getDomain()}/api/v1/advanced_get_ssh_user`)\n .then((resp: any) => {\n if (resp.data.status) {\n setSshUser(resp.data.body)\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }, []);\n\n if (successCount >= 2) {\n setSuccessCount(prev => prev >= 2 ? prev - 2 : prev)\n setToastData({message: \"Saved!\", type: \"success\"})\n }\n\n useEffect(() => {\n let cleanedUserToPrincipals: Array<[string, Array]> = userToPrincipals.map(([user, allowed_principals]) =>\n [user, allowed_principals.filter(p => principals.includes(p))]\n )\n if (JSON.stringify(cleanedUserToPrincipals) !== JSON.stringify(userToPrincipals)) {\n setUserToPrincipals(cleanedUserToPrincipals);\n }\n }, [userToPrincipals, principals])\n\n return (\n <>\n \n Manage Users\n \n\n \n Realms {\" \"}\n \n \n \n \n \n {principals.map((principal, idx) => (\n \n \n \n \n \n \n {\n setPrincipals(\n principals.map((p, i) => (i === idx ? event.target.value : p))\n );\n }}\n />\n \n {\n let updated_principals = principals.filter((_, i) => i !== idx);\n setPrincipals(updated_principals);\n setUserToPrincipals(userToPrincipals.map(([user, allowed_principals]) =>\n [user, allowed_principals.filter(p => updated_principals.includes(p))]\n ))\n }}\n >\n \n \n \n \n ))}\n \n setPrincipals([...principals, \"\"])}\n >\n \n \n \n \n Cascara Users {\" \"}\n \n \n \n \n \n {userToPrincipals.map(([email, selectedPrincipals], idx: number) => (\n \n \n \n \n \n \n \n setUserToPrincipals(\n userToPrincipals.map((up, i) => (i === idx ? [event.target.value, up[1]] : up))\n )\n }\n />\n {principals.map((principal, i) => (\n \n setUserToPrincipals(\n userToPrincipals.map((up, i) => (\n i === idx ?\n [\n up[0],\n event.target.checked ? [...up[1], principal] : up[1].filter(p => p !== principal)\n ]\n :\n up)\n )\n )\n }\n />\n }\n label={principal === \"\" ? `Realm#${i}` : principal}\n labelPlacement=\"top\"\n />\n ))}\n \n setUserToPrincipals(userToPrincipals.filter((_, i) => i !== idx))}\n >\n \n \n \n \n ))}\n (setUserToPrincipals([...userToPrincipals, [\"\", []]]))}\n >\n \n \n \n \n \n SSH Username {\" \"}\n \n \n \n \n setSshUser(event.target.value)}\n />\n \n {\n axios\n .post(`${getDomain()}/api/v1/advanced_set_ssh_user`, {username: sshUser})\n .then(function (response: any) {\n if (response.data.status) {\n setSuccessCount(successCount => successCount + 1)\n }\n })\n .catch((error: any) => {\n console.log(error);\n window.location.reload();\n })\n axios\n .post(`${getDomain()}/api/v1/advanced_set_principals`, {principals})\n .then(function (response: any) {\n if (response.data.status) {\n setSuccessCount(successCount => successCount + 1)\n axios\n .post(`${getDomain()}/api/v1/advanced_set_emails`, Object.fromEntries(userToPrincipals))\n .then((response: any) => {\n if (response.data.status) {\n setSuccessCount(successCount => successCount + 1)\n } else {\n if (isAuthErrorResp(response)) {\n logout(props.history.push)\n } else {\n setToastData({message: response.data.body, type: \"error\"});\n }\n }\n })\n .catch((error: any) => {\n console.log(error);\n window.location.reload();\n });\n\n } else {\n if (isAuthErrorResp(response)) {\n logout(props.history.push)\n } else {\n setToastData({message: response.data.body, type: \"error\"});\n }\n }\n })\n .catch(function (error: any) {\n console.log(error);\n window.location.reload();\n });\n }}\n >\n Save\n \n setToastData((prev) => ({message: \"\", type: prev.type}))}/>\n \n );\n}\n","import React from \"react\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Stepper from \"@material-ui/core/Stepper\";\nimport Step from \"@material-ui/core/Step\";\nimport StepLabel from \"@material-ui/core/StepLabel\";\nimport Button from \"@material-ui/core/Button\";\nimport Typography from \"@material-ui/core/Typography\";\nimport SimpleInstallSSHKey from \"./SimpleInstallSSHKey\";\nimport DownloadCSSH from \"./DownloadCSSH\";\nimport OrgModeSwitcher from \"./OrgModeSwitcher\";\nimport AdvancedInstallSSHKey from \"./AdvancedInstallSSHKey\";\nimport {withRouter} from \"react-router\";\nimport HistoryProps from \"../../types/history\";\nimport SimpleManageUsers from \"./SimpleManageUsers\";\nimport AdvancedManageUsers from \"./AdvancedManageUsers\";\n\nconst useStyles = makeStyles(theme => ({\n appBar: {\n position: \"relative\"\n },\n layout: {\n width: \"auto\",\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(800 + theme.spacing(2) * 2)]: {\n width: 800,\n marginLeft: \"auto\",\n marginRight: \"auto\"\n }\n },\n paper: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n padding: theme.spacing(2),\n [theme.breakpoints.up(800 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(3)\n }\n },\n stepper: {\n padding: theme.spacing(3, 0, 5)\n },\n buttons: {\n display: \"flex\",\n justifyContent: \"flex-end\"\n },\n button: {\n marginTop: theme.spacing(3),\n marginLeft: theme.spacing(1)\n },\n}));\n\nconst steps = [\"Add Users\", \"Deploy One Key\", \"Download and SSH!\"];\n\nfunction getStepContent(history: HistoryProps, step: number) {\n switch (step) {\n case 0:\n return } advanced_component={}/>;\n case 1:\n return } advanced_component={}/>;\n case 2:\n return ;\n default:\n throw new Error(\"Unknown step\");\n }\n}\n\nexport default withRouter(Tutorial);\n\nfunction Tutorial(props: { history: HistoryProps }) {\n const classes = useStyles();\n const [activeStep, setActiveStep] = React.useState(0);\n\n const handleNext = () => {\n setActiveStep(activeStep + 1);\n window.scrollTo(0, 0);\n };\n\n const handleBack = () => {\n setActiveStep(activeStep - 1);\n window.scrollTo(0, 0);\n };\n\n return (\n \n \n
\n \n \n Get Started\n \n \n {steps.map(label => (\n \n {label}\n \n ))}\n \n \n {activeStep === steps.length ? (\n \n \n Done\n \n \n Get back to what matters, confident in your SSH security.\n \n \n ) : (\n \n {getStepContent(props.history, activeStep)}\n
\n {activeStep !== 0 && (\n \n )}\n \n {activeStep === steps.length - 1 ? \"Done\" : \"Next\"}\n \n
\n
\n )}\n
\n
\n
\n
\n );\n}\n","import React, {useEffect, useState} from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Stepper from \"@material-ui/core/Stepper\";\nimport Step from \"@material-ui/core/Step\";\nimport StepLabel from \"@material-ui/core/StepLabel\";\nimport Button from \"@material-ui/core/Button\";\nimport Link from \"@material-ui/core/Link\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {withRouter} from \"react-router\";\nimport {ToastData, default as ToastMessage} from \"../toastmessage/toastMessage\";\nimport {isAuthErrorResp, isLoggedIn, logout} from \"../../lib/sessionutils\";\nimport {getDomain} from \"../../lib/net\";\nimport HistoryProps from \"../../types/history\";\nimport {Divider} from \"@material-ui/core\";\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n layout: {\n width: \"auto\",\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(2) * 2)]: {\n width: 600,\n marginLeft: \"auto\",\n marginRight: \"auto\"\n }\n },\n paper: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n padding: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(3)\n }\n },\n}));\n\nexport default withRouter(Profile)\nfunction Profile(props: {history: HistoryProps}) {\n const classes = useStyles();\n\n const [userInfo, setUserInfo] = useState(null);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n useEffect(() => {\n axios\n .get(`${getDomain()}/api/v1/user_info`)\n .then((resp: any) => {\n if (resp.data.status) {\n if (resp.data.body) {\n setUserInfo(resp.data.body);\n }\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }, []);\n\n return (\n <>\n \n
\n \n \n Profile\n \n \n Name: {userInfo ? userInfo.fullname : 'Loading...'}\n \n Email: {userInfo ? userInfo.email : 'Loading...'}\n \n Org Name: {userInfo ? userInfo.org_name : 'Loading...'}\n \n\n \n
\n \n \n );\n}\n","import React, {useEffect, useState} from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Stepper from \"@material-ui/core/Stepper\";\nimport Step from \"@material-ui/core/Step\";\nimport StepLabel from \"@material-ui/core/StepLabel\";\nimport Button from \"@material-ui/core/Button\";\nimport Link from \"@material-ui/core/Link\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {withRouter} from \"react-router\";\nimport {ToastData, default as ToastMessage} from \"../toastmessage/toastMessage\";\nimport {isAuthErrorResp, isLoggedIn, logout} from \"../../lib/sessionutils\";\nimport {getDomain} from \"../../lib/net\";\nimport HistoryProps from \"../../types/history\";\nimport {Divider} from \"@material-ui/core\";\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n layout: {\n width: \"auto\",\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(2) * 2)]: {\n width: 600,\n marginLeft: \"auto\",\n marginRight: \"auto\"\n }\n },\n paper: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n padding: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(3)\n }\n },\n}));\n\nexport default withRouter(VerifyEmail)\nfunction VerifyEmail(props: {history: HistoryProps, match: {params: {token: string}}}) {\n const classes = useStyles();\n\n const [verified, setVerified] = useState(false);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n useEffect(() => {\n axios\n .get(`${getDomain()}/api/v1/verify_email?token=${props.match.params.token.split(':')[0]}&salt=${props.match.params.token.split(':')[1]}`)\n .then((resp: any) => {\n if (resp.data.status) {\n setVerified(true)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n })\n .catch(() => window.location.reload());\n }, []);\n\n\n\n return (\n <>\n \n
\n \n \n {verified ? (\n <>\n {'Email Verified. Please '}\n \n Login\n \n \n )\n : \"Verifying Email...\"}\n \n \n
\n \n \n );\n}\n","import React, {useEffect, useState} from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Stepper from \"@material-ui/core/Stepper\";\nimport Step from \"@material-ui/core/Step\";\nimport StepLabel from \"@material-ui/core/StepLabel\";\nimport Button from \"@material-ui/core/Button\";\nimport Link from \"@material-ui/core/Link\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {withRouter} from \"react-router\";\nimport {ToastData, default as ToastMessage} from \"../toastmessage/toastMessage\";\nimport {isAuthErrorResp, isLoggedIn, logout} from \"../../lib/sessionutils\";\nimport {getDomain} from \"../../lib/net\";\nimport HistoryProps from \"../../types/history\";\nimport {Divider} from \"@material-ui/core\";\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n layout: {\n width: \"auto\",\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(2) * 2)]: {\n width: 600,\n marginLeft: \"auto\",\n marginRight: \"auto\"\n }\n },\n paper: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n padding: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(3)\n }\n },\n}));\n\nexport default withRouter(Profile)\nfunction Profile(props: {history: HistoryProps, match: {params: {token: string}}}) {\n const classes = useStyles();\n\n return (\n <>\n \n
\n \n \n Password Reset\n \n \n Please contact security@cascarasecurity.com for assistance in resetting your password\n \n \n
\n \n );\n}\n","import React, {useEffect, useState} from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Button from \"@material-ui/core/Button\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport Grid from '@material-ui/core/Grid';\nimport {withRouter} from \"react-router\";\nimport {ToastData, default as ToastMessage} from \"../toastmessage/toastMessage\";\nimport {isAuthErrorResp, logout} from \"../../lib/sessionutils\";\nimport {getDomain} from \"../../lib/net\";\nimport HistoryProps from \"../../types/history\";\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n layout: {\n width: \"auto\",\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(2) * 2)]: {\n width: \"80%\",\n marginLeft: \"auto\",\n marginRight: \"auto\"\n }\n },\n paper: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n padding: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(3)\n },\n overflowX: \"auto\"\n },\n table: {\n minWidth: '80%',\n },\n}));\n\ntype Log = any\n\nexport default withRouter(AuditLogs)\nfunction AuditLogs(props: {history: HistoryProps, match: {params: {token: string}}}) {\n const classes = useStyles();\n\n const [logs, setLogs] = useState | null>(null);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n useEffect(() => {\n axios\n .get(`${getDomain()}/api/v1/get_logs?type=text&limit=50`)\n .then((resp: any) => {\n if (resp.data.status) {\n setLogs(resp.data.body)\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }, []);\n\n return (\n <>\n \n
\n \n \n Audit Logs\n \n \n \n
\n \n \n\n Download plaintext logs\n \n
\n \n
\n \n \n\n Download JSON logs\n \n
\n
\n\n \n \n \n IP Address\n Time\n Log Line\n \n \n \n {logs ? logs.map(log => (\n \n \n {log[0]}\n \n {log[1]}\n {log[2]}\n \n )) : (\n \n \n Loading...\n \n Loading...\n Loading...\n \n )}\n \n
\n
\n
\n \n \n );\n}\n","import React, {useEffect, useState} from \"react\";\nimport Grid from \"@material-ui/core/Grid\";\nimport TextField from \"@material-ui/core/TextField\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport {InputLabel, makeStyles} from \"@material-ui/core\";\nimport Select from \"@material-ui/core/Select\";\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {default as ToastMessage, ToastData} from \"../toastmessage/toastMessage\";\nimport {getDomain} from \"../../lib/net\";\nimport {isAuthErrorResp, logout} from \"../../lib/sessionutils\";\nimport {RouteComponentProps, withRouter} from \"react-router\";\nimport HistoryProps from \"../../types/history\";\nimport Button from \"@material-ui/core/Button\";\n\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n padding: {\n padding: \"10px\"\n },\n flex: {\n display: \"flex\",\n },\n}));\n\ntype Expiration = {\n 'number': number\n 'unit': 's' | 'h' | 'm' | 'd'\n}\n\ntype Props = RouteComponentProps<{}> & {\n initExpiration: Expiration\n getEndpoint: string\n setEndpoint: string\n description: string\n history: HistoryProps\n}\n\nexport default withRouter(ExpirationPicker)\nfunction ExpirationPicker(props: Props) {\n const classes = useStyles()\n\n const [expiration, setExpiration] = useState(props.initExpiration);\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n useEffect(() => {\n axios\n .get(`${getDomain()}${props.getEndpoint}`)\n .then((resp: any) => {\n if (resp.data.status) {\n if (resp.data.body) {\n setExpiration(resp.data.body);\n }\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }, [props.getEndpoint, props.setEndpoint]);\n\n const inputLabel = React.useRef(null);\n const [labelWidth, setLabelWidth] = React.useState(40);\n React.useEffect(() => {\n inputLabel && inputLabel.current && setLabelWidth(inputLabel.current.offsetWidth);\n }, []);\n\n return (\n <>\n \n setExpiration((e) => ({...e, number: event.target.value} as any))}\n type=\"number\"\n margin=\"normal\"\n variant=\"outlined\"\n className={classes.padding}\n />\n \n Unit\n setExpiration((e) => ({...e, unit: event.target.value}) as any)}\n input={}\n >\n Seconds\n Minutes\n Hours\n Days\n \n \n \n {\n axios\n .post(`${getDomain()}${props.setEndpoint}`, expiration)\n .then(function(response: any) {\n if (response.data.status) {\n setToastData({message: \"Saved!\", type: \"success\"})\n } else {\n if (isAuthErrorResp(response)) {\n logout(props.history.push)\n } else {\n setToastData({message: response.data.body, type: \"error\"});\n }\n }\n })\n .catch(function(error: any) {\n console.log(error);\n window.location.reload();\n });\n }}\n >\n Save\n \n \n {props.description}\n \n \n \n\n )\n}","import React, {useEffect, useState} from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {withRouter} from \"react-router\";\nimport {ToastData, default as ToastMessage} from \"../toastmessage/toastMessage\";\nimport {isAuthErrorResp, isLoggedIn, logout} from \"../../lib/sessionutils\";\nimport ExpirationPicker from \"../expirationpicker/expirationpicker\";\nimport HistoryProps from \"../../types/history\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Tab from \"@material-ui/core/Tab\";\nimport Tabs from \"@material-ui/core/Tabs\";\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport VpnKeyIcon from '@material-ui/icons/VpnKey';\nimport {InputLabel} from \"@material-ui/core\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Grid from \"@material-ui/core/Grid\";\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\n\nconst useStyles = makeStyles(theme => ({\n layout: {\n width: \"auto\",\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(2) * 2)]: {\n width: 600,\n marginLeft: \"auto\",\n marginRight: \"auto\"\n }\n },\n paper: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n padding: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(3)\n }\n },\n padding: {\n padding: \"10px\"\n },\n flex: {\n display: \"flex\",\n },\n}));\n\nexport default withRouter(Expiration)\nfunction Expiration(props: {history: HistoryProps}) {\n const classes = useStyles();\n\n const [tab, setTab] = useState(0);\n\n return (\n <>\n \n
\n \n \n Session Length\n \n setTab(val)}\n variant=\"fullWidth\"\n indicatorColor=\"secondary\"\n textColor=\"secondary\"\n >\n } label=\"Key\" />\n } label=\"User\" />\n \n {tab == 0 ? (\n \n ) : (\n \n )}\n \n
\n \n );\n}\n","import React, {useEffect, useState} from \"react\";\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {withRouter} from \"react-router\";\nimport {ToastData, default as ToastMessage} from \"../toastmessage/toastMessage\";\nimport {isAuthErrorResp, isLoggedIn, logout} from \"../../lib/sessionutils\";\nimport ExpirationPicker from \"../expirationpicker/expirationpicker\";\nimport HistoryProps from \"../../types/history\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Tab from \"@material-ui/core/Tab\";\nimport Tabs from \"@material-ui/core/Tabs\";\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport VpnKeyIcon from '@material-ui/icons/VpnKey';\nimport {InputLabel} from \"@material-ui/core\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Grid from \"@material-ui/core/Grid\";\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\nimport Box from \"@material-ui/core/Box\";\nimport {green} from \"@material-ui/core/colors\";\nimport Button from \"@material-ui/core/Button/Button\";\nimport {getDomain} from \"../../lib/net\";\n\nconst axios = require(\"axios\");\n\nconst useStyles = makeStyles(theme => ({\n layout: {\n width: \"auto\",\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(800 + theme.spacing(2) * 2)]: {\n width: 800,\n marginLeft: \"auto\",\n marginRight: \"auto\"\n }\n },\n paper: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n padding: theme.spacing(2),\n [theme.breakpoints.up(800 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(3)\n }\n },\n nestedPaper: {\n padding: theme.spacing(2),\n [theme.breakpoints.up(800 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(4),\n padding: theme.spacing(3)\n },\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n flexGrow: {\n flexGrow: 1\n }\n}));\n\nexport default withRouter(LevelUp)\n\nfunction LevelUp(props: { history: HistoryProps }) {\n const classes = useStyles();\n\n const [toastData, setToastData] = useState({message: \"\", type: \"error\"});\n\n return (\n <>\n \n
\n \n \n Level Up Your Security\n \n
\n \n \n \n \n 2FA for SSH\n \n \n Configure OpenSSH to require 2FA for all SSH connections\n \n
\n
\n \n \n Coming Soon\n \n \n \n \n \n \n \n Deploy a Bastion\n \n \n Deploy a special server as a jump box in order to isolate your servers from the\n internet\n \n
\n
\n\n \n \n Coming Soon\n \n \n \n \n \n \n \n Create Realms\n \n \n Define realms of servers (such as production or staging) and grant limited\n access\n to cssh users based off of the permissions they need\n \n
\n
\n\n {\n axios.post(`${getDomain()}/api/v1/set_org_mode`, {org_mode: 'ADVANCED'})\n .then((resp: any) => {\n if (resp.data.status) {\n props.history.push(\"/console\")\n } else {\n if (isAuthErrorResp(resp)) {\n logout(props.history.push)\n } else {\n setToastData({message: resp.data.body, type: \"error\"});\n }\n }\n })\n .catch(() => window.location.reload());\n }}\n >\n \n Enable\n \n \n \n \n \n
\n
\n setToastData((prev) => ({message: \"\", type: prev.type}))}/>\n\n
\n \n )\n ;\n}\n","import React, { useEffect } from \"react\";\nimport ReactGA, { FieldsObject } from \"react-ga\";\nimport { RouteComponentProps } from \"react-router-dom\";\n\nimport GoogleAnalytics from \"react-ga\";\n\nGoogleAnalytics.initialize(\"UA-144207374-2\");\n\nexport const withTracker =

(\n WrappedComponent: React.ComponentType

,\n options: FieldsObject = {},\n) => {\n const trackPage = (page: string) => {\n ReactGA.set({ page, ...options });\n ReactGA.pageview(page);\n };\n\n return (props: P) => {\n useEffect(() => {\n trackPage(props.location.pathname);\n }, [props.location.pathname]);\n\n return ;\n };\n}\n","import React from \"react\";\nimport { BrowserRouter as Router, Route, Redirect } from \"react-router-dom\";\nimport SignIn from \"./pages/signin/signin\";\nimport SignUp from \"./pages/signup/signup\";\nimport MenuBar from \"./pages/menubar/menubar\";\nimport Tutorial from \"./pages/tutorial/tutorial\";\nimport Profile from \"./pages/profile/profile\";\nimport VerifyEmail from \"./pages/verifyemail/verifyemail\";\nimport ResetPassword from \"./pages/resetpassword/resetpassword\";\nimport AuditLogs from \"./pages/auditlogs/auditlogs\";\nimport Expiration from \"./pages/expiration/expiration\";\nimport LevelUp from \"./pages/levelup/levelup\";\nimport AdvancedConfig from \"./pages/tutorial/AdvancedManageUsers\";\nimport {withTracker} from \"./lib/googleanalytics\";\nconst axios = require(\"axios\");\n\nfunction MyRouter() {\n axios.defaults.withCredentials = true;\n return (\n \n

\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n );\n}\n\nfunction Landing() {\n return ;\n}\n\nexport default MyRouter;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(, document.getElementById(\"root\"));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}