HEX
Server: LiteSpeed
System: Linux CentOS-79-64-minimal 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: vishn3436 (5293)
PHP: 8.0.15
Disabled: NONE
Upload Files
File: //data/silvera-firewall-app/debug_sync.js
const { Pool } = require('pg');
const fs = require('fs').promises;
const path = require('path');

const BRIDGE_DIR = '/app/bitninja_bridge';
const COMMAND_FILE = path.join(BRIDGE_DIR, 'command.txt');
const RESULT_FILE = path.join(BRIDGE_DIR, 'result.txt');

async function executeBitNinjaCommand(action, ip, comment = '') {
  try {
    const command = `${action} ${ip} ${comment}\n`;
    await fs.writeFile(COMMAND_FILE, command);
    
    let attempts = 0;
    while (attempts < 30) {
      try {
        await fs.access(RESULT_FILE);
        const result = await fs.readFile(RESULT_FILE, 'utf8');
        await fs.unlink(RESULT_FILE);
        return { success: true, message: result.trim() };
      } catch {
        await new Promise(resolve => setTimeout(resolve, 100));
        attempts++;
      }
    }
    
    throw new Error('BitNinja command timeout');
  } catch (error) {
    console.error('BitNinja bridge error:', error);
    return { success: false, message: error.message };
  }
}

async function getBitNinjaWhitelist() {
  console.log('Testing getBitNinjaWhitelist function...');
  try {
    const result = await executeBitNinjaCommand('list', '');
    console.log('Bridge result success:', result.success);
    console.log('Bridge result message:', JSON.stringify(result.message));
    
    if (!result.success) {
      console.log('Bridge failed, returning empty array');
      return [];
    }
    
    const lines = result.message.split('\n').filter(line => line.trim());
    console.log('Parsed lines:', lines);
    const ips = [];
    
    for (const line of lines) {
      const trimmedLine = line.trim();
      console.log(`Testing line: "${trimmedLine}"`);
      if (/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/.test(trimmedLine)) {
        console.log(`Valid IP: ${trimmedLine}`);
        ips.push(trimmedLine);
      } else {
        console.log(`Invalid IP format: ${trimmedLine}`);
      }
    }
    
    console.log('Final IPs:', ips);
    return ips;
  } catch (error) {
    console.error('BitNinja list error:', error);
    return [];
  }
}

async function main() {
  const ips = await getBitNinjaWhitelist();
  console.log('=== RESULT ===');
  console.log('Total IPs found:', ips.length);
  console.log('IPs:', ips);
}

main().catch(console.error);