diff options
author | JJ | 2024-07-19 00:38:57 +0000 |
---|---|---|
committer | JJ | 2024-07-19 00:38:57 +0000 |
commit | c5434cccee8661de3082c0c777375eb8e6f76865 (patch) | |
tree | 772c5a5e821c8b731a97f3b559c79c039bbc29df /frontend/src/components/objects | |
parent | 74b133ca50b094231721e82ac94448e28b0aa377 (diff) |
remove unnecessary jsx stuff
Diffstat (limited to 'frontend/src/components/objects')
-rw-r--r-- | frontend/src/components/objects/Connection.jsx | 116 | ||||
-rw-r--r-- | frontend/src/components/objects/ConnectionMatchedRules.jsx | 51 | ||||
-rw-r--r-- | frontend/src/components/objects/CopyLinkPopover.jsx | 54 | ||||
-rw-r--r-- | frontend/src/components/objects/LinkPopover.jsx | 51 |
4 files changed, 0 insertions, 272 deletions
diff --git a/frontend/src/components/objects/Connection.jsx b/frontend/src/components/objects/Connection.jsx deleted file mode 100644 index 113ed21..0000000 --- a/frontend/src/components/objects/Connection.jsx +++ /dev/null @@ -1,116 +0,0 @@ -/* - * This file is part of caronte (https://github.com/eciavatta/caronte). - * Copyright (c) 2020 Emiliano Ciavatta. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -import React, {Component} from "react"; -import backend from "../../backend"; -import dispatcher from "../../dispatcher"; -import {dateTimeToTime, durationBetween, formatSize} from "../../utils"; -import CommentDialog from "../dialogs/CommentDialog"; -import ButtonField from "../fields/ButtonField"; -import TextField from "../fields/TextField"; -import "./Connection.scss"; -import CopyLinkPopover from "./CopyLinkPopover"; -import LinkPopover from "./LinkPopover"; - -import classNames from 'classnames'; - -class Connection extends Component { - - state = { - update: false - }; - - handleAction = (name, comment) => { - if (name === "mark") { - const marked = this.props.data.marked; - backend.post(`/api/connections/${this.props.data.id}/${marked ? "unmark" : "mark"}`) - .then((_) => { - this.props.onMarked(!marked); - this.setState({update: true}); - }); - } else if (name === "comment") { - this.props.onCommented(comment); - this.setState({showCommentDialog: false}); - } - }; - - render() { - let conn = this.props.data; - let serviceName = "/dev/null"; - let serviceColor = "#0f192e"; - if (this.props.services[conn["port_dst"]]) { - const service = this.props.services[conn["port_dst"]]; - serviceName = service.name; - serviceColor = service.color; - } - let startedAt = new Date(conn["started_at"]); - let closedAt = new Date(conn["closed_at"]); - let processedAt = new Date(conn["processed_at"]); - let timeInfo = <div> - <span>Started at {startedAt.toLocaleDateString() + " " + startedAt.toLocaleTimeString()}</span><br/> - <span>Processed at {processedAt.toLocaleDateString() + " " + processedAt.toLocaleTimeString()}</span><br/> - <span>Closed at {closedAt.toLocaleDateString() + " " + closedAt.toLocaleTimeString()}</span> - </div>; - - const commentPopoverContent = <div style={{"width": "250px"}}> - <span>Click to <strong>{conn.comment ? "edit" : "add"}</strong> comment</span> - {conn.comment && <TextField rows={3} value={conn.comment} readonly/>} - </div>; - - return ( - <tr className={classNames("connection", {"connection-selected": this.props.selected}, - {"has-matched-rules": conn.matched_rules.length > 0})}> - <td> - <span className="connection-service"> - <ButtonField small fullSpan color={serviceColor} name={serviceName} - onClick={() => dispatcher.dispatch("connections_filters", - {"service_port": conn["port_dst"].toString()})}/> - </span> - </td> - <td className="clickable" onClick={this.props.onSelected}>{conn["ip_src"]}</td> - <td className="clickable" onClick={this.props.onSelected}>{conn["port_src"]}</td> - <td className="clickable" onClick={this.props.onSelected}>{conn["ip_dst"]}</td> - <td className="clickable" onClick={this.props.onSelected}>{conn["port_dst"]}</td> - <td className="clickable" onClick={this.props.onSelected}> - <LinkPopover text={dateTimeToTime(conn["started_at"])} content={timeInfo} placement="right"/> - </td> - <td className="clickable" onClick={this.props.onSelected}>{durationBetween(startedAt, closedAt)}</td> - <td className="clickable" onClick={this.props.onSelected}>{formatSize(conn["client_bytes"])}</td> - <td className="clickable" onClick={this.props.onSelected}>{formatSize(conn["server_bytes"])}</td> - <td className="connection-actions"> - <LinkPopover text={<span className={classNames("connection-icon", {"icon-enabled": conn.marked})} - onClick={() => this.handleAction("mark")}>!!</span>} - content={<span>Mark this connection</span>} placement="right"/> - <LinkPopover text={<span className={classNames("connection-icon", {"icon-enabled": conn.comment})} - onClick={() => this.setState({showCommentDialog: true})}>@</span>} - content={commentPopoverContent} placement="right"/> - <CopyLinkPopover text="#" value={conn.id} - textClassName={classNames("connection-icon", {"icon-enabled": conn.hidden})}/> - { - this.state.showCommentDialog && - <CommentDialog onSave={(comment) => this.handleAction("comment", comment)} - initialComment={conn.comment} connectionId={conn.id}/> - } - - </td> - </tr> - ); - } - -} - -export default Connection; diff --git a/frontend/src/components/objects/ConnectionMatchedRules.jsx b/frontend/src/components/objects/ConnectionMatchedRules.jsx deleted file mode 100644 index a69cad8..0000000 --- a/frontend/src/components/objects/ConnectionMatchedRules.jsx +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of caronte (https://github.com/eciavatta/caronte). - * Copyright (c) 2020 Emiliano Ciavatta. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -import React, {Component} from "react"; -import {withRouter} from "react-router-dom"; -import dispatcher from "../../dispatcher"; -import ButtonField from "../fields/ButtonField"; -import "./ConnectionMatchedRules.scss"; - -class ConnectionMatchedRules extends Component { - - onMatchedRulesSelected = (id) => { - const params = new URLSearchParams(this.props.location.search); - const rules = params.getAll("matched_rules"); - if (!rules.includes(id)) { - rules.push(id); - dispatcher.dispatch("connections_filters", {"matched_rules": rules}); - } - }; - - render() { - const matchedRules = this.props.matchedRules.map((mr) => { - const rule = this.props.rules.find((r) => r.id === mr); - return <ButtonField key={mr} onClick={() => this.onMatchedRulesSelected(rule.id)} name={rule.name} - color={rule.color} small/>; - }); - - return ( - <tr className="connection-matches"> - <td className="row-label">matched_rules:</td> - <td className="rule-buttons" colSpan={9}>{matchedRules}</td> - </tr> - ); - } -} - -export default withRouter(ConnectionMatchedRules); diff --git a/frontend/src/components/objects/CopyLinkPopover.jsx b/frontend/src/components/objects/CopyLinkPopover.jsx deleted file mode 100644 index b951603..0000000 --- a/frontend/src/components/objects/CopyLinkPopover.jsx +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of caronte (https://github.com/eciavatta/caronte). - * Copyright (c) 2020 Emiliano Ciavatta. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -import React, {Component} from "react"; -import TextField from "../fields/TextField"; -import LinkPopover from "./LinkPopover"; - -class CopyLinkPopover extends Component { - - state = {}; - - constructor(props) { - super(props); - - this.copyTextarea = React.createRef(); - } - - handleClick = () => { - this.copyTextarea.current.select(); - document.execCommand("copy"); - this.setState({copiedMessage: true}); - setTimeout(() => this.setState({copiedMessage: false}), 3000); - }; - - render() { - const copyPopoverContent = <div style={{"width": "250px"}}> - {this.state.copiedMessage ? <span><strong>Copied!</strong></span> : - <span>Click to <strong>copy</strong></span>} - <TextField readonly rows={2} value={this.props.value} textRef={this.copyTextarea}/> - </div>; - - return ( - <LinkPopover text={<span className={this.props.textClassName} - onClick={this.handleClick}>{this.props.text}</span>} - content={copyPopoverContent} placement="right"/> - ); - } -} - -export default CopyLinkPopover; diff --git a/frontend/src/components/objects/LinkPopover.jsx b/frontend/src/components/objects/LinkPopover.jsx deleted file mode 100644 index 551a819..0000000 --- a/frontend/src/components/objects/LinkPopover.jsx +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of caronte (https://github.com/eciavatta/caronte). - * Copyright (c) 2020 Emiliano Ciavatta. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -import React, {Component} from "react"; -import {OverlayTrigger, Popover} from "react-bootstrap"; -import {randomClassName} from "../../utils"; -import "./LinkPopover.scss"; - -class LinkPopover extends Component { - - constructor(props) { - super(props); - - this.id = `link-overlay-${randomClassName()}`; - } - - render() { - const popover = ( - <Popover id={this.id}> - {this.props.title && <Popover.Title as="h3">{this.props.title}</Popover.Title>} - <Popover.Content> - {this.props.content} - </Popover.Content> - </Popover> - ); - - return (this.props.content ? - <OverlayTrigger trigger={["hover", "focus"]} placement={this.props.placement || "top"} - overlay={popover}> - <span className="link-popover">{this.props.text}</span> - </OverlayTrigger> : - <span className="link-popover-empty">{this.props.text}</span> - ); - } -} - -export default LinkPopover; |