\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82 www.csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMasterv2/templates/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv2/templates/storage.html


{% extends "base.html" %}

{% block content %}
<div class="container-fluid">
    <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
        <h1 class="h2">Depolama Hedefleri</h1>
        <div class="btn-toolbar mb-2 mb-md-0">
            <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addStorageModal">
                <i class="fas fa-plus"></i> Depolama Ekle
            </button>
        </div>
    </div>

    <!-- Storage Targets Table -->
    <div class="card">
        <div class="card-body">
            <div class="table-responsive">
                <table class="table table-hover align-middle">
                    <thead>
                        <tr>
                            <th>Adı</th>
                            <th>Tip</th>
                            <th>Sunucu</th>
                            <th>Yol</th>
                            <th>Alan</th>
                            <th>İşlemler</th>
                        </tr>
                    </thead>
                    <tbody>
                        {% for storage in storage_targets %}
                        <tr>
                            <td>{{ storage.name }}</td>
                            <td>
                                {% if storage.storage_type == 'smb' %}
                                    <span class="badge bg-primary">
                                        <i class="fas fa-share-alt me-1"></i>SMB/CIFS
                                    </span>
                                {% elif storage.storage_type == 'nfs' %}
                                    <span class="badge bg-info">
                                        <i class="fas fa-network-wired me-1"></i>NFS
                                    </span>
                                {% elif storage.storage_type == 'ftp' %}
                                    <span class="badge bg-success">
                                        <i class="fas fa-upload me-1"></i>FTP
                                    </span>
                                {% endif %}
                            </td>
                            <td>{{ storage.host }}</td>
                            <td>{{ storage.path }}</td>
                            <td>
                                {% if storage.error is defined and storage.error %}
                                    <span class="badge bg-danger">
                                        <i class="fas fa-exclamation-triangle"></i> Hata
                                    </span>
                                {% else %}
                                    <div class="d-flex align-items-center">
                                        <div class="progress flex-grow-1 me-2" style="height: 10px;">
                                            {% if storage.percent_free < 10 %}
                                                <div class="progress-bar bg-danger" role="progressbar" 
                                                     style="width: {{ 100 - storage.percent_free }}%;" 
                                                     aria-valuenow="{{ 100 - storage.percent_free }}" aria-valuemin="0" aria-valuemax="100">
                                                </div>
                                            {% elif storage.percent_free < 20 %}
                                                <div class="progress-bar bg-warning" role="progressbar" 
                                                     style="width: {{ 100 - storage.percent_free }}%;" 
                                                     aria-valuenow="{{ 100 - storage.percent_free }}" aria-valuemin="0" aria-valuemax="100">
                                                </div>
                                            {% else %}
                                                <div class="progress-bar bg-success" role="progressbar" 
                                                     style="width: {{ 100 - storage.percent_free }}%;" 
                                                     aria-valuenow="{{ 100 - storage.percent_free }}" aria-valuemin="0" aria-valuemax="100">
                                                </div>
                                            {% endif %}
                                        </div>
                                        <small>
                                            {{ (storage.free_space / (1024*1024*1024)) | round(2) }} GB boş
                                        </small>
                                    </div>
                                {% endif %}
                            </td>
                            <td>
                                <div class="btn-group" role="group">
                                    <a href="{{ url_for('test_storage', storage_id=storage.id) }}" class="btn btn-sm btn-outline-info">
                                        <i class="fas fa-vial"></i> Test
                                    </a>
                                    <button type="button" class="btn btn-sm btn-outline-danger" 
                                            data-bs-toggle="modal" data-bs-target="#deleteModal{{ storage.id }}">
                                        <i class="fas fa-trash"></i> Sil
                                    </button>
                                </div>
                                
                                <!-- Delete Confirmation Modal -->
                                <div class="modal fade" id="deleteModal{{ storage.id }}" tabindex="-1" aria-hidden="true">
                                    <div class="modal-dialog">
                                        <div class="modal-content">
                                            <div class="modal-header">
                                                <h5 class="modal-title">Silme İşlemini Onayla</h5>
                                                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                                            </div>
                                            <div class="modal-body">
                                                <strong>{{ storage.name }}</strong> depolama hedefini silmek istediğinizden emin misiniz?
                                                Bu işlem geri alınamaz.
                                            </div>
                                            <div class="modal-footer">
                                                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">İptal</button>
                                                <form action="{{ url_for('delete_storage', storage_id=storage.id) }}" method="post">
                                                    <button type="submit" class="btn btn-danger">Sil</button>
                                                </form>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </td>
                        </tr>
                        {% endfor %}
                        
                        {% if not storage_targets %}
                        <tr>
                            <td colspan="6" class="text-center">Depolama hedefi bulunamadı</td>
                        </tr>
                        {% endif %}
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

<!-- Add Storage Modal -->
<div class="modal fade" id="addStorageModal" tabindex="-1" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Depolama Hedefi Ekle</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <form method="post" action="{{ url_for('add_storage') }}">
                <div class="modal-body">
                    {{ form.csrf_token }}
                    <div class="mb-3">
                        <label for="name" class="form-label">{{ form.name.label }}</label>
                        {{ form.name(class="form-control", placeholder="örn: Yedekleme Sunucusu FTP") }}
                    </div>
                    <div class="mb-3">
                        <label for="storage_type" class="form-label">{{ form.storage_type.label }}</label>
                        {{ form.storage_type(class="form-select") }}
                    </div>
                    <div class="mb-3">
                        <label for="host" class="form-label">{{ form.host.label }}</label>
                        {{ form.host(class="form-control", placeholder="örn: depolama.ornek.com") }}
                    </div>
                    <div class="mb-3">
                        <label for="port" class="form-label">{{ form.port.label }} <small class="text-muted">(İsteğe bağlı, varsayılan için boş bırakın)</small></label>
                        {{ form.port(class="form-control", placeholder="örn: FTP için 21") }}
                    </div>
                    <div class="mb-3">
                        <label for="username" class="form-label">{{ form.username.label }} <small class="text-muted">(Bazı depolama türleri için isteğe bağlı)</small></label>
                        {{ form.username(class="form-control", placeholder="örn: yedekleme_kullanici") }}
                    </div>
                    <div class="mb-3">
                        <label for="password" class="form-label">{{ form.password.label }} <small class="text-muted">(Bazı depolama türleri için isteğe bağlı)</small></label>
                        {{ form.password(class="form-control") }}
                    </div>
                    <div class="mb-3">
                        <label for="path" class="form-label">{{ form.path.label }}</label>
                        {{ form.path(class="form-control", placeholder="örn: /yedekler veya paylasim_adi/klasor") }}
                        <small class="form-text text-muted">
                            SMB için paylaşım_adı/yol formatını kullanın. FTP/NFS için mutlak yol kullanın.
                        </small>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">İptal</button>
                    <button type="submit" class="btn btn-primary">Depolama Ekle</button>
                </div>
            </form>
        </div>
    </div>
</div>
{% endblock %}


© KUJUNTI.ID