Files
EveFlow/preload.js

32 lines
1.7 KiB
JavaScript

const { contextBridge, ipcRenderer } = require('electron');
// Exposition sécurisée via contextBridge (Zéro Trust contextIsolation)
contextBridge.exposeInMainWorld('electronAPI', {
windowControl: (action) => ipcRenderer.send('window-control', action),
setWindowMode: (mode) => ipcRenderer.send('set-window-mode', mode),
onWindowModeChanged: (callback) => {
const subscription = (event, mode) => callback(mode);
ipcRenderer.on('window-mode-changed', subscription);
return () => ipcRenderer.removeListener('window-mode-changed', subscription);
},
// Logging : envoie une entrée structurée vers le processus principal pour écriture disque
writeLog: (entry) => ipcRenderer.send('write-log', entry),
// Webhook : abonnement aux events pushés par Hermes
onHermesPush: (callback) => {
const subscription = (event, data) => callback(data);
ipcRenderer.on('hermes-push', subscription);
return () => ipcRenderer.removeListener('hermes-push', subscription);
},
// Store persistant fichier — indépendant de l'origine HTTP/file://
storeGet: (key) => ipcRenderer.invoke('store-get', key),
storeSet: (key, value) => ipcRenderer.invoke('store-set', key, value),
// Lecture de fichier local sécurisée
readLocalFile: (filePath) => ipcRenderer.invoke('read-local-file', filePath),
// Télémétrie réelle système
getSystemMetrics: () => ipcRenderer.invoke('get-system-metrics'),
// Écriture de fichier partagé
writeSharedFile: (filename, content, isBase64) => ipcRenderer.invoke('write-shared-file', filename, content, isBase64),
// Ouverture de fichier local
openLocalFile: (filePath) => ipcRenderer.invoke('open-local-file', filePath),
});