[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-env": "^7.2.0",
|
||||||
"@babel/preset-react": "^7.10.4",
|
"@babel/preset-react": "^7.10.4",
|
||||||
"@babel/register": "^7.0.0",
|
"@babel/register": "^7.0.0",
|
||||||
|
"@electron/fuses": "^1.4.0",
|
||||||
"@storybook/addon-actions": "^6.2.9",
|
"@storybook/addon-actions": "^6.2.9",
|
||||||
"@storybook/react": "^6.2.9",
|
"@storybook/react": "^6.2.9",
|
||||||
"@types/auto-launch": "^5.0.1",
|
"@types/auto-launch": "^5.0.1",
|
||||||
|
@ -2036,6 +2037,57 @@
|
||||||
"url": "https://opencollective.com/webpack"
|
"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": {
|
"node_modules/@electron/get": {
|
||||||
"version": "1.12.4",
|
"version": "1.12.4",
|
||||||
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz",
|
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz",
|
||||||
|
@ -29758,6 +29810,44 @@
|
||||||
"ajv-keywords": "^3.4.1"
|
"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": {
|
"@electron/get": {
|
||||||
"version": "1.12.4",
|
"version": "1.12.4",
|
||||||
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz",
|
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz",
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
"url": "git://github.com/mattermost/desktop.git"
|
"url": "git://github.com/mattermost/desktop.git"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"target": "12.0.1",
|
"target": "13.2.0",
|
||||||
"arch": "x64",
|
"arch": "x64",
|
||||||
"target_arch": "x64",
|
"target_arch": "x64",
|
||||||
"disturl": "https://electronjs.org/headers",
|
"disturl": "https://electronjs.org/headers",
|
||||||
|
@ -64,6 +64,7 @@
|
||||||
"@babel/preset-env": "^7.2.0",
|
"@babel/preset-env": "^7.2.0",
|
||||||
"@babel/preset-react": "^7.10.4",
|
"@babel/preset-react": "^7.10.4",
|
||||||
"@babel/register": "^7.0.0",
|
"@babel/register": "^7.0.0",
|
||||||
|
"@electron/fuses": "^1.4.0",
|
||||||
"@storybook/addon-actions": "^6.2.9",
|
"@storybook/addon-actions": "^6.2.9",
|
||||||
"@storybook/react": "^6.2.9",
|
"@storybook/react": "^6.2.9",
|
||||||
"@types/auto-launch": "^5.0.1",
|
"@types/auto-launch": "^5.0.1",
|
||||||
|
|
|
@ -7,17 +7,43 @@ const {spawn} = require('electron-notarize/lib/spawn.js');
|
||||||
|
|
||||||
const SETUID_PERMISSIONS = '4755';
|
const SETUID_PERMISSIONS = '4755';
|
||||||
|
|
||||||
exports.default = async function afterPack(context) {
|
const {flipFuses, FuseVersion, FuseV1Options} = require('@electron/fuses');
|
||||||
if (context.electronPlatformName === 'linux') {
|
|
||||||
context.targets.forEach(async (target) => {
|
function fixSetuid(context) {
|
||||||
if (!['appimage', 'snap'].includes(target.name.toLowerCase())) {
|
return async (target) => {
|
||||||
const result = await spawn('chmod', [SETUID_PERMISSIONS, path.join(context.appOutDir, 'chrome-sandbox')]);
|
if (!['appimage', 'snap'].includes(target.name.toLowerCase())) {
|
||||||
if (result.code !== 0) {
|
const result = await spawn('chmod', [SETUID_PERMISSIONS, path.join(context.appOutDir, 'chrome-sandbox')]);
|
||||||
throw new Error(
|
if (result.code !== 0) {
|
||||||
`Failed to set proper permissions for linux arch on ${target.name}`,
|
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