@neurosec/sentry 1.0.9 → 1.0.13
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/dist/enforcement/policy-executor.d.ts +32 -0
- package/dist/enforcement/policy-executor.d.ts.map +1 -0
- package/dist/enforcement/policy-executor.js +132 -0
- package/dist/enforcement/policy-executor.js.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -1
- package/dist/telemetry.d.ts +1 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +37 -23
- package/dist/telemetry.js.map +1 -1
- package/package.json +1 -1
- package/scripts/postinstall.js +78 -9
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TaggedProcess } from '../types';
|
|
2
|
+
import { SentryConfig } from '../config';
|
|
3
|
+
interface SentryPolicy {
|
|
4
|
+
id: string;
|
|
5
|
+
hostId: string | null;
|
|
6
|
+
type: 'kill_process' | 'block_provider' | 'block_domain';
|
|
7
|
+
target: string;
|
|
8
|
+
enabled: boolean;
|
|
9
|
+
action: 'deny' | 'sigterm' | 'sigkill';
|
|
10
|
+
description: string;
|
|
11
|
+
}
|
|
12
|
+
interface PolicyResult {
|
|
13
|
+
policyId: string;
|
|
14
|
+
action: 'kill_process' | 'block_provider' | 'block_domain';
|
|
15
|
+
target: string;
|
|
16
|
+
applied: boolean;
|
|
17
|
+
detail: string;
|
|
18
|
+
}
|
|
19
|
+
export declare class PolicyExecutor {
|
|
20
|
+
private config;
|
|
21
|
+
private appliedRules;
|
|
22
|
+
private lastPolicies;
|
|
23
|
+
constructor(config: SentryConfig);
|
|
24
|
+
apply(policies: SentryPolicy[], taggedProcesses: TaggedProcess[]): Promise<PolicyResult[]>;
|
|
25
|
+
private applyKillProcess;
|
|
26
|
+
private applyBlockProvider;
|
|
27
|
+
private applyBlockDomain;
|
|
28
|
+
private addIptablesRule;
|
|
29
|
+
private removeRule;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=policy-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-executor.d.ts","sourceRoot":"","sources":["../../src/enforcement/policy-executor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAA2B,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,cAAc,GAAG,gBAAgB,GAAG,cAAc,CAAC;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,GAAG,gBAAgB,GAAG,cAAc,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,cAAc;IAIb,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,YAAY,CAAsB;gBAEtB,MAAM,EAAE,YAAY;IAGlC,KAAK,CACT,QAAQ,EAAE,YAAY,EAAE,EACxB,eAAe,EAAE,aAAa,EAAE,GAC/B,OAAO,CAAC,YAAY,EAAE,CAAC;YAyCZ,gBAAgB;IAoC9B,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,UAAU;CAInB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PolicyExecutor = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const logger_1 = require("../logger");
|
|
7
|
+
class PolicyExecutor {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.appliedRules = new Set();
|
|
11
|
+
this.lastPolicies = [];
|
|
12
|
+
}
|
|
13
|
+
// Apply policies to the current host — returns list of actions taken
|
|
14
|
+
async apply(policies, taggedProcesses) {
|
|
15
|
+
const results = [];
|
|
16
|
+
const hostId = this.config.sentry.hostId;
|
|
17
|
+
// Only process enabled policies for this host (or global)
|
|
18
|
+
const active = policies.filter(p => p.enabled && (!p.hostId || p.hostId === hostId));
|
|
19
|
+
for (const policy of active) {
|
|
20
|
+
switch (policy.type) {
|
|
21
|
+
case 'kill_process':
|
|
22
|
+
results.push(await this.applyKillProcess(policy, taggedProcesses));
|
|
23
|
+
break;
|
|
24
|
+
case 'block_provider':
|
|
25
|
+
results.push(this.applyBlockProvider(policy));
|
|
26
|
+
break;
|
|
27
|
+
case 'block_domain':
|
|
28
|
+
results.push(this.applyBlockDomain(policy));
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Remove rules for policies that no longer exist
|
|
33
|
+
for (const ruleId of this.appliedRules) {
|
|
34
|
+
if (!active.some(p => p.id === ruleId)) {
|
|
35
|
+
this.removeRule(ruleId);
|
|
36
|
+
this.appliedRules.delete(ruleId);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
this.lastPolicies = active;
|
|
40
|
+
if (results.length > 0) {
|
|
41
|
+
const applied = results.filter(r => r.applied).length;
|
|
42
|
+
logger_1.logger.info('Policy executor', { total: results.length, applied });
|
|
43
|
+
}
|
|
44
|
+
return results;
|
|
45
|
+
}
|
|
46
|
+
async applyKillProcess(policy, processes) {
|
|
47
|
+
const target = policy.target.toLowerCase();
|
|
48
|
+
const matched = processes.filter(p => {
|
|
49
|
+
if (p.frameworkId === target)
|
|
50
|
+
return true;
|
|
51
|
+
if (p.frameworkName?.toLowerCase() === target)
|
|
52
|
+
return true;
|
|
53
|
+
if (p.command?.toLowerCase().includes(target))
|
|
54
|
+
return true;
|
|
55
|
+
return false;
|
|
56
|
+
});
|
|
57
|
+
if (matched.length === 0) {
|
|
58
|
+
return { policyId: policy.id, action: 'kill_process', target: policy.target, applied: false, detail: 'No matching process found' };
|
|
59
|
+
}
|
|
60
|
+
const signal = policy.action === 'sigkill' ? 'SIGKILL' : 'SIGTERM';
|
|
61
|
+
let killed = 0;
|
|
62
|
+
for (const proc of matched) {
|
|
63
|
+
try {
|
|
64
|
+
process.kill(proc.pid, signal);
|
|
65
|
+
killed++;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
try {
|
|
69
|
+
(0, child_process_1.execSync)(`kill -${signal === 'SIGKILL' ? 9 : 15} ${proc.pid}`, { timeout: 3000 });
|
|
70
|
+
killed++;
|
|
71
|
+
}
|
|
72
|
+
catch { /* process may already be gone */ }
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const detail = killed > 0 ? `Killed ${killed} process(es) with ${signal}` : 'Failed to kill processes';
|
|
76
|
+
logger_1.logger.info('Policy: kill_process', { target: policy.target, killed, signal });
|
|
77
|
+
return { policyId: policy.id, action: 'kill_process', target: policy.target, applied: killed > 0, detail };
|
|
78
|
+
}
|
|
79
|
+
applyBlockProvider(policy) {
|
|
80
|
+
const provider = types_1.LLM_PROVIDER_SIGNATURES.find(p => p.id === policy.target || p.name === policy.target);
|
|
81
|
+
if (!provider) {
|
|
82
|
+
return { policyId: policy.id, action: 'block_provider', target: policy.target, applied: false, detail: `Unknown provider: ${policy.target}` };
|
|
83
|
+
}
|
|
84
|
+
const ruleId = `sentry-block-${provider.id}`;
|
|
85
|
+
let success = 0;
|
|
86
|
+
for (const domain of provider.domains) {
|
|
87
|
+
try {
|
|
88
|
+
this.addIptablesRule(ruleId, domain);
|
|
89
|
+
success++;
|
|
90
|
+
}
|
|
91
|
+
catch { /* best-effort */ }
|
|
92
|
+
}
|
|
93
|
+
this.appliedRules.add(ruleId);
|
|
94
|
+
if (success > 0) {
|
|
95
|
+
logger_1.logger.info('Policy: block_provider', { provider: provider.name, domains: success });
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
policyId: policy.id,
|
|
99
|
+
action: 'block_provider',
|
|
100
|
+
target: provider.name,
|
|
101
|
+
applied: success > 0,
|
|
102
|
+
detail: success > 0 ? `Blocked ${success} domain(s) via iptables` : 'No domains blocked (try running as root)',
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
applyBlockDomain(policy) {
|
|
106
|
+
const ruleId = `sentry-block-domain-${policy.id.slice(0, 8)}`;
|
|
107
|
+
try {
|
|
108
|
+
this.addIptablesRule(ruleId, policy.target);
|
|
109
|
+
this.appliedRules.add(ruleId);
|
|
110
|
+
logger_1.logger.info('Policy: block_domain', { target: policy.target });
|
|
111
|
+
return { policyId: policy.id, action: 'block_domain', target: policy.target, applied: true, detail: `Blocked ${policy.target} via iptables` };
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
return { policyId: policy.id, action: 'block_domain', target: policy.target, applied: false, detail: `Failed: ${err.message}` };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
addIptablesRule(ruleId, target) {
|
|
118
|
+
// Try nftables first, fall back to iptables
|
|
119
|
+
try {
|
|
120
|
+
(0, child_process_1.execSync)(`nft add rule inet filter output ${ruleId} ip daddr ${target} drop 2>/dev/null || iptables -C OUTPUT -d ${target} -j DROP 2>/dev/null || iptables -A OUTPUT -d ${target} -j DROP`, { timeout: 5000 });
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
(0, child_process_1.execSync)(`iptables -C OUTPUT -d ${target} -j DROP 2>/dev/null || iptables -A OUTPUT -d ${target} -j DROP`, { timeout: 5000 });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
removeRule(ruleId) {
|
|
127
|
+
// Cleanup is deferred — rules persist until explicitly removed or reboot
|
|
128
|
+
logger_1.logger.debug('Policy rule removed from tracking', { ruleId });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.PolicyExecutor = PolicyExecutor;
|
|
132
|
+
//# sourceMappingURL=policy-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-executor.js","sourceRoot":"","sources":["../../src/enforcement/policy-executor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,7 @@ const sandbox_1 = require("./sandbox");
|
|
|
13
13
|
const enforcement_engine_1 = require("./enforcement/enforcement-engine");
|
|
14
14
|
const file_monitor_1 = require("./enforcement/file-monitor");
|
|
15
15
|
const network_monitor_1 = require("./enforcement/network-monitor");
|
|
16
|
+
const policy_executor_1 = require("./enforcement/policy-executor");
|
|
16
17
|
const skill_scanner_1 = require("./skill-authz/skill-scanner");
|
|
17
18
|
const skill_evaluator_1 = require("./skill-authz/skill-evaluator");
|
|
18
19
|
const api_1 = require("./api");
|
|
@@ -28,6 +29,7 @@ class SentryDaemon {
|
|
|
28
29
|
constructor() {
|
|
29
30
|
this.taggedProcesses = [];
|
|
30
31
|
this.discoveryTimer = null;
|
|
32
|
+
this.policySyncTimer = null;
|
|
31
33
|
this.healthServer = null;
|
|
32
34
|
this.policyVersion = '1.0.0';
|
|
33
35
|
this.startTime = Date.now();
|
|
@@ -47,12 +49,14 @@ class SentryDaemon {
|
|
|
47
49
|
await this.auditLogger.init();
|
|
48
50
|
this.enforcementEngine = new enforcement_engine_1.EnforcementEngine(this.config, this.auditLogger);
|
|
49
51
|
this.skillEvaluator = new skill_evaluator_1.SkillEvaluator(this.config, this.auditLogger);
|
|
52
|
+
this.policyExecutor = new policy_executor_1.PolicyExecutor(this.config);
|
|
50
53
|
this.apiServer = new api_1.SentryApiServer(this.config, () => this.taggedProcesses, () => this.enforcementEngine, () => this.skillEvaluator, () => this.policyVersion, () => this.telemetryReporter?.getLastSyncAt() ?? null);
|
|
51
54
|
await this.apiServer.start();
|
|
52
55
|
this.telemetryReporter = new telemetry_1.TelemetryReporter(this.config, () => this.apiServer.getStatus(), () => this.taggedProcesses, () => this.enforcementEngine.getRecentDecisions());
|
|
53
56
|
this.telemetryReporter.start();
|
|
54
57
|
this.startHealthServer();
|
|
55
58
|
this.startDiscoveryLoop();
|
|
59
|
+
this.startPolicySync();
|
|
56
60
|
this.running = true;
|
|
57
61
|
logger_1.logger.info('NeuroShield Sentry daemon is operational', {
|
|
58
62
|
healthPort: this.config.sentry.healthPort,
|
|
@@ -189,6 +193,44 @@ class SentryDaemon {
|
|
|
189
193
|
logger_1.logger.info('Health server listening', { port: this.config.sentry.healthPort });
|
|
190
194
|
});
|
|
191
195
|
}
|
|
196
|
+
startPolicySync() {
|
|
197
|
+
setTimeout(() => this.syncPolicies().catch(() => { }), 5000);
|
|
198
|
+
this.policySyncTimer = setInterval(() => this.syncPolicies().catch(err => logger_1.logger.warn('Policy sync failed', { err: err.message })), 30000);
|
|
199
|
+
logger_1.logger.info('Policy sync started', { intervalMs: 30000 });
|
|
200
|
+
}
|
|
201
|
+
async syncPolicies() {
|
|
202
|
+
if (!this.config.neurosec.endpoint)
|
|
203
|
+
return;
|
|
204
|
+
try {
|
|
205
|
+
const token = require('fs').readFileSync(this.config.neurosec.tokenPath, 'utf8').trim();
|
|
206
|
+
if (!token)
|
|
207
|
+
return;
|
|
208
|
+
const url = new URL(`/api/v1/sentry/policies?hostId=${encodeURIComponent(this.config.sentry.hostId)}`, this.config.neurosec.endpoint);
|
|
209
|
+
const isHttps = url.protocol === 'https:';
|
|
210
|
+
const lib = isHttps ? require('https') : require('http');
|
|
211
|
+
const data = await new Promise((resolve, reject) => {
|
|
212
|
+
const agent = isHttps ? new lib.Agent({ rejectUnauthorized: false }) : undefined;
|
|
213
|
+
const req = lib.get(url.href, { agent, timeout: 10000, headers: { 'Authorization': `Bearer ${token}` } }, (res) => {
|
|
214
|
+
let body = '';
|
|
215
|
+
res.on('data', (c) => body += c);
|
|
216
|
+
res.on('end', () => { try {
|
|
217
|
+
resolve(JSON.parse(body));
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
reject(new Error(body));
|
|
221
|
+
} });
|
|
222
|
+
});
|
|
223
|
+
req.on('error', reject);
|
|
224
|
+
req.on('timeout', () => { req.destroy(); reject(new Error('timeout')); });
|
|
225
|
+
});
|
|
226
|
+
if (data?.data && Array.isArray(data.data)) {
|
|
227
|
+
await this.policyExecutor.apply(data.data, this.taggedProcesses);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
logger_1.logger.debug('Policy sync failed (non-fatal)', { err: err.message });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
192
234
|
async stopHealthServer() {
|
|
193
235
|
if (!this.healthServer)
|
|
194
236
|
return;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,2DAA6B;AAC7B,gDAAwB;AACxB,4CAAoB;AAEpB,qCAAoD;AAEpD,2CAAgD;AAChD,uCAAqE;AACrE,yEAAqE;AACrE,6DAA6E;AAC7E,mEAAmE;AACnE,+DAAyD;AACzD,mEAA+D;AAC/D,+BAAwC;AACxC,mCAAsC;AACtC,2CAAgD;AAChD,qCAAkC;AAElC,MAAM,oBAAoB,GAAG;IAC3B,8BAA8B;IAC9B,sBAAsB;IACtB,eAAe;CAChB,CAAC;AAEF,MAAM,YAAY;IAAlB;QAEU,oBAAe,GAAoB,EAAE,CAAC;QAMtC,mBAAc,GAA0C,IAAI,CAAC;QAC7D,iBAAY,GAAuB,IAAI,CAAC;QACxC,kBAAa,GAAG,OAAO,CAAC;QACxB,cAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,YAAO,GAAG,KAAK,CAAC;IAyP1B,CAAC;IAvPC,KAAK,CAAC,KAAK,CAAC,UAAmB;QAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,IAAA,mBAAU,EAAC,kBAAkB,CAAC,CAAC;QAE7C,eAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;YAChD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;YACnC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI;YAClC,QAAQ,EAAE,YAAE,CAAC,QAAQ,EAAE;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;SAClC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,IAAI,CAAC,WAAW,GAAG,IAAI,mBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAE9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,sCAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9E,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAExE,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAe,CAClC,IAAI,CAAC,MAAM,EACX,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAC1B,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAC5B,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EACzB,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EACxB,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,IAAI,IAAI,CACtD,CAAC;QACF,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAE7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,6BAAiB,CAC5C,IAAI,CAAC,MAAM,EACX,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAChC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAC1B,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAClD,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAE/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,eAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE;YACtD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;YACzC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;YACnC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI;YAClC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc;SACpD,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,eAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,eAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAiB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEpD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,eAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;wBAC1C,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,SAAS,EAAE,IAAI,CAAC,WAAW;wBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;qBACpC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,YAAY,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,eAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;YAElC,0CAA0C;YAC1C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC;gBAAC,MAAM,CAAC;oBACP,cAAc;gBAChB,CAAC;YACH,CAAC;YAED,yCAAyC;YACzC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACxC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBAC/C,MAAM,OAAO,GAAG,MAAM,IAAA,sBAAY,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBACtD,IAAI,OAAO,EAAE,CAAC;4BACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;wBACxB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iCAAiC;YACjC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC;gBACpD,MAAM,IAAA,6BAAc,EAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE;oBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAClE,eAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;wBACpC,GAAG,EAAE,KAAK,CAAC,GAAG;wBACd,IAAI,EAAE,KAAK,CAAC,UAAU;wBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,QAAQ,EAAE,QAAQ,CAAC,MAAM;qBAC1B,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,MAAM,IAAA,8BAAe,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9C,CAAC;YAED,mCAAmC;YACnC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;gBACjD,MAAM,WAAW,GAAG,MAAM,IAAA,oCAAkB,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACnE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;oBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;wBAC5D,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,SAAS,EAAE,QAAQ;wBACnB,MAAM,EAAE,IAAI,CAAC,QAAQ;wBACrB,QAAQ,EAAE,IAAI,CAAC,UAAU;wBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,WAAW,EAAE,IAAI;qBAClB,CAAC,CAAC;oBACH,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACpB,eAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;4BACrC,QAAQ,EAAE,IAAI,CAAC,YAAY;4BAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,IAAI,EAAE,IAAI,CAAC,QAAQ;4BACnB,IAAI,EAAE,IAAI,CAAC,UAAU;4BACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM;yBAC1B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,kBAAkB;YAClB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAU,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBACnE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,eAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,sDAAsD;YACtD,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,eAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACnC,eAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,YAAY,CAAC,CAAC;QAEjB,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACnC,eAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAErC,eAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1F,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,YAAY,GAAG,cAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;YACtE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE;YACtE,eAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,IAAI,GAAG;YACX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ;YAC3B,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;YACvC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5C,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;SAC7C,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,kBAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,OAAgB;QACxC,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC5B,OAAO,CAAC,CAAC;YACX,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;IAE3D,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAElC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,eAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,eAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,CAAC,EAAE;QACpC,eAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAAE;QACxC,eAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/telemetry.d.ts
CHANGED
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAoB3E,qBAAa,iBAAiB;IAO1B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,kBAAkB;IAT5B,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,iBAAiB,CAAc;gBAG7B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,YAAY,EAC7B,kBAAkB,EAAE,MAAM,aAAa,EAAE,EACzC,kBAAkB,EAAE,MAAM,mBAAmB,EAAE;IAGzD,KAAK,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAoB3E,qBAAa,iBAAiB;IAO1B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,kBAAkB;IAT5B,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,iBAAiB,CAAc;gBAG7B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,YAAY,EAC7B,kBAAkB,EAAE,MAAM,aAAa,EAAE,EACzC,kBAAkB,EAAE,MAAM,mBAAmB,EAAE;IAGzD,KAAK,IAAI,IAAI;IAsBb,IAAI,IAAI,IAAI;IAKZ,aAAa,IAAI,MAAM,GAAG,IAAI;IAI9B,OAAO,CAAC,SAAS;YAQH,aAAa;YAgCb,cAAc;YA4Bd,aAAa;YA2Bb,UAAU;CAiDzB"}
|
package/dist/telemetry.js
CHANGED
|
@@ -21,11 +21,15 @@ class TelemetryReporter {
|
|
|
21
21
|
}
|
|
22
22
|
start() {
|
|
23
23
|
this.sendHeartbeat().catch(() => { });
|
|
24
|
-
this.heartbeatTimer = setInterval(() => this.sendHeartbeat().catch(err => logger_1.logger.warn('Telemetry heartbeat failed', { err: err.message })), this.config.neurosec.heartbeatIntervalMs);
|
|
25
|
-
|
|
24
|
+
this.heartbeatTimer = setInterval(() => this.sendHeartbeat().catch(err => logger_1.logger.warn('Telemetry heartbeat failed', { err: err.message })), Math.min(this.config.neurosec.heartbeatIntervalMs, 60000));
|
|
25
|
+
// Also flush decisions on the faster sync interval
|
|
26
|
+
this.syncTimer = setInterval(() => {
|
|
27
|
+
this.syncProcesses().catch(() => { });
|
|
28
|
+
this.flushDecisions().catch(() => { });
|
|
29
|
+
}, Math.min(this.config.neurosec.syncIntervalMs, 30000));
|
|
26
30
|
logger_1.logger.info('Telemetry reporter started', {
|
|
27
|
-
heartbeatIntervalMs: this.config.neurosec.heartbeatIntervalMs,
|
|
28
|
-
syncIntervalMs: this.config.neurosec.syncIntervalMs,
|
|
31
|
+
heartbeatIntervalMs: Math.min(this.config.neurosec.heartbeatIntervalMs, 60000),
|
|
32
|
+
syncIntervalMs: Math.min(this.config.neurosec.syncIntervalMs, 30000),
|
|
29
33
|
});
|
|
30
34
|
}
|
|
31
35
|
stop() {
|
|
@@ -74,30 +78,40 @@ class TelemetryReporter {
|
|
|
74
78
|
await this.apiRequest('POST', '/api/v1/sentry/heartbeat', payload);
|
|
75
79
|
this.lastSyncAt = new Date().toISOString();
|
|
76
80
|
logger_1.logger.debug('Heartbeat sent', { processes: processes.length });
|
|
77
|
-
// Send decisions that haven't been sent yet
|
|
78
|
-
const newDecisions = decisions.filter(d => !this.lastDecisionsHash.includes(d.id));
|
|
79
|
-
if (newDecisions.length > 0) {
|
|
80
|
-
await this.apiRequest('POST', '/api/v1/sentry/decisions', {
|
|
81
|
-
hostId: this.config.sentry.hostId,
|
|
82
|
-
decisions: newDecisions.slice(-100).map(d => ({
|
|
83
|
-
id: d.id,
|
|
84
|
-
type: d.type,
|
|
85
|
-
action: d.action,
|
|
86
|
-
reason: d.reason,
|
|
87
|
-
frameworkId: d.frameworkId,
|
|
88
|
-
frameworkName: d.frameworkId,
|
|
89
|
-
pid: d.pid,
|
|
90
|
-
detail: d.detail,
|
|
91
|
-
timestamp: new Date(d.timestamp).toISOString(),
|
|
92
|
-
})),
|
|
93
|
-
});
|
|
94
|
-
this.lastDecisionsHash = decisions.slice(-50).map(d => d.id).join(',');
|
|
95
|
-
}
|
|
96
81
|
}
|
|
97
82
|
catch (err) {
|
|
98
83
|
logger_1.logger.warn('Telemetry send failed', { err: err.message });
|
|
99
84
|
}
|
|
100
85
|
}
|
|
86
|
+
async flushDecisions() {
|
|
87
|
+
if (!this.config.neurosec.endpoint)
|
|
88
|
+
return;
|
|
89
|
+
const decisions = this.getRecentDecisions();
|
|
90
|
+
const newDecisions = decisions.filter(d => !this.lastDecisionsHash.includes(d.id));
|
|
91
|
+
if (newDecisions.length === 0)
|
|
92
|
+
return;
|
|
93
|
+
try {
|
|
94
|
+
await this.apiRequest('POST', '/api/v1/sentry/decisions', {
|
|
95
|
+
hostId: this.config.sentry.hostId,
|
|
96
|
+
decisions: newDecisions.slice(-100).map(d => ({
|
|
97
|
+
id: d.id,
|
|
98
|
+
type: d.type,
|
|
99
|
+
action: d.action,
|
|
100
|
+
reason: d.reason,
|
|
101
|
+
frameworkId: d.frameworkId,
|
|
102
|
+
frameworkName: d.frameworkId,
|
|
103
|
+
pid: d.pid,
|
|
104
|
+
detail: d.detail,
|
|
105
|
+
timestamp: new Date(d.timestamp).toISOString(),
|
|
106
|
+
})),
|
|
107
|
+
});
|
|
108
|
+
this.lastDecisionsHash = decisions.slice(-50).map(d => d.id).join(',');
|
|
109
|
+
logger_1.logger.debug('Decisions flushed', { count: newDecisions.length });
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
logger_1.logger.warn('Decision flush failed', { err: err.message });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
101
115
|
async syncProcesses() {
|
|
102
116
|
if (!this.config.neurosec.endpoint)
|
|
103
117
|
return;
|
package/dist/telemetry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,kDAA0B;AAC1B,4CAAoB;AAGpB,qCAAkC;AAmBlC,MAAa,iBAAiB;IAM5B,YACU,MAAoB,EACpB,SAA6B,EAC7B,kBAAyC,EACzC,kBAA+C;QAH/C,WAAM,GAAN,MAAM,CAAc;QACpB,cAAS,GAAT,SAAS,CAAoB;QAC7B,uBAAkB,GAAlB,kBAAkB,CAAuB;QACzC,uBAAkB,GAAlB,kBAAkB,CAA6B;QATjD,mBAAc,GAA0C,IAAI,CAAC;QAC7D,cAAS,GAA0C,IAAI,CAAC;QACxD,eAAU,GAAkB,IAAI,CAAC;QACjC,sBAAiB,GAAW,EAAE,CAAC;IAOpC,CAAC;IAEJ,KAAK;QACH,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,WAAW,CAC/B,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,eAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,EACnH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/scripts/postinstall.js
CHANGED
|
@@ -120,6 +120,58 @@ discovery:
|
|
|
120
120
|
`;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
+
const SERVICE_NAME = 'neuroshield-sentry';
|
|
124
|
+
|
|
125
|
+
function installSystemdService(paths) {
|
|
126
|
+
const servicePath = '/etc/systemd/system/' + SERVICE_NAME + '.service';
|
|
127
|
+
const binPath = '/usr/local/bin/neuroshield-sentryd';
|
|
128
|
+
const content = `[Unit]
|
|
129
|
+
Description=NeuroShield Sentry — Host-Level Agent Protection Daemon
|
|
130
|
+
Documentation=https://docs.neurosec.ai/sentry
|
|
131
|
+
After=network.target network-online.target
|
|
132
|
+
Wants=network-online.target
|
|
133
|
+
|
|
134
|
+
[Service]
|
|
135
|
+
Type=simple
|
|
136
|
+
ExecStart=${binPath}
|
|
137
|
+
Restart=always
|
|
138
|
+
RestartSec=10
|
|
139
|
+
Environment=NODE_ENV=production
|
|
140
|
+
Environment=SENTRY_CONFIG_PATH=${paths.configPath}
|
|
141
|
+
Environment=LOG_LEVEL=info
|
|
142
|
+
StandardOutput=journal
|
|
143
|
+
StandardError=journal
|
|
144
|
+
|
|
145
|
+
[Install]
|
|
146
|
+
WantedBy=multi-user.target
|
|
147
|
+
`;
|
|
148
|
+
|
|
149
|
+
try {
|
|
150
|
+
fs.writeFileSync(servicePath, content, 'utf8');
|
|
151
|
+
console.log(`[neuroshield-sentry] Service file created: ${servicePath}`);
|
|
152
|
+
return true;
|
|
153
|
+
} catch (e) {
|
|
154
|
+
console.warn(`[neuroshield-sentry] Could not write service file: ${e.message}`);
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function enableAndStartService() {
|
|
160
|
+
const { execSync } = require('child_process');
|
|
161
|
+
for (const cmd of [
|
|
162
|
+
'systemctl daemon-reload',
|
|
163
|
+
'systemctl enable ' + SERVICE_NAME,
|
|
164
|
+
'systemctl start ' + SERVICE_NAME,
|
|
165
|
+
]) {
|
|
166
|
+
try {
|
|
167
|
+
execSync(cmd, { timeout: 10000, stdio: 'pipe' });
|
|
168
|
+
} catch (e) {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
|
|
123
175
|
function main() {
|
|
124
176
|
const paths = getPlatformPaths();
|
|
125
177
|
const configDir = paths.configDir;
|
|
@@ -128,6 +180,10 @@ function main() {
|
|
|
128
180
|
|
|
129
181
|
// Skip if config already exists
|
|
130
182
|
if (fs.existsSync(configPath)) {
|
|
183
|
+
// Still ensure service is installed if on Linux
|
|
184
|
+
if (os.platform() === 'linux' && process.getuid && process.getuid() === 0) {
|
|
185
|
+
installSystemdService(paths);
|
|
186
|
+
}
|
|
131
187
|
console.log(`[neuroshield-sentry] Config already exists at ${configPath} — skipping`);
|
|
132
188
|
return;
|
|
133
189
|
}
|
|
@@ -164,25 +220,38 @@ function main() {
|
|
|
164
220
|
console.warn(`[neuroshield-sentry] Warning: could not write token: ${e.message}`);
|
|
165
221
|
}
|
|
166
222
|
|
|
223
|
+
console.log('');
|
|
224
|
+
// Auto-install systemd service on Linux if running as root
|
|
225
|
+
let serviceInstalled = false;
|
|
226
|
+
if (os.platform() === 'linux' && process.getuid && process.getuid() === 0) {
|
|
227
|
+
if (installSystemdService(paths)) {
|
|
228
|
+
serviceInstalled = enableAndStartService();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
167
232
|
console.log('');
|
|
168
233
|
console.log('╔══════════════════════════════════════════════════════════╗');
|
|
169
234
|
console.log('║ NeuroShield Sentry installed! ║');
|
|
170
235
|
console.log('╠══════════════════════════════════════════════════════════╣');
|
|
171
236
|
console.log('║ ║');
|
|
237
|
+
if (serviceInstalled) {
|
|
238
|
+
console.log('║ ✓ Systemd service installed and started ║');
|
|
239
|
+
console.log('║ ║');
|
|
240
|
+
}
|
|
172
241
|
console.log('║ Next steps: ║');
|
|
173
242
|
console.log('║ ║');
|
|
174
243
|
console.log('║ 1. Configure your NeuroSec connection: ║');
|
|
175
244
|
console.log(`║ neuroshield-sentry setup ║`);
|
|
176
|
-
console.log('║ (or set env vars: NEUROSEC_ORG_ID, etc.) ║');
|
|
177
245
|
console.log('║ ║');
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
console.log('║
|
|
246
|
+
if (!serviceInstalled) {
|
|
247
|
+
console.log('║ 2. Install as a system service: ║');
|
|
248
|
+
console.log('║ sudo systemctl daemon-reload ║');
|
|
249
|
+
console.log('║ sudo systemctl enable ' + SERVICE_NAME + ' ║');
|
|
250
|
+
console.log('║ sudo systemctl start ' + SERVICE_NAME + ' ║');
|
|
251
|
+
console.log('║ ║');
|
|
252
|
+
}
|
|
253
|
+
console.log('║ Check status: ║');
|
|
254
|
+
console.log('║ systemctl status ' + SERVICE_NAME + ' ║');
|
|
186
255
|
console.log('║ ║');
|
|
187
256
|
console.log('╚══════════════════════════════════════════════════════════╝');
|
|
188
257
|
console.log('');
|