aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/components/objects
diff options
context:
space:
mode:
authorJJ2024-07-19 00:38:57 +0000
committerJJ2024-07-19 00:38:57 +0000
commitc5434cccee8661de3082c0c777375eb8e6f76865 (patch)
tree772c5a5e821c8b731a97f3b559c79c039bbc29df /frontend/src/components/objects
parent74b133ca50b094231721e82ac94448e28b0aa377 (diff)
remove unnecessary jsx stuff
Diffstat (limited to 'frontend/src/components/objects')
-rw-r--r--frontend/src/components/objects/Connection.jsx116
-rw-r--r--frontend/src/components/objects/ConnectionMatchedRules.jsx51
-rw-r--r--frontend/src/components/objects/CopyLinkPopover.jsx54
-rw-r--r--frontend/src/components/objects/LinkPopover.jsx51
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;