mirror of
https://github.com/FlareSolverr/FlareSolverr.git
synced 2025-06-08 04:25:25 +00:00
Validate Chrome is working at startup
This commit is contained in:
parent
71814a86bc
commit
a85e9c2c8c
35
src/index.ts
35
src/index.ts
@ -1,8 +1,13 @@
|
||||
const fs = require('fs');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
import log from './log'
|
||||
import { createServer, IncomingMessage, ServerResponse } from 'http';
|
||||
import { RequestContext } from './types'
|
||||
import Router, { BaseAPICall } from './routes'
|
||||
import getCaptchaSolver from "./captcha";
|
||||
import sessions from "./session";
|
||||
import {v1 as UUIDv1} from "uuid";
|
||||
|
||||
const version: string = "v" + require('../package.json').version
|
||||
const serverPort: number = Number(process.env.PORT) || 8191
|
||||
@ -30,6 +35,22 @@ function validateEnvironmentVariables() {
|
||||
}
|
||||
}
|
||||
|
||||
async function testChromeInstallation() {
|
||||
log.debug("Testing Chrome installation...")
|
||||
// create a temporary file for testing
|
||||
const filePath = path.join(os.tmpdir(), 'flaresolverr.txt')
|
||||
fs.writeFileSync(filePath, 'flaresolverr');
|
||||
// launch the browser
|
||||
const url = `file://${filePath}`;
|
||||
const session = await sessions.create(UUIDv1(), {
|
||||
userAgent: null,
|
||||
oneTimeSession: true
|
||||
})
|
||||
const page = await session.browser.newPage()
|
||||
await page.goto(url, { waitUntil: 'domcontentloaded' })
|
||||
log.debug("Test successful.")
|
||||
}
|
||||
|
||||
function errorResponse(errorMsg: string, res: ServerResponse, startTimestamp: number) {
|
||||
log.error(errorMsg)
|
||||
const response = {
|
||||
@ -87,9 +108,11 @@ function validateIncomingRequest(ctx: RequestContext, params: BaseAPICall) {
|
||||
}
|
||||
|
||||
// init
|
||||
log.info(`FlareSolverr ${version}`);
|
||||
log.debug('Debug log enabled');
|
||||
validateEnvironmentVariables();
|
||||
|
||||
createServer((req: IncomingMessage, res: ServerResponse) => {
|
||||
testChromeInstallation().then(r =>
|
||||
createServer((req: IncomingMessage, res: ServerResponse) => {
|
||||
const startTimestamp = Date.now()
|
||||
|
||||
// health endpoint. this endpoint is special because it doesn't print traces
|
||||
@ -144,7 +167,7 @@ createServer((req: IncomingMessage, res: ServerResponse) => {
|
||||
ctx.errorResponse(e.message)
|
||||
})
|
||||
})
|
||||
}).listen(serverPort, serverHost, () => {
|
||||
log.info(`FlareSolverr ${version} listening on http://${serverHost}:${serverPort}`);
|
||||
log.debug('Debug log enabled');
|
||||
})
|
||||
}).listen(serverPort, serverHost, () => {
|
||||
log.info(`Listening on http://${serverHost}:${serverPort}`);
|
||||
})
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user