Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit fadfe304 authored by Jérôme Gorin's avatar Jérôme Gorin
Browse files

New preloads functions

parent feda718d
No related branches found
No related tags found
No related merge requests found
......@@ -59,16 +59,16 @@ export class BrowserSession {
applySettings(settings) {
this.collector.settings = settings;
//Set preloads
const preloads = [];
if (settings && settings.logs) {
//Set preloads
const stacktracePath = path.dirname(require.resolve("stacktrace-js/package.json"));
preloads.push(path.join(stacktracePath, '/dist/stacktrace.min.js'));
preloads.push(path.join(__dirname, 'preload.js'));
preloads.push(path.join(__dirname, 'trackers.bundle.js'));
}
const htmlToImagePath = path.dirname(require.resolve("html2canvas/package.json"));
preloads.push(path.join(htmlToImagePath, '/dist/html2canvas.min.js'));
preloads.push(path.join(__dirname, 'screenshots.bundle.js'));
preloads.push(path.join(__dirname, 'dnt.bundle.js'));
;
const ses = this._view.webContents.session;
ses.setPreloads(preloads);
......
......@@ -19,7 +19,7 @@
]
},
"files": [
"main.ts","preload.ts", "handlers/sessions/preload.ts"
"main.ts","preload.ts"
],
"exclude": [
"node_modules",
......
......@@ -18,7 +18,7 @@
]
},
"files": [
"main.ts","preload.ts", "./handlers/sessions/preload.ts"
"main.ts","preload.ts"
],
"exclude": [
"node_modules",
......
......@@ -12,7 +12,7 @@
"start": "npm-run-all -p electron:serve-tsc ng:serve electron:serve",
"ng:serve": "ng serve",
"ng:test": "ng test",
"build": "tsc -p app/tsconfig.prod.json && ng build --base-href ./",
"build": "tsc -p app/tsconfig.prod.json && ng build --base-href ./ && npx webpack --config webpack.config.js",
"build:dev": "npm run build -- -c dev",
"build:prod": "npm run build -- -c production",
"watch": "ng build --watch --configuration development",
......@@ -101,7 +101,9 @@
"karma-jasmine-html-reporter": "~2.1.0",
"playwright": "^1.39.0",
"typescript": "5.6.3",
"wait-on": "^7.1.0"
"wait-on": "^7.1.0",
"webpack": "^5.97.1",
"webpack-cli": "^6.0.1"
},
"build": {
"appId": "com.edpb.wat ",
......
const { ipcRenderer, contextBridge } = require('electron');
ipcRenderer.on('dntJs', (event, messages) => {
contextBridge.exposeInMainWorld(
'navigator',
{
doNotTrack: 1
});
});
\ No newline at end of file
const { ipcRenderer } = require('electron');
import html2canvas from 'html2canvas';
ipcRenderer.on('full_screenshot', (event, partition) => {
html2canvas(document.body).then((canvas) => {
canvas.toBlob((blob) => {
const reader = new FileReader();
reader.addEventListener('loadend', () => {
const arrayBuffer = reader.result;
ipcRenderer.invoke('full_screenshot_image', arrayBuffer);
});
reader.readAsArrayBuffer(blob);
});
}).catch(function (error) {
console.error('Something went wrong with capture!', error);
ipcRenderer.invoke('full_screenshot_image', null);
});
});
\ No newline at end of file
/*
* SPDX-FileCopyrightText: 2022-2023 European Data Protection Board (EDPB)
*
* SPDX-License-Identifier: EUPL-1.2
*
* Based on https://github.com/EU-EDPS/website-evidence-collector/blob/master/lib/setup-cookie-recording.js
* from the Website Evidence Collector (https://github.com/EU-EDPS/website-evidence-collector)
*/
const { ipcRenderer, contextBridge } = require('electron');
const { ipcRenderer } = require('electron');
declare var StackTrace;
declare var html2canvas;
import * as StackTrace from 'stacktrace-js';
// original object
const origDescriptor: any = Object.getOwnPropertyDescriptor(
const origDescriptor = Object.getOwnPropertyDescriptor(
Document.prototype,
"cookie"
);
......@@ -42,16 +33,16 @@ Object.defineProperty(window, "localStorage", {
configurable: true,
enumerable: true,
value: new Proxy(localStorage, {
set: function (ls, prop: string, value) {
set: function (ls, prop, value) {
//console.log(`direct assignment: ${prop} = ${value}`);
let stack = StackTrace.getSync({ offline: true });
let hash: any = {};
let hash = {};
hash[prop] = value;
ipcRenderer.invoke('reportEvent', "Storage.LocalStorage", stack, hash, JSON.stringify(window.location));
ls[prop] = value;
return true;
},
get: function (ls, prop: string) {
get: function (ls, prop) {
// The only property access we care about is setItem. We pass
// anything else back without complaint. But using the proxy
// fouls 'this', setting it to this {set: fn(), get: fn()}
......@@ -63,38 +54,15 @@ Object.defineProperty(window, "localStorage", {
return ls[prop];
}
}
return (...args: any[]) => {
return (...args) => {
let stack = StackTrace.getSync({ offline: true });
let hash: any = {};
let hash = {};
hash[args[0]] = args[1];
ipcRenderer.invoke('reportEvent', "Storage.LocalStorage", stack, hash, JSON.stringify(window.location));
ls.setItem.apply(ls, args as any);
ls.setItem.apply(ls, args);
};
},
}),
});
ipcRenderer.on('dntJs', (event, messages) => {
contextBridge.exposeInMainWorld(
'navigator',
{
doNotTrack: 1
});
});
ipcRenderer.on('full_screenshot', (event, partition) => {
html2canvas(document.body).then((canvas) => {
canvas.toBlob((blob) => {
const reader = new FileReader();
reader.addEventListener('loadend', () => {
const arrayBuffer = reader.result;
ipcRenderer.invoke('full_screenshot_image', arrayBuffer);
});
reader.readAsArrayBuffer(blob);
});
}).catch(function (error) {
console.error('Something went wrong with capture!', error);
ipcRenderer.invoke('full_screenshot_image', null);
});
});
\ No newline at end of file
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: {
trackers:'./preloads/trackers.js',
dnt:'./preloads/dnt.js',
screenshots:'./preloads/screenshots.js',
},
output: {
path: path.resolve(__dirname, 'electron/handlers/sessions'),
filename: '[name].bundle.js',
},
externals: {
electron: 'commonjs2 electron', // Exclude Electron from the bundle
},
target: 'electron-preload',
mode: 'production'
};
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment