Files
aza/APP/nexus-remote/main.js
2026-03-25 14:14:07 +01:00

114 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const electron = require('electron');
const { app, BrowserWindow, desktopCapturer } = electron;
const ipcMain = electron.ipcMain;
const Menu = electron.Menu;
const globalShortcut = electron.globalShortcut;
const path = require('path');
const os = require('os');
const fs = require('fs');
let mainWindow;
let hardKillTriggered = false;
app.whenReady().then(() => {
Menu.setApplicationMenu(null);
mainWindow = new BrowserWindow({
width: 1300,
height: 820,
minWidth: 800,
minHeight: 500,
title: 'Nexus AzA Remote',
backgroundColor: '#0a0a0a',
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
},
});
mainWindow.loadFile('index.html');
ipcMain.handle('get-sources', async () => {
const sources = await desktopCapturer.getSources({
types: ['screen'],
thumbnailSize: { width: 1, height: 1 },
});
return sources.map((s) => ({ id: s.id, name: s.name }));
});
ipcMain.handle('save-credentials', async (_e, id, key) => {
const desktop = path.join(os.homedir(), 'Desktop');
const filePath = path.join(desktop, 'Nexus_AzA_Zugangsdaten.txt');
const content =
`-----------------------------------------
NEXUS AzA REMOTE - DEINE ZUGANGSDATEN
-----------------------------------------
Deine ID: ${id}
Sicherheits-Key: ${key}
SO VERBINDEST DU DICH:
1. Oeffne Nexus Remote auf dem anderen PC
2. Gib die obige ID als "Remote ID" ein
3. Gib den obigen Key als "Remote Key" ein
4. Klicke "Verbinden"
5. Die Verbindung wird gespeichert!
Beim naechsten Mal einfach "Verbinden"
klicken ID und Key sind gespeichert.
SICHERHEIT:
- Gib diese Daten nur an Personen weiter,
denen du vertraust.
- ESC = Verbindung trennen
- Ctrl+Alt+K = sofortiger Notaus
-----------------------------------------`;
try { fs.writeFileSync(filePath, content, 'utf-8'); } catch {}
return filePath;
});
ipcMain.on('set-always-on-top', (_e, val) => {
if (mainWindow && !mainWindow.isDestroyed()) {
mainWindow.setAlwaysOnTop(val);
}
});
ipcMain.on('cleanup-done', () => {
globalShortcut.unregisterAll();
app.exit(0);
});
globalShortcut.register('CommandOrControl+Alt+K', () => {
hardKillTriggered = true;
if (mainWindow && !mainWindow.isDestroyed()) {
mainWindow.webContents.send('hard-kill');
setTimeout(() => {
globalShortcut.unregisterAll();
app.exit(0);
}, 1200);
} else {
globalShortcut.unregisterAll();
app.exit(0);
}
});
globalShortcut.register('Escape', () => {
if (mainWindow && !mainWindow.isDestroyed()) {
mainWindow.webContents.send('kill-switch');
}
});
mainWindow.on('close', () => {
if (!mainWindow.isDestroyed()) {
mainWindow.webContents.send('hard-kill');
}
});
});
app.on('will-quit', () => {
globalShortcut.unregisterAll();
});
app.on('window-all-closed', () => {
globalShortcut.unregisterAll();
app.exit(0);
});