Skip to content

Commit

Permalink
feat: Temporarily disable, because I am poor.
Browse files Browse the repository at this point in the history
  • Loading branch information
Lissy93 committed Dec 17, 2024
1 parent 7ca22da commit da0204c
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 1 deletion.
26 changes: 25 additions & 1 deletion api/_common/middleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ const TIMEOUT = process.env.API_TIMEOUT_LIMIT ? parseInt(process.env.API_TIMEOUT
// If present, set CORS allowed origins for responses
const ALLOWED_ORIGINS = process.env.API_CORS_ORIGIN || '*';

// Disable everything :( Setting this env var will turn off the instance, and show message
const DISABLE_EVERYTHING = !!process.env.VITE_DISABLE_EVERYTHING;

// Set the platform currently being used
let PLATFORM = 'NETLIFY';
if (process.env.PLATFORM) { PLATFORM = process.env.PLATFORM.toUpperCase(); }
Expand All @@ -21,7 +24,6 @@ const headers = {
'Content-Type': 'application/json;charset=UTF-8',
};


const timeoutErrorMsg = 'You can re-trigger this request, by clicking "Retry"\n'
+ 'If you\'re running your own instance of Web Check, then you can '
+ 'resolve this issue, by increasing the timeout limit in the '
Expand All @@ -31,6 +33,14 @@ const timeoutErrorMsg = 'You can re-trigger this request, by clicking "Retry"\n'
+ 'in order to keep running costs affordable, so that Web Check can '
+ 'remain freely available for everyone.';

const disabledErrorMsg = 'Error - WebCheck Temporarily Disabled.\n\n'
+ 'We\'re sorry, but due to the increased cost of running Web Check '
+ 'we\'ve had to temporatily disable the public instand. '
+ 'We\'re activley looking for affordable ways to keep Web Check running, '
+ 'while free to use for everybody.\n'
+ 'In the meantime, since we\'ve made our code free and open source, '
+ 'you can get Web Check running on your own system, by following the instructions in our GitHub repo';

// A middleware function used by all API routes on all platforms
const commonMiddleware = (handler) => {

Expand All @@ -45,6 +55,11 @@ const commonMiddleware = (handler) => {

// Vercel
const vercelHandler = async (request, response) => {

if (DISABLE_EVERYTHING) {
response.status(503).json({ error: disabledErrorMsg });
}

const queryParams = request.query || {};
const rawUrl = queryParams.url;

Expand Down Expand Up @@ -83,6 +98,15 @@ const commonMiddleware = (handler) => {
const queryParams = event.queryStringParameters || event.query || {};
const rawUrl = queryParams.url;

if (DISABLE_EVERYTHING) {
callback(null, {
statusCode: 503,
body: JSON.stringify({ error: 'Web-Check is temporarily disabled. Please try again later.' }),
headers,
});
return;
}

if (!rawUrl) {
callback(null, {
statusCode: 500,
Expand Down
27 changes: 27 additions & 0 deletions src/components/homepage/TempDisabled.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<div class="banner">
<p>
⚠️ Web Check is temporarily disabled due to excess demand and associated costs.
We apologize for any inconvenience and are working on a solution.
</p>
</div>

<style>
.banner {
position: relative;
top: 0;
left: 0;
width: 100%;
background-color: var(--primary);
color: var(--background);
padding: 0.75rem 1rem;
text-align: center;
z-index: 1000;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.banner p {
margin: 0;
font-size: 0.95rem;
line-height: 1.4;
}
</style>
4 changes: 4 additions & 0 deletions src/pages/index.astro
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
---
import BaseLayout from '@layouts/Base.astro';
import HeroForm from '@components/homepage/HeroForm.astro';
import TempDisabled from '@/components/homepage/TempDisabled.astro';
import HomeBackground from '@/components/homepage/HomeBackground';
import AboutSection from '@/components/homepage/AboutSection.astro';
import Footer from '@components/scafold/Footer.astro';
const isBossServer = import.meta.env.BOSS_SERVER === true;
const disableEverything = import.meta.env.VITE_DISABLE_EVERYTHING === true;
// Redirect strait to /check or /check/:url if running as self-hosted instance
if (!isBossServer) {
const searchUrl = new URLSearchParams(new URL(Astro.request.url).search).get('url');
Expand All @@ -20,6 +23,7 @@ if (!isBossServer) {
<Fragment slot="head">
{!isBossServer && (<meta http-equiv="refresh" content="0; url=/check" />)}
</Fragment>
{ disableEverything && <TempDisabled />}
<main>
<HeroForm />
<AboutSection />
Expand Down
5 changes: 5 additions & 0 deletions src/web-check-live/hooks/motherOfAllHooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'react-toastify/dist/ReactToastify.css';

import type { LoadingState } from 'web-check-live/components/misc/ProgressBar';
import type { AddressType } from 'web-check-live/utils/address-type-checker';
import keys from 'web-check-live/utils/get-keys';

interface UseIpAddressProps<ResultType = any> {
// Unique identifier for this job type
Expand Down Expand Up @@ -37,6 +38,10 @@ const useMotherOfAllHooks = <ResultType = any>(params: UseIpAddressProps<ResultT
// Fire off the HTTP fetch request, then set results and update loading / error state

const doTheFetch = () => {
if (keys.disableEverything) {
updateLoadingJobs(jobId, 'skipped', 'Web-Check is temporarily disabled. Please try again later.', reset);
return Promise.resolve();
}
return fetchRequest()
.then((res: any) => {
if (!res) { // No response :(
Expand Down
1 change: 1 addition & 0 deletions src/web-check-live/utils/get-keys.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
const keys = {
shodan: import.meta.env.REACT_APP_SHODAN_API_KEY || "default_value_if_not_set",
whoApi: import.meta.env.REACT_APP_WHO_API_KEY || "default_value_if_not_set",
disableEverything: import.meta.env.VITE_DISABLE_EVERYTHING === 'true',
};
// const keys = process && process.env ? {
// shodan: process.env.REACT_APP_SHODAN_API_KEY,
Expand Down

0 comments on commit da0204c

Please sign in to comment.