From 563e351f8ea2d1d18c21aafcd18d38b8c11b9d2e Mon Sep 17 00:00:00 2001 From: Karol Wypchlo Date: Wed, 9 Feb 2022 14:13:53 +0100 Subject: [PATCH] remove dashboard url env var usage --- docker-compose.accounts.yml | 2 +- packages/dashboard/src/pages/api/stripe/billing.js | 2 +- packages/dashboard/src/pages/api/stripe/checkout.js | 4 ++-- packages/dashboard/src/services/accountsApi.js | 2 +- packages/dashboard/src/services/useAccountsApi.js | 2 +- packages/dashboard/src/services/useAnonRoute.js | 3 ++- packages/health-check/src/checks/critical.js | 4 ++-- packages/health-check/src/index.js | 7 ++++--- packages/health-check/src/utils.js | 4 ++-- setup-scripts/setup-docker-services.sh | 3 +-- 10 files changed, 17 insertions(+), 16 deletions(-) diff --git a/docker-compose.accounts.yml b/docker-compose.accounts.yml index e8159040..e03d679a 100644 --- a/docker-compose.accounts.yml +++ b/docker-compose.accounts.yml @@ -67,7 +67,7 @@ services: - .env environment: - NEXT_PUBLIC_SKYNET_PORTAL_API=${SKYNET_PORTAL_API} - - NEXT_PUBLIC_SKYNET_DASHBOARD_URL=${SKYNET_DASHBOARD_URL} + - NEXT_PUBLIC_PORTAL_DOMAIN=${PORTAL_DOMAIN} - NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=${STRIPE_PUBLISHABLE_KEY} volumes: - ./docker/data/dashboard/.next:/usr/app/.next diff --git a/packages/dashboard/src/pages/api/stripe/billing.js b/packages/dashboard/src/pages/api/stripe/billing.js index 58ef4bc2..8dcb5d2f 100644 --- a/packages/dashboard/src/pages/api/stripe/billing.js +++ b/packages/dashboard/src/pages/api/stripe/billing.js @@ -18,7 +18,7 @@ export default async function billingApi(req, res) { const customer = await getStripeCustomer(stripeCustomerId); const session = await stripe.billingPortal.sessions.create({ customer: customer.id, - return_url: `${process.env.SKYNET_DASHBOARD_URL}/payments`, + return_url: `https://account.${process.env.PORTAL_DOMAIN}/payments`, }); res.redirect(session.url); diff --git a/packages/dashboard/src/pages/api/stripe/checkout.js b/packages/dashboard/src/pages/api/stripe/checkout.js index 9da694cb..3c10efb7 100644 --- a/packages/dashboard/src/pages/api/stripe/checkout.js +++ b/packages/dashboard/src/pages/api/stripe/checkout.js @@ -47,8 +47,8 @@ export default async function checkoutApi(req, res) { customer: customer.id, client_reference_id: user.sub, allow_promotion_codes: true, - success_url: `${process.env.SKYNET_DASHBOARD_URL}/payments?session_id={CHECKOUT_SESSION_ID}`, - cancel_url: `${process.env.SKYNET_DASHBOARD_URL}/payments`, + success_url: `https://account.${process.env.PORTAL_DOMAIN}/payments?session_id={CHECKOUT_SESSION_ID}`, + cancel_url: `https://account.${process.env.PORTAL_DOMAIN}/payments`, }); res.json({ sessionId: session.id }); diff --git a/packages/dashboard/src/services/accountsApi.js b/packages/dashboard/src/services/accountsApi.js index fafbfe86..e09626b1 100644 --- a/packages/dashboard/src/services/accountsApi.js +++ b/packages/dashboard/src/services/accountsApi.js @@ -1,5 +1,5 @@ import ky from "ky"; -const prefix = process.env.NEXT_PUBLIC_SKYNET_DASHBOARD_URL ?? ""; +const prefix = process.env.NEXT_PUBLIC_PORTAL_DOMAIN ? `https://account.${process.env.NEXT_PUBLIC_PORTAL_DOMAIN}` : ""; export default ky.create({ prefixUrl: `${prefix}/api` }); diff --git a/packages/dashboard/src/services/useAccountsApi.js b/packages/dashboard/src/services/useAccountsApi.js index 83c7bd35..4d522764 100644 --- a/packages/dashboard/src/services/useAccountsApi.js +++ b/packages/dashboard/src/services/useAccountsApi.js @@ -2,7 +2,7 @@ import useSWR from "swr"; import { useRouter } from "next/router"; import { StatusCodes } from "http-status-codes"; -const prefix = process.env.NEXT_PUBLIC_SKYNET_DASHBOARD_URL ?? ""; +const prefix = process.env.NEXT_PUBLIC_PORTAL_DOMAIN ? `https://account.${process.env.NEXT_PUBLIC_PORTAL_DOMAIN}` : ""; const fetcher = (url, router) => { return fetch(url).then((res) => { diff --git a/packages/dashboard/src/services/useAnonRoute.js b/packages/dashboard/src/services/useAnonRoute.js index 179f7529..b516011d 100644 --- a/packages/dashboard/src/services/useAnonRoute.js +++ b/packages/dashboard/src/services/useAnonRoute.js @@ -2,7 +2,8 @@ import useSWR from "swr"; import { useRouter } from "next/router"; import { StatusCodes } from "http-status-codes"; -const prefix = process.env.NEXT_PUBLIC_SKYNET_DASHBOARD_URL ?? ""; +const prefix = process.env.NEXT_PUBLIC_PORTAL_DOMAIN ? `https://account.${process.env.NEXT_PUBLIC_PORTAL_DOMAIN}` : ""; + const fetcher = (url, router) => { return fetch(url).then((res) => { if (res.status === StatusCodes.OK) router.push("/"); diff --git a/packages/health-check/src/checks/critical.js b/packages/health-check/src/checks/critical.js index 71b7dd1c..ac406f10 100644 --- a/packages/health-check/src/checks/critical.js +++ b/packages/health-check/src/checks/critical.js @@ -99,7 +99,7 @@ async function websiteSkylinkCheck(done) { // accountWebsiteCheck returns the result of accessing account dashboard website async function accountWebsiteCheck(done) { - const url = `${process.env.SKYNET_DASHBOARD_URL}/auth/login`; + const url = `https://account.${process.env.PORTAL_DOMAIN}/auth/login`; return done(await genericAccessCheck("account_website", url)); } @@ -160,7 +160,7 @@ async function accountHealthCheck(done) { const data = { up: false }; try { - const response = await got(`${process.env.SKYNET_DASHBOARD_URL}/health`, { responseType: "json" }); + const response = await got(`https://account.${process.env.PORTAL_DOMAIN}/health`, { responseType: "json" }); data.statusCode = response.statusCode; data.response = response.body; diff --git a/packages/health-check/src/index.js b/packages/health-check/src/index.js index 7eb270a9..abaa7a59 100644 --- a/packages/health-check/src/index.js +++ b/packages/health-check/src/index.js @@ -4,10 +4,11 @@ if (!process.env.SKYNET_PORTAL_API) { throw new Error("You need to provide SKYNET_PORTAL_API environment variable"); } +if (!process.env.PORTAL_DOMAIN) { + throw new Error("You need to provide PORTAL_DOMAIN environment variable"); +} + if (process.env.ACCOUNTS_ENABLED === "true") { - if (!process.env.SKYNET_DASHBOARD_URL) { - throw new Error("You need to provide SKYNET_DASHBOARD_URL environment variable when accounts are enabled"); - } if (["authenticated", "subscription"].includes(process.env.ACCOUNTS_LIMIT_ACCESS)) { if (!process.env.ACCOUNTS_TEST_USER_EMAIL) { throw new Error("ACCOUNTS_TEST_USER_EMAIL cannot be empty"); diff --git a/packages/health-check/src/utils.js b/packages/health-check/src/utils.js index 22d41155..67b47f9c 100644 --- a/packages/health-check/src/utils.js +++ b/packages/health-check/src/utils.js @@ -67,7 +67,7 @@ function getAuthCookie() { try { // authenticate with given test user credentials - const response = await got.post(`${process.env.SKYNET_DASHBOARD_URL}/api/login`, { + const response = await got.post(`https://account.${process.env.PORTAL_DOMAIN}/api/login`, { json: { email, password }, }); @@ -89,7 +89,7 @@ function getAuthCookie() { // 401 means that service worked but user could not have been authenticated if (error.response && error.response.statusCode === 401) { // sign up with the given credentials - await got.post(`${process.env.SKYNET_DASHBOARD_URL}/api/user`, { + await got.post(`https://account.${process.env.PORTAL_DOMAIN}/api/user`, { json: { email, password }, }); diff --git a/setup-scripts/setup-docker-services.sh b/setup-scripts/setup-docker-services.sh index 3ab32aef..ff649401 100755 --- a/setup-scripts/setup-docker-services.sh +++ b/setup-scripts/setup-docker-services.sh @@ -25,7 +25,6 @@ docker-compose --version # sanity check # * SERVER_DOMAIN - (optional) is an optional direct server domain (ex. eu-ger-1.siasky.net) - leave blank unless it is different than PORTAL_DOMAIN # * SKYNET_PORTAL_API - absolute url to the portal api ie. https://siasky.net (general portal address) # * SKYNET_SERVER_API - absolute url to the server api ie. https://eu-ger-1.siasky.net (direct server address, if this is single server portal use the same address as SKYNET_PORTAL_API) -# * SKYNET_DASHBOARD_URL - (optional) absolute url to the portal dashboard ie. https://account.siasky.net # * EMAIL_ADDRESS - this is the administrator contact email you need to supply for communication regarding SSL certification # * HSD_API_KEY - this is auto generated secure key for your handshake service integration # * CLOUDFLARE_AUTH_TOKEN - (optional) if using cloudflare as dns loadbalancer (need to change it in Caddyfile too) @@ -45,7 +44,7 @@ docker-compose --version # sanity check # * COOKIE_ENC_KEY - (optional) if using `accounts` encryption key, at least 32 bytes if ! [ -f /home/user/skynet-webportal/.env ]; then HSD_API_KEY=$(openssl rand -base64 32) # generate safe random key for handshake - printf "PORTAL_DOMAIN=siasky.net\nSERVER_DOMAIN=\nSKYNET_PORTAL_API=https://siasky.net\nSKYNET_SERVER_API=https://eu-dc-1.siasky.net\nSKYNET_DASHBOARD_URL=https://account.example.com\nEMAIL_ADDRESS=email@example.com\nSIA_WALLET_PASSWORD=\nHSD_API_KEY=${HSD_API_KEY}\nCLOUDFLARE_AUTH_TOKEN=\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\nPORTAL_NAME=\DISCORD_WEBHOOK_URL=\nDISCORD_MENTION_USER_ID=\nDISCORD_MENTION_ROLE_ID=\n" > /home/user/skynet-webportal/.env + printf "PORTAL_DOMAIN=siasky.net\nSERVER_DOMAIN=\nSKYNET_PORTAL_API=https://siasky.net\nSKYNET_SERVER_API=https://eu-dc-1.siasky.net\nEMAIL_ADDRESS=email@example.com\nSIA_WALLET_PASSWORD=\nHSD_API_KEY=${HSD_API_KEY}\nCLOUDFLARE_AUTH_TOKEN=\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\nPORTAL_NAME=\DISCORD_WEBHOOK_URL=\nDISCORD_MENTION_USER_ID=\nDISCORD_MENTION_ROLE_ID=\n" > /home/user/skynet-webportal/.env fi # Start docker container with nginx and client