UNPKG

@superadnim/osint-mcp-server

Version:

Professional OSINT MCP Server for intelligence gathering with privacy protection

67 lines 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigManager = void 0; class ConfigManager { config; constructor() { this.config = this.loadConfig(); } loadConfig() { return { api: { timeout: parseInt(process.env.OSINT_API_TIMEOUT || '30000', 10), retries: parseInt(process.env.OSINT_API_RETRIES || '3', 10), rateLimitEnabled: process.env.OSINT_RATE_LIMIT_ENABLED === 'true', maxConcurrentRequests: parseInt(process.env.OSINT_MAX_CONCURRENT_REQUESTS || '5', 10), }, privacy: { redactSSN: process.env.OSINT_REDACT_SSN !== 'false', redactFinancial: process.env.OSINT_REDACT_FINANCIAL !== 'false', gdprCompliance: process.env.OSINT_GDPR_COMPLIANCE !== 'false', dataRetentionHours: parseInt(process.env.OSINT_DATA_RETENTION_HOURS || '24', 10), investigationTTL: parseInt(process.env.OSINT_INVESTIGATION_TTL || '168', 10), }, logging: { level: process.env.OSINT_LOG_LEVEL || 'info', structured: process.env.OSINT_STRUCTURED_LOGGING !== 'false', auditEnabled: process.env.OSINT_AUDIT_ENABLED !== 'false', }, sources: { apiKeys: { haveibeenpwned: process.env.HAVEIBEENPWNED_API_KEY || '', shodan: process.env.SHODAN_API_KEY || '', virustotal: process.env.VIRUSTOTAL_API_KEY || '', hunter_io: process.env.HUNTER_IO_API_KEY || '', pipl: process.env.PIPL_API_KEY || '', spokeo: process.env.SPOKEO_API_KEY || '', whitepages: process.env.WHITEPAGES_API_KEY || '', numverify: process.env.NUMVERIFY_API_KEY || '', }, enabledSources: (process.env.OSINT_ENABLED_SOURCES || '').split(',').filter(Boolean), tierLimits: { 1: parseInt(process.env.OSINT_TIER1_LIMIT || '100', 10), 2: parseInt(process.env.OSINT_TIER2_LIMIT || '50', 10), 3: parseInt(process.env.OSINT_TIER3_LIMIT || '10', 10), }, }, }; } getConfig() { return this.config; } updateConfig(updates) { this.config = { ...this.config, ...updates }; } getApiKey(service) { return this.config.sources.apiKeys[service]; } isSourceEnabled(source) { return this.config.sources.enabledSources.length === 0 || this.config.sources.enabledSources.includes(source); } getTierLimit(tier) { return this.config.sources.tierLimits[tier] || 0; } } exports.ConfigManager = ConfigManager; //# sourceMappingURL=config-manager.js.map