From 543bf4eb302316d4459cef9dd54a0434697a7aa5 Mon Sep 17 00:00:00 2001 From: AA Date: Tue, 9 Jan 2024 15:53:43 +0330 Subject: [PATCH] Farsi Docs updated --- docs/Build_Core_fa.md | 32 ++++++++++++ docs/Build_Linux_fa.md | 2 +- docs/Build_Windows_fa.md | 65 ++++++++++++++++++++++++ docs/HookJS.md | 26 +++++----- docs/HookJS_fa.md | 106 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 217 insertions(+), 14 deletions(-) create mode 100644 docs/Build_Core_fa.md create mode 100644 docs/Build_Windows_fa.md create mode 100644 docs/HookJS_fa.md diff --git a/docs/Build_Core_fa.md b/docs/Build_Core_fa.md new file mode 100644 index 0000000..a5b1e33 --- /dev/null +++ b/docs/Build_Core_fa.md @@ -0,0 +1,32 @@ +## ساخت nekoray_core و nekobox_core + +### ساختار دایرکتوری + +``` + | nekoray + | go/cmd/* + | Xray-core + | sing-box-extra + | sing-box + | ...... +``` + +### ساخت معمولی + +1. `bash libs/get_source.sh `(دریافت خودکار ساختار دایرکتوری، خودکار checkout commit) +2. `GOOS=windows GOARCH=amd64 bash libs/build_go.sh` + +برای مشاهده GOOS و GOARCH های پشتیبانی شده به `libs/build_go.sh` مراجعه کنید. + +در ساخت غیررسمی، نیازی به کامپایل `updater` و `launcher` نیست. + +### تگ‌های sing-box + +برای مشاهده تگ‌های استفاده شده به `libs/build_go.sh` مراجعه کنید. + + + + + + + diff --git a/docs/Build_Linux_fa.md b/docs/Build_Linux_fa.md index 9dfda30..26464f0 100644 --- a/docs/Build_Linux_fa.md +++ b/docs/Build_Linux_fa.md @@ -71,4 +71,4 @@ ninja پس از کامپایل، فایل `nekoray` به دست می‌آید. ### کامپایل بخش Go -لطفاً به [Build_Core.md](./Build_Core.md) مراجعه کنید. +لطفاً به [Build_Core_fa.md](./Build_Core_fa.md) مراجعه کنید. diff --git a/docs/Build_Windows_fa.md b/docs/Build_Windows_fa.md new file mode 100644 index 0000000..a315b30 --- /dev/null +++ b/docs/Build_Windows_fa.md @@ -0,0 +1,65 @@ +کامپایل Nekoray در ویندوز + +### git clone + +``` +git clone https://github.com/MatsuriDayo/nekoray.git --recursive +``` + +### نصب Visual Studio + +با نصب از وب سایت رسمی مایکروسافت، می توانید از نسخه های 2019 و 2022 استفاده کنید و محیط توسعه ++Win32 C را نصب کنید. + +پس از نصب، می‌توانید `x64 Native Tools Command Prompt` را در منوی «شروع» پیدا کنید. + +دستورات زیر این مقاله همه در این cmd اجرا می شوند. `cmake‍‍‍` `ninja` و ابزارهای دیگر را می توان با VS استفاده کرد. + +### دانلود Qt SDK + +نسخه ای که در حال حاضر توسط Windows Release استفاده می شود Qt 6.5.x است. + +پس از دانلود و خارج کردن از حالت ظش، پوشه bin را به environment variable اضافه کنید. + +#### بسته Qt مورد استفاده برای کامپایل نسخه (MSVC2019 x86_64) را دانلود کنید + +https://github.com/MatsuriDayo/nekoray_qt_runtime/releases/download/20220503/Qt6.5.0-Windows-x86_64-VS2022-17.5.5-20230507.7z + +#### Official signed version of Qt 5.15.2 (optional, known memory leak bugs) + +پکیج های `qtbase` `qtsvg` `qttools` را از اینجا دانلود کنید و آن را در همان دایرکتوری استخراج کنید. + +https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5152/qt.qt5.5152.win64_msvc2019_64/ + +### کامپایل جزئی ++c + +#### وابستگی های مورد نیاز ++C/C را کامپایل و نصب کنید + +(You may have to hang the ladder for this step) + +```shell +bash ./libs/build_deps_all.sh +``` + +در حال حاضر فقط اسکریپت های bash وجود دارد، بدون پردازش دسته ای یا پاورشل، اگر ویندوز همراه bash نیست، توصیه می شود خودتان آن را نصب کنید. + +جزئیاتی مانند پارامترهای CMake مشابه لینوکس است. اگر سوالی دارید، لطفاً به داکیومنت [Build_Linux_fa.md](./Build_Linux_fa.md) مراجعه کنید. + +#### کامپایل کد اصلی + +لطفاً دستورات را با موقعیت QT Sdk خود جایگزین کنید. + +```shell +mkdir build +cd build +cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=D:/path/to/qt/5.15.2/msvc2019_64 .. +ninja +``` + +بعد از اتمام کامپایل، فایل `nekoray.exe` را دریافت خواهید کرد. + +سپس با اجرای دستور `windeployqt nekoray.exe`، فایل‌های مورد نیاز مانند DLL به صورت خودکار در دایرکتوری فعلی کپی می‌شوند. + + +### بخش کامپایل Go + +لطفاً به [Build_Core_fa.md](./Build_Core_fa.md) مراجعه کنید. diff --git a/docs/HookJS.md b/docs/HookJS.md index dbc2301..7f82c1e 100644 --- a/docs/HookJS.md +++ b/docs/HookJS.md @@ -4,22 +4,22 @@ 1. 打开 `基本设置 - 安全 - 启用 hook.js 功能` 2. js 代码请放置于 `config/hook.nekoray.js` 或 `config/hook.nekobox.js` -## 技术信息 +## Technical Information -* JS Engine: QuickJS ES2020 -* 提供的接口:如下面代码所示 +* JS engine: QuickJS ES2020. +* Provided interfaces: as shown in the following code -## 示例代码 (typescript) +## کد نمونه (typescript) ```ts const globalAny: any = globalThis -// 目前提供的方法 +// روش‌های ارائه‌شده در حال حاضر interface nekoray_in { log(...a: any): void } -// 目前提供的 hook 点 +// نقاط hook ارائه‌شده در حال حاضر interface nekoray_hook { hook_core_config(config: string): string hook_tun_config(config: string): string @@ -42,12 +42,12 @@ class my_hook implements nekoray_hook { } hook_tun_config(config: string): string { - return config // 返回输入,表示不修改 + return config // بازگشت ورودی، نشان دهنده عدم تغییر } hook_tun_script(script: string): string { - console.log("Script") // 输出到 stdout - this.nekoray.log("Script:", script) // 输出到日志 + console.log("Script") // خروجی به stdout + this.nekoray.log("Script:", script) // خروجی به لاگ return script } @@ -65,7 +65,7 @@ class my_hook implements nekoray_hook { globalAny.hook = new my_hook ``` -## 示例代码 (javascript) +## کد نمونه (javascript) ```js var globalAny = globalThis; @@ -84,11 +84,11 @@ var my_hook = /** @class */ (function () { return JSON.stringify(json); }; my_hook.prototype.hook_tun_config = function (config) { - return config; // 返回输入,表示不修改 + return config; // بازگشت ورودی، نشان دهنده عدم تغییر }; my_hook.prototype.hook_tun_script = function (script) { - console.log("Script"); // 输出到 stdout - this.nekoray.log("Script:", script); // 输出到日志 + console.log("Script"); // خروجی به stdout + this.nekoray.log("Script:", script); // خروجی به لاگ return script; }; my_hook.prototype.hook_import = function (content) { diff --git a/docs/HookJS_fa.md b/docs/HookJS_fa.md new file mode 100644 index 0000000..ae15308 --- /dev/null +++ b/docs/HookJS_fa.md @@ -0,0 +1,106 @@ +# استفاده از فایل hook.js +## فعالسازی + +1. `Basic Settings - Security - Enable hook.js function` را روشن کنید +2. کد JS را در `config/hook.nekoray.js` یا `config/hook.nekobox.js` قرار دهید. + +## 技术信息 + +* JS Engine: QuickJS ES2020 +* 提供的接口:如下面代码所示 + +## 示例代码 (typescript) + +```ts +const globalAny: any = globalThis + +// 目前提供的方法 +interface nekoray_in { + log(...a: any): void +} + +// 目前提供的 hook 点 +interface nekoray_hook { + hook_core_config(config: string): string + hook_tun_config(config: string): string + hook_tun_script(script: string): string + hook_import(content: string): string +} + +class my_hook implements nekoray_hook { + private nekoray = globalAny.nekoray as nekoray_in + + hook_core_config(config: string): string { + var json = JSON.parse(config) + var my_rule = { + "geosite": "cn", + "server": "dns-direct", + "disable_cache": true + } + json["dns"]["rules"].push(my_rule) + return JSON.stringify(json) + } + + hook_tun_config(config: string): string { + return config // 返回输入,表示不修改 + } + + hook_tun_script(script: string): string { + console.log("Script") // 输出到 stdout + this.nekoray.log("Script:", script) // 输出到日志 + return script + } + + hook_import(content: string): string { + var newContent: Array = [] + content.split("\n").forEach((line: any) => { + if (line.startsWith("vmess://")) { + newContent.push(line) + } + }) + return newContent.join("\n") + } +} + +globalAny.hook = new my_hook +``` + +## 示例代码 (javascript) + +```js +var globalAny = globalThis; +var my_hook = /** @class */ (function () { + function my_hook() { + this.nekoray = globalAny.nekoray; + } + my_hook.prototype.hook_core_config = function (config) { + var json = JSON.parse(config); + var my_rule = { + "geosite": "cn", + "server": "dns-direct", + "disable_cache": true + }; + json["dns"]["rules"].push(my_rule); + return JSON.stringify(json); + }; + my_hook.prototype.hook_tun_config = function (config) { + return config; // 返回输入,表示不修改 + }; + my_hook.prototype.hook_tun_script = function (script) { + console.log("Script"); // 输出到 stdout + this.nekoray.log("Script:", script); // 输出到日志 + return script; + }; + my_hook.prototype.hook_import = function (content) { + var newContent = []; + content.split("\n").forEach(function (line) { + if (line.startsWith("vmess://")) { + newContent.push(line); + } + }); + return newContent.join("\n"); + }; + return my_hook; +}()); +globalAny.hook = new my_hook; +```