@superadnim/osint-mcp-server
Version:
Professional OSINT MCP Server for intelligence gathering with privacy protection
67 lines • 2.92 kB
JavaScript
;
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