Compare commits
1 Commits
sec/fix-co
...
contributo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2f777f82c8 |
71
.github/README.md
vendored
71
.github/README.md
vendored
@@ -1022,8 +1022,8 @@ Credit to the following users for contributing to Web-Check
|
|||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<a href="https://github.com/ntaiko">
|
<a href="https://github.com/34bits">
|
||||||
<img src="https://avatars.githubusercontent.com/u/108784453?v=4" width="80;" alt="ntaiko"/>
|
<img src="https://avatars.githubusercontent.com/u/108784453?v=4" width="80;" alt="34bits"/>
|
||||||
<br />
|
<br />
|
||||||
<sub><b>Nikolaos G. Ntaiko</b></sub>
|
<sub><b>Nikolaos G. Ntaiko</b></sub>
|
||||||
</a>
|
</a>
|
||||||
@@ -1173,13 +1173,6 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
|
|||||||
<sub><b>Brian McGonagill</b></sub>
|
<sub><b>Brian McGonagill</b></sub>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td align="center">
|
|
||||||
<a href="https://github.com/arcestia">
|
|
||||||
<img src="https://avatars.githubusercontent.com/u/7936962?v=4" width="80;" alt="arcestia"/>
|
|
||||||
<br />
|
|
||||||
<sub><b>Laurensius Jeffrey</b></sub>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<a href="https://github.com/vlad-tim">
|
<a href="https://github.com/vlad-tim">
|
||||||
<img src="https://avatars.githubusercontent.com/u/11474041?u=eee43705b54d2ec9f51fc4fcce5ad18dd17c87e4&v=4" width="80;" alt="vlad-tim"/>
|
<img src="https://avatars.githubusercontent.com/u/11474041?u=eee43705b54d2ec9f51fc4fcce5ad18dd17c87e4&v=4" width="80;" alt="vlad-tim"/>
|
||||||
@@ -1193,6 +1186,13 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
|
|||||||
<br />
|
<br />
|
||||||
<sub><b>HeliXZz</b></sub>
|
<sub><b>HeliXZz</b></sub>
|
||||||
</a>
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/patvdv">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/12430107?u=e8911c2fb91af4d30432f76da8c40927b2830bd7&v=4" width="80;" alt="patvdv"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Patrick Van Der Veken</b></sub>
|
||||||
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -1210,6 +1210,36 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
|
|||||||
<sub><b>Shiverme Timbers</b></sub>
|
<sub><b>Shiverme Timbers</b></sub>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/Sacquer">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/29262439?v=4" width="80;" alt="Sacquer"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Gökhan Alkacir</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/forwardemail">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/32481436?v=4" width="80;" alt="forwardemail"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Forward Email - Open-source & Privacy-focused Email Service (2023)</b></sub>
|
||||||
|
</a>
|
||||||
|
</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"/>
|
||||||
@@ -1217,13 +1247,6 @@ 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>
|
|
||||||
<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"/>
|
||||||
@@ -1238,8 +1261,6 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
|
|||||||
<sub><b>Terminal Trove</b></sub>
|
<sub><b>Terminal Trove</b></sub>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<a href="https://github.com/st617">
|
<a href="https://github.com/st617">
|
||||||
<img src="https://avatars.githubusercontent.com/u/128325650?v=4" width="80;" alt="st617"/>
|
<img src="https://avatars.githubusercontent.com/u/128325650?v=4" width="80;" alt="st617"/>
|
||||||
@@ -1247,19 +1268,19 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
|
|||||||
<sub><b>st617</b></sub>
|
<sub><b>st617</b></sub>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/nrvo">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/151435968?u=e1dcb307fd0efdc45cddbe9490a7b956e4da6835&v=4" width="80;" alt="nrvo"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Nrvo</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<a href="https://github.com/hudsonrock-partnerships">
|
<a href="https://github.com/hudsonrock-partnerships">
|
||||||
<img src="https://avatars.githubusercontent.com/u/163282900?u=5f2667f7fe5d284ac7a2da6b0800ea8970b0fcbf&v=4" width="80;" alt="hudsonrock-partnerships"/>
|
<img src="https://avatars.githubusercontent.com/u/163282900?u=5f2667f7fe5d284ac7a2da6b0800ea8970b0fcbf&v=4" width="80;" alt="hudsonrock-partnerships"/>
|
||||||
<br />
|
<br />
|
||||||
<sub><b>hudsonrock-partnerships</b></sub>
|
<sub><b>hudsonrock-partnerships</b></sub>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<a href="https://github.com/CarterPerez-dev">
|
|
||||||
<img src="https://avatars.githubusercontent.com/u/188120068?v=4" width="80;" alt="CarterPerez-dev"/>
|
|
||||||
<br />
|
|
||||||
<sub><b>Carter Perez</b></sub>
|
|
||||||
</a>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|||||||
@@ -8,9 +8,6 @@ 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(); }
|
||||||
@@ -24,6 +21,7 @@ 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 '
|
||||||
@@ -33,14 +31,6 @@ 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) => {
|
||||||
|
|
||||||
@@ -55,11 +45,6 @@ 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;
|
||||||
|
|
||||||
@@ -98,15 +83,6 @@ 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,
|
||||||
|
|||||||
@@ -1,67 +1,10 @@
|
|||||||
import puppeteer from 'puppeteer-core';
|
import puppeteer from 'puppeteer-core';
|
||||||
import chromium from 'chrome-aws-lambda';
|
import chromium from 'chrome-aws-lambda';
|
||||||
import middleware from './_common/middleware.js';
|
import middleware from './_common/middleware.js';
|
||||||
import { execFile } from 'child_process';
|
|
||||||
import { promises as fs } from 'fs';
|
|
||||||
import path from 'path';
|
|
||||||
import pkg from 'uuid';
|
|
||||||
const { v4: uuidv4 } = pkg;
|
|
||||||
|
|
||||||
// Helper function for direct chromium screenshot as fallback
|
|
||||||
const directChromiumScreenshot = async (url) => {
|
|
||||||
console.log(`[DIRECT-SCREENSHOT] Starting direct screenshot process for URL: ${url}`);
|
|
||||||
|
|
||||||
// Create a tmp filename
|
|
||||||
const tmpDir = '/tmp';
|
|
||||||
const uuid = uuidv4();
|
|
||||||
const screenshotPath = path.join(tmpDir, `screenshot-${uuid}.png`);
|
|
||||||
|
|
||||||
console.log(`[DIRECT-SCREENSHOT] Will save screenshot to: ${screenshotPath}`);
|
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const chromePath = process.env.CHROME_PATH || '/usr/bin/chromium';
|
|
||||||
const args = [
|
|
||||||
'--headless',
|
|
||||||
'--disable-gpu',
|
|
||||||
'--no-sandbox',
|
|
||||||
`--screenshot=${screenshotPath}`,
|
|
||||||
url
|
|
||||||
];
|
|
||||||
|
|
||||||
console.log(`[DIRECT-SCREENSHOT] Executing: ${chromePath} ${args.join(' ')}`);
|
|
||||||
|
|
||||||
execFile(chromePath, args, async (error, stdout, stderr) => {
|
|
||||||
if (error) {
|
|
||||||
console.error(`[DIRECT-SCREENSHOT] Chromium error: ${error.message}`);
|
|
||||||
return reject(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Read the screenshot file
|
|
||||||
const screenshotData = await fs.readFile(screenshotPath);
|
|
||||||
console.log(`[DIRECT-SCREENSHOT] Screenshot read successfully`);
|
|
||||||
|
|
||||||
// Convert to base64
|
|
||||||
const base64Data = screenshotData.toString('base64');
|
|
||||||
|
|
||||||
await fs.unlink(screenshotPath).catch(err =>
|
|
||||||
console.warn(`[DIRECT-SCREENSHOT] Failed to delete temp file: ${err.message}`)
|
|
||||||
);
|
|
||||||
|
|
||||||
resolve(base64Data);
|
|
||||||
} catch (readError) {
|
|
||||||
console.error(`[DIRECT-SCREENSHOT] Failed reading screenshot: ${readError.message}`);
|
|
||||||
reject(readError);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const screenshotHandler = async (targetUrl) => {
|
const screenshotHandler = async (targetUrl) => {
|
||||||
console.log(`[SCREENSHOT] Request received for URL: ${targetUrl}`);
|
|
||||||
|
|
||||||
if (!targetUrl) {
|
if (!targetUrl) {
|
||||||
console.error('[SCREENSHOT] URL is missing from queryStringParameters');
|
|
||||||
throw new Error('URL is missing from queryStringParameters');
|
throw new Error('URL is missing from queryStringParameters');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,45 +15,26 @@ const screenshotHandler = async (targetUrl) => {
|
|||||||
try {
|
try {
|
||||||
new URL(targetUrl);
|
new URL(targetUrl);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`[SCREENSHOT] URL provided is invalid: ${targetUrl}`);
|
|
||||||
throw new Error('URL provided is invalid');
|
throw new Error('URL provided is invalid');
|
||||||
}
|
}
|
||||||
|
|
||||||
// First try direct Chromium
|
|
||||||
try {
|
|
||||||
console.log(`[SCREENSHOT] Using direct Chromium method for URL: ${targetUrl}`);
|
|
||||||
const base64Screenshot = await directChromiumScreenshot(targetUrl);
|
|
||||||
console.log(`[SCREENSHOT] Direct screenshot successful`);
|
|
||||||
return { image: base64Screenshot };
|
|
||||||
} catch (directError) {
|
|
||||||
console.error(`[SCREENSHOT] Direct screenshot method failed: ${directError.message}`);
|
|
||||||
console.log(`[SCREENSHOT] Falling back to puppeteer method...`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// fall back puppeteer
|
|
||||||
let browser = null;
|
let browser = null;
|
||||||
try {
|
try {
|
||||||
console.log(`[SCREENSHOT] Launching puppeteer browser`);
|
browser = await puppeteer.launch({
|
||||||
browser = await puppeteer.launch({
|
|
||||||
args: [...chromium.args, '--no-sandbox'], // Add --no-sandbox flag
|
args: [...chromium.args, '--no-sandbox'], // Add --no-sandbox flag
|
||||||
defaultViewport: { width: 800, height: 600 },
|
defaultViewport: { width: 800, height: 600 },
|
||||||
executablePath: process.env.CHROME_PATH || '/usr/bin/chromium',
|
executablePath: process.env.CHROME_PATH || await chromium.executablePath,
|
||||||
headless: true,
|
headless: chromium.headless,
|
||||||
ignoreHTTPSErrors: true,
|
ignoreHTTPSErrors: true,
|
||||||
ignoreDefaultArgs: ['--disable-extensions'],
|
ignoreDefaultArgs: ['--disable-extensions'],
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(`[SCREENSHOT] Creating new page`);
|
|
||||||
let page = await browser.newPage();
|
let page = await browser.newPage();
|
||||||
|
|
||||||
console.log(`[SCREENSHOT] Setting page preferences`);
|
|
||||||
await page.emulateMediaFeatures([{ name: 'prefers-color-scheme', value: 'dark' }]);
|
await page.emulateMediaFeatures([{ name: 'prefers-color-scheme', value: 'dark' }]);
|
||||||
page.setDefaultNavigationTimeout(8000);
|
page.setDefaultNavigationTimeout(8000);
|
||||||
|
|
||||||
console.log(`[SCREENSHOT] Navigating to URL: ${targetUrl}`);
|
|
||||||
await page.goto(targetUrl, { waitUntil: 'domcontentloaded' });
|
await page.goto(targetUrl, { waitUntil: 'domcontentloaded' });
|
||||||
|
|
||||||
console.log(`[SCREENSHOT] Checking if body element exists`);
|
|
||||||
await page.evaluate(() => {
|
await page.evaluate(() => {
|
||||||
const selector = 'body';
|
const selector = 'body';
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@@ -122,20 +46,13 @@ const screenshotHandler = async (targetUrl) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(`[SCREENSHOT] Taking screenshot`);
|
|
||||||
const screenshotBuffer = await page.screenshot();
|
const screenshotBuffer = await page.screenshot();
|
||||||
|
|
||||||
console.log(`[SCREENSHOT] Converting screenshot to base64`);
|
|
||||||
const base64Screenshot = screenshotBuffer.toString('base64');
|
const base64Screenshot = screenshotBuffer.toString('base64');
|
||||||
|
|
||||||
console.log(`[SCREENSHOT] Screenshot complete, returning image`);
|
|
||||||
return { image: base64Screenshot };
|
return { image: base64Screenshot };
|
||||||
} catch (error) {
|
|
||||||
console.error(`[SCREENSHOT] Puppeteer screenshot failed: ${error.message}`);
|
|
||||||
throw error;
|
|
||||||
} finally {
|
} finally {
|
||||||
if (browser !== null) {
|
if (browser !== null) {
|
||||||
console.log(`[SCREENSHOT] Closing browser`);
|
|
||||||
await browser.close();
|
await browser.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "web-check",
|
"name": "web-check",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "2.0.1",
|
"version": "2.0.0",
|
||||||
"homepage": "https://web-check.xyz",
|
"homepage": "https://web-check.xyz",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node server",
|
"start": "node server",
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
<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>
|
|
||||||
@@ -22,7 +22,7 @@ const siteInfo = {
|
|||||||
site: import.meta.env.SITE_URL || 'https://web-check.xyz',
|
site: import.meta.env.SITE_URL || 'https://web-check.xyz',
|
||||||
analytics: {
|
analytics: {
|
||||||
enable: import.meta.env.ENABLE_ANALYTICS,
|
enable: import.meta.env.ENABLE_ANALYTICS,
|
||||||
domain: 'web-check.as93.net',
|
domain: 'web-check.xyz',
|
||||||
script: 'https://no-track.as93.net/js/script.js',
|
script: 'https://no-track.as93.net/js/script.js',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -92,7 +92,8 @@ const makeBreadcrumbs = () => {
|
|||||||
|
|
||||||
<!-- Non-tracking hit counter -->
|
<!-- Non-tracking hit counter -->
|
||||||
{analytics.enable && (
|
{analytics.enable && (
|
||||||
<script defer data-domain={analytics.domain} src={analytics.script}></script>
|
<script defer is:inline type="text/partytown"
|
||||||
|
data-domain={analytics.domain} src={analytics.script}></script>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<!-- Schema.org markup for Google -->
|
<!-- Schema.org markup for Google -->
|
||||||
|
|||||||
@@ -1,15 +1,12 @@
|
|||||||
---
|
---
|
||||||
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');
|
||||||
@@ -23,7 +20,6 @@ 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,7 +4,6 @@ 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
|
||||||
@@ -38,10 +37,6 @@ 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,7 +2,6 @@
|
|||||||
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,
|
||||||
|
|||||||
Reference in New Issue
Block a user