feat: remove iprooms, add rooms.txt
This commit is contained in:
31
index.ts
31
index.ts
@@ -1,16 +1,8 @@
|
|||||||
import type { ServerWebSocket } from "bun";
|
import type { ServerWebSocket } from "bun";
|
||||||
import { callTicket, completeTicket, getCurrentTicket, getDisplayTickets, getLogEntries, getTicket, noShowTicket } from "./redis";
|
import { callTicket, completeTicket, getCurrentTicket, getDisplayTickets, getLogEntries, getTicket, noShowTicket } from "./redis";
|
||||||
|
|
||||||
let IP_TO_ROOMS: Record<string, string> = {};
|
const roomstxt = await Bun.file("./rooms.txt").text();
|
||||||
|
const ROOMS = roomstxt.split("\n");
|
||||||
const iprooms = await Bun.file("./iprooms.csv").text();
|
|
||||||
const lines = iprooms.split("\n");
|
|
||||||
for (const line of lines.slice(1)) {
|
|
||||||
const [ip, room] = line.split(",");
|
|
||||||
if (ip && room) {
|
|
||||||
IP_TO_ROOMS[ip.trim()] = room.trim();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const MOTD = process.env.MOTD || "50;";
|
const MOTD = process.env.MOTD || "50;";
|
||||||
|
|
||||||
@@ -36,22 +28,7 @@ Bun.serve({
|
|||||||
async message(ws, message) {
|
async message(ws, message) {
|
||||||
console.log("Received message:", message);
|
console.log("Received message:", message);
|
||||||
const data = JSON.parse(message.toString());
|
const data = JSON.parse(message.toString());
|
||||||
if (data.type === "hello") {}
|
if (data.type === "hello") {
|
||||||
else if (data.type === "my-room") {
|
|
||||||
console.log("Client requested room for IP:", ws.remoteAddress);
|
|
||||||
const room = IP_TO_ROOMS[ws.remoteAddress];
|
|
||||||
if (!room) {
|
|
||||||
return void ws.send(JSON.stringify({ type: "error", code: -1, message: "No room" }));
|
|
||||||
}
|
|
||||||
ws.send(JSON.stringify({ type: "my-room", room }) );
|
|
||||||
// } else if (data.type === "create-ticket") {
|
|
||||||
// const ticket = await getTicket(data.ticket);
|
|
||||||
// if(!ticket || ticket.status == "completed" || ticket.status == "no-show") {
|
|
||||||
// await createTicket(data.ticket);
|
|
||||||
// ws.send(JSON.stringify({ type: "create-ticket", status: "created", ticket, num: data.ticket }) );
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// ws.send(JSON.stringify({ type: "error", code: -2, message: "Ticket already exists and is not completed or no-show", ticket, num: data.ticket }));
|
|
||||||
} else if (data.type === "call-ticket") {
|
} else if (data.type === "call-ticket") {
|
||||||
// const ticket = await getTicket(data.ticket);
|
// const ticket = await getTicket(data.ticket);
|
||||||
// if(!ticket || ticket.status == "completed" || ticket.status == "no-show") {
|
// if(!ticket || ticket.status == "completed" || ticket.status == "no-show") {
|
||||||
@@ -115,6 +92,8 @@ Bun.serve({
|
|||||||
console.log("Added display socket. Total:", displaySockets.length);
|
console.log("Added display socket. Total:", displaySockets.length);
|
||||||
ws.send(JSON.stringify({ type: "display", tickets: await getDisplayTickets(), motd: MOTD }));
|
ws.send(JSON.stringify({ type: "display", tickets: await getDisplayTickets(), motd: MOTD }));
|
||||||
}
|
}
|
||||||
|
} else if (data.type == "rooms") {
|
||||||
|
ws.send(JSON.stringify({ type: "rooms", rooms: ROOMS }));
|
||||||
}
|
}
|
||||||
}, // a message is received
|
}, // a message is received
|
||||||
open(ws) {
|
open(ws) {
|
||||||
|
|||||||
@@ -2,8 +2,9 @@
|
|||||||
import SearchForm from "./search-form.svelte";
|
import SearchForm from "./search-form.svelte";
|
||||||
import VersionSwitcher from "./switcher.svelte";
|
import VersionSwitcher from "./switcher.svelte";
|
||||||
import * as Sidebar from "$lib/components/ui/sidebar/index.js";
|
import * as Sidebar from "$lib/components/ui/sidebar/index.js";
|
||||||
import type { ComponentProps } from "svelte";
|
import { onMount, type ComponentProps } from "svelte";
|
||||||
import { page } from "$app/state";
|
import { page } from "$app/state";
|
||||||
|
import { eventTarget } from "./ws.svelte";
|
||||||
let { ref = $bindable(null), ...restProps }: ComponentProps<typeof Sidebar.Root> = $props();
|
let { ref = $bindable(null), ...restProps }: ComponentProps<typeof Sidebar.Root> = $props();
|
||||||
|
|
||||||
type NavData = {
|
type NavData = {
|
||||||
@@ -36,6 +37,10 @@
|
|||||||
url: "#",
|
url: "#",
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
|
title: "Laden...",
|
||||||
|
url: "#"
|
||||||
|
},
|
||||||
|
/*{
|
||||||
title: "1",
|
title: "1",
|
||||||
url: "/room/1",
|
url: "/room/1",
|
||||||
},
|
},
|
||||||
@@ -74,7 +79,7 @@
|
|||||||
{
|
{
|
||||||
title: "Empfang 2",
|
title: "Empfang 2",
|
||||||
url: "/room/Empfang%202",
|
url: "/room/Empfang%202",
|
||||||
},
|
},*/
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
@@ -103,10 +108,10 @@
|
|||||||
title: "Logs",
|
title: "Logs",
|
||||||
url: "/log",
|
url: "/log",
|
||||||
},
|
},
|
||||||
{
|
/*{
|
||||||
title: "Admin",
|
title: "Admin",
|
||||||
url: "/admin",
|
url: "/admin",
|
||||||
},
|
},*/
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -136,17 +141,37 @@
|
|||||||
title: "Logs",
|
title: "Logs",
|
||||||
url: "/log",
|
url: "/log",
|
||||||
},
|
},
|
||||||
{
|
/*{
|
||||||
title: "Admin",
|
title: "Admin",
|
||||||
url: "/",
|
url: "/",
|
||||||
isActive: true
|
isActive: true
|
||||||
},
|
},*/
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
const data = $derived(isAdmin ? adminData : regularData);
|
const data = $derived(isAdmin ? adminData : regularData);
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
eventTarget.addEventListener("rooms", (e) => {
|
||||||
|
if(e instanceof CustomEvent) {
|
||||||
|
const rooms = e.detail.rooms;
|
||||||
|
data.navMain[0].items = rooms.map((room: string) => ({
|
||||||
|
title: room,
|
||||||
|
url: `/room/${encodeURIComponent(room)}`
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
eventTarget.addEventListener("hello", (e) => {
|
||||||
|
eventTarget.dispatchEvent(new CustomEvent("send", {
|
||||||
|
detail: {
|
||||||
|
type: "rooms"
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
<Sidebar.Root {...restProps} bind:ref variant="floating">
|
<Sidebar.Root {...restProps} bind:ref variant="floating">
|
||||||
<Sidebar.Header>
|
<Sidebar.Header>
|
||||||
|
|||||||
@@ -1,43 +1,14 @@
|
|||||||
<script lang="ts">
|
<script>
|
||||||
import { goto } from "$app/navigation";
|
import { sidebarState } from "$lib/sidebar.svelte";
|
||||||
import { eventTarget } from "$lib/ws.svelte";
|
import { onDestroy, onMount } from "svelte";
|
||||||
import { onMount } from "svelte";
|
|
||||||
|
|
||||||
let noRoom = $state(false);
|
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
// ws.addEventListener("message", (e) => {
|
sidebarState.open = true;
|
||||||
// const msg = JSON.parse(e.data);
|
})
|
||||||
// if(msg.type === "my-room") {
|
|
||||||
// goto(`/room/${msg.room}`);
|
onDestroy(() => {
|
||||||
// }
|
sidebarState.open = false;
|
||||||
// });
|
|
||||||
// ws.addEventListener("open", () => {
|
|
||||||
// ws.send(JSON.stringify({ type: "my-room" }));
|
|
||||||
// });
|
|
||||||
eventTarget.addEventListener("my-room", (e) => {
|
|
||||||
console.log("Received my-room event", e);
|
|
||||||
const ev = e as CustomEvent;
|
|
||||||
// if(ev.detail.room == "entry") {
|
|
||||||
// goto(`/entry`);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
goto(`/room/${ev.detail.room}`);
|
|
||||||
});
|
|
||||||
eventTarget.addEventListener("error", (e) => {
|
|
||||||
const ev = e as CustomEvent;
|
|
||||||
if(ev.detail.code === -1) {
|
|
||||||
noRoom = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
eventTarget.addEventListener("hello", (e) => {
|
|
||||||
eventTarget.dispatchEvent(new CustomEvent("send", { detail: { type: "my-room" } }));
|
|
||||||
});
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<h1>Willkommen zu NextUp!</h1>
|
<h1>Willkommen zu NextUp!</h1>
|
||||||
<span>Sie werden zu Ihrem Raum weitergeleitet.</span>
|
|
||||||
{#if noRoom}
|
|
||||||
<span class="text-red-500">Kein Raum verfügbar</span>
|
|
||||||
{/if}
|
|
||||||
Reference in New Issue
Block a user