diff --git a/app/index.html b/app/index.html
index 52914ee..9b6a2aa 100644
--- a/app/index.html
+++ b/app/index.html
@@ -100,13 +100,16 @@
console.log(api_secret_key);
let api_temporary_token = null;
- let api_base_url = null;
+ let api_server_base_url = app_config.api_server_base_url; // null;
+ let api_server_base_url_bak = app_config.api_server_base_url_bak;
+ let app_server_base_url = app_config.app_server_base_url;
+ // let file_base_url = app_config.file_server_base_url;
- if (app_config.use_local_api) {
- api_base_url = app_config.api_local_base_url; // 'http://api.localhost:5001'
- } else {
- api_base_url = app_config.api_remote_base_url; // 'https://api.oneskyit.com'
- }
+ // if (app_config.use_local_api) {
+ // api_server_base_url = app_config.api_local_base_url; // 'http://api.localhost:5001'
+ // } else {
+ // api_server_base_url = app_config.api_remote_base_url; // 'https://api.oneskyit.com'
+ // }
/* ***** **** *** ** * ### * ** *** **** ***** */
diff --git a/app/js/aether_native_app_v3.js b/app/js/aether_native_app_v3.js
index d6f293a..619bfa3 100644
--- a/app/js/aether_native_app_v3.js
+++ b/app/js/aether_native_app_v3.js
@@ -2,8 +2,12 @@
const os = require('os');
const path = require('path');
const fs = require('fs');
+const child_process = require('child_process');
const { ipcRenderer } = require('electron');
+// import psList from 'ps-list';
+// const ps_list = require('ps-list');
+
let home_directory = require('os').homedir();
console.log('Home: '+home_directory);
@@ -77,13 +81,26 @@ exports.load_config = function () {
//close();
}
+ config.home_directory = home_directory; // From the OS platform
+ config.tmp_directory = tmp_directory; // From the OS platform
+
config.host_file_cache_path = config.host_file_cache_path.replace('[home]', home_directory);
config.host_file_cache_path = config.host_file_cache_path.replace('[tmp]', tmp_directory);
console.log(config.host_file_cache_path);
+ // if (fs.existsSync(config.host_file_cache_path)) {
+ // } else {
+ // fs.mkdirSync(config.host_file_cache_path);
+ // console.log(`Host file cache directory created: ${config.host_file_cache_path}`);
+ // }
config.host_file_temp_path = config.host_file_temp_path.replace('[home]', home_directory);
config.host_file_temp_path = config.host_file_temp_path.replace('[tmp]', tmp_directory);
console.log(config.host_file_temp_path);
+ // if (fs.existsSync(config.host_file_temp_path)) {
+ // } else {
+ // fs.mkdirSync(config.host_file_temp_path);
+ // console.log(`Host file temp directory created: ${config.host_file_temp_path}`);
+ // }
let import_config_to_ipc_result = ipcRenderer.invoke('import_config', config).then((result) => {
console.log('IPC import config finished');
@@ -97,7 +114,7 @@ exports.load_config = function () {
// Check for local file
-// Updated 2022-03-10
+// Updated 2022-05-06
exports.check_local_file = async function ({local_file_path, filename}) {
console.log('*** Electron framework export: check_local_file() ***');
// console.log('Check for local file');
@@ -116,7 +133,7 @@ exports.check_local_file = async function ({local_file_path, filename}) {
// Check local hash file cache
-// Updated 2022-03-09
+// Updated 2022-05-06
exports.check_hash_file_cache = async function ({host_file_cache_path, hash}) {
console.log('*** Electron framework export: check_hash_file_cache() ***');
// console.log('Check local hash file cache');
@@ -124,7 +141,15 @@ exports.check_hash_file_cache = async function ({host_file_cache_path, hash}) {
let hash_filename = `${hash}.file`;
- let hash_file_cache_path = path.join(host_file_cache_path, hash_filename);
+ let subdirectory = hash_filename.substring(0,2);
+ let subdirectory_path = path.join(host_file_cache_path, subdirectory);
+ if (fs.existsSync(subdirectory_path)) {
+ } else {
+ console.log(`Hashed file subdirectory not found in cache: ${subdirectory_path}`);
+ return false;
+ }
+
+ let hash_file_cache_path = path.join(subdirectory_path, hash_filename);
// console.log(hash_file_cache_path);
if (fs.existsSync(hash_file_cache_path)) {
@@ -138,7 +163,7 @@ exports.check_hash_file_cache = async function ({host_file_cache_path, hash}) {
// Download hash file to cache
-// Updated 2022-03-09
+// Updated 2022-05-06
exports.download_hash_file_to_cache = async function ({host_file_cache_path, event_file_id=null, hash=null}) {
console.log('*** Electron framework export: download_hash_file_to_cache() ***');
// console.log('Download hash file to cache');
@@ -147,7 +172,16 @@ exports.download_hash_file_to_cache = async function ({host_file_cache_path, eve
let endpoint = `/event/file/${event_file_id}/download`;
let hash_filename = `${hash}.file`;
- let hash_file_cache_path = path.join(host_file_cache_path, hash_filename);
+
+ let subdirectory = hash_filename.substring(0,2);
+ let subdirectory_path = path.join(host_file_cache_path, subdirectory);
+ if (fs.existsSync(subdirectory_path)) {
+ } else {
+ fs.mkdirSync(subdirectory_path);
+ console.log(`Subdirectory directory created: ${subdirectory_path}`);
+ }
+
+ let hash_file_cache_path = path.join(subdirectory_path, hash_filename);
// console.log(hash_file_cache_path);
let download_file_result = await ipcRenderer.invoke('download_file', api_base_url, endpoint, hash_file_cache_path).then((result) => {
@@ -169,13 +203,21 @@ exports.download_hash_file_to_cache = async function ({host_file_cache_path, eve
// Open cached hash file after copying to temp directory
-// Updated 2022-03-09
+// Updated 2022-05-06
exports.open_hash_file_to_temp = async function ({host_file_cache_path, hash, host_file_temp_path, filename}) {
console.log('*** Electron framework export: open_hash_file_to_temp() ***');
// console.log('Open cached hash file after copying to temp directory');
console.log(`Host File Cache Path: ${host_file_cache_path}; Hash: ${hash}; Host File Temp Path: ${host_file_temp_path}; Filename: ${filename}`);
- let open_hash_file_to_temp_result = await ipcRenderer.invoke('open_hash_file_to_temp', host_file_cache_path, hash, host_file_temp_path, filename).then((result) => {
+ let subdirectory = hash.substring(0,2);
+ let subdirectory_path = path.join(host_file_cache_path, subdirectory);
+ if (fs.existsSync(subdirectory_path)) {
+ } else {
+ console.log(`Hashed file subdirectory not found in cache: ${subdirectory_path}`);
+ 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');
console.log(result);
return true;
@@ -384,7 +426,36 @@ exports.check_file_cache_and_open_local_file = async function ({host_file_cache_
return open_local_file_result;
})
+}
+// Kill processes
+// Updated 2022-05-06
+exports.kill_processes = async function ({process_name = null}) {
+ console.log('*** Electron framework export: kill_processes() ***');
+ console.log(process_name); // process_name or grep pattern
+
+ let command = `pkill ${process_name}`;
+ child_process.exec(command, (err, stdout, stdin) => {
+ if (err) throw err;
+ console.log(stdout);
+ });
+ console.log('Killed processes?');
+
+ // let command = `ps -aux | grep ${process_name}`;
+ // child_process.exec(command, (err, stdout, stdin) => {
+ // if (err) throw err;
+ // console.log(stdout);
+ // });
+
+ // console.log(await psList());
+ // console.log(await ps_list());
+
+ // let signal = 'SIGTERM'; // 'SIGTERM', 'SIGINT', 'SIGHUP'
+
+ // process.kill(pid, signal);
+
+ // process.kill(pid, 0); // Special case test if process exists
+ return true;
}
\ No newline at end of file
diff --git a/config.json.default b/config.json.default
index dbc071f..cf6dfa6 100644
--- a/config.json.default
+++ b/config.json.default
@@ -9,7 +9,16 @@
"event_location_code": "",
"event_session_id": "",
- "api_secret_key": "XXXXXX",
+ "api_secret_key": "ABCD1234XYZ",
+
+ "api_server_base_url": "http://dev-api.oneskyit.local:5005",
+ "app_server_base_url": "http://dev-demo.oneskyit.local:5000",
+ "file_server_base_url": "",
+
+ "api_server_base_url_bak": "https://dev-api.oneskyit.com",
+ "app_server_base_url_bak": "https://dev-demo.oneskyit.com",
+ "file_server_base_url_bak": "",
+
"api_remote_base_url": "https://dev-fastapi.oneskyit.com",
"api_local_base_url": "http://dev-fastapi.oneskyit.local:5005",
"access_control_allow_origin": "*",
diff --git a/package-lock.json b/package-lock.json
index 7161c36..99141dc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,18 +1,20 @@
{
"name": "aether_app_native",
- "version": "3.0.0",
+ "version": "3.1.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "aether_app_native",
- "version": "3.0.0",
+ "version": "3.1.0",
"license": "ISC",
"dependencies": {
"axios": "^0.26.0",
+ "child_process": "^1.0.2",
"fs": "0.0.1-security",
"os": "^0.1.1",
- "path": "^0.12.7"
+ "path": "^0.12.7",
+ "ps-list": "^8.1.0"
},
"devDependencies": {
"electron": "^17.4.0",
@@ -293,6 +295,11 @@
"node": ">=8"
}
},
+ "node_modules/child_process": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz",
+ "integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o="
+ },
"node_modules/chromium-pickle-js": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
@@ -1635,6 +1642,17 @@
"dev": true,
"optional": true
},
+ "node_modules/ps-list": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.0.tgz",
+ "integrity": "sha512-NoGBqJe7Ou3kfQxEvDzDyKGAyEgwIuD3YrfXinjcCmBRv0hTld0Xb71hrXvtsNPj7HSFATfemvzB8PPJtq6Yag==",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -2279,6 +2297,11 @@
}
}
},
+ "child_process": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz",
+ "integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o="
+ },
"chromium-pickle-js": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
@@ -3348,6 +3371,11 @@
"dev": true,
"optional": true
},
+ "ps-list": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.0.tgz",
+ "integrity": "sha512-NoGBqJe7Ou3kfQxEvDzDyKGAyEgwIuD3YrfXinjcCmBRv0hTld0Xb71hrXvtsNPj7HSFATfemvzB8PPJtq6Yag=="
+ },
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
diff --git a/package.json b/package.json
index 7f882d1..954c9e7 100644
--- a/package.json
+++ b/package.json
@@ -13,9 +13,11 @@
"license": "ISC",
"dependencies": {
"axios": "^0.26.0",
+ "child_process": "^1.0.2",
"fs": "0.0.1-security",
"os": "^0.1.1",
- "path": "^0.12.7"
+ "path": "^0.12.7",
+ "ps-list": "^8.1.0"
},
"devDependencies": {
"electron": "^17.4.0",