318 lines
12 KiB
JavaScript
318 lines
12 KiB
JavaScript
/* ### Electron Specific JavaScript ### */
|
|
// import crypto from 'crypto';
|
|
// import {fs} from 'fs';
|
|
// import path from 'path';
|
|
// const crypto = require('crypto');
|
|
// const fs = require('fs');
|
|
// const fs_promises = require('node:fs/promises');
|
|
// const path = require('path');
|
|
// const { ipcRenderer } = require('electron');
|
|
|
|
|
|
// function sleep(milliseconds) {
|
|
// const date = Date.now();
|
|
// let currentDate = null;
|
|
// do {
|
|
// currentDate = Date.now();
|
|
// } while (currentDate - date < milliseconds);
|
|
// }
|
|
|
|
// // exports.check_hash_file_cache should no longer be needed with this.
|
|
// // Updated 2022-10-11
|
|
// export let check_hash_file_cache_v2 = async function check_hash_file_cache_v2({local_file_cache_path, hash, check_hash=false}) {
|
|
// console.log('*** check_hash_file_cache_v2() ***');
|
|
// console.log(`Host File Cache Path: ${local_file_cache_path}; Hash: ${hash}`);
|
|
|
|
// let hash_filename = `${hash}.file`;
|
|
|
|
// let subdirectory = hash_filename.substring(0,2);
|
|
// let subdirectory_path = path.join(local_file_cache_path, subdirectory);
|
|
// if (fs.existsSync(subdirectory_path)) {
|
|
// } else {
|
|
// console.log(`Hashed file subdirectory not found in cache: ${subdirectory_path}`);
|
|
// return null;
|
|
// }
|
|
|
|
// let hash_file_cache_path = path.join(subdirectory_path, hash_filename);
|
|
|
|
// if (fs.existsSync(hash_file_cache_path)) {
|
|
// console.log(`Hashed file exists in cache: ${hash_file_cache_path}`);
|
|
|
|
// if (check_hash) {
|
|
// const file_buffer = fs.readFileSync(hash_file_cache_path);
|
|
// const file_hash_sha256 = crypto.createHash('sha256');
|
|
// file_hash_sha256.update(file_buffer);
|
|
|
|
// const file_hash_sha256_check = file_hash_sha256.digest('hex');
|
|
// if (file_hash_sha256_check == hash) {
|
|
// console.log('File hash match', file_hash_sha256_check);
|
|
// } else {
|
|
// console.log('File hash does not match', file_hash_sha256_check);
|
|
// return false;
|
|
// }
|
|
// }
|
|
|
|
// return true;
|
|
// } else {
|
|
// console.log(`Hashed file not found in cache: ${hash_file_cache_path}`);
|
|
// return null;
|
|
// }
|
|
// }
|
|
|
|
|
|
// Updated 2022-05-07
|
|
export let kill_processes = async function kill_processes({process_name_li=[]}) {
|
|
console.log('*** kill_processes() ***');
|
|
console.log(`Process Name List: ${process_name_li}`);
|
|
|
|
let fail_flag = null;
|
|
if (process_name_li) {
|
|
for (let i = 0; i < process_name_li.length; i++) {
|
|
// separate the keys and the values
|
|
let process_name = process_name_li[i];
|
|
let signal = null;
|
|
|
|
if (process_name == 'osit_aperture_wrapper') {
|
|
signal = 'INT'; // INT (interrupt) correctly stops the wrapper
|
|
}
|
|
|
|
let kill_processes_result = await native_app.kill_processes({process_name: process_name, signal: signal});
|
|
console.log(kill_processes_result);
|
|
if (kill_processes_result) {
|
|
console.log('Killed process.');
|
|
// return kill_processes_result;
|
|
} else {
|
|
console.log('Did not kill process. Something went wrong.');
|
|
fail_flag = true;
|
|
// return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
return fail_flag;
|
|
|
|
// let kill_processes_result = await native_app.kill_processes({process_name: process_name});
|
|
// console.log(kill_processes_result);
|
|
// if (kill_processes_result) {
|
|
// console.log('Killed process.');
|
|
// return kill_processes_result;
|
|
// } else {
|
|
// console.log('Did not kill process. Something went wrong.');
|
|
// return false;
|
|
// }
|
|
}
|
|
|
|
|
|
// Updated 2022-05-06
|
|
export let open_local_file = async function open_local_file({file_path, filename}) {
|
|
console.log('*** open_local_file() ***');
|
|
console.log(`File Path: ${file_path}; Filename: ${filename}`);
|
|
|
|
console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory');
|
|
|
|
// let check_local_file_result = await native_app.check_local_file({local_file_path: file_path, filename: filename});
|
|
// console.log(check_local_file_result);
|
|
// if (check_local_file_result) {
|
|
// console.log('Local file found.');
|
|
// } else {
|
|
// console.log('Local file not found. Will not attempt to open.');
|
|
// return false;
|
|
// }
|
|
|
|
// console.log('Local file file found and ready to be opened.');
|
|
let open_local_file_result = await native_app.open_local_file({local_file_path: file_path, filename: filename});
|
|
console.log(open_local_file_result);
|
|
if (open_local_file_result) {
|
|
console.log('Local file was opened.');
|
|
return open_local_file_result;
|
|
} else {
|
|
console.log('Local file was not opened. Something went wrong.');
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
// exports.open_local_file should no longer be needed with this.
|
|
// Updated 2022-10-11
|
|
export let open_local_file_v2 = async function open_local_file_v2({file_path, filename}) {
|
|
console.log('*** open_local_file_v2() ***');
|
|
console.log(`Local File Path: ${file_path}; Filename: ${filename}`);
|
|
|
|
console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory');
|
|
|
|
let open_local_file_result = await ipcRenderer.invoke('open_local_file', file_path, filename).then((result) => {
|
|
console.log('IPC open local file finished');
|
|
if (result) {
|
|
console.log('Local file was opened.');
|
|
return result;
|
|
} else {
|
|
console.log('Local file was not opened. Something went wrong.');
|
|
console.log(result);
|
|
return false;
|
|
}
|
|
|
|
console.log(result);
|
|
return true;
|
|
})
|
|
|
|
return open_local_file_result;
|
|
}
|
|
|
|
|
|
// // Updated 2022-05-06
|
|
// export let open_hash_file_to_temp = async function open_hash_file_to_temp({local_file_cache_path, hash, host_file_temp_path, filename}) {
|
|
// console.log('*** open_hash_file_to_temp() ***');
|
|
// console.log(`Host File Cache Path: ${local_file_cache_path}; Hash: ${hash}; Host File Temp Path: ${host_file_temp_path}; Filename: ${filename}`);
|
|
|
|
// console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory');
|
|
|
|
// let open_hash_file_to_temp_result = await native_app.open_hash_file_to_temp({local_file_cache_path: local_file_cache_path, hash: hash, host_file_temp_path: host_file_temp_path, filename: filename});
|
|
// console.log(open_hash_file_to_temp_result);
|
|
// if (open_hash_file_to_temp_result) {
|
|
// console.log('Local hash file was opened from temp directory.');
|
|
// return open_hash_file_to_temp_result;
|
|
// } else {
|
|
// console.log('Local hash file was not opened from the temp directory. Something went wrong.');
|
|
// return false;
|
|
// }
|
|
// }
|
|
|
|
// // exports.open_hash_file_to_temp should no longer be needed with this.
|
|
// // Updated 2022-10-11
|
|
// export let open_hash_file_to_temp_v2 = async function open_hash_file_to_temp_v2({local_file_cache_path, hash, host_file_temp_path, filename}) {
|
|
// console.log('*** open_hash_file_to_temp_v2() ***');
|
|
// console.log(`Host File Cache Path: ${local_file_cache_path}; Hash: ${hash}; Host File Temp Path: ${host_file_temp_path}; Filename: ${filename}`);
|
|
|
|
// console.log('Process: Check local hash file cache, Download hash file to cache, and Open cached hash file after copying to temp directory');
|
|
|
|
// let subdirectory = hash.substring(0,2);
|
|
// let subdirectory_path = path.join(local_file_cache_path, subdirectory);
|
|
// if (fs.existsSync(subdirectory_path)) {
|
|
// } else {
|
|
// console.log(`Hashed file subdirectory not found in cache: ${subdirectory_path}`);
|
|
// return null;
|
|
// }
|
|
|
|
// let hash_filename = hash+'.file';
|
|
// let full_cache_file_path = path.join(subdirectory_path, hash_filename);
|
|
// console.log(full_cache_file_path);
|
|
|
|
// const file_buffer = fs.readFileSync(full_cache_file_path);
|
|
// const file_hash_sha256 = crypto.createHash('sha256');
|
|
// file_hash_sha256.update(file_buffer);
|
|
|
|
// const file_hash_sha256_check = file_hash_sha256.digest('hex');
|
|
// if (file_hash_sha256_check == hash) {
|
|
// console.log('File hash match', file_hash_sha256_check);
|
|
// } else {
|
|
// console.log('File hash does not match', file_hash_sha256_check);
|
|
// // await setTimeout(async () => {console.log('Done waiting????'); open_file_clicked = false;}, 5000);
|
|
// // sleep(6000);
|
|
// // console.log('???????? WAITED X SECONDS ????????');
|
|
// return false;
|
|
// }
|
|
|
|
// let open_hash_file_to_temp_result = await ipcRenderer.invoke('open_hash_file_to_temp', subdirectory_path, hash, host_file_temp_path, filename).then((result) => {
|
|
// console.log('IPC open hash file to temp finished');
|
|
// if (result) {
|
|
// console.log('Local hash file was opened from temp directory.');
|
|
// return result;
|
|
// } else {
|
|
// console.log('Local hash file was not opened from the temp directory. Something went wrong.');
|
|
// console.log(result);
|
|
// return false;
|
|
// }
|
|
// })
|
|
|
|
// return open_hash_file_to_temp_result;
|
|
// }
|
|
|
|
|
|
// Updated 2022-05-07
|
|
export let run_cmd = async function run_cmd({cmd=null, return_stdout=null}) {
|
|
console.log('*** run_cmd() ***');
|
|
|
|
let run_cmd_result = await native_app.run_cmd({cmd: cmd, return_stdout: return_stdout})
|
|
.then(function (result) {
|
|
if (result) {
|
|
console.log('Command ran');
|
|
} else {
|
|
console.log('Command did not run. Something went wrong.');
|
|
return false;
|
|
}
|
|
if (return_stdout) {
|
|
return result;
|
|
} else {
|
|
return true;
|
|
}
|
|
|
|
});
|
|
|
|
console.log('Run Command Result:', run_cmd_result);
|
|
|
|
return run_cmd_result;
|
|
}
|
|
|
|
|
|
// Updated 2022-10-27
|
|
export let run_cmd_sync = function run_cmd_sync({cmd=null, return_stdout=null}) {
|
|
console.log('*** run_cmd_sync() ***');
|
|
|
|
let run_cmd_result = native_app.run_cmd_sync({cmd: cmd, return_stdout: return_stdout});
|
|
|
|
// if (run_cmd_result) {
|
|
// console.log('Command ran');
|
|
// } else {
|
|
// console.log('Command did not run. Something went wrong.');
|
|
// // return false;
|
|
// }
|
|
|
|
// if (return_stdout) {
|
|
// return run_cmd_result;
|
|
// } else {
|
|
// return true;
|
|
// }
|
|
|
|
console.log('Run Command Result:', run_cmd_result);
|
|
|
|
return run_cmd_result;
|
|
}
|
|
|
|
|
|
// Updated 2022-05-07
|
|
export let run_osascript = async function run_osascript({cmd=null, interactive=false, language=null, flags='h', program_file=null}) {
|
|
console.log('*** run_osascript() ***');
|
|
|
|
let run_osascript_result = await native_app.run_osascript({cmd: cmd, interactive: interactive, language: language, flags: flags, program_file: program_file});
|
|
|
|
console.log(run_osascript_result);
|
|
|
|
if (run_osascript_result) {
|
|
console.log('Apple Script ran');
|
|
} else {
|
|
console.log('Apple Script did not run. Something went wrong.');
|
|
}
|
|
|
|
return run_osascript_result;
|
|
}
|
|
|
|
|
|
|
|
// Updated 2022-05-07
|
|
export let get_device_info = async function get_device_info({event_device_id}) {
|
|
console.log('*** get_device_info() ***');
|
|
|
|
console.log(event_device_id);
|
|
|
|
let get_device_info_result = await native_app.get_device_info();
|
|
|
|
console.log(get_device_info_result);
|
|
|
|
if (get_device_info_result) {
|
|
console.log('Success');
|
|
} else {
|
|
console.log('Failed? Something went wrong.');
|
|
}
|
|
|
|
return get_device_info_result;
|
|
} |