From 944af0d8d94db3b1bd68b80208ce97d1bfeb5e58 Mon Sep 17 00:00:00 2001 From: MrMelon54 Date: Wed, 25 Oct 2023 16:59:59 +0100 Subject: [PATCH] Make functional and test publishing --- src/App.svelte | 8 +- src/app.scss | 3 +- src/components/Flags.svelte | 2 +- src/components/RedirectRow.svelte | 53 +++++++++ src/components/RouteRow.svelte | 52 +++++++++ src/types/cspair.ts | 11 ++ src/types/target.ts | 39 +++++++ src/views/GeneralView.svelte | 2 +- src/views/OrchidView.svelte | 2 +- src/views/VioletView.svelte | 180 ++++++++++++------------------ 10 files changed, 235 insertions(+), 117 deletions(-) create mode 100644 src/components/RedirectRow.svelte create mode 100644 src/components/RouteRow.svelte create mode 100644 src/types/cspair.ts create mode 100644 src/types/target.ts diff --git a/src/App.svelte b/src/App.svelte index 523ec20..9c051b1 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -37,8 +37,10 @@ on:click={() => { $loginStore = null; localStorage.removeItem("login-session"); - }}>Logout + Logout + {/if} @@ -52,7 +54,6 @@ {/each}
-

{sidebarSelection.name}

{/if} @@ -120,7 +121,8 @@ height: calc(100% - 70px); #sidebar { - width: 200px; + width: 150px; + min-width: 150px; button { background-color: #2c2c2c; diff --git a/src/app.scss b/src/app.scss index c4ba269..3bad92b 100644 --- a/src/app.scss +++ b/src/app.scss @@ -61,6 +61,7 @@ body { margin: 0; } -code { +code, +.code-font { font-family: 'Fira Code', monospace; } diff --git a/src/components/Flags.svelte b/src/components/Flags.svelte index 29763fc..9c83c72 100644 --- a/src/components/Flags.svelte +++ b/src/components/Flags.svelte @@ -1,6 +1,6 @@ + +{#if noCPair(redirect)} + + {redirect.server.src} + + + + + +{:else} + + {redirect.client.src} + + + + + {#if !noSPair(redirect)} + + {/if} + + + +{/if} + + diff --git a/src/components/RouteRow.svelte b/src/components/RouteRow.svelte new file mode 100644 index 0000000..6e8c032 --- /dev/null +++ b/src/components/RouteRow.svelte @@ -0,0 +1,52 @@ + + +{#if noCPair(route)} + + {route.server.src} + + + + + +{:else} + + {route.client.src} + + + + + {#if !noSPair(route)} + + {/if} + + + +{/if} + + diff --git a/src/types/cspair.ts b/src/types/cspair.ts new file mode 100644 index 0000000..2baed15 --- /dev/null +++ b/src/types/cspair.ts @@ -0,0 +1,11 @@ +export type CSPair = {client: T; server: T} | CSPairNotC | CSPairNotS; +export type CSPairNotC = {client: null; server: T}; +export type CSPairNotS = {client: T; server: null}; + +export function noCPair(pair: CSPair): pair is CSPairNotC { + return pair.client == null; +} + +export function noSPair(pair: CSPair): pair is CSPairNotS { + return pair.server == null; +} diff --git a/src/types/target.ts b/src/types/target.ts new file mode 100644 index 0000000..dbdb84c --- /dev/null +++ b/src/types/target.ts @@ -0,0 +1,39 @@ +export interface Route { + src: string; + dst: string; + flags: number; + active: boolean; +} + +export interface Redirect { + src: string; + dst: string; + flags: number; + active: boolean; +} + +export function routeEqual(a: Route, b: Route): boolean { + if (b == null) return false; + return a.src === b.src && a.dst === b.dst && a.flags === b.flags && a.active === b.active; +} + +export function redirectEqual(a: Redirect, b: Redirect): boolean { + if (b == null) return false; + return a.src === b.src && a.dst === b.dst && a.flags === b.flags && a.active === b.active; +} + +export const routeKeys = [ + {char: "p", name: "Prefix Path"}, + {char: "a", name: "Absolute Path"}, + {char: "c", name: "CORS"}, + {char: "s", name: "Secure Mode"}, + {char: "h", name: "Forward Host"}, + {char: "f", name: "Forward Address"}, + {char: "i", name: "Ignore Certificate"}, + {char: "w", name: "Websocket"}, +]; + +export const redirectKeys = [ + {char: "p", name: "Prefix Path"}, + {char: "a", name: "Absolute Path"}, +]; diff --git a/src/views/GeneralView.svelte b/src/views/GeneralView.svelte index 7360a9e..6c5f777 100644 --- a/src/views/GeneralView.svelte +++ b/src/views/GeneralView.svelte @@ -1 +1 @@ -
No options available here
+
Warning: This is currently still under development
diff --git a/src/views/OrchidView.svelte b/src/views/OrchidView.svelte index ad7456e..6c5f777 100644 --- a/src/views/OrchidView.svelte +++ b/src/views/OrchidView.svelte @@ -1 +1 @@ -
No options available here: {import.meta.env.VITE_API_ORCHID}
+
Warning: This is currently still under development
diff --git a/src/views/VioletView.svelte b/src/views/VioletView.svelte index 9be9432..fd3711c 100644 --- a/src/views/VioletView.svelte +++ b/src/views/VioletView.svelte @@ -1,67 +1,30 @@ +
+ Warning: This is currently still under development and does not update the routes and redirects on the server +
+

Routes

{#await promiseForRoutes}
Loading...
{:then} - - - - - - - {#each routeSrcs as src (src)} - {@const route = routeData.get(src)} - {#if route} - {#if noCPair(route)} - - - - - - + + + + + + + + + + + {#each routeSrcs as src (src)} + {#if routeData[src]} + + {:else} + {/if} - {@const isCreated = !route.server} - {@const isDeleted = !route.client} - - - - - - - - {/if} - {/each} + {/each} +
SourceDestinationFlagsActive
{route.server.src}{route.server.dst}
SourceDestinationFlagsActiveOption
Error loading row for {src}
{route.client.src}{route.client.dst} - {#if !isCreated} - - {/if} -
{:catch err}
{err}
@@ -141,27 +94,24 @@
Loading...
{:then} - - - - - - - {#each clientRedirects as redirect, i (redirect.src)} - {@const serverRedirect = getServerRedirect(redirect.src)} - {@const isNew = serverRedirect == undefined} - - - - - - + + + + + + + - {/each} + + + {#each redirectSrcs as src (src)} + {#if redirectData[src]} + + {:else} + + {/if} + {/each} +
SourceDestinationFlagsActive
{redirect.src}{redirect.dst} - {#if !isNew} - - {/if} -
SourceDestinationFlagsActiveOption
Error loading row for {src}
{:catch err}
{err}
@@ -169,12 +119,22 @@