Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
90 lines (78 loc) · 2.49 KB

File metadata and controls

90 lines (78 loc) · 2.49 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
const fse = require("fs-extra");
const path = require("path");
const R = require("ramda");
const request = require("request-promise-native");
const stream = require("stream");
const tar = require("tar-fs");
const zlib = require("zlib");
const vendorPath = path.resolve(__dirname, "..", "vendor");
const distrosFilePath = path.join(vendorPath, "static_config", "openssl_distributions.json");
const extractPath = path.join(vendorPath, "openssl");
const getOSName = () => {
if (process.platform === "win32") {
if (process.arch === "x64") {
return "win64";
} else {
return "win32";
}
} else if (process.platform === "darwin") {
return "macOS";
} else {
// We only discover distros for Mac and Windows. We don't care about any other OS.
return "unknown";
}
};
const getCompilerVersion = () => {
// TODO: Get actual compiler version. For now, just assume latest compiler for distros in openssl_distributions.js
const osName = getOSName();
if (osName === "win32" || osName === "win64") {
return "vs14";
} else if (osName === "macOS") {
return "clang-9";
} else {
// We only discover distros for Mac and Windows. We don't care about any other OS.
return "unknown";
}
};
// TODO: Determine if we are GYPing in Debug
const getIsDebug = () => false;
const getMatchingDistributionName = () =>
`${getOSName()}-${getCompilerVersion()}-static${getIsDebug() ? "-debug" : "-release"}`;
const getDistributionsConfig = () =>
fse.readFile(distrosFilePath, "utf8")
.then(JSON.parse);
const getDistrbutionURLFromConfig = (config) => {
const distName = getMatchingDistributionName();
const distURL = R.propOr(null, distName, config);
if (!distURL) {
return Promise.reject(new Error("No matching distribution for this operating system"));
}
return Promise.resolve(distURL);
};
const fetchFileFromURL = (distUrl) => request({
method: "GET",
uri: distUrl,
encoding: null,
gzip: true
});
const extractFile = (body) => new Promise((resolve, reject) => {
const streamableBody = new stream.Readable();
streamableBody.push(body);
streamableBody.push(null);
streamableBody
.pipe(zlib.createGunzip())
.on("error", reject)
.pipe(tar.extract(extractPath))
.on("error", reject)
.on("close", resolve);
});
const acquireOpenSSL = () =>
getDistributionsConfig()
.then(getDistrbutionURLFromConfig)
.then(fetchFileFromURL)
.then(extractFile)
.catch((e) => {
console.error(e);
process.exit(1);
});
acquireOpenSSL();
Morty Proxy This is a proxified and sanitized view of the page, visit original site.