🌐 DNS Switcher
سوییچر سریع و مدرن DNS برای ویندوز
مشاهده ریپازیتوری dns-switcher-tool در گیتهاب
برای ورود به صفحه این دوره، مشاهده سرفصلها یا ثبتنام کلیک کنید
🌐 DNS Switcher
سوییچر سریع و مدرن DNS برای ویندوز — با پروفایلهای آماده، مرتبسازی کشیدنی
(Drag & Drop)، رنگ اختصاصی برای هر پروفایل و تنظیمات ظاهری کامل.
ساختهشده با Rust + Tauri 2 — یک فایل اجرایی سبک، بدون وابستگی سنگین.

✨ ویژگیها
- 🚀 اعمال یککلیکی DNS روی چند کارت شبکه بهصورت همزمان
- 🗂️ پروفایلها — عمومی، ایران، گیمینگ، برنامهنویسی و پروفایلهای دلخواه
- 🎨 رنگ اختصاصی هر پروفایل در کنار نام آن
- ↔️ مرتبسازی دلخواه لیست DNS با کشیدن ردیفها
- 📥 ورود از فایلهای
.bat— پارس خودکار دستورهایnetsh - 🔍 جستجوی زنده در لیست ذخیرهشده
- 🌙 ظاهر تاریک/روشن با رنگ اصلی، رنگ متن، اندازه و فونت قابل تغییر
- 🔤 فونت وزیرمتن و رابط کاربری کاملاً فارسی و راستبهچپ
- 🧹 پاکسازی DNS و Flush DNS با یک کلیک
- 🖥️ نمایش کارتهای شبکهٔ مخفی و مجازی هم در لیست
- 🛡️ بدون نیاز به ادمین برای نصب — فقط لحظهٔ اعمال DNS یک پنجرهٔ UAC میآید
- 📦 فقط یک فایل اجرایی ~۳ مگابایتی بدون هیچ نصبی در رجیستری (نسخهٔ پرتابل)
⬇️ دانلود و نصب
آخرین نسخه از بخش Releases همین مخزن یا از سایت mahdi-hp.ir قابل دریافت است.
| فایل | توضیح | حجم |
|---|---|---|
DNS-Switcher-Setup-1.1.0.exe |
نصبکنندهٔ استاندارد ویندوز (NSIS) — پیشنهادشده | ~۱٫۳ مگابایت |
DNS-Switcher-Portable-1.1.0.exe |
نسخهٔ پرتابل — بدون نصب، فقط اجرا | ~۳ مگابایت |
💡 نسخهٔ پرتابل برای اجرا از روی فلشمموری یا پوشهٔ دلخواه عالی است.
نصبکننده در پوشهٔ کاربر جاری نصب میشود، پس نیازی به دسترسی ادمین ندارد.
🧩 پیشنیاز
- ویندوز ۱۰ یا ۱۱ (۶۴ بیتی)
- Microsoft Edge WebView2 Runtime — روی ویندوزهای بهروز بهصورت پیشفرض موجود است.
(اگر نبود، نصبکننده خودش آن را دریافت میکند.)
🛠️ ساخت از سورس
پیشنیازهای توسعه
| ابزار | نسخه |
|---|---|
| Rust | 1.77 یا بالاتر (x86_64-pc-windows-msvc) |
| MSVC Build Tools + Windows SDK | برای لینک کردن روی ویندوز |
| Node.js | ۱۸ یا بالاتر (فقط برای Tauri CLI و ساخت آیکون) |
| WebView2 Runtime | روی ویندوز ۱۰/۱۱ موجود است |
اجرا در حالت توسعه
npm install
npm run dev # = tauri dev
معادل دستی بدون Node:
cargo run --manifest-path src-tauri/Cargo.toml
ساخت نسخهٔ نهایی (Installer + Portable)
npm run build # = tauri build
خروجیها:
src-tauri/target/release/dns-switcher.exe ← نسخهٔ پرتابل (همین فایل را کپی کنید)
src-tauri/target/release/bundle/nsis/DNS Switcher_1.1.0_x64-setup.exe ← نصبکننده
ℹ️ در Tauri فقط بستههای
nsisوmsiساخته میشوند؛ «پرتابل» همان فایل
خامdns-switcher.exeاست که بدون نصب اجرا میشود.
تستها
npm test # = cargo test --manifest-path src-tauri/Cargo.toml
پوشش تستها: پارس فایل .bat، ساخت لیست پیشفرض (Curated Seed)، مدیریت پروفایلها،
CRUD لیست DNS، مرتبسازی، پاکسازی و ادغام تنظیمات.
ساخت مجدد آیکون
npm run icon # = node make-icon.js
آیکون از روی نشان برند (لوگوی کنار نام برنامه در سایدبار) تولید میشود و در هر دو
مسیر assets/ و src-tauri/icons/ نوشته میشود.
📁 ساختار پروژه
.
├── renderer/ # رابط کاربری (HTML/CSS/JS خالص — بدون فریمورک)
│ ├── index.html # ساختار صفحه (fa / rtl)
│ ├── styles.css # تم، متغیرهای رنگ و انیمیشنها
│ ├── app.js # منطق UI و اتصال به window.api
│ └── fonts/ # فونت وزیرمتن (woff2)
│
├── src-tauri/ # هستهٔ برنامه با Rust
│ ├── src/
│ │ ├── main.rs # نقطهٔ ورود باینری
│ │ ├── lib.rs # راهاندازی Tauri، پلاگینها و ساخت پنجره
│ │ ├── commands/ # دستورهای IPC (DNS / Store / App)
│ │ ├── dns_service/ # اجرای netsh و PowerShell، Elevation، اعتبارسنجی IP
│ │ └── store/ # ذخیرهسازی JSON، پروفایلها، پارس .bat، Seed
│ ├── tests/store_crud.rs # تست یکپارچهسازی لایهٔ ذخیرهسازی
│ ├── capabilities/ # مجوزهای امنیتی Tauri
│ ├── icons/ # آیکونهای اپ (ico/png)
│ ├── tauri-bridge.js # پل سازگاری: window.api → __TAURI__.core.invoke
│ └── tauri.conf.json # پیکربندی Tauri
│
├── assets/ # آیکونهای منبع (ico/png)
├── docs/screenshot.png # تصویر برنامه برای README
├── make-icon.js # سازندهٔ آیکون از روی نشان برند
└── package.json # اسکریپتهای dev / build / test / icon
🧠 معماری
رابط کاربری بدون هیچ تغییری از نسخهٔ قبلی منتقل شده است و صرفاً از طریقwindow.api با هستهٔ Rust حرف میزند. فایل src-tauri/tauri-bridge.js همان
قرارداد قبلی را با invoke تزریق میکند، بنابراین کد renderer/ دستنخورده مانده است.
renderer/app.js → window.api.* → tauri-bridge.js → Rust #[tauri::command]
↓
store/* + dns_service/*
📍 محل ذخیرهٔ دادهها
پس از نصب، دادههای هر کاربر جداگانه ذخیره میشود:
%APPDATA%\DNS Switcher\data\
├── dns-list.json # لیست DNSهای ذخیرهشده
├── profiles.json # پروفایلها و رنگها
└── settings.json # تنظیمات ظاهری
🔐 برنامه هیچ دادهای را به بیرون ارسال نمیکند. همهچیز روی همین سیستم میماند.
🧰 پشتهٔ فناوری
- Rust — منطق برنامه و اجرای دستورهای سیستمی
- Tauri 2 — پوستهٔ دسکتاپ و پل IPC
- HTML / CSS / JavaScript خالص — رابط کاربری، بدون فریمورک
- PowerShell + netsh — کوئری کارتهای شبکه و تغییر DNS
- NSIS — بستهبندی نصبکننده
📄 مجوز
این پروژه تحت مجوز MIT منتشر شده است — جزئیات در فایل LICENSE.
ساختهشده با ❤️ توسط مهدی حیدرپور
