mirror of
https://github.com/Lissy93/web-check.git
synced 2025-05-10 09:14:33 +02:00
Merge pull request #205 from Lissy93/sad/disable-everything-temporarily
feat: Temporarily disable, because I am poor.
This commit is contained in:
commit
f233de9bca
@ -8,6 +8,9 @@ const TIMEOUT = process.env.API_TIMEOUT_LIMIT ? parseInt(process.env.API_TIMEOUT
|
|||||||
// If present, set CORS allowed origins for responses
|
// If present, set CORS allowed origins for responses
|
||||||
const ALLOWED_ORIGINS = process.env.API_CORS_ORIGIN || '*';
|
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
|
// Set the platform currently being used
|
||||||
let PLATFORM = 'NETLIFY';
|
let PLATFORM = 'NETLIFY';
|
||||||
if (process.env.PLATFORM) { PLATFORM = process.env.PLATFORM.toUpperCase(); }
|
if (process.env.PLATFORM) { PLATFORM = process.env.PLATFORM.toUpperCase(); }
|
||||||
@ -21,7 +24,6 @@ const headers = {
|
|||||||
'Content-Type': 'application/json;charset=UTF-8',
|
'Content-Type': 'application/json;charset=UTF-8',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const timeoutErrorMsg = 'You can re-trigger this request, by clicking "Retry"\n'
|
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 '
|
+ 'If you\'re running your own instance of Web Check, then you can '
|
||||||
+ 'resolve this issue, by increasing the timeout limit in the '
|
+ 'resolve this issue, by increasing the timeout limit in the '
|
||||||
@ -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 '
|
+ 'in order to keep running costs affordable, so that Web Check can '
|
||||||
+ 'remain freely available for everyone.';
|
+ '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
|
// A middleware function used by all API routes on all platforms
|
||||||
const commonMiddleware = (handler) => {
|
const commonMiddleware = (handler) => {
|
||||||
|
|
||||||
@ -45,6 +55,11 @@ const commonMiddleware = (handler) => {
|
|||||||
|
|
||||||
// Vercel
|
// Vercel
|
||||||
const vercelHandler = async (request, response) => {
|
const vercelHandler = async (request, response) => {
|
||||||
|
|
||||||
|
if (DISABLE_EVERYTHING) {
|
||||||
|
response.status(503).json({ error: disabledErrorMsg });
|
||||||
|
}
|
||||||
|
|
||||||
const queryParams = request.query || {};
|
const queryParams = request.query || {};
|
||||||
const rawUrl = queryParams.url;
|
const rawUrl = queryParams.url;
|
||||||
|
|
||||||
@ -83,6 +98,15 @@ const commonMiddleware = (handler) => {
|
|||||||
const queryParams = event.queryStringParameters || event.query || {};
|
const queryParams = event.queryStringParameters || event.query || {};
|
||||||
const rawUrl = queryParams.url;
|
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) {
|
if (!rawUrl) {
|
||||||
callback(null, {
|
callback(null, {
|
||||||
statusCode: 500,
|
statusCode: 500,
|
||||||
|
27
src/components/homepage/TempDisabled.astro
Normal file
27
src/components/homepage/TempDisabled.astro
Normal file
@ -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>
|
@ -1,12 +1,15 @@
|
|||||||
---
|
---
|
||||||
import BaseLayout from '@layouts/Base.astro';
|
import BaseLayout from '@layouts/Base.astro';
|
||||||
import HeroForm from '@components/homepage/HeroForm.astro';
|
import HeroForm from '@components/homepage/HeroForm.astro';
|
||||||
|
import TempDisabled from '@/components/homepage/TempDisabled.astro';
|
||||||
import HomeBackground from '@/components/homepage/HomeBackground';
|
import HomeBackground from '@/components/homepage/HomeBackground';
|
||||||
import AboutSection from '@/components/homepage/AboutSection.astro';
|
import AboutSection from '@/components/homepage/AboutSection.astro';
|
||||||
import Footer from '@components/scafold/Footer.astro';
|
import Footer from '@components/scafold/Footer.astro';
|
||||||
|
|
||||||
const isBossServer = import.meta.env.BOSS_SERVER === true;
|
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
|
// Redirect strait to /check or /check/:url if running as self-hosted instance
|
||||||
if (!isBossServer) {
|
if (!isBossServer) {
|
||||||
const searchUrl = new URLSearchParams(new URL(Astro.request.url).search).get('url');
|
const searchUrl = new URLSearchParams(new URL(Astro.request.url).search).get('url');
|
||||||
@ -20,6 +23,7 @@ if (!isBossServer) {
|
|||||||
<Fragment slot="head">
|
<Fragment slot="head">
|
||||||
{!isBossServer && (<meta http-equiv="refresh" content="0; url=/check" />)}
|
{!isBossServer && (<meta http-equiv="refresh" content="0; url=/check" />)}
|
||||||
</Fragment>
|
</Fragment>
|
||||||
|
{ disableEverything && <TempDisabled />}
|
||||||
<main>
|
<main>
|
||||||
<HeroForm />
|
<HeroForm />
|
||||||
<AboutSection />
|
<AboutSection />
|
||||||
|
@ -4,6 +4,7 @@ import 'react-toastify/dist/ReactToastify.css';
|
|||||||
|
|
||||||
import type { LoadingState } from 'web-check-live/components/misc/ProgressBar';
|
import type { LoadingState } from 'web-check-live/components/misc/ProgressBar';
|
||||||
import type { AddressType } from 'web-check-live/utils/address-type-checker';
|
import type { AddressType } from 'web-check-live/utils/address-type-checker';
|
||||||
|
import keys from 'web-check-live/utils/get-keys';
|
||||||
|
|
||||||
interface UseIpAddressProps<ResultType = any> {
|
interface UseIpAddressProps<ResultType = any> {
|
||||||
// Unique identifier for this job type
|
// Unique identifier for this job type
|
||||||
@ -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
|
// Fire off the HTTP fetch request, then set results and update loading / error state
|
||||||
|
|
||||||
const doTheFetch = () => {
|
const doTheFetch = () => {
|
||||||
|
if (keys.disableEverything) {
|
||||||
|
updateLoadingJobs(jobId, 'skipped', 'Web-Check is temporarily disabled. Please try again later.', reset);
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
return fetchRequest()
|
return fetchRequest()
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
if (!res) { // No response :(
|
if (!res) { // No response :(
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
const keys = {
|
const keys = {
|
||||||
shodan: import.meta.env.REACT_APP_SHODAN_API_KEY || "default_value_if_not_set",
|
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",
|
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 ? {
|
// const keys = process && process.env ? {
|
||||||
// shodan: process.env.REACT_APP_SHODAN_API_KEY,
|
// shodan: process.env.REACT_APP_SHODAN_API_KEY,
|
||||||
|
Loading…
Reference in New Issue
Block a user