mirror of
https://github.com/an-anime-team/an-anime-game-launcher.git
synced 2024-12-24 02:28:15 +03:00
Minor changes
- added uri constants - fixed testing patch auto installation - improved isTelemetryDisabled method
This commit is contained in:
parent
36d130ead6
commit
ca9162cb9f
5 changed files with 67 additions and 53 deletions
|
@ -26,7 +26,7 @@ if (!fs.existsSync(constants.dxvksDir))
|
||||||
|
|
||||||
$(() => {
|
$(() => {
|
||||||
if (LauncherLib.version !== null)
|
if (LauncherLib.version !== null)
|
||||||
document.title = `${constants.gamePlaceholder.uppercase.full} Linux Launcher - ${LauncherLib.version}`;
|
document.title = `${constants.placeholders.uppercase.full} Linux Launcher - ${LauncherLib.version}`;
|
||||||
|
|
||||||
// On Start configuration of LauncherUI
|
// On Start configuration of LauncherUI
|
||||||
LauncherUI.updateLang(LauncherLib.getConfig('lang.launcher') ?? 'en-us');
|
LauncherUI.updateLang(LauncherLib.getConfig('lang.launcher') ?? 'en-us');
|
||||||
|
@ -102,7 +102,7 @@ $(() => {
|
||||||
});
|
});
|
||||||
});*/
|
});*/
|
||||||
|
|
||||||
Tools.getGitTags('https://notabug.org/nobody/an-anime-game-launcher').then (tags => {
|
Tools.getGitTags(constants.uri.launcher).then (tags => {
|
||||||
if (tags.filter(entry => semver.gt(entry.tag, launcher_version)).length > 0)
|
if (tags.filter(entry => semver.gt(entry.tag, launcher_version)).length > 0)
|
||||||
{
|
{
|
||||||
ipcRenderer.send('notification', {
|
ipcRenderer.send('notification', {
|
||||||
|
@ -194,11 +194,11 @@ $(() => {
|
||||||
|
|
||||||
if (!await LauncherLib.isTelemetryDisabled())
|
if (!await LauncherLib.isTelemetryDisabled())
|
||||||
{
|
{
|
||||||
console.log('miHoYo\'s telemetry servers doesn\'t disabled!');
|
console.log(`${constants.placeholders.uppercase.company}'s telemetry servers doesn't disabled!`);
|
||||||
|
|
||||||
ipcRenderer.send('notification', {
|
ipcRenderer.send('notification', {
|
||||||
title: document.title,
|
title: document.title, // FIXME add translation
|
||||||
body: 'miHoYo\'s telemetry servers doesn\'t disabled!'
|
body: `${constants.placeholders.uppercase.company}'s telemetry servers doesn't disabled!`
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,23 +372,29 @@ $(() => {
|
||||||
// Patch available
|
// Patch available
|
||||||
if (patchInfo.version === data.game.latest.version)
|
if (patchInfo.version === data.game.latest.version)
|
||||||
{
|
{
|
||||||
// TODO: check the patch state
|
// ..but it's in testing state
|
||||||
|
if (patchInfo.state === 'testing')
|
||||||
|
LauncherUI.setState('test-patch-available');
|
||||||
|
|
||||||
console.log(`%c> Applying patch...`, 'font-size: 16px');
|
// Otherwise it's fully released and tested and we can auto-install it
|
||||||
|
else
|
||||||
|
{
|
||||||
|
console.log(`%c> Applying patch...`, 'font-size: 16px');
|
||||||
|
|
||||||
// patch-applying state changes only button text
|
// patch-applying state changes only button text
|
||||||
$('#downloaded').text(LauncherUI.i18n.translate('ApplyPatch'));
|
$('#downloaded').text(LauncherUI.i18n.translate('ApplyPatch'));
|
||||||
$('#speed').text('');
|
$('#speed').text('');
|
||||||
$('#eta').text('');
|
$('#eta').text('');
|
||||||
|
|
||||||
LauncherLib.patchGame(() => {
|
LauncherLib.patchGame(() => {
|
||||||
LauncherUI.setState('game-launch-available');
|
LauncherUI.setState('game-launch-available');
|
||||||
|
|
||||||
ipcRenderer.send('notification', {
|
ipcRenderer.send('notification', {
|
||||||
title: document.title,
|
title: document.title,
|
||||||
body: LauncherUI.i18n.translate('GameDownloaded')
|
body: LauncherUI.i18n.translate('GameDownloaded')
|
||||||
});
|
});
|
||||||
}, data => console.log(data.toString()));
|
}, data => console.log(data.toString()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Patch is not available
|
// Patch is not available
|
||||||
|
|
|
@ -161,11 +161,11 @@ export class LauncherLib
|
||||||
this.getData().then(data => {
|
this.getData().then(data => {
|
||||||
let gameLatest: string = data.game.latest.version;
|
let gameLatest: string = data.game.latest.version;
|
||||||
|
|
||||||
fetch(`https://notabug.org/Krock/GI-on-Linux/raw/master/${gameLatest.replaceAll('.', '')}/patch.sh`)
|
fetch(`${constants.uri.patch}/raw/master/${gameLatest.replaceAll('.', '')}/patch.sh`)
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then((patch: string) => {
|
.then((patch: string) => {
|
||||||
// patch.sh exists so patch in testing, stable or it's just a preparation
|
// patch.sh exists so patch in testing, stable or it's just a preparation
|
||||||
fetch(`https://notabug.org/Krock/GI-on-Linux/raw/master/${gameLatest.replaceAll('.', '')}/patch_files/unityplayer_patch.vcdiff`)
|
fetch(`${constants.uri.patch}/raw/master/${gameLatest.replaceAll('.', '')}/patch_files/unityplayer_patch.vcdiff`)
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then((unityPatch: string) => {
|
.then((unityPatch: string) => {
|
||||||
// unityplayer_patch exists so it's testing or stable
|
// unityplayer_patch exists so it's testing or stable
|
||||||
|
@ -195,33 +195,15 @@ export class LauncherLib
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public static isTelemetryDisabled (domainNum: number = 0): Promise<boolean>
|
||||||
* 0.0.0.0 log-upload-os.mihoyo.com
|
|
||||||
* 0.0.0.0 overseauspider.yuanshen.com
|
|
||||||
*/
|
|
||||||
public static isTelemetryDisabled (): Promise<boolean>
|
|
||||||
{
|
{
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
dns.lookup('log-upload-os.mihoyo.com', (error: any, address: string, family: any) => {
|
Tools.domainAvailable(constants.uri.telemetry[domainNum]).then(async (status) => {
|
||||||
if (error)
|
if (constants.uri.telemetry[++domainNum] !== undefined)
|
||||||
reject(error);
|
status &&= await this.isTelemetryDisabled(domainNum);
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (address != '0.0.0.0')
|
|
||||||
resolve(false);
|
|
||||||
|
|
||||||
else
|
resolve(status);
|
||||||
{
|
}).catch(reject);
|
||||||
dns.lookup('log-upload-os.mihoyo.com', (error: any, address: string, family: any) => {
|
|
||||||
if (error)
|
|
||||||
reject(error);
|
|
||||||
|
|
||||||
else resolve(address == '0.0.0.0');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ type LauncherState =
|
||||||
|
|
||||||
export class LauncherUI
|
export class LauncherUI
|
||||||
{
|
{
|
||||||
public static readonly socialUri = `https://${constants.gamePlaceholder.lowercase.first}.${constants.gamePlaceholder.lowercase.company}.com/launcher/10/${LauncherLib.getConfig('lang.launcher')}?api_url=https%3A%2F%2Fapi-os-takumi.${constants.gamePlaceholder.lowercase.company}.com%2Fhk4e_global&prev=false`;
|
public static readonly socialUri = `https://${constants.placeholders.lowercase.first}.${constants.placeholders.lowercase.company}.com/launcher/10/${LauncherLib.getConfig('lang.launcher')}?api_url=https%3A%2F%2Fapi-os-takumi.${constants.placeholders.lowercase.company}.com%2Fhk4e_global&prev=false`;
|
||||||
|
|
||||||
protected static _launcherState: LauncherState = 'game-launch-available';
|
protected static _launcherState: LauncherState = 'game-launch-available';
|
||||||
protected static _i18n: any;
|
protected static _i18n: any;
|
||||||
|
|
|
@ -2,6 +2,7 @@ const https = require('follow-redirects').https;
|
||||||
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
const dns = require('dns');
|
||||||
const { spawn } = require('child_process');
|
const { spawn } = require('child_process');
|
||||||
|
|
||||||
type GitTag = { tag: string, commit: string };
|
type GitTag = { tag: string, commit: string };
|
||||||
|
@ -33,6 +34,20 @@ export class Tools
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async domainAvailable (uri: string): Promise<boolean>
|
||||||
|
{
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
dns.lookup(uri, (error: any, address: string, family: any) => {
|
||||||
|
console.log(`${uri} -> ${address}`);
|
||||||
|
|
||||||
|
if (error)
|
||||||
|
reject(error);
|
||||||
|
|
||||||
|
else resolve(address == '0.0.0.0');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public static async downloadFile (uri: string, savePath: string, progress: (current: number, total: number, difference: number) => void): Promise<void|Error>
|
public static async downloadFile (uri: string, savePath: string, progress: (current: number, total: number, difference: number) => void): Promise<void|Error>
|
||||||
{
|
{
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|
|
@ -3,12 +3,13 @@ const os = require('os');
|
||||||
|
|
||||||
export class constants
|
export class constants
|
||||||
{
|
{
|
||||||
public static readonly gamePlaceholder = {
|
public static readonly placeholders = {
|
||||||
uppercase:
|
uppercase:
|
||||||
{
|
{
|
||||||
first: Buffer.from('R2Vuc2hpbg==', 'base64').toString(),
|
first: Buffer.from('R2Vuc2hpbg==', 'base64').toString(),
|
||||||
second: Buffer.from('SW1wYWN0', 'base64').toString(),
|
second: Buffer.from('SW1wYWN0', 'base64').toString(),
|
||||||
full: Buffer.from('R2Vuc2hpbiBJbXBhY3Q=', 'base64').toString()
|
full: Buffer.from('R2Vuc2hpbiBJbXBhY3Q=', 'base64').toString(),
|
||||||
|
company: Buffer.from('bWlIb1lv', 'base64').toString()
|
||||||
},
|
},
|
||||||
|
|
||||||
lowercase:
|
lowercase:
|
||||||
|
@ -18,18 +19,28 @@ export class constants
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static readonly uri = {
|
||||||
|
api: `https://sdk-os-static.${this.placeholders.lowercase.company}.com/hk4e_global/mdk/launcher/api`,
|
||||||
|
patch: 'https://notabug.org/Krock/GI-on-Linux',
|
||||||
|
launcher: 'https://notabug.org/nobody/an-anime-game-launcher',
|
||||||
|
telemetry: [
|
||||||
|
`log-upload-os.${this.placeholders.lowercase.company}.com`,
|
||||||
|
'overseauspider.yuanshen.com'
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
public static readonly launcherDir: string = path.join(os.homedir(), '.local', 'share', 'anime-game-launcher');
|
public static readonly launcherDir: string = path.join(os.homedir(), '.local', 'share', 'anime-game-launcher');
|
||||||
|
|
||||||
public static readonly prefixDir: string = path.join(this.launcherDir, 'game');
|
public static readonly prefixDir: string = path.join(this.launcherDir, 'game');
|
||||||
public static readonly gameDir: string = path.join(this.prefixDir, 'drive_c', 'Program Files', this.gamePlaceholder.uppercase.full);
|
public static readonly gameDir: string = path.join(this.prefixDir, 'drive_c', 'Program Files', this.placeholders.uppercase.full);
|
||||||
public static readonly runnersDir: string = path.join(this.launcherDir, 'runners');
|
public static readonly runnersDir: string = path.join(this.launcherDir, 'runners');
|
||||||
public static readonly dxvksDir: string = path.join(this.launcherDir, 'dxvks');
|
public static readonly dxvksDir: string = path.join(this.launcherDir, 'dxvks');
|
||||||
|
|
||||||
public static readonly versionsUri: string = `https://sdk-os-static.${this.gamePlaceholder.lowercase.company}.com/hk4e_global/mdk/launcher/api/resource?key=gcStgarh&launcher_id=10`;
|
public static readonly versionsUri: string = `${this.uri.api}/resource?key=gcStgarh&launcher_id=10`;
|
||||||
public static readonly backgroundUri: string = `https://sdk-os-static.${this.gamePlaceholder.lowercase.company}.com/hk4e_global/mdk/launcher/api/content?filter_adv=true&launcher_id=10&language=`;
|
public static readonly backgroundUri: string = `${this.uri.api}/content?filter_adv=true&launcher_id=10&language=`;
|
||||||
|
|
||||||
public static readonly patchUri: string = 'https://notabug.org/Krock/GI-on-Linux/archive/master.zip';
|
public static readonly patchUri: string = `${this.uri.patch}/archive/master.zip`;
|
||||||
|
|
||||||
public static readonly runnersUri: string = 'https://notabug.org/nobody/an-anime-game-launcher/raw/main/runners.json';
|
public static readonly runnersUri: string = `${this.uri.launcher}/raw/main/runners.json`;
|
||||||
public static readonly dxvksUri: string = 'https://notabug.org/nobody/an-anime-game-launcher/raw/main/dxvks.json';
|
public static readonly dxvksUri: string = `${this.uri.launcher}/raw/main/dxvks.json`;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue