/*----------------------------------------------------------------------------*/ /* main.js */ /*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/ /* This file is part of GuaClient. */ /* */ /* GuaClient is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by */ /* the Free Software Foundation, either version 3 of the License, or */ /* (at your option) any later version. */ /* */ /* GuaClient is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ /* GNU General Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License */ /* along with GuaClient. If not, see . */ /*----------------------------------------------------------------------------*/ const electron = require('electron'); const { app, BrowserWindow } = electron; const prompt = require('electron-prompt') const process = require('process'); let mainWindow; let target_url = "https://www.rx3.net/tdsots/admin/guacamole/"; let target_user = ""; app.on('login', (event, webContents, request, authInfo, callback) => { event.preventDefault(); // popup a dialog to let the user enter a username/password // ... if( target_user != "") { prompt( { title: 'Authentication', label: 'Enter Password:', inputAttrs: { type: 'password'}, type: 'input' }).then(( password) => { callback( target_user, password); }).catch( console.error); } else { prompt( { title: 'Authentication', label: 'Enter Login:', inputAttrs: { type: 'text'}, type: 'input' }).then(( username) => { prompt( { title: 'Authentication', label: 'Enter Password:', inputAttrs: { type: 'password'}, type: 'input' }).then(( password) => { callback( username, password); }).catch( console.error); }).catch( console.error); } }); app.on('ready', () => { mainWindow = new BrowserWindow( { width: 1000, height: 700 }); let exit = false; for( let i = 2, next = ""; i < process.argv.length; i++) { if( next == "") { switch( process.argv[ i]) { case "--url": { next = "URL"; break; } case "--user": { next = "USER"; break; } case "--user": { next = "USER"; break; } case "--help": { console.log( "usage: guaclient [--url ] [--user ]"); console.log( "Defaults: URL: [" + target_url + "] ["+ target_user + "]"); exit = true; break; } default: { console.log( "Unknown arg: [" + process.argv[i] + "]"); } } } else { switch( next) { case "URL": { target_url = process.argv[ i]; break; } case "USER": { target_user = process.argv[ i]; break; } default: { console.log( "Erreur interne: [" + next + "]"); break; } } next = ""; } } if( !exit) { console.log( "Connecting [" + target_url + "] with user: [" + target_user + "]"); mainWindow.setTitle('Rx3 Guacamole'); mainWindow.loadURL( target_url); mainWindow.on('closed', () => { mainWindow = null; }); } else { app.quit(); } });