removed phantom js

pr169
bckmnn 2021-02-20 16:43:42 +01:00
parent ea40f1cc7a
commit 5c753cb82a
10 changed files with 7507 additions and 42 deletions

View File

@ -25,7 +25,7 @@
"redis_mock": true,
"redis_host": "localhost",
"phantom_api_secret": "very_secret_phantom_password",
"export_api_secret": "very_secret_export_password",
"mail_provider": "smtp",
"mail_smtp_host": "your.smtp.host",

View File

@ -16,7 +16,7 @@ module.exports = {
var timeout = 5000;
if (type=="pdf") timeout = 30000;
space_url += "?api_token="+config.get("phantom_api_secret");
space_url += "?api_token="+config.get("export_api_secret");
console.log("[space-screenshot] url: "+space_url);
console.log("[space-screenshot] export_path: "+export_path);

View File

@ -320,5 +320,6 @@
"follow_present": "Folgen",
"mute_present": "Entfolgen",
"follow_present_help": "Wenn jemand den Space präsentiert, folgen die anderen Mitglieder automatisch der Präsentation. Mit diesem Knopf lässt sich das an- oder ausschalten.",
"media": "Media"
"media": "Media",
"tool_edit_text": "Text bearbeiten"
}

View File

@ -86,7 +86,7 @@ module.exports = (req, res, next) => {
// space is private
// special permission for screenshot/pdf export from backend
if (req.query['api_token'] && req.query['api_token'] == config.get('phantom_api_secret')) {
if (req.query['api_token'] && req.query['api_token'] == config.get('export_api_secret')) {
finalizeReq(space, "viewer");
return;
}

7466
package-lock.json generated 100644

File diff suppressed because it is too large Load Diff

View File

@ -30,8 +30,6 @@
"mock-aws-s3": "^2.6.0",
"moment": "^2.19.3",
"morgan": "^1.9.1",
"node-phantom-simple": "2.2.4",
"node-server-screenshot": "^0.2.1",
"nodemailer": "^4.6.7",
"puppeteer": "3.0.0",
"read-chunk": "^2.1.0",

View File

@ -5,7 +5,7 @@ const db = require('../../models/db');
var mailer = require('../../helpers/mailer');
var uploader = require('../../helpers/uploader');
var space_render = require('../../helpers/space-render');
var phantom = require('../../helpers/phantom');
var exporter = require('../../helpers/exporter');
var async = require('async');
var moment = require('moment');
@ -51,7 +51,7 @@ router.get('/png', function(req, res, next) {
if (!req.space.thumbnail_updated_at || req.space.thumbnail_updated_at < req.space.updated_at || !req.space.thumbnail_url) {
db.Space.update({ thumbnail_updated_at: triggered }, {where : {"_id": req.space._id }});
phantom.takeScreenshot(req.space, "png", function(local_path) {
exporter.takeScreenshot(req.space, "png", function(local_path) {
var localResizedFilePath = local_path + ".thumb.jpg";
gm(local_path).resize(640, 480).quality(70.0).autoOrient().write(localResizedFilePath, function(err) {
@ -109,7 +109,7 @@ function make_export_filename(space, extension) {
router.get('/pdf', function(req, res, next) {
var s3_filename = make_export_filename(req.space, "pdf");
phantom.takeScreenshot(req.space, "pdf", function(local_path) {
exporter.takeScreenshot(req.space, "pdf", function(local_path) {
uploader.uploadFile(s3_filename, "application/pdf", local_path, function(err, url) {
res.status(201).json({
url: url

View File

@ -9,7 +9,7 @@ var redis = require('../../helpers/redis');
var mailer = require('../../helpers/mailer');
var uploader = require('../../helpers/uploader');
var space_render = require('../../helpers/space-render');
var phantom = require('../../helpers/phantom');
var exporter = require('../../helpers/exporter');
var async = require('async');
var fs = require('fs');

View File

@ -10,7 +10,7 @@ var redis = require('../../helpers/redis');
var mailer = require('../../helpers/mailer');
var uploader = require('../../helpers/uploader');
var space_render = require('../../helpers/space-render');
var phantom = require('../../helpers/phantom');
var exporter = require('../../helpers/exporter');
var payloadConverter = require('../../helpers/artifact_converter');
var slug = require('slug');

View File

@ -1,10 +1,10 @@
"use strict";
const puppeteer = require('puppeteer');
var config = require('config');
require('../../models/db');
var fs = require('fs');
var phantom = require('node-phantom-simple');
var md5 = require('md5');
var express = require('express');
@ -19,40 +19,40 @@ function website_to_png(url,on_success,on_error) {
console.log("[webgrabber] url: "+url);
console.log("[webgrabber] export_path: "+export_path);
var on_success_called = false;
var on_exit = function(exit_code) {
if (exit_code>0) {
console.log("[phantom-webgrabber] abnormal exit for url "+url);
if (!on_success_called && on_error) {
on_error();
}
}
};
fs.stat(export_path, function(err, stat) {
if (!err) {
// file exists
console.log("[webgrabber] serving cached snapshot of url: "+url);
on_success(export_path);
} else {
phantom.create({ path: require('phantomjs-prebuilt').path }, function (err, browser) {
return browser.createPage(function (err, page) {
page.set('settings.resourceTimeout',timeout);
page.set('settings.javascriptEnabled',false);
(async () => {
let browser;
let page;
try {
browser = await puppeteer.launch(
{
headless: true,
args: ['--disable-dev-shm-usage', '--no-sandbox']
}
);
page = await browser.newPage();
return page.open(url, function(err, status) {
console.log("[webgrabber] status: "+status);
page.render(export_path, function() {
on_success_called = true;
page.setDefaultTimeout(timeout);
await page.setJavaScriptEnabled(false);
console.log("page created, opening ",url);
await page.goto(url, {waitUntil: 'networkidle0'});
await page.screenshot({path: export_path});
await browser.close();
on_success(export_path);
browser.exit();
});
});
});
}, {
onExit: on_exit
});
} catch (error) {
console.error(error);
console.log("[puppeteer-webgrabber] abnormal exit for url "+url);
on_error();
}
})();
}
});
}