@pan-sec/notebooklm-mcp 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +289 -0
- package/SECURITY.md +539 -0
- package/dist/auth/auth-manager.d.ts +137 -0
- package/dist/auth/auth-manager.d.ts.map +1 -0
- package/dist/auth/auth-manager.js +984 -0
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/auth/mcp-auth.d.ts +102 -0
- package/dist/auth/mcp-auth.d.ts.map +1 -0
- package/dist/auth/mcp-auth.js +286 -0
- package/dist/auth/mcp-auth.js.map +1 -0
- package/dist/config.d.ts +89 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +216 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +26 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +41 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +371 -0
- package/dist/index.js.map +1 -0
- package/dist/library/notebook-library.d.ts +70 -0
- package/dist/library/notebook-library.d.ts.map +1 -0
- package/dist/library/notebook-library.js +279 -0
- package/dist/library/notebook-library.js.map +1 -0
- package/dist/library/types.d.ts +67 -0
- package/dist/library/types.d.ts.map +1 -0
- package/dist/library/types.js +8 -0
- package/dist/library/types.js.map +1 -0
- package/dist/resources/resource-handlers.d.ts +22 -0
- package/dist/resources/resource-handlers.d.ts.map +1 -0
- package/dist/resources/resource-handlers.js +216 -0
- package/dist/resources/resource-handlers.js.map +1 -0
- package/dist/session/browser-session.d.ts +108 -0
- package/dist/session/browser-session.d.ts.map +1 -0
- package/dist/session/browser-session.js +621 -0
- package/dist/session/browser-session.js.map +1 -0
- package/dist/session/session-manager.d.ts +77 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +314 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/session/session-timeout.d.ts +122 -0
- package/dist/session/session-timeout.d.ts.map +1 -0
- package/dist/session/session-timeout.js +281 -0
- package/dist/session/session-timeout.js.map +1 -0
- package/dist/session/shared-context-manager.d.ts +107 -0
- package/dist/session/shared-context-manager.d.ts.map +1 -0
- package/dist/session/shared-context-manager.js +447 -0
- package/dist/session/shared-context-manager.js.map +1 -0
- package/dist/tools/definitions/ask-question.d.ts +8 -0
- package/dist/tools/definitions/ask-question.d.ts.map +1 -0
- package/dist/tools/definitions/ask-question.js +211 -0
- package/dist/tools/definitions/ask-question.js.map +1 -0
- package/dist/tools/definitions/notebook-management.d.ts +3 -0
- package/dist/tools/definitions/notebook-management.d.ts.map +1 -0
- package/dist/tools/definitions/notebook-management.js +243 -0
- package/dist/tools/definitions/notebook-management.js.map +1 -0
- package/dist/tools/definitions/session-management.d.ts +3 -0
- package/dist/tools/definitions/session-management.d.ts.map +1 -0
- package/dist/tools/definitions/session-management.js +41 -0
- package/dist/tools/definitions/session-management.js.map +1 -0
- package/dist/tools/definitions/system.d.ts +3 -0
- package/dist/tools/definitions/system.d.ts.map +1 -0
- package/dist/tools/definitions/system.js +143 -0
- package/dist/tools/definitions/system.js.map +1 -0
- package/dist/tools/definitions.d.ts +12 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +26 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/handlers.d.ts +213 -0
- package/dist/tools/handlers.d.ts.map +1 -0
- package/dist/tools/handlers.js +813 -0
- package/dist/tools/handlers.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +82 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/audit-logger.d.ts +140 -0
- package/dist/utils/audit-logger.d.ts.map +1 -0
- package/dist/utils/audit-logger.js +361 -0
- package/dist/utils/audit-logger.js.map +1 -0
- package/dist/utils/cert-pinning.d.ts +97 -0
- package/dist/utils/cert-pinning.d.ts.map +1 -0
- package/dist/utils/cert-pinning.js +328 -0
- package/dist/utils/cert-pinning.js.map +1 -0
- package/dist/utils/cleanup-manager.d.ts +133 -0
- package/dist/utils/cleanup-manager.d.ts.map +1 -0
- package/dist/utils/cleanup-manager.js +673 -0
- package/dist/utils/cleanup-manager.js.map +1 -0
- package/dist/utils/cli-handler.d.ts +16 -0
- package/dist/utils/cli-handler.d.ts.map +1 -0
- package/dist/utils/cli-handler.js +102 -0
- package/dist/utils/cli-handler.js.map +1 -0
- package/dist/utils/crypto.d.ts +175 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +612 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/logger.d.ts +61 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +92 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/page-utils.d.ts +54 -0
- package/dist/utils/page-utils.d.ts.map +1 -0
- package/dist/utils/page-utils.js +405 -0
- package/dist/utils/page-utils.js.map +1 -0
- package/dist/utils/response-validator.d.ts +98 -0
- package/dist/utils/response-validator.d.ts.map +1 -0
- package/dist/utils/response-validator.js +352 -0
- package/dist/utils/response-validator.js.map +1 -0
- package/dist/utils/secrets-scanner.d.ts +126 -0
- package/dist/utils/secrets-scanner.d.ts.map +1 -0
- package/dist/utils/secrets-scanner.js +443 -0
- package/dist/utils/secrets-scanner.js.map +1 -0
- package/dist/utils/secure-memory.d.ts +130 -0
- package/dist/utils/secure-memory.d.ts.map +1 -0
- package/dist/utils/secure-memory.js +279 -0
- package/dist/utils/secure-memory.js.map +1 -0
- package/dist/utils/security.d.ts +83 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +272 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +37 -0
- package/dist/utils/settings-manager.d.ts.map +1 -0
- package/dist/utils/settings-manager.js +125 -0
- package/dist/utils/settings-manager.js.map +1 -0
- package/dist/utils/stealth-utils.d.ts +135 -0
- package/dist/utils/stealth-utils.d.ts.map +1 -0
- package/dist/utils/stealth-utils.js +398 -0
- package/dist/utils/stealth-utils.js.map +1 -0
- package/dist/utils/tool-validation.d.ts +93 -0
- package/dist/utils/tool-validation.d.ts.map +1 -0
- package/dist/utils/tool-validation.js +277 -0
- package/dist/utils/tool-validation.js.map +1 -0
- package/docs/SECURITY_IMPLEMENTATION_PLAN.md +437 -0
- package/docs/configuration.md +94 -0
- package/docs/tools.md +34 -0
- package/docs/troubleshooting.md +59 -0
- package/docs/usage-guide.md +245 -0
- package/package.json +82 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Certificate Pinning for NotebookLM MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Provides certificate pinning for HTTPS connections:
|
|
5
|
+
* - Pin Google's root CA certificates
|
|
6
|
+
* - Detect MITM attacks
|
|
7
|
+
* - Validate certificate chains
|
|
8
|
+
*
|
|
9
|
+
* Why this matters:
|
|
10
|
+
* - Prevents man-in-the-middle attacks
|
|
11
|
+
* - Protects against rogue CA certificates
|
|
12
|
+
* - Ensures only Google's real servers are trusted
|
|
13
|
+
*
|
|
14
|
+
* Added by Pantheon Security for hardened fork.
|
|
15
|
+
*/
|
|
16
|
+
import https from "https";
|
|
17
|
+
import tls from "tls";
|
|
18
|
+
import crypto from "crypto";
|
|
19
|
+
import { log } from "./logger.js";
|
|
20
|
+
import { audit } from "./audit-logger.js";
|
|
21
|
+
/**
|
|
22
|
+
* Google's trusted root CA Subject Public Key Info (SPKI) hashes
|
|
23
|
+
* These are SHA-256 hashes of the Subject Public Key Info
|
|
24
|
+
*
|
|
25
|
+
* Updated: November 2025
|
|
26
|
+
* Sources:
|
|
27
|
+
* - Google Trust Services roots: https://pki.goog/
|
|
28
|
+
* - GTS Root R1, R2, R3, R4
|
|
29
|
+
* - GlobalSign Root CA (backup)
|
|
30
|
+
*/
|
|
31
|
+
const PINNED_CERTIFICATES = {
|
|
32
|
+
// Google Trust Services roots
|
|
33
|
+
"*.google.com": [
|
|
34
|
+
// GTS Root R1
|
|
35
|
+
"hxqRlPTu1bMS/0DITB1SSu0vd4u/8l8TjPgfaAp63Gc=",
|
|
36
|
+
// GTS Root R2
|
|
37
|
+
"Vfd95BwDeSQo+NUYxVEEIBvvpOs/QbsFp7DeP0Cr1pE=",
|
|
38
|
+
// GTS Root R3
|
|
39
|
+
"QXnt2YHvdHR3tJYmQIr0Paosp6t/nggsEGD4QJZ3Q0g=",
|
|
40
|
+
// GTS Root R4
|
|
41
|
+
"mEflZT5enoR1FuXLgYYGqnVEoZvmf9c2bVBpiOjYQ0c=",
|
|
42
|
+
// GlobalSign Root CA - R2 (backup)
|
|
43
|
+
"iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0=",
|
|
44
|
+
// DigiCert Global Root G2 (backup)
|
|
45
|
+
"i7WTqTvh0OioIruIfFR4kMPnBqrS2rdiVPl/s2uC/CY=",
|
|
46
|
+
],
|
|
47
|
+
"notebooklm.google.com": [
|
|
48
|
+
// Same as *.google.com
|
|
49
|
+
"hxqRlPTu1bMS/0DITB1SSu0vd4u/8l8TjPgfaAp63Gc=",
|
|
50
|
+
"Vfd95BwDeSQo+NUYxVEEIBvvpOs/QbsFp7DeP0Cr1pE=",
|
|
51
|
+
"QXnt2YHvdHR3tJYmQIr0Paosp6t/nggsEGD4QJZ3Q0g=",
|
|
52
|
+
"mEflZT5enoR1FuXLgYYGqnVEoZvmf9c2bVBpiOjYQ0c=",
|
|
53
|
+
"iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0=",
|
|
54
|
+
"i7WTqTvh0OioIruIfFR4kMPnBqrS2rdiVPl/s2uC/CY=",
|
|
55
|
+
],
|
|
56
|
+
"accounts.google.com": [
|
|
57
|
+
// Same as *.google.com
|
|
58
|
+
"hxqRlPTu1bMS/0DITB1SSu0vd4u/8l8TjPgfaAp63Gc=",
|
|
59
|
+
"Vfd95BwDeSQo+NUYxVEEIBvvpOs/QbsFp7DeP0Cr1pE=",
|
|
60
|
+
"QXnt2YHvdHR3tJYmQIr0Paosp6t/nggsEGD4QJZ3Q0g=",
|
|
61
|
+
"mEflZT5enoR1FuXLgYYGqnVEoZvmf9c2bVBpiOjYQ0c=",
|
|
62
|
+
"iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0=",
|
|
63
|
+
"i7WTqTvh0OioIruIfFR4kMPnBqrS2rdiVPl/s2uC/CY=",
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Get certificate pinning configuration
|
|
68
|
+
*/
|
|
69
|
+
function getPinningConfig() {
|
|
70
|
+
return {
|
|
71
|
+
enabled: process.env.NLMCP_CERT_PINNING !== "false",
|
|
72
|
+
failOpen: process.env.NLMCP_CERT_FAIL_OPEN === "true",
|
|
73
|
+
reportOnly: process.env.NLMCP_CERT_REPORT_ONLY === "true",
|
|
74
|
+
additionalPins: {},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Calculate SPKI hash for a certificate
|
|
79
|
+
*/
|
|
80
|
+
export function calculateSPKIHash(cert) {
|
|
81
|
+
// Get the public key in DER format
|
|
82
|
+
const pubkey = cert.pubkey;
|
|
83
|
+
if (!pubkey) {
|
|
84
|
+
throw new Error("Certificate has no public key");
|
|
85
|
+
}
|
|
86
|
+
// Calculate SHA-256 hash and encode as base64
|
|
87
|
+
const hash = crypto.createHash("sha256").update(pubkey).digest("base64");
|
|
88
|
+
return hash;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get all SPKI hashes from a certificate chain
|
|
92
|
+
*/
|
|
93
|
+
export function getCertificateChainHashes(socket) {
|
|
94
|
+
const hashes = [];
|
|
95
|
+
const cert = socket.getPeerCertificate(true);
|
|
96
|
+
if (!cert || !cert.raw) {
|
|
97
|
+
return hashes;
|
|
98
|
+
}
|
|
99
|
+
// Walk the certificate chain
|
|
100
|
+
let current = cert;
|
|
101
|
+
const seen = new Set();
|
|
102
|
+
while (current && current.raw) {
|
|
103
|
+
const fingerprint = current.fingerprint256;
|
|
104
|
+
if (seen.has(fingerprint))
|
|
105
|
+
break;
|
|
106
|
+
seen.add(fingerprint);
|
|
107
|
+
try {
|
|
108
|
+
if (current.pubkey) {
|
|
109
|
+
const hash = crypto.createHash("sha256").update(current.pubkey).digest("base64");
|
|
110
|
+
hashes.push(hash);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// Skip certificates we can't hash
|
|
115
|
+
}
|
|
116
|
+
current = current.issuerCertificate;
|
|
117
|
+
}
|
|
118
|
+
return hashes;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Validate a certificate chain against pinned certificates
|
|
122
|
+
*/
|
|
123
|
+
export function validateCertificatePin(hostname, chainHashes, config = getPinningConfig()) {
|
|
124
|
+
if (!config.enabled) {
|
|
125
|
+
return { valid: true };
|
|
126
|
+
}
|
|
127
|
+
// Get pins for this hostname
|
|
128
|
+
const pins = getPinsForHostname(hostname, config);
|
|
129
|
+
if (pins.length === 0) {
|
|
130
|
+
// No pins configured for this host
|
|
131
|
+
return { valid: true };
|
|
132
|
+
}
|
|
133
|
+
// Check if any certificate in the chain matches a pin
|
|
134
|
+
for (const hash of chainHashes) {
|
|
135
|
+
if (pins.includes(hash)) {
|
|
136
|
+
return { valid: true, matchedPin: hash };
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// No match found
|
|
140
|
+
const error = `Certificate pinning failed for ${hostname}. ` +
|
|
141
|
+
`Chain hashes: [${chainHashes.join(", ")}]. ` +
|
|
142
|
+
`Expected one of: [${pins.join(", ")}]`;
|
|
143
|
+
return { valid: false, error };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get pinned certificates for a hostname
|
|
147
|
+
*/
|
|
148
|
+
function getPinsForHostname(hostname, config) {
|
|
149
|
+
const pins = [];
|
|
150
|
+
// Check exact match
|
|
151
|
+
if (PINNED_CERTIFICATES[hostname]) {
|
|
152
|
+
pins.push(...PINNED_CERTIFICATES[hostname]);
|
|
153
|
+
}
|
|
154
|
+
// Check wildcard match
|
|
155
|
+
const parts = hostname.split(".");
|
|
156
|
+
if (parts.length >= 2) {
|
|
157
|
+
const wildcard = "*." + parts.slice(1).join(".");
|
|
158
|
+
if (PINNED_CERTIFICATES[wildcard]) {
|
|
159
|
+
pins.push(...PINNED_CERTIFICATES[wildcard]);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Check additional pins from config
|
|
163
|
+
if (config.additionalPins[hostname]) {
|
|
164
|
+
pins.push(...config.additionalPins[hostname]);
|
|
165
|
+
}
|
|
166
|
+
return [...new Set(pins)]; // Deduplicate
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Certificate Pinning Manager
|
|
170
|
+
*/
|
|
171
|
+
export class CertificatePinningManager {
|
|
172
|
+
config;
|
|
173
|
+
violationCount = 0;
|
|
174
|
+
lastViolation;
|
|
175
|
+
constructor(config) {
|
|
176
|
+
this.config = { ...getPinningConfig(), ...config };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Check if pinning is enabled
|
|
180
|
+
*/
|
|
181
|
+
isEnabled() {
|
|
182
|
+
return this.config.enabled;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Validate a TLS connection
|
|
186
|
+
*/
|
|
187
|
+
async validateConnection(socket, hostname) {
|
|
188
|
+
if (!this.config.enabled) {
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
const chainHashes = getCertificateChainHashes(socket);
|
|
192
|
+
const result = validateCertificatePin(hostname, chainHashes, this.config);
|
|
193
|
+
if (!result.valid) {
|
|
194
|
+
this.violationCount++;
|
|
195
|
+
this.lastViolation = {
|
|
196
|
+
hostname,
|
|
197
|
+
timestamp: new Date(),
|
|
198
|
+
chainHashes,
|
|
199
|
+
};
|
|
200
|
+
// Log the violation
|
|
201
|
+
log.error(`🔒 Certificate pinning violation for ${hostname}`);
|
|
202
|
+
log.error(` Chain hashes: ${chainHashes.join(", ")}`);
|
|
203
|
+
await audit.security("cert_pinning_violation", "critical", {
|
|
204
|
+
hostname,
|
|
205
|
+
chain_hashes: chainHashes,
|
|
206
|
+
error: result.error,
|
|
207
|
+
report_only: this.config.reportOnly,
|
|
208
|
+
});
|
|
209
|
+
if (this.config.reportOnly) {
|
|
210
|
+
log.warning(" (Report-only mode - connection allowed)");
|
|
211
|
+
return true;
|
|
212
|
+
}
|
|
213
|
+
if (this.config.failOpen) {
|
|
214
|
+
log.warning(" (Fail-open mode - connection allowed)");
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
if (result.matchedPin) {
|
|
220
|
+
log.info(`🔒 Certificate pinning verified for ${hostname}`);
|
|
221
|
+
}
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Create an HTTPS agent with certificate pinning
|
|
226
|
+
*/
|
|
227
|
+
createPinnedAgent(_hostname) {
|
|
228
|
+
const self = this;
|
|
229
|
+
return new https.Agent({
|
|
230
|
+
checkServerIdentity: (host, cert) => {
|
|
231
|
+
// First do normal hostname verification
|
|
232
|
+
const err = tls.checkServerIdentity(host, cert);
|
|
233
|
+
if (err) {
|
|
234
|
+
return err;
|
|
235
|
+
}
|
|
236
|
+
// Then check certificate pinning
|
|
237
|
+
if (self.config.enabled && cert.pubkey) {
|
|
238
|
+
const hash = crypto.createHash("sha256").update(cert.pubkey).digest("base64");
|
|
239
|
+
const pins = getPinsForHostname(host, self.config);
|
|
240
|
+
if (pins.length > 0 && !pins.includes(hash)) {
|
|
241
|
+
self.violationCount++;
|
|
242
|
+
if (!self.config.reportOnly && !self.config.failOpen) {
|
|
243
|
+
return new Error(`Certificate pinning failed for ${host}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return undefined;
|
|
248
|
+
},
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Get violation statistics
|
|
253
|
+
*/
|
|
254
|
+
getStats() {
|
|
255
|
+
return {
|
|
256
|
+
enabled: this.config.enabled,
|
|
257
|
+
reportOnly: this.config.reportOnly,
|
|
258
|
+
violationCount: this.violationCount,
|
|
259
|
+
lastViolation: this.lastViolation
|
|
260
|
+
? {
|
|
261
|
+
hostname: this.lastViolation.hostname,
|
|
262
|
+
timestamp: this.lastViolation.timestamp,
|
|
263
|
+
}
|
|
264
|
+
: undefined,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Update configuration
|
|
269
|
+
*/
|
|
270
|
+
updateConfig(config) {
|
|
271
|
+
this.config = { ...this.config, ...config };
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Add a custom pin for a hostname
|
|
275
|
+
*/
|
|
276
|
+
addPin(hostname, spkiHash) {
|
|
277
|
+
if (!this.config.additionalPins[hostname]) {
|
|
278
|
+
this.config.additionalPins[hostname] = [];
|
|
279
|
+
}
|
|
280
|
+
if (!this.config.additionalPins[hostname].includes(spkiHash)) {
|
|
281
|
+
this.config.additionalPins[hostname].push(spkiHash);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Global certificate pinning manager
|
|
287
|
+
*/
|
|
288
|
+
let globalPinningManager = null;
|
|
289
|
+
/**
|
|
290
|
+
* Get or create the global pinning manager
|
|
291
|
+
*/
|
|
292
|
+
export function getCertificatePinningManager() {
|
|
293
|
+
if (!globalPinningManager) {
|
|
294
|
+
globalPinningManager = new CertificatePinningManager();
|
|
295
|
+
}
|
|
296
|
+
return globalPinningManager;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Utility to extract and display certificate pins from a hostname
|
|
300
|
+
* Useful for updating pinned certificates
|
|
301
|
+
*/
|
|
302
|
+
export async function extractCertificatePins(hostname) {
|
|
303
|
+
return new Promise((resolve, reject) => {
|
|
304
|
+
const options = {
|
|
305
|
+
host: hostname,
|
|
306
|
+
port: 443,
|
|
307
|
+
servername: hostname,
|
|
308
|
+
rejectUnauthorized: true,
|
|
309
|
+
};
|
|
310
|
+
const socket = tls.connect(options, () => {
|
|
311
|
+
try {
|
|
312
|
+
const hashes = getCertificateChainHashes(socket);
|
|
313
|
+
socket.end();
|
|
314
|
+
resolve(hashes);
|
|
315
|
+
}
|
|
316
|
+
catch (error) {
|
|
317
|
+
socket.end();
|
|
318
|
+
reject(error);
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
socket.on("error", reject);
|
|
322
|
+
socket.setTimeout(10000, () => {
|
|
323
|
+
socket.destroy();
|
|
324
|
+
reject(new Error("Connection timeout"));
|
|
325
|
+
});
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=cert-pinning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cert-pinning.js","sourceRoot":"","sources":["../../src/utils/cert-pinning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cleanup Manager for NotebookLM MCP Server
|
|
3
|
+
*
|
|
4
|
+
* ULTRATHINK EDITION - Complete cleanup across all platforms!
|
|
5
|
+
*
|
|
6
|
+
* Handles safe removal of:
|
|
7
|
+
* - Legacy data from notebooklm-mcp-nodejs
|
|
8
|
+
* - Current installation data
|
|
9
|
+
* - Browser profiles and session data
|
|
10
|
+
* - NPM/NPX cache
|
|
11
|
+
* - Claude CLI MCP logs
|
|
12
|
+
* - Claude Projects cache
|
|
13
|
+
* - Temporary backups
|
|
14
|
+
* - Editor logs (Cursor, VSCode)
|
|
15
|
+
* - Trash files (optional)
|
|
16
|
+
*
|
|
17
|
+
* Platform support: Linux, Windows, macOS
|
|
18
|
+
*/
|
|
19
|
+
export type CleanupMode = "legacy" | "all" | "deep";
|
|
20
|
+
export interface CleanupResult {
|
|
21
|
+
success: boolean;
|
|
22
|
+
mode: CleanupMode;
|
|
23
|
+
deletedPaths: string[];
|
|
24
|
+
failedPaths: string[];
|
|
25
|
+
totalSizeBytes: number;
|
|
26
|
+
categorySummary: Record<string, {
|
|
27
|
+
count: number;
|
|
28
|
+
bytes: number;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
export interface CleanupCategory {
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
paths: string[];
|
|
35
|
+
totalBytes: number;
|
|
36
|
+
optional: boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare class CleanupManager {
|
|
39
|
+
private legacyPaths;
|
|
40
|
+
private currentPaths;
|
|
41
|
+
private homeDir;
|
|
42
|
+
private tempDir;
|
|
43
|
+
constructor();
|
|
44
|
+
/**
|
|
45
|
+
* Get NPM cache directory (platform-specific)
|
|
46
|
+
*/
|
|
47
|
+
private getNpmCachePath;
|
|
48
|
+
/**
|
|
49
|
+
* Get Claude CLI cache directory (platform-specific)
|
|
50
|
+
*/
|
|
51
|
+
private getClaudeCliCachePath;
|
|
52
|
+
/**
|
|
53
|
+
* Get Claude projects directory (platform-specific)
|
|
54
|
+
*/
|
|
55
|
+
private getClaudeProjectsPath;
|
|
56
|
+
/**
|
|
57
|
+
* Get editor config paths (Cursor, VSCode)
|
|
58
|
+
*/
|
|
59
|
+
private getEditorConfigPaths;
|
|
60
|
+
/**
|
|
61
|
+
* Get trash directory (platform-specific)
|
|
62
|
+
*/
|
|
63
|
+
private getTrashPath;
|
|
64
|
+
/**
|
|
65
|
+
* Get manual legacy config paths that might not be caught by envPaths
|
|
66
|
+
* This ensures we catch ALL legacy installations including old config.json files
|
|
67
|
+
*/
|
|
68
|
+
private getManualLegacyPaths;
|
|
69
|
+
/**
|
|
70
|
+
* Find NPM/NPX cache files
|
|
71
|
+
*/
|
|
72
|
+
private findNpmCache;
|
|
73
|
+
/**
|
|
74
|
+
* Find Claude CLI MCP logs
|
|
75
|
+
*/
|
|
76
|
+
private findClaudeCliLogs;
|
|
77
|
+
/**
|
|
78
|
+
* Find Claude projects cache
|
|
79
|
+
*/
|
|
80
|
+
private findClaudeProjects;
|
|
81
|
+
/**
|
|
82
|
+
* Find temporary backups
|
|
83
|
+
*/
|
|
84
|
+
private findTemporaryBackups;
|
|
85
|
+
/**
|
|
86
|
+
* Find editor logs (Cursor, VSCode)
|
|
87
|
+
*/
|
|
88
|
+
private findEditorLogs;
|
|
89
|
+
/**
|
|
90
|
+
* Find trash files
|
|
91
|
+
*/
|
|
92
|
+
private findTrashFiles;
|
|
93
|
+
/**
|
|
94
|
+
* Get all paths that would be deleted for a given mode (with categorization)
|
|
95
|
+
*/
|
|
96
|
+
getCleanupPaths(mode: CleanupMode, preserveLibrary?: boolean): Promise<{
|
|
97
|
+
categories: CleanupCategory[];
|
|
98
|
+
totalPaths: string[];
|
|
99
|
+
totalSizeBytes: number;
|
|
100
|
+
}>;
|
|
101
|
+
/**
|
|
102
|
+
* Perform cleanup with safety checks and detailed reporting
|
|
103
|
+
*/
|
|
104
|
+
performCleanup(mode: CleanupMode, preserveLibrary?: boolean): Promise<CleanupResult>;
|
|
105
|
+
/**
|
|
106
|
+
* Check if a path exists
|
|
107
|
+
*/
|
|
108
|
+
private pathExists;
|
|
109
|
+
/**
|
|
110
|
+
* Get the size of a single file
|
|
111
|
+
*/
|
|
112
|
+
private getFileSize;
|
|
113
|
+
/**
|
|
114
|
+
* Get the total size of a directory (recursive)
|
|
115
|
+
*/
|
|
116
|
+
private getDirectorySize;
|
|
117
|
+
/**
|
|
118
|
+
* Format bytes to human-readable string
|
|
119
|
+
*/
|
|
120
|
+
formatBytes(bytes: number): string;
|
|
121
|
+
/**
|
|
122
|
+
* Get platform-specific path info
|
|
123
|
+
*/
|
|
124
|
+
getPlatformInfo(): {
|
|
125
|
+
platform: string;
|
|
126
|
+
legacyBasePath: string;
|
|
127
|
+
currentBasePath: string;
|
|
128
|
+
npmCachePath: string;
|
|
129
|
+
claudeCliCachePath: string;
|
|
130
|
+
claudeProjectsPath: string;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=cleanup-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup-manager.d.ts","sourceRoot":"","sources":["../../src/utils/cleanup-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAUD,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;;IAmBxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA+C5B;;OAEG;YACW,YAAY;IAsB1B;;OAEG;YACW,iBAAiB;IA2B/B;;OAEG;YACW,kBAAkB;IAqBhC;;OAEG;YACW,oBAAoB;IAelC;;OAEG;YACW,cAAc;IAuB5B;;OAEG;YACW,cAAc;IA6B5B;;OAEG;IACG,eAAe,CACnB,IAAI,EAAE,WAAW,EACjB,eAAe,GAAE,OAAe,GAC/B,OAAO,CAAC;QACT,UAAU,EAAE,eAAe,EAAE,CAAC;QAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IA0QF;;OAEG;IACG,cAAc,CAClB,IAAI,EAAE,WAAW,EACjB,eAAe,GAAE,OAAe,GAC/B,OAAO,CAAC,aAAa,CAAC;IAqEzB;;OAEG;YACW,UAAU;IASxB;;OAEG;YACW,WAAW;IASzB;;OAEG;YACW,gBAAgB;IA2B9B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQlC;;OAEG;IACH,eAAe,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;KAC5B;CAyBF"}
|