[MM-35483] Flip fuses on ELECTRON_RUN_AS_NODE (#1717)
* upgrade electron to 12, add fuses * Fix error on linux afterpack * Merge'd * Update package-lock.json * Edit afterpack.js * Remove console statement Co-authored-by: Guillermo Vaya <guivaya@gmail.com> Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
This commit is contained in:
parent
ed57722086
commit
54d82493bf
90
package-lock.json
generated
90
package-lock.json
generated
|
@ -42,6 +42,7 @@
|
|||
"@babel/preset-env": "^7.2.0",
|
||||
"@babel/preset-react": "^7.10.4",
|
||||
"@babel/register": "^7.0.0",
|
||||
"@electron/fuses": "^1.4.0",
|
||||
"@storybook/addon-actions": "^6.2.9",
|
||||
"@storybook/react": "^6.2.9",
|
||||
"@types/auto-launch": "^5.0.1",
|
||||
|
@ -2036,6 +2037,57 @@
|
|||
"url": "https://opencollective.com/webpack"
|
||||
}
|
||||
},
|
||||
"node_modules/@electron/fuses": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.4.0.tgz",
|
||||
"integrity": "sha512-3h7tkzBxziz2zYI+b1c3/NPVUetrZtRcjqroQ4MZ4ZNfIJ98znyHhUl3oMDDg5ErogtpWOs3+REt3c8oKgXwHw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"chalk": "^4.1.1",
|
||||
"fs-extra": "^9.0.1",
|
||||
"minimist": "^1.2.5"
|
||||
},
|
||||
"bin": {
|
||||
"electron-fuses": "dist/bin.js"
|
||||
}
|
||||
},
|
||||
"node_modules/@electron/fuses/node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@electron/fuses/node_modules/has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@electron/fuses/node_modules/supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"has-flag": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@electron/get": {
|
||||
"version": "1.12.4",
|
||||
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz",
|
||||
|
@ -29758,6 +29810,44 @@
|
|||
"ajv-keywords": "^3.4.1"
|
||||
}
|
||||
},
|
||||
"@electron/fuses": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.4.0.tgz",
|
||||
"integrity": "sha512-3h7tkzBxziz2zYI+b1c3/NPVUetrZtRcjqroQ4MZ4ZNfIJ98znyHhUl3oMDDg5ErogtpWOs3+REt3c8oKgXwHw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.1",
|
||||
"fs-extra": "^9.0.1",
|
||||
"minimist": "^1.2.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@electron/get": {
|
||||
"version": "1.12.4",
|
||||
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz",
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"url": "git://github.com/mattermost/desktop.git"
|
||||
},
|
||||
"config": {
|
||||
"target": "12.0.1",
|
||||
"target": "13.2.0",
|
||||
"arch": "x64",
|
||||
"target_arch": "x64",
|
||||
"disturl": "https://electronjs.org/headers",
|
||||
|
@ -64,6 +64,7 @@
|
|||
"@babel/preset-env": "^7.2.0",
|
||||
"@babel/preset-react": "^7.10.4",
|
||||
"@babel/register": "^7.0.0",
|
||||
"@electron/fuses": "^1.4.0",
|
||||
"@storybook/addon-actions": "^6.2.9",
|
||||
"@storybook/react": "^6.2.9",
|
||||
"@types/auto-launch": "^5.0.1",
|
||||
|
|
|
@ -7,17 +7,43 @@ const {spawn} = require('electron-notarize/lib/spawn.js');
|
|||
|
||||
const SETUID_PERMISSIONS = '4755';
|
||||
|
||||
exports.default = async function afterPack(context) {
|
||||
if (context.electronPlatformName === 'linux') {
|
||||
context.targets.forEach(async (target) => {
|
||||
if (!['appimage', 'snap'].includes(target.name.toLowerCase())) {
|
||||
const result = await spawn('chmod', [SETUID_PERMISSIONS, path.join(context.appOutDir, 'chrome-sandbox')]);
|
||||
if (result.code !== 0) {
|
||||
throw new Error(
|
||||
`Failed to set proper permissions for linux arch on ${target.name}`,
|
||||
);
|
||||
}
|
||||
const {flipFuses, FuseVersion, FuseV1Options} = require('@electron/fuses');
|
||||
|
||||
function fixSetuid(context) {
|
||||
return async (target) => {
|
||||
if (!['appimage', 'snap'].includes(target.name.toLowerCase())) {
|
||||
const result = await spawn('chmod', [SETUID_PERMISSIONS, path.join(context.appOutDir, 'chrome-sandbox')]);
|
||||
if (result.code !== 0) {
|
||||
throw new Error(
|
||||
`Failed to set proper permissions for linux arch on ${target.name}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function getAppFileName(context) {
|
||||
switch (context.electronPlatformName) {
|
||||
case 'win32':
|
||||
return 'Mattermost.exe';
|
||||
case 'darwin':
|
||||
return 'Mattermost.app';
|
||||
case 'linux':
|
||||
return context.packager.executableName;
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
exports.default = async function afterPack(context) {
|
||||
await flipFuses(
|
||||
`${context.appOutDir}/${getAppFileName(context)}`, // Returns the path to the electron binary
|
||||
{
|
||||
version: FuseVersion.V1,
|
||||
[FuseV1Options.RunAsNode]: false, // Disables ELECTRON_RUN_AS_NODE
|
||||
});
|
||||
|
||||
if (context.electronPlatformName === 'linux') {
|
||||
context.targets.forEach(fixSetuid(context));
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue