Jamie Curnow 2 mēneši atpakaļ
vecāks
revīzija
9339626933

+ 1 - 1
backend/internal/stream.js

@@ -348,7 +348,7 @@ const internalStream = {
 						// Add to audit log
 						return internalAuditLog.add(access, {
 							action: "disabled",
-							object_type: "stream-host",
+							object_type: "stream",
 							object_id: row.id,
 							meta: _.omit(row, omissions()),
 						});

+ 6 - 1
frontend/src/components/Table/Formatter/EventFormatter.tsx

@@ -1,4 +1,4 @@
-import { IconBoltOff, IconUser } from "@tabler/icons-react";
+import { IconBoltOff, IconDisc, IconUser } from "@tabler/icons-react";
 import type { AuditLog } from "src/api/backend";
 import { DateTimeFormat, intl } from "src/locale";
 
@@ -12,6 +12,8 @@ const getEventValue = (event: AuditLog) => {
 			return event.meta?.name;
 		case "dead-host":
 			return event.meta?.domainNames?.join(", ") || "N/A";
+		case "stream":
+			return event.meta?.incomingPort || "N/A";
 		default:
 			return `UNKNOWN EVENT TYPE: ${event.objectType}`;
 	}
@@ -38,6 +40,9 @@ const getIcon = (row: AuditLog) => {
 		case "dead-host":
 			ico = <IconBoltOff size={16} className={c} />;
 			break;
+		case "stream":
+			ico = <IconDisc size={16} className={c} />;
+			break;
 	}
 
 	return ico;

+ 9 - 0
frontend/src/locale/lang/en.json

@@ -72,11 +72,15 @@
   "error.passwords-must-match": "Passwords must match",
   "error.required": "This is required",
   "event.created-dead-host": "Created 404 Host",
+  "event.created-stream": "Created Stream",
   "event.created-user": "Created User",
   "event.deleted-dead-host": "Deleted 404 Host",
+  "event.deleted-stream": "Deleted Stream",
   "event.deleted-user": "Deleted User",
   "event.disabled-dead-host": "Disabled 404 Host",
+  "event.disabled-stream": "Disabled Stream",
   "event.enabled-dead-host": "Enabled 404 Host",
+  "event.enabled-stream": "Enabled Stream",
   "event.updated-user": "Updated User",
   "footer.github-fork": "Fork me on Github",
   "hosts.title": "Hosts",
@@ -95,6 +99,9 @@
   "notification.host-deleted": "Host has been deleted",
   "notification.host-disabled": "Host has been disabled",
   "notification.host-enabled": "Host has been enabled",
+  "notification.stream-deleted": "Stream has been deleted",
+  "notification.stream-disabled": "Stream has been disabled",
+  "notification.stream-enabled": "Stream has been enabled",
   "notification.success": "Success",
   "notification.user-deleted": "User has been deleted",
   "notification.user-disabled": "User has been disabled",
@@ -130,6 +137,8 @@
   "setup.title": "Welcome!",
   "sign-in": "Sign in",
   "ssl-certificate": "SSL Certificate",
+  "stream.delete.content": "Are you sure you want to delete this Stream?",
+  "stream.delete.title": "Delete Stream",
   "stream.forward-host": "Forward Host",
   "stream.forward-port": "Forward Port",
   "stream.incoming-port": "Incoming Port",

+ 30 - 3
frontend/src/locale/src/en.json

@@ -215,21 +215,33 @@
 	"event.created-dead-host": {
 		"defaultMessage": "Created 404 Host"
 	},
+	"event.created-stream": {
+		"defaultMessage": "Created Stream"
+	},
 	"event.created-user": {
 		"defaultMessage": "Created User"
 	},
 	"event.deleted-dead-host": {
 		"defaultMessage": "Deleted 404 Host"
 	},
+	"event.deleted-stream": {
+		"defaultMessage": "Deleted Stream"
+	},
 	"event.deleted-user": {
 		"defaultMessage": "Deleted User"
 	},
 	"event.disabled-dead-host": {
 		"defaultMessage": "Disabled 404 Host"
 	},
+	"event.disabled-stream": {
+		"defaultMessage": "Disabled Stream"
+	},
 	"event.enabled-dead-host": {
 		"defaultMessage": "Enabled 404 Host"
 	},
+	"event.enabled-stream": {
+		"defaultMessage": "Enabled Stream"
+	},
 	"event.updated-user": {
 		"defaultMessage": "Updated User"
 	},
@@ -281,15 +293,24 @@
 	"notification.host-deleted": {
 		"defaultMessage": "Host has been deleted"
 	},
-	"notification.user-deleted": {
-		"defaultMessage": "User has been deleted"
-	},
 	"notification.host-disabled": {
 		"defaultMessage": "Host has been disabled"
 	},
 	"notification.host-enabled": {
 		"defaultMessage": "Host has been enabled"
 	},
+	"notification.stream-deleted": {
+		"defaultMessage": "Stream has been deleted"
+	},
+	"notification.stream-disabled": {
+		"defaultMessage": "Stream has been disabled"
+	},
+	"notification.stream-enabled": {
+		"defaultMessage": "Stream has been enabled"
+	},
+	"notification.user-deleted": {
+		"defaultMessage": "User has been deleted"
+	},
 	"notification.user-disabled": {
 		"defaultMessage": "User has been disabled"
 	},
@@ -392,6 +413,12 @@
 	"ssl-certificate": {
 		"defaultMessage": "SSL Certificate"
 	},
+	"stream.delete.content": {
+		"defaultMessage": "Are you sure you want to delete this Stream?"
+	},
+	"stream.delete.title": {
+		"defaultMessage": "Delete Stream"
+	},
 	"stream.forward-host": {
 		"defaultMessage": "Forward Host"
 	},

+ 16 - 9
frontend/src/pages/Nginx/Streams/TableWrapper.tsx

@@ -2,6 +2,7 @@ import { IconSearch } from "@tabler/icons-react";
 import { useQueryClient } from "@tanstack/react-query";
 import { useState } from "react";
 import Alert from "react-bootstrap/Alert";
+import { deleteStream, toggleStream } from "src/api/backend";
 import { Button, LoadingPage } from "src/components";
 import { useStreams } from "src/hooks";
 import { intl } from "src/locale";
@@ -25,22 +26,27 @@ export default function TableWrapper() {
 	}
 
 	const handleDelete = async () => {
-		// await deleteDeadHost(deleteId);
-		showSuccess(intl.formatMessage({ id: "notification.host-deleted" }));
+		await deleteStream(deleteId);
+		showSuccess(intl.formatMessage({ id: "notification.stream-deleted" }));
 	};
 
 	const handleDisableToggle = async (id: number, enabled: boolean) => {
-		// await toggleDeadHost(id, enabled);
-		queryClient.invalidateQueries({ queryKey: ["dead-hosts"] });
-		queryClient.invalidateQueries({ queryKey: ["dead-host", id] });
-		showSuccess(intl.formatMessage({ id: enabled ? "notification.host-enabled" : "notification.host-disabled" }));
+		await toggleStream(id, enabled);
+		queryClient.invalidateQueries({ queryKey: ["streams"] });
+		queryClient.invalidateQueries({ queryKey: ["stream", id] });
+		showSuccess(
+			intl.formatMessage({ id: enabled ? "notification.stream-enabled" : "notification.stream-disabled" }),
+		);
 	};
 
 	let filtered = null;
 	if (search && data) {
-		filtered = data?.filter((_item) => {
-			return true;
-			// return item.domainNames.some((domain: string) => domain.toLowerCase().includes(search));
+		filtered = data?.filter((item) => {
+			return (
+				`${item.incomingPort}`.includes(search) ||
+				`${item.forwardingPort}`.includes(search) ||
+				item.forwardingHost.includes(search)
+			);
 		});
 	} else if (search !== "") {
 		// this can happen if someone deletes the last item while searching
@@ -82,6 +88,7 @@ export default function TableWrapper() {
 				<Table
 					data={filtered ?? data ?? []}
 					isFetching={isFetching}
+					isFiltered={!!filtered}
 					onEdit={(id: number) => setEditId(id)}
 					onDelete={(id: number) => setDeleteId(id)}
 					onDisableToggle={handleDisableToggle}