T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/soundstudiopro.com/public_html/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/soundstudiopro.com/public_html/check_audio_urls_cli.php
<?php
// Command-line version of audio URL audit
require_once 'config/database.php';

$pdo = getDBConnection();
if (!$pdo) {
    die("❌ Database connection failed\n");
}

echo "🔍 Complete Audio URL Audit\n";
echo str_repeat("=", 80) . "\n\n";

// Check main tracks
echo "📊 Checking Main Tracks (music_tracks table)...\n";

$stmt = $pdo->query("
    SELECT 
        mt.id, 
        mt.task_id, 
        mt.title, 
        mt.audio_url, 
        mt.status,
        mt.created_at,
        u.name as artist_name
    FROM music_tracks mt
    LEFT JOIN users u ON mt.user_id = u.id
    WHERE mt.status = 'complete' 
    AND mt.audio_url IS NOT NULL 
    AND mt.audio_url != ''
    ORDER BY mt.created_at DESC
");

$tracks = $stmt->fetchAll(PDO::FETCH_ASSOC);
$totalTracks = count($tracks);
$externalTracks = [];
$localTracks = [];
$missingFiles = [];
$proxyTracks = [];

foreach ($tracks as $track) {
    $url = $track['audio_url'];
    
    // Check if external URL
    if (preg_match('/^https?:\/\//', $url) && !preg_match('/^https?:\/\/' . preg_quote('soundstudiopro.com', '/') . '/', $url)) {
        $externalTracks[] = $track;
    } 
    // Check if proxy URL (audiofiles.php or audio_proxy)
    elseif (strpos($url, 'audiofiles.php') !== false || strpos($url, 'audio_proxy') !== false) {
        $proxyTracks[] = $track;
    }
    // Check if local file path
    elseif (preg_match('/^\/audio_files\//', $url)) {
        $localPath = ltrim($url, '/');
        if (file_exists($localPath)) {
            $localTracks[] = $track;
        } else {
            $missingFiles[] = $track;
        }
    }
    // Other local paths
    else {
        $localTracks[] = $track;
    }
}

// Check audio variations
echo "🎵 Checking Audio Variations (audio_variations table)...\n";

$stmt = $pdo->query("
    SELECT 
        av.id,
        av.track_id,
        av.variation_index,
        av.audio_url,
        mt.task_id,
        mt.title as track_title,
        u.name as artist_name
    FROM audio_variations av
    JOIN music_tracks mt ON av.track_id = mt.id
    LEFT JOIN users u ON mt.user_id = u.id
    WHERE av.audio_url IS NOT NULL 
    AND av.audio_url != ''
    ORDER BY av.id DESC
");

$variations = $stmt->fetchAll(PDO::FETCH_ASSOC);
$totalVariations = count($variations);
$externalVariations = [];
$localVariations = [];
$missingVariationFiles = [];
$proxyVariations = [];

foreach ($variations as $variation) {
    $url = $variation['audio_url'];
    
    // Check if external URL
    if (preg_match('/^https?:\/\//', $url) && !preg_match('/^https?:\/\/' . preg_quote('soundstudiopro.com', '/') . '/', $url)) {
        $externalVariations[] = $variation;
    } 
    // Check if proxy URL
    elseif (strpos($url, 'audiofiles.php') !== false || strpos($url, 'audio_proxy') !== false) {
        $proxyVariations[] = $variation;
    }
    // Check if local file path
    elseif (preg_match('/^\/audio_files\//', $url)) {
        $localPath = ltrim($url, '/');
        if (file_exists($localPath)) {
            $localVariations[] = $variation;
        } else {
            $missingVariationFiles[] = $variation;
        }
    }
    // Other local paths
    else {
        $localVariations[] = $variation;
    }
}

// Display statistics
echo "\n" . str_repeat("=", 80) . "\n";
echo "📈 STATISTICS\n";
echo str_repeat("=", 80) . "\n\n";

echo "Main Tracks:\n";
echo "  ✅ Local files: " . count($localTracks) . "\n";
echo "  ⚠️  External URLs: " . count($externalTracks) . "\n";
echo "  🔗 Proxy URLs: " . count($proxyTracks) . "\n";
echo "  ❌ Missing files: " . count($missingFiles) . "\n";
echo "  📊 Total: $totalTracks\n\n";

echo "Variations:\n";
echo "  ✅ Local files: " . count($localVariations) . "\n";
echo "  ⚠️  External URLs: " . count($externalVariations) . "\n";
echo "  🔗 Proxy URLs: " . count($proxyVariations) . "\n";
echo "  ❌ Missing files: " . count($missingVariationFiles) . "\n";
echo "  📊 Total: $totalVariations\n\n";

$totalExternal = count($externalTracks) + count($externalVariations);
$totalIssues = $totalExternal + count($proxyTracks) + count($proxyVariations) + count($missingFiles) + count($missingVariationFiles);

echo str_repeat("=", 80) . "\n";
if ($totalIssues === 0) {
    echo "✅ PERFECT! All audio files are local!\n";
    echo "All " . ($totalTracks + $totalVariations) . " audio URLs are using local files from /audio_files/\n";
} else {
    echo "⚠️  ISSUES FOUND\n";
    echo "Total issues: $totalIssues\n";
    echo "  - External URLs: $totalExternal\n";
    echo "  - Proxy URLs: " . (count($proxyTracks) + count($proxyVariations)) . "\n";
    echo "  - Missing files: " . (count($missingFiles) + count($missingVariationFiles)) . "\n";
}
echo str_repeat("=", 80) . "\n\n";

// Show external tracks
if (count($externalTracks) > 0) {
    echo "⚠️  TRACKS WITH EXTERNAL URLS:\n";
    echo str_repeat("-", 80) . "\n";
    foreach ($externalTracks as $track) {
        echo "  • " . htmlspecialchars($track['title']) . " (Task: " . $track['task_id'] . ")\n";
        echo "    Artist: " . ($track['artist_name'] ?? 'Unknown') . "\n";
        echo "    URL: " . substr($track['audio_url'], 0, 70) . "...\n";
        echo "    Created: " . date('M j, Y', strtotime($track['created_at'])) . "\n\n";
    }
}

// Show external variations
if (count($externalVariations) > 0) {
    echo "⚠️  VARIATIONS WITH EXTERNAL URLS:\n";
    echo str_repeat("-", 80) . "\n";
    foreach ($externalVariations as $variation) {
        echo "  • " . htmlspecialchars($variation['track_title']) . " - Variation " . $variation['variation_index'] . "\n";
        echo "    Artist: " . ($variation['artist_name'] ?? 'Unknown') . "\n";
        echo "    URL: " . substr($variation['audio_url'], 0, 70) . "...\n\n";
    }
}

// Show proxy URLs
if (count($proxyTracks) > 0 || count($proxyVariations) > 0) {
    echo "🔗 PROXY URLS (Should be converted to /audio_files/):\n";
    echo str_repeat("-", 80) . "\n";
    if (count($proxyTracks) > 0) {
        echo "Tracks:\n";
        foreach ($proxyTracks as $track) {
            echo "  • " . htmlspecialchars($track['title']) . " (Task: " . $track['task_id'] . ")\n";
            echo "    URL: " . $track['audio_url'] . "\n\n";
        }
    }
    if (count($proxyVariations) > 0) {
        echo "Variations:\n";
        foreach ($proxyVariations as $variation) {
            echo "  • " . htmlspecialchars($variation['track_title']) . " - Variation " . $variation['variation_index'] . "\n";
            echo "    URL: " . $variation['audio_url'] . "\n\n";
        }
    }
}

// Show missing files
if (count($missingFiles) > 0 || count($missingVariationFiles) > 0) {
    echo "❌ MISSING FILES:\n";
    echo str_repeat("-", 80) . "\n";
    if (count($missingFiles) > 0) {
        echo "Tracks:\n";
        foreach ($missingFiles as $track) {
            echo "  • " . htmlspecialchars($track['title']) . " (Task: " . $track['task_id'] . ")\n";
            echo "    Missing: " . $track['audio_url'] . "\n\n";
        }
    }
    if (count($missingVariationFiles) > 0) {
        echo "Variations:\n";
        foreach ($missingVariationFiles as $variation) {
            echo "  • " . htmlspecialchars($variation['track_title']) . " - Variation " . $variation['variation_index'] . "\n";
            echo "    Missing: " . $variation['audio_url'] . "\n\n";
        }
    }
}

// System check
echo "\n" . str_repeat("=", 80) . "\n";
echo "🔧 SYSTEM CHECK\n";
echo str_repeat("=", 80) . "\n\n";

$callbackFile = 'callback.php';
if (file_exists($callbackFile)) {
    $callbackContent = file_get_contents($callbackFile);
    if (strpos($callbackContent, 'downloadAndStoreAudio') !== false) {
        echo "✅ callback.php has downloadAndStoreAudio() function\n";
    } else {
        echo "❌ callback.php missing downloadAndStoreAudio() function\n";
    }
    
    if (preg_match('/downloadAndStoreAudio\s*\(/', $callbackContent)) {
        echo "✅ callback.php calls downloadAndStoreAudio()\n";
    } else {
        echo "❌ callback.php does NOT call downloadAndStoreAudio()\n";
    }
} else {
    echo "❌ callback.php not found\n";
}

if (is_dir('audio_files')) {
    $fileCount = count(glob('audio_files/*.{mp3,wav,m4a,ogg,flac}', GLOB_BRACE));
    echo "✅ audio_files/ directory exists with $fileCount audio files\n";
} else {
    echo "❌ audio_files/ directory does not exist\n";
}

echo "\n" . str_repeat("=", 80) . "\n";
echo "✅ Audit complete!\n";
if ($totalIssues > 0) {
    echo "\nTo fix external URLs, visit: https://soundstudiopro.com/fix_external_audio_urls.php\n";
}
echo str_repeat("=", 80) . "\n";


CasperSecurity Mini