mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 11:39:01 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const child_process = require("child_process");
 | |
| const { default: e } = require("express");
 | |
| const fs = require("fs");
 | |
| const path = require("path");
 | |
| 
 | |
| const LOG_LOCATION = "c:\\ev_signer_trilium\\ev_signer_trilium.err.log";
 | |
| 
 | |
| module.exports = function (sourcePath) {
 | |
|     const { WINDOWS_SIGN_EXECUTABLE } = process.env;
 | |
|     if (!WINDOWS_SIGN_EXECUTABLE) {
 | |
|         console.warn("[Sign] Skip signing due to missing environment variable.");
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     try {
 | |
|         const command = `${WINDOWS_SIGN_EXECUTABLE} --executable "${sourcePath}"`;
 | |
|         console.log(`[Sign] ${command}`);
 | |
| 
 | |
|         child_process.execSync(command);
 | |
|     } catch (e) {
 | |
|         console.error("[Sign] Got error while signing " + e.output.toString("utf-8"));
 | |
|         printSigningErrorLogs(sourcePath);
 | |
|         process.exit(2); 
 | |
|     }
 | |
| }
 | |
| 
 | |
| function printSigningErrorLogs(sourcePath) {
 | |
|   const buffer = fs.readFileSync(sourcePath);
 | |
|   console.log("Platform: ", process.platform);
 | |
|   console.log("CPU archi:", process.arch);
 | |
|   console.log("DLL archi: ", getDllArchitectureFromBuffer(buffer));
 | |
| 
 | |
|   if (!fs.existsSync(LOG_LOCATION)) {
 | |
|     console.warn("[Sign] No debug log file found.");
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   const logContent = fs.readFileSync(LOG_LOCATION, "utf-8");
 | |
|   console.error("[Sign] Debug log content:\n" + logContent);
 | |
| }
 | |
| 
 | |
| function getDllArchitectureFromBuffer(buffer) {
 | |
|     // Check for MZ header
 | |
|     if (buffer[0] !== 0x4D || buffer[1] !== 0x5A) {
 | |
|       return 'Not a PE file (missing MZ header)';
 | |
|     }
 | |
|   
 | |
|     // Offset to PE header
 | |
|     const peHeaderOffset = buffer.readUInt32LE(0x3C);
 | |
|   
 | |
|     // Confirm PE signature
 | |
|     const peSig = buffer.toString('utf8', peHeaderOffset, peHeaderOffset + 4);
 | |
|     if (peSig !== 'PE\u0000\u0000') {
 | |
|       return 'Invalid PE header';
 | |
|     }
 | |
|   
 | |
|     // Machine field is 2 bytes at PE header + 4
 | |
|     const machine = buffer.readUInt16LE(peHeaderOffset + 4);
 | |
|   
 | |
|     const archMap = {
 | |
|       0x014c: 'x86 (32-bit)',
 | |
|       0x8664: 'x64 (64-bit)',
 | |
|       0x01c4: 'ARM (32-bit)',
 | |
|       0xaa64: 'ARM64',
 | |
|     };
 | |
|   
 | |
|     return archMap[machine] || `Unknown (0x${machine.toString(16)})`;
 | |
|   } | 
