
- API complètement dynamique: routes /<env>/<project>/<file_name> - Scanner automatique de tous les environnements disponibles - Sécurité renforcée contre path traversal attacks - Endpoint /routes dynamique avec 72 fichiers détectés - SDK mis à jour pour récupération dynamique des routes - Gestion d'erreurs complète et logs de sécurité - Architecture production-ready avec multi-environnements
59 lines
1.8 KiB
JavaScript
59 lines
1.8 KiB
JavaScript
const https = require('https');
|
|
|
|
async function debugApiResponse() {
|
|
console.log('🔍 Debug de la réponse API...');
|
|
|
|
const options = {
|
|
hostname: 'vault.4nkweb.com',
|
|
port: 6666,
|
|
path: '/dev/bitcoin/bitcoin.conf',
|
|
method: 'GET',
|
|
headers: {
|
|
'X-User-ID': 'demo_user_001'
|
|
},
|
|
rejectUnauthorized: false // Pour accepter les certificats auto-signés
|
|
};
|
|
|
|
const req = https.request(options, (res) => {
|
|
console.log('Status:', res.statusCode);
|
|
console.log('Headers:', res.headers);
|
|
|
|
let data = '';
|
|
res.on('data', (chunk) => {
|
|
data += chunk;
|
|
});
|
|
|
|
res.on('end', () => {
|
|
console.log('Response length:', data.length);
|
|
console.log('First 200 chars:', data.substring(0, 200));
|
|
|
|
// Essayer de décoder base64
|
|
try {
|
|
const decoded = Buffer.from(data, 'base64');
|
|
console.log('Decoded length:', decoded.length);
|
|
console.log('First 50 bytes (hex):', decoded.subarray(0, 50).toString('hex'));
|
|
|
|
if (decoded.length >= 16) {
|
|
const nonce = decoded.subarray(0, 12);
|
|
const metadataSize = decoded.readUInt32BE(12);
|
|
const metadataJson = decoded.subarray(16, 16 + metadataSize);
|
|
|
|
console.log('Nonce (hex):', nonce.toString('hex'));
|
|
console.log('Metadata size:', metadataSize);
|
|
console.log('Metadata:', metadataJson.toString('utf-8'));
|
|
}
|
|
} catch (e) {
|
|
console.log('Error decoding:', e.message);
|
|
}
|
|
});
|
|
});
|
|
|
|
req.on('error', (e) => {
|
|
console.error('Request error:', e);
|
|
});
|
|
|
|
req.end();
|
|
}
|
|
|
|
debugApiResponse();
|