پرش به محتویات

هسته آزادی

هسته آزادی ابزاری متن‌باز است که برای مدیریت و اجرای چندین هسته شبکه (مانند Xray، sing-box یا ماژول‌های آینده) از طریق یک API و CLI سبک طراحی شده است. این ابزار، بستری امن، انعطاف‌پذیر و آسان برای استفاده در عملیات شبکه، اتوماسیون و ادغام داشبورد فراهم می‌کند.

اطلاعات پروژه

  • هسته‌های پشتیبانی شده: hiddify, xray, masque plus
  • زبان برنامه نویسی: Golang
  • این پروژه هنوز در حال توسعه است و نسخه های منتشر شده آزمایشی میباشد.

قابلیت‌ها

  • پشتیبانی از انواع هسته‌ها
  • ارائه api سبک و استریم لاگ
  • پنهان شدن برنامه در system tray
  • تنظیم dns
  • تنظیم proxy

هدف پروژه

هدف پروژه بر آن است که فیلترشکن هایی مبتنی بر وب طراحی شود و بجای نصب در سیستم عامل در مرورگر کاربر اجرا شود و با api هسته آزادی ارتباط برقرار کنند. مزایا این روش این است که هر فیلترشکن نیاز به نصب جداگانه نداشته باشد و بر وب آپلود شود تا هم بروزرسانی ساده‌تر باشد و هم حجم پردازش بر سیستم کاربر کم شود. * خلاصه: ساخت فیلترشکن قابل اجرا در مرورگر کاربر

فهرست

مستندات API

این مستندات تمامی مسیرهای موجود در سرور را توضیح می‌دهد و نحوه استفاده از پارامترهای ورودی (`args`) را برای کاربران شرح می‌دهد. API برای مدیریت سرویس‌های **Hiddify**، **SingBox** و **Xray** طراحی شده است. پورت پیشفرض 8087 است. --- ### نحوه ارسال آرگومان‌ها برای ارسال آرگومان به سرویس‌ها، از query parameter `args` استفاده می‌کنیم. می‌توانید چندین آرگومان را با تکرار پارامتر `args` ارسال کنید:
http://localhost:8087/hiddify/start?args=--help&args=run
> در این مثال آرگومان‌ها به ترتیب `--help` و `run` به هسته Hiddify ارسال می‌شوند. --- ### جدول مسیرها (Endpoints) | مسیر | روش HTTP | توضیحات | مثال استفاده | |------|----------|---------|---------------| | `/hiddify/start` | GET | شروع سرویس Hiddify با آرگومان‌های اختیاری | `http://localhost:8087/hiddify/start?args=--config&args=config.json` | | `/hiddify/stop` | GET | متوقف کردن سرویس Hiddify | `http://localhost:8087/hiddify/stop` | | `/singbox/start` | GET | شروع سرویس SingBox با آرگومان‌های اختیاری | `http://localhost:8087/singbox/start?args=--verbose` | | `/singbox/stop` | GET | متوقف کردن سرویس SingBox | `http://localhost:8087/singbox/stop` | | `/xray/start` | GET | شروع سرویس Xray با آرگومان‌های اختیاری | `http://localhost:8087/xray/start?args=--loglevel&args=debug` | | `/xray/stop` | GET | متوقف کردن سرویس Xray | `http://localhost:8087/xray/stop` | | `/version` | GET | دریافت نسخه جاری برنامه | `http://localhost:8087/version` | | `/kill` | GET | خاموش کردن هسته آزادی (هسته پس از نیم ثانیه متوقف می‌شود) | `http://localhost:8087/kill` | --- ### نکات مهم 1. **ارسال چند آرگومان:** برای ارسال چند آرگومان، هر آرگومان را با پارامتر `args` جداگانه ارسال کنید:
?args=arg1&args=arg2&args=arg3
2. **توقف سرویس‌ها:** مسیرهای `/stop` فقط سرویس مربوطه را متوقف می‌کنند و تاثیری روی دیگر سرویس‌ها ندارند. 3. **خاموش کردن سرور:** فراخوانی مسیر `/kill` باعث توقف کل سرور خواهد شد. استفاده از آن فقط در شرایط ضروری توصیه می‌شود. 4. **نسخه برنامه:** مسیر `/version` برای بررسی نسخه جاری برنامه استفاده می‌شود و هیچ آرگومانی دریافت نمی‌کند. ### نمونه کامل استفاده از API - شروع سرویس Hiddify با آرگومان‌های خاص:
http://localhost:8087/hiddify/start?args=--config&args=http://config.com/raw
- شروع سرویس Xray با حالت Debug:
http://localhost:8087/xray/start?args=--loglevel&args=debug
- بررسی نسخه برنامه:
http://localhost:8087/version
- متوقف کردن سرویس SingBox:
http://localhost:8087/singbox/stop
- خاموش کردن سرور و هسته:
http://localhost:8087/kill
### استفاده از FCORE-WEB می‌توانید از ابزار [FCORE-WEB](https://freedom-guard.github.io/FCORE-WEB-CLI/) برای تست و اجرا API استفاده کنید. **نکات مهم:** - نیازی به نوشتن `http://localhost:8087` نیست. - در بخش **Path** فقط مسیر موردنظر را وارد کنید، مثل `/kill` یا `/version`. - در بخش **Query args** آرگومان‌ها را به شکل زیر وارد کنید:
args=arg1&args=arg2&args=arg3

ماژول‌ها

پروکسی سیستم

این ماژول امکان مدیریت پروکسی‌های سیستم (HTTP، HTTPS و SOCKS5) را از طریق **API ساده با دستورات خطی** فراهم می‌کند و خروجی را **به صورت استریم خط به خط** به کاربر برمی‌گرداند. ### مسیر این ماژول در پروژه Freedom-Guard/Freedom-Core/internal/proxy **فایل‌های اصلی:** - `proxy_handler.go` → شامل `ProxyStreamHandler` - `sysproxy.go`, `sysproxy_windows.go`, `sysproxy_unix.go` → شامل پیاده‌سازی‌های سیستم‌عامل‌های مختلف برای مدیریت پروکسی --- ### قابلیت‌ها - تنظیم پروکسی HTTP، HTTPS و SOCKS5 - مشاهده وضعیت فعلی پروکسی - غیرفعال کردن پروکسی‌ها - امکان تغییر تنها یک پروکسی بدون دستکاری بقیه - خروجی به صورت **خط به خط و استریم** --- ### متد HTTP - **GET** - **Query Parameter:** `args` #### مثال‌ها: 1. **تنظیم HTTP پروکسی با پورت مشخص**
GET /proxy/start?args=set:HTTP=127.0.0.1:8080,Enable=true
2. **تنظیم SOCKS5 پروکسی**
GET /proxy/start?args=set:SOCKS=127.0.0.1:1080,Enable=true
3. **خواندن وضعیت پروکسی**
GET /proxy/start?args=get
4. **غیرفعال کردن پروکسی**
GET /proxy/start?args=clear
--- ### پارامترهای دستور `set` - `HTTP`, `HTTPS`, `SOCKS` → host و port با فرمت `host:port` - `Enable` → فعال/غیرفعال کردن پروکسی (`true` یا `false`) > می‌توان فقط یکی از پروکسی‌ها را تنظیم کرد. --- ### خروجی - **خط به خط استریم می‌شود** - پیام `"done"` پایان استریم را مشخص می‌کند - در صورت قطع شدن عملیات، پیام `"aborted"` ارسال می‌شود **نمونه خروجی:**
proxy set: {HTTPHost:127.0.0.1 HTTPPort:8080 HTTPSHost: HTTPSPort:0 SOCKSHost: SOCKSPort:0 Enable\:true}
done
--- ### نکات مهم 1. دستورات بدون نیاز به JSON یا body و فقط از query string گرفته می‌شوند. 2. فقط یک پروکسی (HTTP، HTTPS یا SOCKS) می‌تواند در یک دستور تنظیم شود. 3. برای اعمال تغییرات در سطح سیستم ممکن است نیاز به دسترسی ادمین/روت باشد. 4. خروجی استریم به کلاینت امکان مشاهده لحظه‌ای تغییرات را می‌دهد.