Compare commits

..

3 Commits

Author SHA1 Message Date
liss-bot
55fa726ef2 docs: Updates contributors list 2024-12-22 02:12:57 +00:00
Alicia Sykes
f233de9bca Merge pull request #205 from Lissy93/sad/disable-everything-temporarily
feat: Temporarily disable, because I am poor.
2024-12-17 20:16:57 +00:00
Alicia Sykes
da0204c156 feat: Temporarily disable, because I am poor. 2024-12-17 20:16:36 +00:00
6 changed files with 85 additions and 31 deletions

53
.github/README.md vendored
View File

@@ -1025,7 +1025,7 @@ Credit to the following users for contributing to Web-Check
<a href="https://github.com/34bits"> <a href="https://github.com/34bits">
<img src="https://avatars.githubusercontent.com/u/108784453?v=4" width="80;" alt="34bits"/> <img src="https://avatars.githubusercontent.com/u/108784453?v=4" width="80;" alt="34bits"/>
<br /> <br />
<sub><b>NGN</b></sub> <sub><b>Nikolaos G. Ntaiko</b></sub>
</a> </a>
</td> </td>
<td align="center"> <td align="center">
@@ -1109,19 +1109,12 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<tbody> <tbody>
<tr> <tr>
<td align="center"> <td align="center">
<a href="https://github.com/koconder"> <a href="https://github.com/vincentkoc">
<img src="https://avatars.githubusercontent.com/u/25068?u=582657b23622aaa3dfe68bd028a780f272f456fa&v=4" width="80;" alt="koconder"/> <img src="https://avatars.githubusercontent.com/u/25068?v=4" width="80;" alt="vincentkoc"/>
<br /> <br />
<sub><b>Vincent Koc</b></sub> <sub><b>Vincent Koc</b></sub>
</a> </a>
</td> </td>
<td align="center">
<a href="https://github.com/tbjers">
<img src="https://avatars.githubusercontent.com/u/1117052?v=4" width="80;" alt="tbjers"/>
<br />
<sub><b>Torgny Bjers</b></sub>
</a>
</td>
<td align="center"> <td align="center">
<a href="https://github.com/AnandChowdhary"> <a href="https://github.com/AnandChowdhary">
<img src="https://avatars.githubusercontent.com/u/2841780?u=747e554b3a7f12eb20b7910e1c87d817844f714f&v=4" width="80;" alt="AnandChowdhary"/> <img src="https://avatars.githubusercontent.com/u/2841780?u=747e554b3a7f12eb20b7910e1c87d817844f714f&v=4" width="80;" alt="AnandChowdhary"/>
@@ -1150,8 +1143,6 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<sub><b>Ulises Gascón</b></sub> <sub><b>Ulises Gascón</b></sub>
</a> </a>
</td> </td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/digitalarche"> <a href="https://github.com/digitalarche">
<img src="https://avatars.githubusercontent.com/u/6546135?u=564756d7f44ab2206819eb3148f6d822673f5066&v=4" width="80;" alt="digitalarche"/> <img src="https://avatars.githubusercontent.com/u/6546135?u=564756d7f44ab2206819eb3148f6d822673f5066&v=4" width="80;" alt="digitalarche"/>
@@ -1159,6 +1150,8 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<sub><b>Digital Archeology</b></sub> <sub><b>Digital Archeology</b></sub>
</a> </a>
</td> </td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/InDieTasten"> <a href="https://github.com/InDieTasten">
<img src="https://avatars.githubusercontent.com/u/7047377?u=8d8f8017628b38bc46dcbf3620e194b01d3fb2d1&v=4" width="80;" alt="InDieTasten"/> <img src="https://avatars.githubusercontent.com/u/7047377?u=8d8f8017628b38bc46dcbf3620e194b01d3fb2d1&v=4" width="80;" alt="InDieTasten"/>
@@ -1194,14 +1187,21 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<sub><b>HeliXZz</b></sub> <sub><b>HeliXZz</b></sub>
</a> </a>
</td> </td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/patvdv"> <a href="https://github.com/patvdv">
<img src="https://avatars.githubusercontent.com/u/12430107?u=e8911c2fb91af4d30432f76da8c40927b2830bd7&v=4" width="80;" alt="patvdv"/> <img src="https://avatars.githubusercontent.com/u/12430107?u=e8911c2fb91af4d30432f76da8c40927b2830bd7&v=4" width="80;" alt="patvdv"/>
<br /> <br />
<sub><b>Patrick Van Der Veken</b></sub> <sub><b>Patrick Van Der Veken</b></sub>
</a> </a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/MioOgbeni">
<img src="https://avatars.githubusercontent.com/u/24291977?v=4" width="80;" alt="MioOgbeni"/>
<br />
<sub><b>Tomáš Novák</b></sub>
</a>
</td> </td>
<td align="center"> <td align="center">
<a href="https://github.com/mryesiller"> <a href="https://github.com/mryesiller">
@@ -1224,22 +1224,6 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<sub><b>Forward Email - Open-source & Privacy-focused Email Service (2023)</b></sub> <sub><b>Forward Email - Open-source & Privacy-focused Email Service (2023)</b></sub>
</a> </a>
</td> </td>
<td align="center">
<a href="https://github.com/semiceau">
<img src="https://avatars.githubusercontent.com/u/50425951?u=f8c386b966312769f559422adf0dbc7e2f116258&v=4" width="80;" alt="semiceau"/>
<br />
<sub><b>GT</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Bastii717">
<img src="https://avatars.githubusercontent.com/u/53431819?u=604977bed6ad6875ada890d0d3765a4cacc2fa14&v=4" width="80;" alt="Bastii717"/>
<br />
<sub><b>Bastii717</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/getumbrel"> <a href="https://github.com/getumbrel">
<img src="https://avatars.githubusercontent.com/u/59408891?v=4" width="80;" alt="getumbrel"/> <img src="https://avatars.githubusercontent.com/u/59408891?v=4" width="80;" alt="getumbrel"/>
@@ -1247,6 +1231,15 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<sub><b>Umbrel</b></sub> <sub><b>Umbrel</b></sub>
</a> </a>
</td> </td>
<td align="center">
<a href="https://github.com/OlliVHH">
<img src="https://avatars.githubusercontent.com/u/84959562?v=4" width="80;" alt="OlliVHH"/>
<br />
<sub><b>HamburgerJung</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/frankdez93"> <a href="https://github.com/frankdez93">
<img src="https://avatars.githubusercontent.com/u/87549420?v=4" width="80;" alt="frankdez93"/> <img src="https://avatars.githubusercontent.com/u/87549420?v=4" width="80;" alt="frankdez93"/>

View File

@@ -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,

View 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>

View File

@@ -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 />

View File

@@ -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 :(

View File

@@ -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,