merge BASE_URL and BASE_PASH into ROOT_URL
This commit is contained in:
1 parent
e0a0b188ad
commit
e22c664aae
22 files changed
+56
-46
No files matched your search
+1
-1
@@ -14,4 +14,4 @@ DISCORD_LINK=http://example.com
|
||||
PAYPAL_LINK=http://example.com
|
||||
SERVER_IP=1.1.1.1
|
||||
|
||||
BASE_PATH=http://localhost:4321
|
||||
ROOT_URL=http://localhost:4321/craftattack
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
|
||||
- name: Build website
|
||||
env:
|
||||
BASE_PATH: ${{ vars.BASE_PATH }}
|
||||
ROOT_URL: ${{ vars.ROOT_URL }}
|
||||
run: npm run build
|
||||
|
||||
- name: Deploy
|
||||
|
||||
+2
-3
@@ -11,7 +11,7 @@ import node from '@astrojs/node';
|
||||
export default defineConfig({
|
||||
output: 'server',
|
||||
prefetch: true,
|
||||
base: process.env.BASE_PATH ?? undefined,
|
||||
base: process.env.ROOT_URL ? new URL(process.env.ROOT_URL).pathname.replace(/^\/+/, '') : undefined,
|
||||
|
||||
security: {
|
||||
checkOrigin: false
|
||||
@@ -54,8 +54,7 @@ export default defineConfig({
|
||||
|
||||
DATABASE_URI: envField.string({ context: 'server', access: 'secret' }),
|
||||
|
||||
BASE_HOST: envField.string({ context: 'server', access: 'secret', default: 'http://localhost:4321' }),
|
||||
BASE_PATH: envField.string({ context: 'server', access: 'secret', default: '/' }),
|
||||
ROOT_URL: envField.string({ context: 'server', access: 'secret', default: 'http://localhost:4321' }),
|
||||
|
||||
OPENXBL_API_KEY: envField.string({ context: 'server', access: 'secret', optional: true })
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
let
|
||||
dbPort = 3306;
|
||||
webPort = 4321;
|
||||
webBasePath = "/craftattack";
|
||||
dbName = "website";
|
||||
dbUser = "website";
|
||||
dbPassword = "website";
|
||||
@@ -49,8 +50,7 @@
|
||||
PAYPAL_LINK = "http://example.com";
|
||||
SERVER_IP = "example.com";
|
||||
|
||||
BASE_HOST = "http://localhost:4321";
|
||||
BASE_PATH = "/craftattack";
|
||||
ROOT_URL = "http://localhost:${toString webPort}${webBasePath}";
|
||||
};
|
||||
|
||||
webRun = pkgs.writeShellApplication {
|
||||
@@ -114,7 +114,7 @@
|
||||
readiness_probe.http_get = {
|
||||
host = "127.0.0.1";
|
||||
port = webPort;
|
||||
path = devEnv.BASE_PATH;
|
||||
path = webBasePath;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -3,7 +3,7 @@ import { int, mysqlTable, varchar } from 'drizzle-orm/mysql-core';
|
||||
import { user } from '@db/schema/user.ts';
|
||||
import { eq } from 'drizzle-orm';
|
||||
import { generateRandomString } from '@util/random.ts';
|
||||
import { BASE_HOST, BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
|
||||
type Database = MySql2Database<{ directSignup: typeof directSignup }>;
|
||||
|
||||
@@ -36,7 +36,7 @@ export async function addDirectSignup(db: Database, _values: AddDirectSignupReq)
|
||||
code: code
|
||||
});
|
||||
|
||||
return { code: code, url: `${BASE_HOST}/${BASE_PATH}/signup/${code}` };
|
||||
return { code: code, url: siteUrl(`signup/${code}`) };
|
||||
}
|
||||
|
||||
export async function setDirectSignupUser(db: Database, values: SetDirectSignupUserReq) {
|
||||
@@ -61,7 +61,7 @@ export async function getDirectSignups(db: Database, _values: GetDirectSignupsRe
|
||||
.from(directSignup)
|
||||
.leftJoin(user, eq(directSignup.userId, user.id));
|
||||
|
||||
return directSignups.map((d) => ({ ...d, url: `${BASE_PATH}/signup/${d.code}` }));
|
||||
return directSignups.map((d) => ({ ...d, url: siteUrl(`signup/${d.code}`) }));
|
||||
}
|
||||
|
||||
export async function getDirectSignupByCode(db: Database, values: GetDirectSignupByCodeReq) {
|
||||
|
||||
@@ -3,7 +3,7 @@ import type { MySql2Database } from 'drizzle-orm/mysql2';
|
||||
import { and, desc, eq, isNotNull, like } from 'drizzle-orm';
|
||||
import { reportStatus } from './reportStatus.ts';
|
||||
import { generateRandomString } from '@util/random.ts';
|
||||
import { BASE_HOST, BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
import { strikeReason } from '@db/schema/strikeReason.ts';
|
||||
import { strike } from '@db/schema/strike.ts';
|
||||
import { user } from '@db/schema/user.ts';
|
||||
@@ -70,7 +70,7 @@ export async function addReport(db: Database, values: AddReportReq) {
|
||||
})
|
||||
.$returningId();
|
||||
|
||||
return Object.assign(r[0], { url: `${BASE_HOST}/${BASE_PATH}/report/${urlHash}` });
|
||||
return Object.assign(r[0], { url: siteUrl(`report/${urlHash}`) });
|
||||
}
|
||||
|
||||
export async function editReport(db: Database, values: EditReportReq) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import '@styles/global.css';
|
||||
import { ClientRouter } from 'astro:transitions';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteBase } from '@util/url.ts';
|
||||
import logo512 from '@assets/img/logo-512.webp';
|
||||
import favicon from '@assets/favicon.png';
|
||||
|
||||
@@ -36,7 +36,7 @@ const { title, description, keywords, openGraph, viewTransition } = Astro.props;
|
||||
<slot name="head" />
|
||||
{description && <meta name="description" content={description} />}
|
||||
{keywords && <meta name="keywords" content={keywords.join(', ')} />}
|
||||
<base href=`${BASE_PATH}/` />
|
||||
<base href={siteBase()} />
|
||||
</head>
|
||||
<body>
|
||||
<slot />
|
||||
|
||||
@@ -4,10 +4,10 @@ import Admins from '@app/admin/admins/Admins.svelte';
|
||||
import SidebarActions from '@app/admin/admins/SidebarActions.svelte';
|
||||
import { Session } from '@util/session.ts';
|
||||
import { Permissions } from '@util/permissions.ts';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
|
||||
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Admin);
|
||||
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
|
||||
if (!session) return Astro.redirect(siteUrl('admin'));
|
||||
---
|
||||
|
||||
<AdminLayout title="Website Admins">
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
import { Session } from '@util/session';
|
||||
import { Permissions } from '@util/permissions';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
import AdminLayout from '@layouts/admin/AdminLayout.astro';
|
||||
import SidebarActions from '@app/admin/strikeReasons/SidebarActions.svelte';
|
||||
import StrikeReasons from '@app/admin/strikeReasons/StrikeReasons.svelte';
|
||||
|
||||
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Reports);
|
||||
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
|
||||
if (!session) return Astro.redirect(siteUrl('admin'));
|
||||
---
|
||||
|
||||
<AdminLayout title="Reports">
|
||||
|
||||
@@ -3,11 +3,11 @@ import Feedback from '@app/admin/feedback/Feedback.svelte';
|
||||
import AdminLayout from '@layouts/admin/AdminLayout.astro';
|
||||
import { Session } from '@util/session.ts';
|
||||
import { Permissions } from '@util/permissions.ts';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
import SidebarActions from '@app/admin/feedback/SidebarActions.svelte';
|
||||
|
||||
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Feedback);
|
||||
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
|
||||
if (!session) return Astro.redirect(siteUrl('admin'));
|
||||
---
|
||||
|
||||
<AdminLayout title="Feedback">
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
import { Session } from '@util/session.ts';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
import AdminLayout from '@layouts/admin/AdminLayout.astro';
|
||||
|
||||
const session = Session.sessionFromCookies(Astro.cookies);
|
||||
if (!session) return Astro.redirect(`${BASE_PATH}/admin/login`);
|
||||
if (!session) return Astro.redirect(siteUrl('admin/login'));
|
||||
---
|
||||
|
||||
<AdminLayout title="Admin Panel" />
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
import { Session } from '@util/session';
|
||||
import { Permissions } from '@util/permissions';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
import AdminLayout from '@layouts/admin/AdminLayout.astro';
|
||||
import SidebarActions from '@app/admin/reports/SidebarActions.svelte';
|
||||
import Reports from '@app/admin/reports/Reports.svelte';
|
||||
|
||||
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Reports);
|
||||
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
|
||||
if (!session) return Astro.redirect(siteUrl('admin'));
|
||||
---
|
||||
|
||||
<AdminLayout title="Reports">
|
||||
|
||||
@@ -4,10 +4,10 @@ import Settings from '@app/admin/settings/Settings.svelte';
|
||||
import { db } from '@db/database.ts';
|
||||
import { Session } from '@util/session.ts';
|
||||
import { Permissions } from '@util/permissions.ts';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
|
||||
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Settings);
|
||||
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
|
||||
if (!session) return Astro.redirect(siteUrl('admin'));
|
||||
|
||||
const settings = await db.getSettings({});
|
||||
---
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
import { Session } from '@util/session';
|
||||
import { Permissions } from '@util/permissions';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
import AdminLayout from '@layouts/admin/AdminLayout.astro';
|
||||
import Tools from '@app/admin/tools/Tools.svelte';
|
||||
|
||||
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Tools);
|
||||
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
|
||||
if (!session) return Astro.redirect(siteUrl('admin'));
|
||||
---
|
||||
|
||||
<AdminLayout title="Tools">
|
||||
|
||||
@@ -4,10 +4,10 @@ import BlockedUsers from '@app/admin/blockedUsers/BlockedUsers.svelte';
|
||||
import SidebarActions from '@app/admin/blockedUsers/SidebarActions.svelte';
|
||||
import { Session } from '@util/session.ts';
|
||||
import { Permissions } from '@util/permissions.ts';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
|
||||
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Users);
|
||||
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
|
||||
if (!session) return Astro.redirect(siteUrl('admin'));
|
||||
---
|
||||
|
||||
<AdminLayout title="Blockierte Nutzer">
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
import { Session } from '@util/session.ts';
|
||||
import { Permissions } from '@util/permissions.ts';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
import AdminLayout from '@layouts/admin/AdminLayout.astro';
|
||||
import SidebarActions from '@app/admin/directInvitations/SidebarActions.svelte';
|
||||
import DirectInvitations from '@app/admin/directInvitations/DirectInvitations.svelte';
|
||||
|
||||
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Reports);
|
||||
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
|
||||
if (!session) return Astro.redirect(siteUrl('admin'));
|
||||
---
|
||||
|
||||
<AdminLayout title="Direkte Einladungen">
|
||||
|
||||
@@ -4,10 +4,10 @@ import Users from '@app/admin/users/Users.svelte';
|
||||
import SidebarActions from '@app/admin/users/SidebarActions.svelte';
|
||||
import { Session } from '@util/session.ts';
|
||||
import { Permissions } from '@util/permissions.ts';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
|
||||
const session = Session.sessionFromCookies(Astro.cookies, Permissions.Users);
|
||||
if (!session) return Astro.redirect(`${BASE_PATH}/admin`);
|
||||
if (!session) return Astro.redirect(siteUrl('admin'));
|
||||
---
|
||||
|
||||
<AdminLayout title="Registrierte Nutzer">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { externalApi } from '../_api.ts';
|
||||
import { z } from 'astro:schema';
|
||||
import { db } from '@db/database.ts';
|
||||
import { BASE_HOST, BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
|
||||
export const POST = externalApi({
|
||||
input: z.object({
|
||||
@@ -19,7 +19,7 @@ export const POST = externalApi({
|
||||
|
||||
const response = feedbacks.map((feedback) => ({
|
||||
uuid: feedback.uuid,
|
||||
url: `${BASE_HOST}/${BASE_PATH}/feedback/${feedback.urlHash}`
|
||||
url: siteUrl(`feedback/${feedback.urlHash}`)
|
||||
}));
|
||||
|
||||
return new Response(JSON.stringify({ feedback: response }), { status: 200 });
|
||||
|
||||
@@ -2,7 +2,7 @@ import { externalApi } from '../_api.ts';
|
||||
import { z } from 'astro:schema';
|
||||
import { db } from '@db/database.ts';
|
||||
import { sendWebhook, WebhookAction } from '@util/webhook.ts';
|
||||
import { BASE_HOST, BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
|
||||
export const GET = externalApi({
|
||||
auth: true,
|
||||
@@ -17,7 +17,7 @@ export const GET = externalApi({
|
||||
reason: report.reason,
|
||||
created: report.createdAt?.getTime() ?? null,
|
||||
status: report.status?.status ?? null,
|
||||
url: `${BASE_HOST}/${BASE_PATH}/report/${report.urlHash}`
|
||||
url: siteUrl(`report/${report.urlHash}`)
|
||||
}))
|
||||
}),
|
||||
{ status: 200 }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { externalApi } from '../../_api.ts';
|
||||
import { db } from '@db/database.ts';
|
||||
import { BASE_HOST, BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
|
||||
export const GET = externalApi({
|
||||
auth: true,
|
||||
@@ -18,14 +18,14 @@ export const GET = externalApi({
|
||||
reason: report.reason,
|
||||
created: report.createdAt?.getTime() ?? null,
|
||||
status: report.status?.status ?? null,
|
||||
url: `${BASE_HOST}/${BASE_PATH}/report/${report.urlHash}`
|
||||
url: siteUrl(`report/${report.urlHash}`)
|
||||
})),
|
||||
to_self: toSelf.map((report) => ({
|
||||
reporter: report.reporter?.uuid ?? null,
|
||||
reason: report.reason,
|
||||
created: report.createdAt?.getTime() ?? null,
|
||||
status: report.status?.status ?? null,
|
||||
url: `${BASE_HOST}/${BASE_PATH}/report/${report.urlHash}`
|
||||
url: siteUrl(`report/${report.urlHash}`)
|
||||
}))
|
||||
}),
|
||||
{ status: 200 }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import WebsiteLayout from '@layouts/website/WebsiteLayout.astro';
|
||||
import VideoPlayer from '@app/website/video/VideoPlayer.svelte';
|
||||
import { getVideoMetadata, resolveVideo } from '@util/video.ts';
|
||||
import { BASE_PATH } from 'astro:env/server';
|
||||
import { siteUrl } from '@util/url.ts';
|
||||
|
||||
const { name } = Astro.params;
|
||||
|
||||
@@ -13,13 +13,13 @@ const metadata = await getVideoMetadata(video);
|
||||
if (!metadata) return new Response(null, { status: 404 });
|
||||
|
||||
const { title, description, width, height, duration } = metadata;
|
||||
const streamPath = `${BASE_PATH}/video/${encodeURIComponent(video.name)}/stream`;
|
||||
const streamUrl = siteUrl(`video/${encodeURIComponent(video.name)}/stream`);
|
||||
---
|
||||
|
||||
<WebsiteLayout title={`${title} - Video`} description={description ?? undefined} openGraph="minimal">
|
||||
<Fragment slot="head">
|
||||
<meta property="og:type" content="video" />
|
||||
<meta property="og:video" content={streamPath} />
|
||||
<meta property="og:video" content={streamUrl} />
|
||||
<meta property="og:video:type" content={video.contentType} />
|
||||
{width && <meta property="og:video:width" content={width.toString()} />}
|
||||
{height && <meta property="og:video:height" content={height.toString()} />}
|
||||
@@ -32,7 +32,7 @@ const streamPath = `${BASE_PATH}/video/${encodeURIComponent(video.name)}/stream`
|
||||
<h1 class="mt-1 text-2xl font-semibold break-words lg:text-4xl">{title}</h1>
|
||||
</div>
|
||||
|
||||
<VideoPlayer client:load src={streamPath} type={video.contentType} title={title} />
|
||||
<VideoPlayer client:load src={streamUrl} type={video.contentType} title={title} />
|
||||
|
||||
{description && (
|
||||
<p class="max-w-3xl text-base leading-relaxed whitespace-pre-line text-base-content/70">{description}</p>
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import { ROOT_URL } from 'astro:env/server';
|
||||
|
||||
const rootUrl = new URL(ROOT_URL.endsWith('/') ? ROOT_URL : `${ROOT_URL}/`);
|
||||
|
||||
export function siteBase(): string {
|
||||
return rootUrl.pathname;
|
||||
}
|
||||
|
||||
export function siteUrl(path: string): string {
|
||||
return new URL(path.replace(/^\/+/, ''), rootUrl).href;
|
||||
}
|
||||
Reference in new issue
Block a user