Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1e02fbb597 | |||
| b534e3a243 | |||
| 523f24c92f | |||
| 0901deea32 | |||
| 59620fae2d | |||
| 3fbdfd5f2e | |||
| 57a5994e12 |
@@ -47,8 +47,11 @@
|
||||
"@actions/workflow-parser": "^0.3.4",
|
||||
"@octokit/rest": "^19.0.7",
|
||||
"@octokit/types": "^9.0.0",
|
||||
"@roamhq/mac-ca": "^1.0.7",
|
||||
"node-forge": "^1.3.1",
|
||||
"vscode-languageserver": "^8.0.2",
|
||||
"vscode-languageserver-textdocument": "^1.0.7",
|
||||
"win-ca": "^3.5.0",
|
||||
"yaml": "^2.1.3"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
export class CertificateReader {
|
||||
getAllRootCAs(): string[] {
|
||||
switch (process.platform) {
|
||||
case "darwin":
|
||||
return this.getMacOSCerts();
|
||||
case "win32":
|
||||
return this.getWindowsCerts();
|
||||
default:
|
||||
// We only support self-signed certs from Windows anc MacOS
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
private getMacOSCerts(): string[] {
|
||||
// loading modules here prevents unnecessary module loading
|
||||
// see: https://stackoverflow.com/questions/9132772/lazy-loading-in-node-js
|
||||
const macCa = require("@roamhq/mac-ca");
|
||||
const forge = require("node-forge");
|
||||
|
||||
return macCa.all().map((cert: any) => forge.pki.certificateToPem(cert));
|
||||
}
|
||||
|
||||
private getWindowsCerts(): string[] {
|
||||
const ca = require("win-ca");
|
||||
|
||||
let rootCAs: string[] = [];
|
||||
|
||||
ca({
|
||||
format: ca.der2.pem,
|
||||
ondata: (crt: string) => rootCAs.push(crt)
|
||||
});
|
||||
|
||||
return rootCAs;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,27 @@
|
||||
import {Octokit} from "@octokit/rest";
|
||||
import {Agent} from "node:https";
|
||||
import {CertificateReader} from "./certificate-reader";
|
||||
|
||||
export function getClient(token: string, userAgent?: string): Octokit {
|
||||
return new Octokit({
|
||||
auth: token,
|
||||
userAgent: userAgent || `GitHub Actions Language Server`
|
||||
});
|
||||
const certReader = new CertificateReader();
|
||||
const selfSignedCerts = certReader.getAllRootCAs();
|
||||
|
||||
if (selfSignedCerts.length > 0) {
|
||||
const httpsAgent = new Agent({
|
||||
ca: selfSignedCerts
|
||||
});
|
||||
|
||||
return new Octokit({
|
||||
auth: token,
|
||||
userAgent: userAgent || `GitHub Actions Language Server`,
|
||||
request: {
|
||||
agent: httpsAgent
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return new Octokit({
|
||||
auth: token,
|
||||
userAgent: userAgent || `GitHub Actions Language Server`
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+55
-2
@@ -402,8 +402,11 @@
|
||||
"@actions/workflow-parser": "^0.3.4",
|
||||
"@octokit/rest": "^19.0.7",
|
||||
"@octokit/types": "^9.0.0",
|
||||
"@roamhq/mac-ca": "^1.0.7",
|
||||
"node-forge": "^1.3.1",
|
||||
"vscode-languageserver": "^8.0.2",
|
||||
"vscode-languageserver-textdocument": "^1.0.7",
|
||||
"win-ca": "^3.5.0",
|
||||
"yaml": "^2.1.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -3695,6 +3698,14 @@
|
||||
"typescript": "^3 || ^4"
|
||||
}
|
||||
},
|
||||
"node_modules/@roamhq/mac-ca": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@roamhq/mac-ca/-/mac-ca-1.0.7.tgz",
|
||||
"integrity": "sha512-AOHGY1R0pH+dWJueA5i1gx2V19CLfDa8ojanhyd5ZSI/YDZ3szDr0NSDntFgWGKsvT4TtvNZfDWmXuwbSY9fTg==",
|
||||
"dependencies": {
|
||||
"node-forge": "^1.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@sinclair/typebox": {
|
||||
"version": "0.24.51",
|
||||
"dev": true,
|
||||
@@ -6998,6 +7009,11 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/is-electron": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz",
|
||||
"integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg=="
|
||||
},
|
||||
"node_modules/is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"dev": true,
|
||||
@@ -8710,6 +8726,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/node-forge": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
|
||||
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
|
||||
"engines": {
|
||||
"node": ">= 6.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/node-gyp": {
|
||||
"version": "9.3.0",
|
||||
"dev": true,
|
||||
@@ -10688,7 +10712,6 @@
|
||||
},
|
||||
"node_modules/split": {
|
||||
"version": "1.0.1",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"through": "2"
|
||||
@@ -10954,7 +10977,6 @@
|
||||
},
|
||||
"node_modules/through": {
|
||||
"version": "2.3.8",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/through2": {
|
||||
@@ -11469,6 +11491,37 @@
|
||||
"string-width": "^1.0.2 || 2 || 3 || 4"
|
||||
}
|
||||
},
|
||||
"node_modules/win-ca": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/win-ca/-/win-ca-3.5.0.tgz",
|
||||
"integrity": "sha512-0TgO/+2iz2pS3OxBy2ikovPHOYyZRdLRxRTT9ze7DpZwEpaahLFOBuac93GM3lYEVzDyf8fXskJjIX/EILvkhQ==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"is-electron": "^2.2.0",
|
||||
"make-dir": "^1.3.0",
|
||||
"node-forge": "^1.2.1",
|
||||
"split": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/win-ca/node_modules/make-dir": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
|
||||
"integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
|
||||
"dependencies": {
|
||||
"pify": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/win-ca/node_modules/pify": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||
"integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/word-wrap": {
|
||||
"version": "1.2.3",
|
||||
"dev": true,
|
||||
|
||||
Reference in New Issue
Block a user