mirror of
https://github.com/JustusPlays78/SectorFileUpdater.git
synced 2025-04-29 19:24:24 +00:00
updates, soc, simplify code
This commit is contained in:
parent
b42f3a89fb
commit
e51694dc91
59
updater/package-lock.json
generated
59
updater/package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "updater",
|
"name": "sectorfile_updater",
|
||||||
"version": "1.0.0",
|
"version": "0.0.1",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "updater",
|
"name": "sectorfile_updater",
|
||||||
"version": "1.0.0",
|
"version": "0.0.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@octokit/core": "^4.0.5",
|
"@octokit/core": "^4.0.5",
|
||||||
@ -15,6 +15,7 @@
|
|||||||
"electron-squirrel-startup": "^1.0.0",
|
"electron-squirrel-startup": "^1.0.0",
|
||||||
"http": "^0.0.1-security",
|
"http": "^0.0.1-security",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
|
"simple-git": "^3.15.1",
|
||||||
"superagent": "^8.0.3"
|
"superagent": "^8.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@ -544,6 +545,19 @@
|
|||||||
"integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
|
"integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/@kwsites/file-exists": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
|
||||||
|
"dependencies": {
|
||||||
|
"debug": "^4.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@kwsites/promise-deferred": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
|
||||||
|
},
|
||||||
"node_modules/@malept/cross-spawn-promise": {
|
"node_modules/@malept/cross-spawn-promise": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz",
|
||||||
@ -5600,6 +5614,20 @@
|
|||||||
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/simple-git": {
|
||||||
|
"version": "3.15.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.15.1.tgz",
|
||||||
|
"integrity": "sha512-73MVa5984t/JP4JcQt0oZlKGr42ROYWC3BcUZfuHtT3IHKPspIvL0cZBnvPXF7LL3S/qVeVHVdYYmJ3LOTw4Rg==",
|
||||||
|
"dependencies": {
|
||||||
|
"@kwsites/file-exists": "^1.1.1",
|
||||||
|
"@kwsites/promise-deferred": "^1.1.1",
|
||||||
|
"debug": "^4.3.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/steveukx/git-js?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/smart-buffer": {
|
"node_modules/smart-buffer": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
|
||||||
@ -6854,6 +6882,19 @@
|
|||||||
"integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
|
"integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@kwsites/file-exists": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
|
||||||
|
"requires": {
|
||||||
|
"debug": "^4.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@kwsites/promise-deferred": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
|
||||||
|
},
|
||||||
"@malept/cross-spawn-promise": {
|
"@malept/cross-spawn-promise": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz",
|
||||||
@ -10686,6 +10727,16 @@
|
|||||||
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"simple-git": {
|
||||||
|
"version": "3.15.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.15.1.tgz",
|
||||||
|
"integrity": "sha512-73MVa5984t/JP4JcQt0oZlKGr42ROYWC3BcUZfuHtT3IHKPspIvL0cZBnvPXF7LL3S/qVeVHVdYYmJ3LOTw4Rg==",
|
||||||
|
"requires": {
|
||||||
|
"@kwsites/file-exists": "^1.1.1",
|
||||||
|
"@kwsites/promise-deferred": "^1.1.1",
|
||||||
|
"debug": "^4.3.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"smart-buffer": {
|
"smart-buffer": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
|
||||||
|
@ -20,7 +20,8 @@
|
|||||||
"config": {
|
"config": {
|
||||||
"forge": {
|
"forge": {
|
||||||
"packagerConfig": {},
|
"packagerConfig": {},
|
||||||
"makers": [{
|
"makers": [
|
||||||
|
{
|
||||||
"name": "@electron-forge/maker-squirrel",
|
"name": "@electron-forge/maker-squirrel",
|
||||||
"config": {
|
"config": {
|
||||||
"name": "updater"
|
"name": "updater"
|
||||||
@ -50,6 +51,7 @@
|
|||||||
"electron-squirrel-startup": "^1.0.0",
|
"electron-squirrel-startup": "^1.0.0",
|
||||||
"http": "^0.0.1-security",
|
"http": "^0.0.1-security",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
|
"simple-git": "^3.15.1",
|
||||||
"superagent": "^8.0.3"
|
"superagent": "^8.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
24
updater/src/data_structure.js
Normal file
24
updater/src/data_structure.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
var systemstructure = {
|
||||||
|
path: ""
|
||||||
|
};
|
||||||
|
|
||||||
|
var structure = {
|
||||||
|
region: 0,
|
||||||
|
file: 0,
|
||||||
|
installcreds: false, // Not yet implemented
|
||||||
|
installhoppie: false, // Not yet implemented
|
||||||
|
cid: {
|
||||||
|
save: true,
|
||||||
|
id: -1
|
||||||
|
},
|
||||||
|
password: {
|
||||||
|
save: true,
|
||||||
|
pass: ""
|
||||||
|
},
|
||||||
|
passwordhoppie: {
|
||||||
|
save: true,
|
||||||
|
pass: ""
|
||||||
|
},
|
||||||
|
currentInstalledAirac: 0,
|
||||||
|
version: "v1"
|
||||||
|
};
|
20
updater/src/download.js
Normal file
20
updater/src/download.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
function downloadFile(source, path) {
|
||||||
|
console.log(source);
|
||||||
|
const zipFile = source.split('/').pop();
|
||||||
|
|
||||||
|
superagent
|
||||||
|
.get(source).set("Referer", "http://files.aero-nav.com/")
|
||||||
|
.on('error', function(error) {
|
||||||
|
console.log(error);
|
||||||
|
})
|
||||||
|
.pipe(fs.createWriteStream(path + "\\" + zipFile))
|
||||||
|
.on('finish', function() {
|
||||||
|
// add code below to here
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function createFolder(folder) {
|
||||||
|
if (!fs.existsSync(folder)) {
|
||||||
|
fs.mkdirSync(folder);
|
||||||
|
}
|
||||||
|
};
|
40
updater/src/getFiles.js
Normal file
40
updater/src/getFiles.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
async function getUpdates() {
|
||||||
|
const courses = await superagent.get('https://files.aero-nav.com/');
|
||||||
|
let text = courses.text.match(/Download Pages([^]*?)<\/body>/g);
|
||||||
|
console.log(text);
|
||||||
|
let liste = text[0].match(/<b>(.*?)<\/b>/g).map(item => item.replace(/<\/?b>/g, ""));
|
||||||
|
|
||||||
|
liste.forEach(item => {
|
||||||
|
var option = document.createElement("option");
|
||||||
|
option.text = item;
|
||||||
|
dropDownGNG.add(option);
|
||||||
|
});
|
||||||
|
getFiles();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async function getFiles() {
|
||||||
|
await removeFileItems();
|
||||||
|
let region = "https://files.aero-nav.com/" + dropDownGNG.options[dropDownGNG.selectedIndex].text;
|
||||||
|
let courses = await superagent.get(region);
|
||||||
|
let text = courses.text.split("Released</th><th colspan='2'>Download</th></tr>").pop();
|
||||||
|
text = text.split("<h1>AIRAC <small>News</small></h1>")[0];
|
||||||
|
let rows = text.match(/<td>(.*?)<\/td>/g).map(row => row.replace(/<\/?td>/g, ""));
|
||||||
|
|
||||||
|
let fileNames = rows.filter((row, index) => index % 5 === 1);
|
||||||
|
let versionNumbers = rows.filter((row, index) => index % 5 === 2);
|
||||||
|
let hrefLinks = rows.filter((row, index) => index % 5 === 4).map(row => row.match(/href="(.*?)"/)[1]);
|
||||||
|
|
||||||
|
removeFileItems();
|
||||||
|
fileNames.forEach((fileName, index) => {
|
||||||
|
let option = document.createElement("option");
|
||||||
|
option.text = fileName;
|
||||||
|
option.version = versionNumbers[index];
|
||||||
|
option.href = hrefLinks[index];
|
||||||
|
dropDownFiles.add(option);
|
||||||
|
});
|
||||||
|
if (structure.file != -1) {
|
||||||
|
dropDownFiles.selectedIndex = structure.file;
|
||||||
|
}
|
||||||
|
return hrefLinks;
|
||||||
|
}
|
0
updater/src/git_ops.js
Normal file
0
updater/src/git_ops.js
Normal file
19
updater/src/html_elements.js
Normal file
19
updater/src/html_elements.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// Global Variabels
|
||||||
|
let dirBox = document.getElementById('dirBox');
|
||||||
|
let usernameInput = document.getElementById('username');
|
||||||
|
let passwordInput = document.getElementById('password');
|
||||||
|
let passwordhoppieInput = document.getElementById('passwordhoppie');
|
||||||
|
let saveCredBtn = document.getElementById('savecred');
|
||||||
|
|
||||||
|
// CheckBox Events
|
||||||
|
let checkBoxUsername = document.getElementById('saveuser');
|
||||||
|
let checkBoxPassword = document.getElementById('savepw');
|
||||||
|
let checkBoxSavepwhoppie = document.getElementById('savepwhoppie');
|
||||||
|
|
||||||
|
// Check update
|
||||||
|
let dropDownGNG = document.getElementById('gng');
|
||||||
|
let dropDownFiles = document.getElementById('files');
|
||||||
|
|
||||||
|
saveCredBtn.addEventListener('click', (e) => {
|
||||||
|
save();
|
||||||
|
});
|
@ -1,11 +1,13 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
|
||||||
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Sectorfile Updater</title>
|
<title>Sectorfile Updater</title>
|
||||||
<link rel="stylesheet" href="index.css" />
|
<link rel="stylesheet" href="index.css" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
|
||||||
|
<body>
|
||||||
<button id="extract">Extract ZIP</button>
|
<button id="extract">Extract ZIP</button>
|
||||||
<p>Input Directory</p>
|
<p>Input Directory</p>
|
||||||
<input type="text" id="dirBox" name="name" size="80" readonly />
|
<input type="text" id="dirBox" name="name" size="80" readonly />
|
||||||
@ -26,33 +28,37 @@
|
|||||||
<p>Password</p>
|
<p>Password</p>
|
||||||
<input type="password" id="password" />
|
<input type="password" id="password" />
|
||||||
<input type="checkbox" id="savepw" />
|
<input type="checkbox" id="savepw" />
|
||||||
<span class="tooltiptext"
|
<span class="tooltiptext">Please be aware that the password you enter will be stored in plain
|
||||||
>Please be aware that the password you enter will be stored in plain
|
|
||||||
text in our system. This means that it will not be encrypted or
|
text in our system. This means that it will not be encrypted or
|
||||||
otherwise secured. We recommend that you do not use a password that
|
otherwise secured. We recommend that you do not use a password that
|
||||||
you also use for other important accounts, such as your email or
|
you also use for other important accounts, such as your email or
|
||||||
banking. Please use caution when entering your password and consider
|
banking. Please use caution when entering your password and consider
|
||||||
using a unique and strong password specifically for this
|
using a unique and strong password specifically for this
|
||||||
account.</span
|
account.</span>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="tooltip">
|
<div class="tooltip">
|
||||||
<p>Password Hoppie</p>
|
<p>Password Hoppie</p>
|
||||||
<input type="password" id="passwordhoppie" />
|
<input type="password" id="passwordhoppie" />
|
||||||
<input type="checkbox" id="savepwhoppie" />
|
<input type="checkbox" id="savepwhoppie" />
|
||||||
<span class="tooltiptext"
|
<span class="tooltiptext">Please be aware that the password you enter will be stored in plain
|
||||||
>Please be aware that the password you enter will be stored in plain
|
|
||||||
text in our system. This means that it will not be encrypted or
|
text in our system. This means that it will not be encrypted or
|
||||||
otherwise secured. We recommend that you do not use a password that
|
otherwise secured. We recommend that you do not use a password that
|
||||||
you also use for other important accounts, such as your email or
|
you also use for other important accounts, such as your email or
|
||||||
banking. Please use caution when entering your password and consider
|
banking. Please use caution when entering your password and consider
|
||||||
using a unique and strong password specifically for this
|
using a unique and strong password specifically for this
|
||||||
account.</span
|
account.</span>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
<button id="savecred">Save your Credentials</button>
|
<button id="savecred">Save your Credentials</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="./renderer.js"></script>
|
<script src="./renderer.js"></script>
|
||||||
</body>
|
<script src="./html_elements.js"></script>
|
||||||
|
<script src="./startup.js"></script>
|
||||||
|
<script src="./save.js"></script>
|
||||||
|
<script src="./getFiles.js"></script>
|
||||||
|
<script src="./unzip.js"></script>
|
||||||
|
<script src="./data_structure.js"></script>
|
||||||
|
<script src="./download.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
@ -3,106 +3,12 @@ const superagent = require('superagent').agent();
|
|||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var DecompressZip = require('decompress-zip');
|
var DecompressZip = require('decompress-zip');
|
||||||
|
|
||||||
// Global Variabels
|
|
||||||
let dirBox = document.getElementById('dirBox');
|
|
||||||
let usernameInput = document.getElementById('username');
|
|
||||||
let passwordInput = document.getElementById('password');
|
|
||||||
let passwordhoppieInput = document.getElementById('passwordhoppie');
|
|
||||||
let saveCredBtn = document.getElementById('savecred');
|
|
||||||
|
|
||||||
// CheckBox Events
|
|
||||||
let checkBoxUsername = document.getElementById('saveuser');
|
|
||||||
let checkBoxPassword = document.getElementById('savepw');
|
|
||||||
let checkBoxSavepwhoppie = document.getElementById('savepwhoppie');
|
|
||||||
|
|
||||||
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
|
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
|
||||||
var systemstructure = {
|
|
||||||
path: ""
|
|
||||||
};
|
|
||||||
var structure = {
|
|
||||||
region: 0,
|
|
||||||
file: 0,
|
|
||||||
installcreds: false, // Not yet implemented
|
|
||||||
installhoppie: false, // Not yet implemented
|
|
||||||
cid: {
|
|
||||||
save: true,
|
|
||||||
id: -1
|
|
||||||
},
|
|
||||||
password: {
|
|
||||||
save: true,
|
|
||||||
pass: ""
|
|
||||||
},
|
|
||||||
passwordhoppie: {
|
|
||||||
save: true,
|
|
||||||
pass: ""
|
|
||||||
},
|
|
||||||
currentInstalledAirac: 0,
|
|
||||||
version: "v1"
|
|
||||||
};
|
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function() { // Seems to work (tm)
|
document.addEventListener('DOMContentLoaded', function() { // Seems to work (tm)
|
||||||
firstStart();
|
firstStart();
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
let systemsettings = "systemfile.json";
|
|
||||||
let settings = "settings.json";
|
|
||||||
var filepath = "F:\\02 Benutzer\\Chef\\Dokumente\\00 Git\\sectorfileupdater\\updater"; // Set to exe path ex: app.getPath('exe') + '\\' + systemsettings;
|
|
||||||
async function firstStart() {
|
|
||||||
// await ipcRenderer.send('app-path');
|
|
||||||
// await ipcRenderer.on("app-path", async(event, path) => {
|
|
||||||
// filepath = path;
|
|
||||||
// });
|
|
||||||
// await delay(2000); // Not the best solution
|
|
||||||
// filepath = await app.getPath('home') + '\\' + systemsettings;
|
|
||||||
await console.log(filepath + "\\" + systemsettings);
|
|
||||||
if (await fs.existsSync(filepath + "\\" + systemsettings)) {
|
|
||||||
systemstructure = JSON.parse(fs.readFileSync(filepath + "\\" + systemsettings, 'utf8'));
|
|
||||||
} else {
|
|
||||||
await changeUserpath();
|
|
||||||
}
|
|
||||||
if (await fs.existsSync(systemstructure.path + "\\" + settings)) {
|
|
||||||
structure = JSON.parse(fs.readFileSync(systemstructure.path + "\\" + settings, 'utf8'));
|
|
||||||
if (structure.cid.save == true) {
|
|
||||||
usernameInput.value = structure.cid.id;
|
|
||||||
}
|
|
||||||
if (structure.password.save == true) {
|
|
||||||
passwordInput.value = structure.password.pass;
|
|
||||||
}
|
|
||||||
if (structure.passwordhoppie.save == true) {
|
|
||||||
passwordhoppieInput.value = structure.passwordhoppie.pass;
|
|
||||||
}
|
|
||||||
if (structure.cid.save == true) {
|
|
||||||
checkBoxUsername.checked = true;
|
|
||||||
}
|
|
||||||
if (structure.password.save == true) {
|
|
||||||
checkBoxPassword.checked = true;
|
|
||||||
}
|
|
||||||
if (structure.passwordhoppie.save == true) {
|
|
||||||
checkBoxSavepwhoppie.checked = true;
|
|
||||||
}
|
|
||||||
dirBox.value = systemstructure.path;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
fs.writeFileSync(systemstructure.path + "\\" + settings, JSON.stringify(structure, null, 4), 'utf8');
|
|
||||||
gng.selectedIndex = structure.region;
|
|
||||||
if (files.selectedIndex < 0) {
|
|
||||||
files.selectedIndex = 0;
|
|
||||||
} else {
|
|
||||||
files.selectedIndex = structure.file;
|
|
||||||
}
|
|
||||||
// Broken
|
|
||||||
|
|
||||||
}
|
|
||||||
await getUpdates();
|
|
||||||
gng.selectedIndex = structure.region;
|
|
||||||
if (files.selectedIndex < 0) {
|
|
||||||
files.selectedIndex = 0;
|
|
||||||
} else {
|
|
||||||
files.selectedIndex = structure.file;
|
|
||||||
}
|
|
||||||
await getFiles();
|
|
||||||
save();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save Event
|
// Save Event
|
||||||
gng.addEventListener("change", () => {
|
gng.addEventListener("change", () => {
|
||||||
@ -113,47 +19,6 @@ files.addEventListener("change", () => {
|
|||||||
save();
|
save();
|
||||||
});
|
});
|
||||||
|
|
||||||
function save() {
|
|
||||||
// WORK HERE, new files
|
|
||||||
// Read config
|
|
||||||
structure = JSON.parse(fs.readFileSync(systemstructure.path + "\\" + settings, 'utf8'));
|
|
||||||
structure.region = gng.selectedIndex;
|
|
||||||
structure.file = files.selectedIndex;
|
|
||||||
if (structure.file == -1) {
|
|
||||||
structure.file = 0;
|
|
||||||
}
|
|
||||||
if (checkBoxUsername.checked == true) {
|
|
||||||
structure.cid.id = usernameInput.value;
|
|
||||||
structure.cid.save = true;
|
|
||||||
} else {
|
|
||||||
structure.cid.id = -1;
|
|
||||||
structure.cid.save = false;
|
|
||||||
}
|
|
||||||
if (checkBoxPassword.checked == true) {
|
|
||||||
structure.password.pass = passwordInput.value;
|
|
||||||
structure.password.save = true;
|
|
||||||
} else {
|
|
||||||
structure.password.pass = "";
|
|
||||||
structure.password.save = false;
|
|
||||||
}
|
|
||||||
if (checkBoxSavepwhoppie.checked == true) {
|
|
||||||
structure.passwordhoppie.pass = passwordhoppieInput.value;
|
|
||||||
structure.passwordhoppie.save = true;
|
|
||||||
} else {
|
|
||||||
structure.passwordhoppie.pass = "";
|
|
||||||
structure.passwordhoppie.save = false;
|
|
||||||
}
|
|
||||||
// WIP
|
|
||||||
//structure.currentInstalledAirac = currentAirac;
|
|
||||||
//structure.version = airacversion;
|
|
||||||
// Save config
|
|
||||||
fs.writeFileSync(systemstructure.path + "\\" + settings, JSON.stringify(structure, null, 4), 'utf8');
|
|
||||||
};
|
|
||||||
|
|
||||||
// Check update
|
|
||||||
let dropDownGNG = document.getElementById('gng');
|
|
||||||
let dropDownFiles = document.getElementById('files');
|
|
||||||
|
|
||||||
let updateBtn = document.getElementById('update');
|
let updateBtn = document.getElementById('update');
|
||||||
updateBtn.addEventListener('click', () => {
|
updateBtn.addEventListener('click', () => {
|
||||||
removeFileItems();
|
removeFileItems();
|
||||||
@ -168,143 +33,6 @@ function removeFileItems() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getUpdates() {
|
|
||||||
// Get all GNG Options
|
|
||||||
const courses = await superagent.get('https://files.aero-nav.com/');
|
|
||||||
let text = courses.text.split("Download Pages").pop();
|
|
||||||
let textArray = text.split("\n");
|
|
||||||
let liste = "";
|
|
||||||
let firstElement = "<b>";
|
|
||||||
let lastElement = "</b>";
|
|
||||||
textArray.forEach(element => {
|
|
||||||
if (element.includes(firstElement)) {
|
|
||||||
liste += element.substring(
|
|
||||||
element.indexOf(firstElement) + firstElement.length,
|
|
||||||
element.indexOf(lastElement, element.indexOf(firstElement))) +
|
|
||||||
"\n";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const listeArray = liste.split("\n");
|
|
||||||
|
|
||||||
// Add to html selector
|
|
||||||
listeArray.pop();
|
|
||||||
listeArray.forEach(optionsAdd);
|
|
||||||
|
|
||||||
// Add Elements to Drop Down
|
|
||||||
function optionsAdd(item) {
|
|
||||||
var option = document.createElement("option");
|
|
||||||
option.text = item;
|
|
||||||
dropDownGNG.add(option);
|
|
||||||
}
|
|
||||||
getFiles();
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getFiles() {
|
|
||||||
await removeFileItems();
|
|
||||||
// Get all GNG Package Options
|
|
||||||
let region = "https://files.aero-nav.com/" + dropDownGNG.options[dropDownGNG.selectedIndex].text;
|
|
||||||
let courses = await superagent.get(region);
|
|
||||||
let text = courses.text.split("Released</th><th colspan='2'>Download</th></tr>").pop();
|
|
||||||
text = text.split("<h1>AIRAC <small>News</small></h1>")[0];
|
|
||||||
let rows = "";
|
|
||||||
|
|
||||||
for (var i = 0; i < text.length; i++) {
|
|
||||||
if (text[i] + text[i + 1] + text[i + 2] + text[i + 3] === "<td>") {
|
|
||||||
let i2 = i + 4;
|
|
||||||
while (text[i2] + text[i2 + 1] + text[i2 + 2] + text[i2 + 3] + text[i2 + 4] !== "</td>") {
|
|
||||||
rows += text[i2];
|
|
||||||
i2++;
|
|
||||||
}
|
|
||||||
rows += "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//console.log(rows); // For debugging only
|
|
||||||
|
|
||||||
// All Rows in Table
|
|
||||||
const listeArray = rows.split("\n");
|
|
||||||
listeArray.pop();
|
|
||||||
let fileNames = "";
|
|
||||||
// Select only Package names
|
|
||||||
for (var i = 1; i < listeArray.length; i = i + 5) {
|
|
||||||
fileNames += listeArray[i] + "\n";
|
|
||||||
}
|
|
||||||
const fileNamesArray = fileNames.split("\n");
|
|
||||||
fileNamesArray.pop();
|
|
||||||
|
|
||||||
let firstElement = "href=";
|
|
||||||
let lastElement = "class=";
|
|
||||||
let hrefLinksList = "";
|
|
||||||
for (var i = 4; i < listeArray.length; i = i + 5) {
|
|
||||||
hrefLinksList += listeArray[i].substring(
|
|
||||||
listeArray[i].indexOf(firstElement) + firstElement.length + 1,
|
|
||||||
listeArray[i].indexOf(lastElement) - 2) + "\n";
|
|
||||||
}
|
|
||||||
const hrefLinksArray = hrefLinksList.split("\n");
|
|
||||||
hrefLinksArray.pop();
|
|
||||||
|
|
||||||
removeFileItems();
|
|
||||||
// Add Elements to Drop Down
|
|
||||||
for (let i = 0; i < fileNamesArray.length; i++) {
|
|
||||||
var option = document.createElement("option");
|
|
||||||
option.text = fileNamesArray[i];
|
|
||||||
option.href = hrefLinksArray[i];
|
|
||||||
dropDownFiles.add(option);
|
|
||||||
}
|
|
||||||
if (structure.file != -1) {
|
|
||||||
dropDownFiles.selectedIndex = structure.file;
|
|
||||||
}
|
|
||||||
//files.selectedIndex = structure.file;
|
|
||||||
return hrefLinksArray;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function downloadFile(source, path) {
|
|
||||||
console.log(source)
|
|
||||||
const zipFile = source.split('/').pop();
|
|
||||||
|
|
||||||
superagent
|
|
||||||
.get(source).set("Referer", "http://files.aero-nav.com/")
|
|
||||||
.on('error', function(error) {
|
|
||||||
console.log(error);
|
|
||||||
})
|
|
||||||
.pipe(fs.createWriteStream(path + "\\" + zipFile))
|
|
||||||
.on('finish', function() {
|
|
||||||
// add code below to here
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unzip file
|
|
||||||
function decompress(url, DESTINATION_PATH) {
|
|
||||||
let file = url.split('/').pop()
|
|
||||||
var ZIP_FILE_PATH = DESTINATION_PATH + "\\" + file;
|
|
||||||
DESTINATION_PATH += "\\" + file.split('.')[0];
|
|
||||||
console.log(DESTINATION_PATH)
|
|
||||||
var unzipper = new DecompressZip(ZIP_FILE_PATH);
|
|
||||||
|
|
||||||
// Add the error event listener
|
|
||||||
unzipper.on('error', function(err) {
|
|
||||||
console.log('Caught an error', err);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Notify when everything is extracted
|
|
||||||
unzipper.on('extract', function(log) {
|
|
||||||
console.log('Finished extracting', log);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Notify "progress" of the decompressed files
|
|
||||||
unzipper.on('progress', function(fileIndex, fileCount) {
|
|
||||||
document.getElementById('progressbar').value = (0.5 + ((fileIndex + 1) / fileCount) / 2) * 100
|
|
||||||
console.log(0.5 + ((fileIndex + 1) / fileCount) / 2);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Start extraction of the content
|
|
||||||
unzipper.extract({
|
|
||||||
path: DESTINATION_PATH
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function changeUserpath() {
|
function changeUserpath() {
|
||||||
ipcRenderer.send('app-path');
|
ipcRenderer.send('app-path');
|
||||||
}
|
}
|
||||||
@ -332,7 +60,3 @@ testBtn.addEventListener('click', (e) => {
|
|||||||
var userReadJson = JSON.parse(fs.readFileSync(systemReadJson.path + settings, 'utf8'));
|
var userReadJson = JSON.parse(fs.readFileSync(systemReadJson.path + settings, 'utf8'));
|
||||||
decompress(files.options[files.selectedIndex].href, systemReadJson.path)
|
decompress(files.options[files.selectedIndex].href, systemReadJson.path)
|
||||||
});
|
});
|
||||||
|
|
||||||
saveCredBtn.addEventListener('click', (e) => {
|
|
||||||
save();
|
|
||||||
});
|
|
36
updater/src/save.js
Normal file
36
updater/src/save.js
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
function save() {
|
||||||
|
// WORK HERE, new files
|
||||||
|
// Read config
|
||||||
|
structure = JSON.parse(fs.readFileSync(systemstructure.path + "\\" + settings, 'utf8'));
|
||||||
|
structure.region = gng.selectedIndex;
|
||||||
|
structure.file = files.selectedIndex;
|
||||||
|
if (structure.file == -1) {
|
||||||
|
structure.file = 0;
|
||||||
|
}
|
||||||
|
if (checkBoxUsername.checked == true) {
|
||||||
|
structure.cid.id = usernameInput.value;
|
||||||
|
structure.cid.save = true;
|
||||||
|
} else {
|
||||||
|
structure.cid.id = -1;
|
||||||
|
structure.cid.save = false;
|
||||||
|
}
|
||||||
|
if (checkBoxPassword.checked == true) {
|
||||||
|
structure.password.pass = passwordInput.value;
|
||||||
|
structure.password.save = true;
|
||||||
|
} else {
|
||||||
|
structure.password.pass = "";
|
||||||
|
structure.password.save = false;
|
||||||
|
}
|
||||||
|
if (checkBoxSavepwhoppie.checked == true) {
|
||||||
|
structure.passwordhoppie.pass = passwordhoppieInput.value;
|
||||||
|
structure.passwordhoppie.save = true;
|
||||||
|
} else {
|
||||||
|
structure.passwordhoppie.pass = "";
|
||||||
|
structure.passwordhoppie.save = false;
|
||||||
|
}
|
||||||
|
// WIP
|
||||||
|
//structure.currentInstalledAirac = currentAirac;
|
||||||
|
//structure.version = airacversion;
|
||||||
|
// Save config
|
||||||
|
fs.writeFileSync(systemstructure.path + "\\" + settings, JSON.stringify(structure, null, 4), 'utf8');
|
||||||
|
};
|
61
updater/src/startup.js
Normal file
61
updater/src/startup.js
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
let systemsettings = "systemfile.json";
|
||||||
|
let settings = "settings.json";
|
||||||
|
var filepath = "F:\\02 Benutzer\\Chef\\Dokumente\\00 Git\\sectorfileupdater\\updater"; // Set to exe path ex: app.getPath('exe') + '\\' + systemsettings;
|
||||||
|
async function firstStart() {
|
||||||
|
// await ipcRenderer.send('app-path');
|
||||||
|
// await ipcRenderer.on("app-path", async(event, path) => {
|
||||||
|
// filepath = path;
|
||||||
|
// });
|
||||||
|
// await delay(2000); // Not the best solution
|
||||||
|
// filepath = await app.getPath('home') + '\\' + systemsettings;
|
||||||
|
await console.log(filepath + "\\" + systemsettings);
|
||||||
|
if (await fs.existsSync(filepath + "\\" + systemsettings)) {
|
||||||
|
systemstructure = JSON.parse(fs.readFileSync(filepath + "\\" + systemsettings, 'utf8'));
|
||||||
|
} else {
|
||||||
|
await changeUserpath();
|
||||||
|
}
|
||||||
|
delay(100);
|
||||||
|
if (await fs.existsSync(systemstructure.path + "\\" + settings)) {
|
||||||
|
console.log(fs.readFileSync(systemstructure.path + "\\" + settings, 'utf8'));
|
||||||
|
structure = JSON.parse(await fs.readFileSync(systemstructure.path + "\\" + settings, 'utf8'));
|
||||||
|
if (structure.cid.save == true) {
|
||||||
|
usernameInput.value = structure.cid.id;
|
||||||
|
}
|
||||||
|
if (structure.password.save == true) {
|
||||||
|
passwordInput.value = structure.password.pass;
|
||||||
|
}
|
||||||
|
if (structure.passwordhoppie.save == true) {
|
||||||
|
passwordhoppieInput.value = structure.passwordhoppie.pass;
|
||||||
|
}
|
||||||
|
if (structure.cid.save == true) {
|
||||||
|
checkBoxUsername.checked = true;
|
||||||
|
}
|
||||||
|
if (structure.password.save == true) {
|
||||||
|
checkBoxPassword.checked = true;
|
||||||
|
}
|
||||||
|
if (structure.passwordhoppie.save == true) {
|
||||||
|
checkBoxSavepwhoppie.checked = true;
|
||||||
|
}
|
||||||
|
dirBox.value = systemstructure.path;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
fs.writeFileSync(systemstructure.path + "\\" + settings, JSON.stringify(structure, null, 4), 'utf8');
|
||||||
|
gng.selectedIndex = structure.region;
|
||||||
|
if (files.selectedIndex < 0) {
|
||||||
|
files.selectedIndex = 0;
|
||||||
|
} else {
|
||||||
|
files.selectedIndex = structure.file;
|
||||||
|
}
|
||||||
|
// Broken
|
||||||
|
|
||||||
|
}
|
||||||
|
await getUpdates();
|
||||||
|
gng.selectedIndex = structure.region;
|
||||||
|
if (files.selectedIndex < 0) {
|
||||||
|
files.selectedIndex = 0;
|
||||||
|
} else {
|
||||||
|
files.selectedIndex = structure.file;
|
||||||
|
}
|
||||||
|
await getFiles();
|
||||||
|
save();
|
||||||
|
}
|
29
updater/src/unzip.js
Normal file
29
updater/src/unzip.js
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
// Unzip file
|
||||||
|
function decompress(url, DESTINATION_PATH) {
|
||||||
|
let file = url.split('/').pop();
|
||||||
|
var ZIP_FILE_PATH = DESTINATION_PATH + "\\" + file;
|
||||||
|
DESTINATION_PATH += "\\" + file.split('.')[0];
|
||||||
|
console.log(DESTINATION_PATH);
|
||||||
|
var unzipper = new DecompressZip(ZIP_FILE_PATH);
|
||||||
|
|
||||||
|
// Add the error event listener
|
||||||
|
unzipper.on('error', function(err) {
|
||||||
|
console.log('Caught an error', err);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Notify when everything is extracted
|
||||||
|
unzipper.on('extract', function(log) {
|
||||||
|
console.log('Finished extracting', log);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Notify "progress" of the decompressed files
|
||||||
|
unzipper.on('progress', function(fileIndex, fileCount) {
|
||||||
|
document.getElementById('progressbar').value = (0.5 + ((fileIndex + 1) / fileCount) / 2) * 100
|
||||||
|
console.log(0.5 + ((fileIndex + 1) / fileCount) / 2);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Start extraction of the content
|
||||||
|
unzipper.extract({
|
||||||
|
path: DESTINATION_PATH
|
||||||
|
});
|
||||||
|
}
|
@ -303,6 +303,18 @@
|
|||||||
"resolved" "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz"
|
"resolved" "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz"
|
||||||
"version" "1.1.3"
|
"version" "1.1.3"
|
||||||
|
|
||||||
|
"@kwsites/file-exists@^1.1.1":
|
||||||
|
"integrity" "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw=="
|
||||||
|
"resolved" "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz"
|
||||||
|
"version" "1.1.1"
|
||||||
|
dependencies:
|
||||||
|
"debug" "^4.1.1"
|
||||||
|
|
||||||
|
"@kwsites/promise-deferred@^1.1.1":
|
||||||
|
"integrity" "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw=="
|
||||||
|
"resolved" "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz"
|
||||||
|
"version" "1.1.1"
|
||||||
|
|
||||||
"@malept/cross-spawn-promise@^1.0.0":
|
"@malept/cross-spawn-promise@^1.0.0":
|
||||||
"integrity" "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ=="
|
"integrity" "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ=="
|
||||||
"resolved" "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz"
|
"resolved" "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz"
|
||||||
@ -3102,6 +3114,15 @@
|
|||||||
"resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
|
"resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
|
||||||
"version" "3.0.7"
|
"version" "3.0.7"
|
||||||
|
|
||||||
|
"simple-git@^3.15.1":
|
||||||
|
"integrity" "sha512-73MVa5984t/JP4JcQt0oZlKGr42ROYWC3BcUZfuHtT3IHKPspIvL0cZBnvPXF7LL3S/qVeVHVdYYmJ3LOTw4Rg=="
|
||||||
|
"resolved" "https://registry.npmjs.org/simple-git/-/simple-git-3.15.1.tgz"
|
||||||
|
"version" "3.15.1"
|
||||||
|
dependencies:
|
||||||
|
"@kwsites/file-exists" "^1.1.1"
|
||||||
|
"@kwsites/promise-deferred" "^1.1.1"
|
||||||
|
"debug" "^4.3.4"
|
||||||
|
|
||||||
"smart-buffer@^4.2.0":
|
"smart-buffer@^4.2.0":
|
||||||
"integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
|
"integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
|
||||||
"resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
|
"resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user