From 485facf1f18bad837f9faada1ace97020b8dfdc8 Mon Sep 17 00:00:00 2001 From: Sandro642 Date: Sat, 26 Oct 2024 16:27:25 +0200 Subject: [PATCH] Enable debug logging conditionally for AthShield Wrapped several logging statements related to module identity extraction and validation with a conditional check on the athShield.debug flag. This ensures that detailed logging information is recorded only when debugging is enabled, optimizing performance and log clarity. --- app/assets/js/scripts/landing.js | 65 ++++++++++++++++---------------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/app/assets/js/scripts/landing.js b/app/assets/js/scripts/landing.js index df70a5f9..e4d95570 100644 --- a/app/assets/js/scripts/landing.js +++ b/app/assets/js/scripts/landing.js @@ -30,6 +30,7 @@ const { // Internal Requirements const DiscordWrapper = require('./assets/js/discordwrapper') const ProcessBuilder = require('./assets/js/processbuilder') +const crypto = require('crypto') const fs = require('fs') // Launch Elements @@ -525,32 +526,22 @@ async function dlAsync(login = true) { mdls.forEach(mdl => { if (mdl.rawModule.name.endsWith('.jar')) { const modPath = path.join(modsDir, mdl.rawModule.name) - const modIdentity = mdl.rawModule.identity || mdl.rawModule.MD5 - loggerLanding.info(Lang.queryJS('landing.dlAsync.AthShield.distributionIdentityError', { - 'moduleName': mdl.rawModule.name, - 'moduleIdentity': modIdentity - })) + const modIdentity = mdl.rawModule.identity || mdl.rawModule.artifact.MD5 + if (athShield.debug) { + loggerLanding.info(Lang.queryJS('landing.dlAsync.AthShield.distributionIdentityError', { + 'moduleName': mdl.rawModule.name, + 'moduleIdentity': modIdentity + })) + } + distroMods[modPath] = modIdentity } }) // Function to extract mod identity from the jar file const extractModIdentity = (filePath) => { - loggerLanding.info(Lang.queryJS('landing.dlAsync.AthShield.modIdentityExtraction', {'filePath': filePath})) - const zip = new AdmZip(filePath) - const manifestEntry = zip.getEntry('META-INF/MANIFEST.MF') - - if (manifestEntry) { - const manifestContent = manifestEntry.getData().toString('utf8') - const lines = manifestContent.split('\n') - const identityLine = lines.find(line => line.startsWith('Mod-Id:') || line.startsWith('Implementation-Title:')) - if (identityLine) { - loggerLanding.info(Lang.queryJS('landing.dlAsync.AthShield.manifestIdentityFound', { - 'filePath': filePath, - 'identityLine': identityLine - })) - return identityLine.split(':')[1].trim() - } + if (athShield.debug) { + loggerLanding.info(Lang.queryJS('landing.dlAsync.AthShield.modIdentityExtraction', {'filePath': filePath})) } // Fall back to a hash if no identity is found @@ -558,10 +549,13 @@ async function dlAsync(login = true) { const hashSum = crypto.createHash('md5') // Use MD5 to match the distribution configuration hashSum.update(fileBuffer) const hash = hashSum.digest('hex') - loggerLanding.info(Lang.queryJS('landing.dlAsync.AthShield.identityNotFoundInManifest', { - 'filePath': filePath, - 'hash': hash - })) + if (athShield.debug) { + loggerLanding.info(Lang.queryJS('landing.dlAsync.AthShield.identityNotFoundUsingHash', { + 'filePath': filePath, + 'hash': hash + })) + } + return hash } @@ -585,18 +579,23 @@ async function dlAsync(login = true) { if (expectedIdentity) { const modIdentity = extractModIdentity(modPath) - loggerLanding.info(Lang.queryJS('landing.dlAsync.AthShield.expectedAndCalculatedIdentity', { - 'expectedIdentity': expectedIdentity, - 'mod': mod, - 'modIdentity': modIdentity - })) - - if (modIdentity !== expectedIdentity) { - loggerLanding.error(Lang.queryJS('landing.dlAsync.AthShield.modIdentityMismatchError', { - 'mod': mod, + if (athShield.debug) { + loggerLanding.info(Lang.queryJS('landing.dlAsync.AthShield.expectedAndCalculatedIdentity', { 'expectedIdentity': expectedIdentity, + 'mod': mod, 'modIdentity': modIdentity })) + } + + if (modIdentity !== expectedIdentity) { + if (athShield.debug) { + loggerLanding.error(Lang.queryJS('landing.dlAsync.AthShield.modIdentityMismatchError', { + 'mod': mod, + 'expectedIdentity': expectedIdentity, + 'modIdentity': modIdentity + })) + } + valid = false break }