\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
| Path : /var/www/html/yedekledb24/DatabaseBackupMasterv2/templates/ |
|
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 %}