🛠️ابزار و CLIسال: ۱۴۰۴–۰۵در حال توسعه فعال

Transfer

انتقال سریع فایل در شبکه محلی بین گوشی، لپ‌تاپ و کامپیوتر — با نصب‌کننده ویندوز و ابزار خط فرمان

Transfer cover
پایتون 3.10+aiohttpWebSocketPWAPyInstallerInno SetupSQLite

چیست

Transfer یک سرور انتقال فایل سریع در شبکه محلی (LAN) است. یک بار روی کامپیوتر اجرایش می‌کنید و بعد هر گوشی، لپ‌تاپ یا کامپیوتر دیگری در همان وای‌فای می‌تواند آدرس چاپ‌شده را در مرورگر باز کند و فایل آپلود/دانلود کند — بدون کابل، بدون ابر، بدون حساب.

پروژه دوزبانه (انگلیسی/فارسی) است، به‌صورت نصب‌کننده آماده ویندوز (NeganTransfer_Setup.exe با PyInstaller + Inno Setup) عرضه می‌شود و یک ابزار خط فرمان (transfer-cli.py) هم دارد.

ویژگی‌های کلیدی

  • آپلود/دانلود فایل و کل پوشه، کشیدن و رها کردن، دانلود چندفایله ZIP
  • به‌روزرسانی لحظه‌ای با WebSocket؛ کشف خودکار دستگاه در شبکه محلی
  • کد QR برای اتصال سریع از گوشی
  • HTTPS با گواهی خودامضای خودکار (یا mkcert برای گواهی معتبر)
  • مدیریت فایل: حذف، تغییر نام، ساخت پوشه؛ لینک اشتراک با انقضا؛ جستجو/مرتب‌سازی/فیلتر؛ تشخیص فایل تکراری
  • ۵ تم + تم خودکار سیستم + پس‌زمینه دلخواه؛ رابط دوزبانه EN/FA
  • نمایش اطلاعات سخت‌افزار؛ میانبرهای صفحه‌کلید؛ محدودیت سرعت در هر نشست
  • پشتیبانی PWA — نصب به‌عنوان اپلیکیشن روی گوشی
  • امکانات بیشتر: حالت همگام‌سازی پوشه (آزمایشی)، چت بین دستگاه‌ها، تست سرعت شبکه، مشاهده دوربین/صفحه از راه دور (نیازمند HTTPS)، پیش‌نمایش اسناد (PDF، متن، کد)

مدل امنیتی

محافظت در برابر Path Traversal، جلوگیری از XSS (ایسکیپ همه محتوای کاربر)، محافظت CSRF روی اندپوینت‌های تغییر وضعیت، محدودیت نرخ به تفکیک IP، احراز هویت مبتنی بر نشست و HTTPS. در README صریح نوشته شده: فقط برای شبکه محلی — در اینترنت عمومی قرار ندهید.

معماری (بر اساس سورس)

server/
├── main.py        # نقطه ورود؛ بررسی پورت، خاموشی تمیز
├── handler.py     # هندلرهای HTTP
├── websocket.py   # به‌روزرسانی لحظه‌ای
├── auth.py        # احراز هویت مبتنی بر نشست
├── security.py    # CSRF، محدودیت نرخ، پاک‌سازی
├── network.py     # تشخیص آدرس LAN
├── qr.py          # تولید QR
├── hardware.py    # اطلاعات سخت‌افزار
├── config.py      # تنظیمات و پورت
└── services/      # سرویس‌های اضافه
web/
├── index.html / app.js / style.css / manifest.json / translations.js

به‌علاوه: transfer-cli.py (ارسال/دریافت/لیست/وضعیت)، run.spec و setup.iss (بسته‌بندی PyInstaller/Inno)، generate_ssl.py، install.sh/start.sh برای لینوکس و tests/.

وابستگی‌ها (requirements.txt)

  • aiohttp — سرور HTTP ناهمگام
  • bcrypt — هش کردن رمز عبور
  • qrcode — تولید QR
  • psutil — اطلاعات سخت‌افزار
  • platformdirs — مسیرهای کانفیگ بین‌پلتفرمی

شروع کار

# لینوکس
./install.sh && ./start.sh      # یا: python run.py

# ویندوز (از سورس)
python -m venv .venv && .venv\Scripts\activate
pip install -r requirements.txt
python run.py                   # http://<lan-ip>:8000 را باز می‌کند
# ...یا فقط NeganTransfer_Setup.exe آماده را اجرا کنید

# خط فرمان
./transfer-cli.py connect http://192.168.1.5:8000
./transfer-cli.py send photo.jpg
./transfer-cli.py list && ./transfer-cli.py get photo.jpg

چرا برجسته است

Transfer مثل یک محصول عرضه‌شده است نه یک اسکریپت: همگام‌سازی لحظه‌ای با WebSocket، اتصال QR، تنظیم HTTPS برای گوشی، قابلیت نصب PWA، تم‌ها، رابط دوزبانه، CLI، نصب‌کننده ویندوز با قوانین فایروال — و لایه امنیتی جدی (CSRF، محدودیت نرخ، مسیرگذر). این پروژه مهندسی محصول کامل در پایتون را نشان می‌دهد: از طراحی پروتکل تا بسته‌بندی و توزیع.

پروژه‌های بیشتر