Validate Chrome is working at startup

This commit is contained in:
ngosang 2021-04-04 22:37:53 +02:00
parent 71814a86bc
commit a85e9c2c8c

View File

@ -1,8 +1,13 @@
const fs = require('fs');
const os = require('os');
const path = require('path');
import log from './log' import log from './log'
import { createServer, IncomingMessage, ServerResponse } from 'http'; import { createServer, IncomingMessage, ServerResponse } from 'http';
import { RequestContext } from './types' import { RequestContext } from './types'
import Router, { BaseAPICall } from './routes' import Router, { BaseAPICall } from './routes'
import getCaptchaSolver from "./captcha"; import getCaptchaSolver from "./captcha";
import sessions from "./session";
import {v1 as UUIDv1} from "uuid";
const version: string = "v" + require('../package.json').version const version: string = "v" + require('../package.json').version
const serverPort: number = Number(process.env.PORT) || 8191 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) { function errorResponse(errorMsg: string, res: ServerResponse, startTimestamp: number) {
log.error(errorMsg) log.error(errorMsg)
const response = { const response = {
@ -87,8 +108,10 @@ function validateIncomingRequest(ctx: RequestContext, params: BaseAPICall) {
} }
// init // init
log.info(`FlareSolverr ${version}`);
log.debug('Debug log enabled');
validateEnvironmentVariables(); validateEnvironmentVariables();
testChromeInstallation().then(r =>
createServer((req: IncomingMessage, res: ServerResponse) => { createServer((req: IncomingMessage, res: ServerResponse) => {
const startTimestamp = Date.now() const startTimestamp = Date.now()
@ -145,6 +168,6 @@ createServer((req: IncomingMessage, res: ServerResponse) => {
}) })
}) })
}).listen(serverPort, serverHost, () => { }).listen(serverPort, serverHost, () => {
log.info(`FlareSolverr ${version} listening on http://${serverHost}:${serverPort}`); log.info(`Listening on http://${serverHost}:${serverPort}`);
log.debug('Debug log enabled');
}) })
)