Skip to content

Drag & drop dosya yükleme + MIME doğrulama + (opsiyonel) antivirüs tarama + sanitize + karantina + güvenli import akışı.

Notifications You must be signed in to change notification settings

AliZafer0/AutoDrop-Import-Kit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

AutoDrop Import Kit 🚀

Açık kaynak dosya tarama ve içe aktarma kiti — sürükle-bıraklı, animasyonlu, güvenli.
Frontend: Vanilla JS • Backend: PHP 8.2 • Lisans: MIT

Amaç: Her projede tekrar yazılan “dosya yükle → tara → temizle → içe al” akışını tek, bağımsız ve güvenli bir paketle çözmek.


📌 Repository Meta

  • Name: AutoDrop-Import-Kit
  • Description: Drag & drop dosya yükleme + MIME doğrulama + (opsiyonel) antivirüs tarama + sanitize + karantina + güvenli import akışı.
  • Topics: upload, drag-and-drop, sanitize, security, php, clamav, mime, import, opensource, autodocx, autoterms, micro-saas
  • License: MIT
  • Primary Language: PHP / JavaScript / HTML / CSS
  • Author: Ali Zafer — Varhan Development

✨ Özellikler

  • 🖱️ Sürükle-bırak + tıklayarak seçim (çoklu dosya, iptal, progress)
  • 🌀 Mikro animasyonlar (drag state, yükleme ilerlemesi, durum rozetleri)
  • 🔍 MIME doğrulama (finfo) + uzantı beyaz listesi
  • 🧱 Karantina klasörü + güvenli isimlendirme (tarih damgası)
  • 🦠 Antivirüs hook (ClamAV entegrasyonu için hazır stub)
  • 🧼 Sanitize iskeleti: HTML (script/style/event temizliği), PDF/DOCX stub
  • 🔐 Güvenlik başlıkları ve upload klasöründe PHP kapatma örnekleri
  • 📦 Basit mini router (PHP yerleşik sunucu ile dakikada ayağa kalkar)

🧩 Kullanılan/Önerilen Kütüphaneler & Uyum

  • PHP finfo (yerleşik) — MIME doğrulamaLisans: PHP lisansı (uyumlu)
  • ClamAV (opsiyonel) — antivirüsLisans: GPL (dış bağımlılık, çağrı seviyesinde; MIT ile uyumlu kullanım)
  • HTML Purifier (opsiyonel, entegrasyon önerisi) — ileri HTML temizliğiLisans: LGPL (uyumlu)
  • Ghostscript / qpdf (opsiyonel) — PDF düzleştirme → ayrı lisanslar (çağrı seviyesinde; MIT ile uyumlu kullanım)

Depoda zorunlu bir üçüncü parti Composer paketi yok. Tüm kod MIT altında yayınlanır. Opsiyonel araçlar sistemde kuruluysa CLI ile entegre edilebilir.


📂 Proje Yapısı

frontend/
  index.html
  assets/app.css
  assets/app.js
backend/
  public/index.php           # mini router
  src/Security/UploadGuard.php
  src/Scan/MimeSniffer.php
  src/Scan/Antivirus.php     # ClamAV opsiyonel stub
  src/Sanitize/HtmlSanitizer.php
  src/Sanitize/PdfSanitizer.php
  src/Sanitize/DocxSanitizer.php
  storage/{tmp,quarantine,imports}
ops/
  nginx.conf.example
  apache.conf.example

⚙️ Hızlı Başlangıç

# PHP yerleşik sunucu ile çalıştır
php -S localhost:8080 -t backend/public
# Tarayıcı: http://localhost:8080

İstemci (Frontend)

  • frontend/index.html sürükle-bırak alanını ve kuyruğu içerir.
  • assets/app.js dosyaları AJAX ile /upload endpoint’ine gönderir.
  • İlerleme çubuğu, iptal butonu ve durum rozetleri hazırdır.

Sunucu (Backend)

  • /upload POST: Dosyayı alır → UploadGuard ile boyut/uzantı doğrular → MimeSniffer ile gerçek MIME tespiti → Antivirus stub → Sanitize (türe göre) → imports/ klasörüne güvenli isimle taşır.
  • JSON yanıt örneği:
{ "ok": true, "id": "dosya_20251017_121314.pdf", "mime": "application/pdf" }

🔒 Güvenlik

  • Nginx (ops/nginx.conf.example):
    location ~* ^/storage/ { deny all; }
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options DENY;
    add_header Referrer-Policy no-referrer;
    add_header Content-Security-Policy "default-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors 'none';";
    client_max_body_size 10M;
  • Apache (ops/apache.conf.example):
    <Directory "/path/to/backend/storage">
      php_admin_flag engine off
      AllowOverride None
      Require all denied
    </Directory>
  • UploadGuard: boyut limiti, beyaz liste, güvenli isim, karantina.
  • MIME Sniffing: finfo ile gerçek içerik doğrulaması.
  • Antivirüs: ClamAV entegrasyon noktası (pozitif → karantina).
  • Sanitize: HTML’de script/style/event temizliği; PDF/DOCX için hook.

🧠 İleri Seviye (Opsiyonel)

  • Chunked upload (büyük dosyalar için parça-parça yükleme)
  • ZIP içi denetim (zip-slip koruması ile)
  • EXIF strip (gizlilik için görsellerde)
  • Rate limit ve CSRF token doğrulaması
  • Loglama: time, ip, ua, mime, size, scan_ok, path JSON kayıtları

🔌 Entegrasyon Örnekleri

AutoDocx / AutoTerms içine gömme

  • Frontend formunu kendi sayfana ekle, /upload isteklerini bu kitin backend’ine yönlendir.
  • Başarılı yanıtın id alanını kendi import akışına geçir (ör. “şablon oluştur” aşaması).

MIME/uzantı beyaz listesi

src/Security/UploadGuard.php içinde yapılandırılabilir:

$guard = new UploadGuard([
  'max_bytes' => 10*1024*1024,
  'allowed' => ['pdf','docx','xlsx','csv','png','jpg','jpeg','txt','html','htm'],
  'storage_tmp' => __DIR__ . '/../../storage/tmp',
  'storage_quarantine' => __DIR__ . '/../../storage/quarantine',
  'storage_imports' => __DIR__ . '/../../storage/imports',
]);

🛣️ Yol Haritası

  • Chunked upload
  • PDF raster sanitize (ghostscript/qpdf)
  • Gelişmiş HTML temizliği (HTML Purifier opsiyonel)
  • Çoklu adlandırma presetleri ({{company}}_{{date}}_{{type}})
  • i18n (TR/EN)
  • Basit rol/limit sistemi (admin/uploader)

🤝 Katkı Rehberi

  1. Fork → yeni bir dal açın (feat/…), küçük ve odaklı PR gönderin.
  2. Kod stilini sade tutun; bağımlılık eklerken lisans uyumuna dikkat edin.
  3. Güvenlik değişikliklerinde lütfen test senaryosu ekleyin.
  4. İssue’larda kayıt (log) örnekleri ve MIME çıktıları paylaşın.

Güvenlikle ilgili kritik açıklar için lütfen önce özel iletişim kurun.


📜 Lisans

MIT License © 2025 — Varhan Development
Opsiyonel bağımlılıkların lisansları kendilerine aittir (ClamAV, qpdf, Ghostscript vb.). Bu kit onların üstünde çağrı seviyesinde çalışır ve MIT lisansı ile uyumludur.

About

Drag & drop dosya yükleme + MIME doğrulama + (opsiyonel) antivirüs tarama + sanitize + karantina + güvenli import akışı.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published