mirror of
https://github.com/Pax1601/DCSOlympus.git
synced 2025-10-29 16:56:34 +00:00
Renamed client -> frontend in configuration files
Completed renaming client -> frontend
This commit is contained in:
@@ -16,14 +16,14 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="wizard-inputs">
|
||||
<div class="input-group client-port port-input">
|
||||
<span>Client port
|
||||
<div class="input-group frontend-port port-input">
|
||||
<span>Frontend port
|
||||
<img src="./icons/circle-info-solid.svg"
|
||||
title="This port is used to allow access to Olympus. Be sure to allow this port through your firewall if you want people to connect remotely">
|
||||
</span>
|
||||
<div>
|
||||
<input type="number" min="1024" max="65535" value="<%= activeInstance["clientPort"] %>"
|
||||
onchange="signal('onClientPortChanged', this.value)">
|
||||
<input type="number" min="1024" max="65535" value="<%= activeInstance["frontendPort"] %>"
|
||||
onchange="signal('onFrontendPortChanged', this.value)">
|
||||
<img class="success hide">
|
||||
<div class="error hide">
|
||||
<img> <span>Port already in use</span>
|
||||
|
||||
@@ -38,14 +38,14 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="wizard-inputs">
|
||||
<div class="input-group client-port port-input">
|
||||
<span>Client port
|
||||
<div class="input-group frontend-port port-input">
|
||||
<span>Frontend port
|
||||
<img src="./icons/circle-info-solid.svg"
|
||||
title="This port is used to allow access to Olympus. Be sure to allow this port through your firewall if you want people to connect remotely">
|
||||
</span>
|
||||
<div>
|
||||
<input type="number" min="1024" max="65535" value="<%= activeInstance["clientPort"] %>"
|
||||
onchange="signal('onClientPortChanged', this.value)">
|
||||
<input type="number" min="1024" max="65535" value="<%= activeInstance["frontendPort"] %>"
|
||||
onchange="signal('onFrontendPortChanged', this.value)">
|
||||
<img class="success hide">
|
||||
<div class="error hide">
|
||||
<img> <span>Port already in use</span>
|
||||
|
||||
@@ -81,8 +81,8 @@
|
||||
|
||||
<div class="summary">
|
||||
<div class="info">
|
||||
<div>Client port</div>
|
||||
<div> <%= instances[i].installed? instances[i].clientPort: "N/A" %> </div>
|
||||
<div>Frontend port</div>
|
||||
<div> <%= instances[i].installed? instances[i].frontendPort: "N/A" %> </div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div>Backend port</div>
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div style="font-size: var(--normal);">
|
||||
Alternatively, you can run the <b>Olympus Server</b> instead and visit <div class="link" onclick="signal('onLinkClicked', 'http://localhost:<%= activeInstance["clientPort"] %>')" >http://localhost:<%= activeInstance["clientPort"] %></div> in a web browser (Google Chrome recommended) to replace the first step above.
|
||||
Alternatively, you can run the <b>Olympus Server</b> instead and visit <div class="link" onclick="signal('onLinkClicked', 'http://localhost:<%= activeInstance["frontendPort"] %>')" >http://localhost:<%= activeInstance["frontendPort"] %></div> in a web browser (Google Chrome recommended) to replace the first step above.
|
||||
</div>
|
||||
<% } else { %>
|
||||
<div class="usage-instructions">
|
||||
@@ -96,7 +96,7 @@
|
||||
<div>
|
||||
<img src="./icons/chrome.svg">
|
||||
<div>
|
||||
To access Olympus remotely visit <div class="link" onclick="signal('onLinkClicked', 'http://<%= IP %>:<%= activeInstance["clientPort"] %>')">http://<%= IP %>:<%= activeInstance["clientPort"] %></div> <b>in a web browser</b> (Google Chrome recommended).
|
||||
To access Olympus remotely visit <div class="link" onclick="signal('onLinkClicked', 'http://<%= IP %>:<%= activeInstance["frontendPort"] %>')">http://<%= IP %>:<%= activeInstance["frontendPort"] %></div> <b>in a web browser</b> (Google Chrome recommended).
|
||||
</div>
|
||||
</div>
|
||||
<img src="./icons/arrow-right-solid.svg">
|
||||
@@ -108,7 +108,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div style="font-size: var(--normal);">
|
||||
<b>To access Olympus from this PC</b>, you need to visit <div class="link" onclick="signal('onLinkClicked', 'http://localhost:<%= activeInstance["clientPort"] %>')">http://localhost:<%= activeInstance["clientPort"] %></div> in a web browser (Google Chrome recommended) instead.
|
||||
<b>To access Olympus from this PC</b>, you need to visit <div class="link" onclick="signal('onLinkClicked', 'http://localhost:<%= activeInstance["frontendPort"] %>')">http://localhost:<%= activeInstance["frontendPort"] %></div> in a web browser (Google Chrome recommended) instead.
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
|
||||
@@ -58,8 +58,8 @@
|
||||
</span>
|
||||
<div class="summary">
|
||||
<div class="info">
|
||||
<div>Client port</div>
|
||||
<div> <%= instances[i].installed? instances[i].clientPort: "N/A" %> </div>
|
||||
<div>Frontend port</div>
|
||||
<div> <%= instances[i].installed? instances[i].frontendPort: "N/A" %> </div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div>Backend port</div>
|
||||
|
||||
@@ -113,7 +113,7 @@ class DCSInstance {
|
||||
|
||||
folder = "";
|
||||
name = "";
|
||||
clientPort = 3000;
|
||||
frontendPort = 3000;
|
||||
backendPort = 3001;
|
||||
backendAddress = "localhost";
|
||||
gameMasterPassword = "";
|
||||
@@ -137,7 +137,7 @@ class DCSInstance {
|
||||
this.folder = folder;
|
||||
this.name = path.basename(folder);
|
||||
|
||||
/* Periodically "ping" Olympus to check if either the client or the backend are active */
|
||||
/* Periodically "ping" Olympus to check if either the frontend or the backend are active */
|
||||
window.setInterval(async () => {
|
||||
await this.getData();
|
||||
getManager().updateInstances();
|
||||
@@ -162,7 +162,7 @@ class DCSInstance {
|
||||
try {
|
||||
/* Read the olympus.json */
|
||||
var config = JSON.parse(fs.readFileSync(path.join(this.folder, "Config", "olympus.json")));
|
||||
this.clientPort = config["client"]["port"];
|
||||
this.frontendPort = config["frontend"]["port"];
|
||||
this.backendPort = config["server"]["port"];
|
||||
this.backendAddress = config["server"]["address"];
|
||||
this.gameMasterPasswordHash = config["authentication"]["gameMasterPassword"];
|
||||
@@ -214,13 +214,13 @@ class DCSInstance {
|
||||
return this.error;
|
||||
}
|
||||
|
||||
/** Set the client port
|
||||
/** Set the frontend port
|
||||
*
|
||||
* @param {Number} newPort The new client port to set
|
||||
* @param {Number} newPort The new frontend port to set
|
||||
*/
|
||||
setClientPort(newPort) {
|
||||
logger.log(`Instance ${this.folder} client port set to ${newPort}`)
|
||||
this.clientPort = newPort;
|
||||
setFrontendPort(newPort) {
|
||||
logger.log(`Instance ${this.folder} frontend port set to ${newPort}`)
|
||||
this.frontendPort = newPort;
|
||||
}
|
||||
|
||||
/** Set the backend port
|
||||
@@ -291,26 +291,26 @@ class DCSInstance {
|
||||
return !(getManager().getActiveInstance().gameMasterPassword === getManager().getActiveInstance().blueCommanderPassword || getManager().getActiveInstance().gameMasterPassword === getManager().getActiveInstance().redCommanderPassword || getManager().getActiveInstance().blueCommanderPassword === getManager().getActiveInstance().redCommanderPassword);
|
||||
}
|
||||
|
||||
/** Asynchronously check if the client port is free
|
||||
/** Asynchronously check if the frontend port is free
|
||||
*
|
||||
* @param {Number | undefined} port The port to check. If not set, the current clientPort will be checked
|
||||
* @returns true if the client port is free
|
||||
* @param {Number | undefined} port The port to check. If not set, the current frontendPort will be checked
|
||||
* @returns true if the frontend port is free
|
||||
*/
|
||||
async checkClientPort(port) {
|
||||
port = port ?? this.clientPort;
|
||||
async checkFrontendPort(port) {
|
||||
port = port ?? this.frontendPort;
|
||||
|
||||
logger.log(`Checking client port ${port}`);
|
||||
logger.log(`Checking frontend port ${port}`);
|
||||
var portFree = await checkPort(port);
|
||||
if (portFree) {
|
||||
portFree = !(await DCSInstance.getInstances()).some((instance) => {
|
||||
if (instance !== this && instance.installed) {
|
||||
if (instance.clientPort === port || instance.backendPort === port) {
|
||||
logger.log(`Client port ${port} already selected by other instance`);
|
||||
if (instance.frontendPort === port || instance.backendPort === port) {
|
||||
logger.log(`Frontend port ${port} already selected by other instance`);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (instance.backendPort === port) {
|
||||
logger.log(`Client port ${port} equal to backend port`);
|
||||
logger.log(`Frontend port ${port} equal to backend port`);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -318,7 +318,7 @@ class DCSInstance {
|
||||
})
|
||||
}
|
||||
else {
|
||||
logger.log(`Client port ${port} currently in use`);
|
||||
logger.log(`Frontend port ${port} currently in use`);
|
||||
}
|
||||
return portFree;
|
||||
}
|
||||
@@ -336,13 +336,13 @@ class DCSInstance {
|
||||
if (portFree) {
|
||||
portFree = !(await DCSInstance.getInstances()).some((instance) => {
|
||||
if (instance !== this && instance.installed) {
|
||||
if (instance.clientPort === port || instance.backendPort === port) {
|
||||
if (instance.frontendPort === port || instance.backendPort === port) {
|
||||
logger.log(`Backend port ${port} already selected by other instance`);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (instance.clientPort === port) {
|
||||
logger.log(`Backend port ${port} equal to client port`);
|
||||
if (instance.frontendPort === port) {
|
||||
logger.log(`Backend port ${port} equal to frontend port`);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -354,30 +354,30 @@ class DCSInstance {
|
||||
return portFree;
|
||||
}
|
||||
|
||||
/** Asynchronously find free client and backend ports. If the old ports are free, it will keep them.
|
||||
/** Asynchronously find free frontend and backend ports. If the old ports are free, it will keep them.
|
||||
*
|
||||
*/
|
||||
async findFreePorts() {
|
||||
logger.log(`Looking for free ports`);
|
||||
if (await this.checkClientPort() && await this.checkBackendPort()) {
|
||||
if (await this.checkFrontendPort() && await this.checkBackendPort()) {
|
||||
logger.log("Old ports are free, keeping them")
|
||||
} else {
|
||||
logger.log(`Finding new free ports`);
|
||||
|
||||
const instances = await DCSInstance.getInstances();
|
||||
const firstPort = instances.map((instance) => { return instance.clientPort; }).concat(instances.map((instance) => { return instance.backendPort; })).sort().at(-1) + 1;
|
||||
const firstPort = instances.map((instance) => { return instance.frontendPort; }).concat(instances.map((instance) => { return instance.backendPort; })).sort().at(-1) + 1;
|
||||
|
||||
var clientPort = await getFreePort(firstPort);
|
||||
if (clientPort === false)
|
||||
rej("Unable to find a free client port");
|
||||
logger.log(`Found free client port ${clientPort}`);
|
||||
var frontendPort = await getFreePort(firstPort);
|
||||
if (frontendPort === false)
|
||||
rej("Unable to find a free frontend port");
|
||||
logger.log(`Found free frontend port ${frontendPort}`);
|
||||
|
||||
var backendPort = await getFreePort(clientPort + 1);
|
||||
var backendPort = await getFreePort(frontendPort + 1);
|
||||
if (backendPort === false)
|
||||
rej("Unable to find a free backend port");
|
||||
logger.log(`Found free backend port ${backendPort}`);
|
||||
|
||||
this.clientPort = clientPort;
|
||||
this.frontendPort = frontendPort;
|
||||
this.backendPort = backendPort;
|
||||
}
|
||||
}
|
||||
@@ -387,7 +387,7 @@ class DCSInstance {
|
||||
*/
|
||||
async getData() {
|
||||
if (this.installed) {
|
||||
fetchWithTimeout(`http://localhost:${this.clientPort}`, { timeout: 250 })
|
||||
fetchWithTimeout(`http://localhost:${this.frontendPort}`, { timeout: 250 })
|
||||
.then(async (response) => {
|
||||
this.webserverOnline = (await response.text()).includes("Olympus");
|
||||
}, () => {
|
||||
@@ -432,7 +432,7 @@ class DCSInstance {
|
||||
const err = fs.openSync(`./${this.name}.log`, 'a');
|
||||
const sub = spawn('cscript.exe', ['server.vbs', path.join(this.folder, "Config", "olympus.json")], {
|
||||
detached: true,
|
||||
cwd: "../client",
|
||||
cwd: "../frontend",
|
||||
stdio: ['ignore', out, err]
|
||||
});
|
||||
|
||||
@@ -448,7 +448,7 @@ class DCSInstance {
|
||||
const err = fs.openSync(`./${this.name}.log`, 'a');
|
||||
const sub = spawn('cscript.exe', ['client.vbs', path.join(this.folder, "Config", "olympus.json")], {
|
||||
detached: true,
|
||||
cwd: "../client",
|
||||
cwd: "../frontend",
|
||||
stdio: ['ignore', out, err]
|
||||
});
|
||||
|
||||
@@ -459,7 +459,7 @@ class DCSInstance {
|
||||
*
|
||||
*/
|
||||
stop() {
|
||||
find('port', this.clientPort)
|
||||
find('port', this.frontendPort)
|
||||
.then((list) => {
|
||||
if (list.length !== 1) {
|
||||
list.length === 0 ? logger.error("No processes found on the specified port") : logger.error("Too many processes found on the specified port");
|
||||
|
||||
@@ -158,7 +158,7 @@ async function applyConfiguration(folder, instance) {
|
||||
}
|
||||
|
||||
/* Apply the configuration */
|
||||
config["client"]["port"] = instance.clientPort;
|
||||
config["frontend"]["port"] = instance.frontendPort;
|
||||
config["server"]["port"] = instance.backendPort;
|
||||
config["server"]["address"] = instance.backendAddress;
|
||||
config["authentication"]["gameMasterPassword"] = sha256(instance.gameMasterPassword);
|
||||
|
||||
@@ -149,13 +149,13 @@ class Manager {
|
||||
/* Force the setting of the ports whenever the page is shown */
|
||||
this.connectionsPage.options.onShow = () => {
|
||||
if (this.getActiveInstance()) {
|
||||
this.setPort('client', this.getActiveInstance().clientPort);
|
||||
this.setPort('frontend', this.getActiveInstance().frontendPort);
|
||||
this.setPort('backend', this.getActiveInstance().backendPort);
|
||||
}
|
||||
}
|
||||
this.expertSettingsPage.options.onShow = () => {
|
||||
if (this.getActiveInstance()) {
|
||||
this.setPort('client', this.getActiveInstance().clientPort);
|
||||
this.setPort('frontend', this.getActiveInstance().frontendPort);
|
||||
this.setPort('backend', this.getActiveInstance().backendPort);
|
||||
}
|
||||
}
|
||||
@@ -270,7 +270,7 @@ class Manager {
|
||||
this.typePage.show();
|
||||
} else {
|
||||
if (this.getActiveInstance().webserverOnline || this.getActiveInstance().backendOnline) {
|
||||
showErrorPopup("<div class='main-message'>The selected Olympus instance is currently active </div><div class='sub-message'> Please stop DCS and Olympus Server/Client before editing it! </div>");
|
||||
showErrorPopup("<div class='main-message'>The selected Olympus instance is currently active </div><div class='sub-message'> Please stop DCS and Olympus Server/Frontend before editing it! </div>");
|
||||
} else {
|
||||
showConfirmPopup("<div class='main-message'> Olympus is already installed in this instance! </div> <div class='sub-message'>If you click Accept, it will be installed again and all changes, e.g. custom databases or mods support, will be lost. Are you sure you want to continue?</div>",
|
||||
() => {
|
||||
@@ -456,9 +456,9 @@ class Manager {
|
||||
showErrorPopup(`<div class='main-message'>A critical error occurred! </div><div class='sub-message'> Check ${this.getLogLocation()} for more info. </div>`);
|
||||
}
|
||||
|
||||
/* When the client port input value is changed */
|
||||
async onClientPortChanged(value) {
|
||||
this.setPort('client', Number(value));
|
||||
/* When the frontend port input value is changed */
|
||||
async onFrontendPortChanged(value) {
|
||||
this.setPort('frontend', Number(value));
|
||||
}
|
||||
|
||||
/* When the backend port input value is changed */
|
||||
@@ -498,12 +498,12 @@ class Manager {
|
||||
}
|
||||
|
||||
async checkPorts() {
|
||||
var clientPortFree = await this.getActiveInstance().checkClientPort();
|
||||
var frontendPortFree = await this.getActiveInstance().checkFrontendPort();
|
||||
var backendPortFree = await this.getActiveInstance().checkBackendPort();
|
||||
if (clientPortFree && backendPortFree) {
|
||||
if (frontendPortFree && backendPortFree) {
|
||||
return true;
|
||||
} else {
|
||||
showErrorPopup(`<div class='main-message'> Please, make sure both the client and backend ports are free!</div><div class='sub-message'>If ports are already in use, Olympus will not be able to communicated correctly.</div>`);
|
||||
showErrorPopup(`<div class='main-message'> Please, make sure both the frontend and backend ports are free!</div><div class='sub-message'>If ports are already in use, Olympus will not be able to communicated correctly.</div>`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -546,7 +546,7 @@ class Manager {
|
||||
|
||||
async onOpenBrowserClicked(name) {
|
||||
var instance = await this.getClickedInstance(name);
|
||||
exec(`start http://localhost:${instance.clientPort}`)
|
||||
exec(`start http://localhost:${instance.frontendPort}`)
|
||||
}
|
||||
|
||||
async onStopClicked(name) {
|
||||
@@ -611,9 +611,9 @@ class Manager {
|
||||
/* Set the selected port to the dcs instance */
|
||||
async setPort(port, value) {
|
||||
var success;
|
||||
if (port === 'client') {
|
||||
success = await this.getActiveInstance().checkClientPort(value);
|
||||
this.getActiveInstance().setClientPort(value);
|
||||
if (port === 'frontend') {
|
||||
success = await this.getActiveInstance().checkFrontendPort(value);
|
||||
this.getActiveInstance().setFrontendPort(value);
|
||||
}
|
||||
else {
|
||||
success = await this.getActiveInstance().checkBackendPort(value);
|
||||
|
||||
Reference in New Issue
Block a user