مرحبًا بك في مستودع التعليمات البرمجية المصدر لتطبيق عميل Mullvad VPN. هذا هو برنامج عميل VPN لخدمة Mullvad VPN. لمزيد من المعلومات حول الخدمة، يرجى زيارة موقعنا على الإنترنت، mullvad.net (يمكن الوصول إليه أيضًا عبر Tor على خدمة البصل لدينا).
يحتوي هذا المستودع على جميع التعليمات البرمجية المصدر لإصدارات سطح المكتب والجوال من التطبيق. بالنسبة لسطح المكتب، يتضمن ذلك خدمة النظام/البرنامج الخفي ( mullvad-daemon
)، وواجهة مستخدم رسومية (GUI) وواجهة سطر الأوامر (CLI). يستخدم تطبيق Android نفس خدمة نظام الدعم للنفق والأمان ولكن لديه واجهة أمامية مخصصة في android/. يتكون نظام iOS من تطبيق مستقل تمامًا موجود في ios/.
هناك إصدارات مُصممة وموقعة لأنظمة التشغيل macOS وWindows وLinux وAndroid متاحة على موقعنا الإلكتروني وعلى Github. ويتوفر تطبيق Android أيضًا على Google Play وF-Droid وإصدار iOS على App Store.
يمكنك العثور على مفاتيح توقيع التعليمات البرمجية الخاصة بنا بالإضافة إلى تعليمات حول كيفية التحقق من التنزيل بشكل مشفر على صفحة Mullvad مفتوحة المصدر.
هذه هي أنظمة التشغيل وإصداراتها التي يدعمها التطبيق رسميًا. قد يعمل هذا على العديد من الإصدارات الأخرى، لكننا لا نختبرها ولا يمكننا ضمان الجودة أو الأمان.
نظام التشغيل/المنصة | الإصدارات المدعومة |
---|---|
ويندوز | 10 و 11 |
ماك | أحدث ثلاثة إصدارات رئيسية |
لينكس (أوبونتو) | أحدث إصدارين من LTS وأحدث الإصدارات غير LTS |
لينكس (فيدورا) | الإصدارات التي ليست EOL بعد |
لينكس (ديبيان) | 11 وأحدث |
أندرويد | 8 وأحدث |
دائرة الرقابة الداخلية | 15.0 وأحدث |
في نظام التشغيل Linux، نقوم بالاختبار باستخدام بيئة سطح المكتب Gnome. ينبغي أن يعمل التطبيق، وربما يعمل، في تطبيقات DE أخرى، ولكننا لا نختبرها بانتظام.
فيما يلي جدول يحتوي على ميزات التطبيق عبر الأنظمة الأساسية. يهدف هذا إلى عكس الحالة الحالية لأحدث التعليمات البرمجية في git، وليس بالضرورة أي إصدار موجود.
ويندوز | لينكس | ماك | أندرويد | دائرة الرقابة الداخلية | |
---|---|---|---|---|---|
المسنجر | ✓ | ✓ | ✓ | ||
WireGuard | ✓ | ✓ | ✓ | ✓ | ✓ |
الأنفاق المقاومة للكم | ✓ | ✓ | ✓ | ✓ | ✓ |
ديتا | ✓ | ✓ | ✓ | ✓ | ✓ |
WireGuard متعدد القفزات | ✓ | ✓ | ✓ | ✓ | |
WireGuard عبر TCP | ✓ | ✓ | ✓ | ✓ | ✓ |
WireGuard على Shadowsocks | ✓ | ✓ | ✓ | ✓ | |
OpenVPN عبر Shadowsocks | ✓ | ✓ | ✓ | ||
تقسيم الأنفاق | ✓ | ✓ | ✓ | ✓ | |
خادم DNS المخصص | ✓ | ✓ | ✓ | ✓ | ✓ |
أدوات حظر المحتوى (الإعلانات وغيرها) | ✓ | ✓ | ✓ | ✓ | ✓ |
الوصول إلى الشبكة المحلية الاختيارية | ✓ | ✓ | ✓ | ✓ | ✓* |
مدققة خارجيا | ✓ | ✓ | ✓ | ✓ | ✓ |
* يمكن الوصول دائمًا إلى الشبكة المحلية على نظام iOS مع التنفيذ الحالي
هذا التطبيق هو عميل VPN يحافظ على الخصوصية. على هذا النحو، فإنه يبذل قصارى جهده لوقف تسرب حركة المرور. وبشكل أساسي، يتم تعيين كافة الإعدادات افتراضيًا على الخيار الأكثر أمانًا/خاصًا. يجب على المستخدم السماح بشكل صريح بقواعد أكثر فضفاضة إذا رغب في ذلك. راجع مستند الأمان المخصص للحصول على تفاصيل حول ما يحظره التطبيق وما يسمح به، بالإضافة إلى كيفية القيام بذلك.
يحتوي هذا المستودع على الوحدات الفرعية اللازمة لبناء التطبيق. ومع ذلك، تحتوي بعض هذه الوحدات الفرعية أيضًا على وحدات فرعية إضافية كبيرة جدًا وليست ضرورية لإنشاء التطبيق. لذلك، ما لم تكن تريد الكود المصدري لـ OpenSSL وOpenVPN وبعض المشاريع الأخرى، فيجب عليك تجنب النسخ المتكرر للمستودع. بدلاً من ذلك، قم باستنساخ المستودع بشكل طبيعي ثم احصل على مستوى واحد من الوحدات الفرعية:
git clone https://github.com/mullvad/mullvadvpn-app.git
cd mullvadvpn-app
git submodule update --init
على أنظمة Android وLinux وmacOS، تريد أيضًا التحقق من الوحدة الفرعية wireguard-go بشكل متكرر:
git submodule update --init --recursive --depth=1 wireguard-go-rs
يمكن العثور على مزيد من التفاصيل حول سبب ضرورة ذلك في صندوق wireguard-go-rs.
نقوم بالتوقيع على كل التزام في الفرع main
بالإضافة إلى علامات الإصدار الخاصة بنا. إذا كنت ترغب في التحقق من عملية الدفع، يمكنك العثور على مفاتيح المطورين الخاصة بنا على صفحة Mullvad مفتوحة المصدر.
يحتوي هذا المستودع على وحدة فرعية git في dist-assets/binaries
. تحتوي هذه الوحدة الفرعية على ثنائيات وبناء نصوص برمجية لرموز الطرف الثالث التي نحتاجها لتجميعها مع التطبيق. مثل OpenVPN وWintun وما إلى ذلك.
تتوافق هذه الوحدة الفرعية مع نفس معايير السلامة/الأمان الموجودة في هذا المستودع. يجب التوقيع على كل التزام دمج. ويجب أن يشير هذا المستودع الرئيسي فقط إلى التزام دمج موقّع للوحدة الفرعية للثنائيات.
راجع الملف التمهيدي الخاص بالوحدة الفرعية للثنائيات للحصول على مزيد من التفاصيل حول هذا المستودع.
راجع تعليمات الإنشاء للمساعدة في إنشاء التطبيق على الأنظمة الأساسية لسطح المكتب.
لإنشاء تطبيق Android، راجع الإرشادات الخاصة بنظام Android.
لإنشاء تطبيق iOS، راجع الإرشادات الخاصة بنظام iOS.
راجع هذا للحصول على إرشادات حول كيفية إنشاء إصدار جديد.
TALPID_FIREWALL_DEBUG
- يساعد في تصحيح أخطاء جدار الحماية. يقوم بأشياء مختلفة اعتمادًا على النظام الأساسي:
"1"
لإضافة عدادات الحزم إلى كافة قواعد جدار الحماية.pflog0
."all"
لإضافة التسجيل إلى كافة القواعد."pass"
لإضافة التسجيل إلى القواعد التي تسمح بالحزم."drop"
لإضافة التسجيل إلى قواعد حظر الحزم. TALPID_FIREWALL_DONT_SET_SRC_VALID_MARK
- يفرض على البرنامج الخفي عدم تعيين تكوين src_valid_mark
على Linux. تم تعيين خيار تكوين kernel لأن تصفية المسار العكسي الصارمة قد تمنع حركة مرور الترحيل من الوصول إلى البرنامج الخفي. إذا تم تعيين rp_filter
على 1
على الواجهة التي ستستقبل حركة مرور الترحيل، ولم يتم تعيين src_valid_mark
على 1
، فلن يتمكن البرنامج الخفي من استقبال حركة مرور الترحيل.
TALPID_DNS_MODULE
- يسمح بتغيير الطريقة التي سيتم استخدامها لتكوين DNS. افتراضيًا، يتم اكتشاف ذلك تلقائيًا، ولكن يمكنك ضبطه على أحد الخيارات أدناه لاختيار طريقة معينة.
لينكس
"static-file"
: قم بتغيير الملف /etc/resolv.conf
مباشرة"resolvconf"
: استخدم برنامج resolvconf
"systemd"
: استخدم خدمة systemd resolved
من خلال DBus"network-manager"
: استخدم خدمة NetworkManager
من خلال DBusويندوز
iphlpapi
: استخدم واجهة برمجة تطبيقات مساعد IPnetsh
: استخدم برنامج netsh
tcpip
: قم بتعيين معلمات TCP/IP في التسجيل TALPID_FORCE_USERSPACE_WIREGUARD
- يفرض على البرنامج الخفي استخدام تطبيق مساحة المستخدم لـ WireGuard على Linux.
TALPID_DISABLE_OFFLINE_MONITOR
- يفرض على البرنامج الخفي أن يفترض دائمًا أن المضيف متصل بالإنترنت.
TALPID_NET_CLS_MOUNT_DIR
- في Linux، يفرض البرنامج الخفي تثبيت وحدة التحكم net_cls
في الدليل المحدد إذا لم يتم تثبيته بالفعل.
MULLVAD_MANAGEMENT_SOCKET_GROUP
- في Linux وmacOS، يؤدي هذا إلى تقييد الوصول إلى مقبس UDS لواجهة الإدارة للمستخدمين في المجموعة المحددة. وهذا يعني أن المستخدمين في تلك المجموعة فقط هم من يمكنهم استخدام واجهة سطر الأوامر (CLI) وواجهة المستخدم الرسومية (GUI). بشكل افتراضي، كل شخص لديه حق الوصول إلى المقبس.
MULLVAD_API_HOST
- قم بتعيين اسم المضيف لاستخدامه في طلبات API. على سبيل المثال api.mullvad.net
.
MULLVAD_API_ADDR
- قم بتعيين عنوان IP والمنفذ لاستخدامه في طلبات API. على سبيل المثال 10.10.1.2:443
.
MULLVAD_API_DISABLE_TLS
- استخدم HTTP العادي لطلبات واجهة برمجة التطبيقات.
MULLVAD_CONNCHECK_HOST
- قم بتعيين اسم المضيف لاستخدامه في طلبات التحقق من الاتصال. على سبيل المثال am.i.mullvad.net
.
استخدم setx
من قذيفة مرتفعة:
setx TALPID_DISABLE_OFFLINE 1 /m
لكي يصبح التغيير ساري المفعول، أعد تشغيل البرنامج الخفي:
sc.exe stop mullvadvpn
sc.exe start mullvadvpn
تحرير ملف وحدة systemd عبر systemctl edit mullvad-daemon.service
:
[Service]
Environment = " TALPID_DISABLE_OFFLINE_MONITOR=1 "
لكي يصبح التغيير ساري المفعول، أعد تشغيل البرنامج الخفي:
sudo systemctl restart mullvad-daemon
استخدم launchctl
:
sudo launchctl setenv TALPID_DISABLE_OFFLINE_MONITOR 1
لكي يصبح التغيير ساري المفعول، أعد تشغيل البرنامج الخفي:
launchctl unload -w /Library/LaunchDaemons/net.mullvad.daemon.plist
launchctl load -w /Library/LaunchDaemons/net.mullvad.daemon.plist
MULLVAD_PATH
- يسمح بتغيير المسار إلى المجلد باستخدام أداة mullvad-problem-report
عند التشغيل في وضع التطوير. الإعدادات الافتراضية هي: <repo>/target/debug/
.MULLVAD_DISABLE_UPDATE_NOTIFICATION
- إذا تم التعيين على 1
، فسيتم تعطيل إشعار واجهة المستخدم الرسومية عند توفر تحديث. $ npm run develop
- تطوير التطبيق مع تمكين التحديث المباشر$ npm run lint
- رمز الوبر$ npm run pack:<OS>
- قم بإعداد التطبيق للتوزيع على نظامك الأساسي. حيث يمكن أن يكون <OS>
linux
أو mac
أو win
$ npm test
- تشغيل الاختبارات تختلف متطلبات عرض أيقونة الدرج بين بيئات سطح المكتب المختلفة. إذا لم تظهر أيقونة الدرج، فحاول تثبيت إحدى هذه الحزم:
libappindicator3-1
libappindicator1
libappindicator
إذا كنت تستخدم جنوم، فحاول تثبيت أحد امتدادات GNOME Shell التالية:
TopIconsFix
TopIcons Plus
electron-builder
يتم تنفيذ البرنامج الخفي في Rust ويتم تنفيذه في عدة صناديق. الصندوق الرئيسي، أو المستوى الأعلى، الذي يبني الثنائي الخفي النهائي هو mullvad-daemon
والذي يعتمد بعد ذلك على الآخرين.
بشكل عام، يمكن للمرء أن ينظر إلى البرنامج الخفي على أنه منقسم إلى قسمين، الصناديق التي تبدأ بـ talpid
والصناديق التي تبدأ بـ mullvad
. من المفترض أن تكون صناديق talpid
غير مرتبطة تمامًا بأشياء Mullvad المحددة. لا يُسمح لصندوق talpid
بمعرفة أي شيء عن واجهة برمجة التطبيقات (API) التي من خلالها يقوم البرنامج الخفي بجلب تفاصيل حساب Mullvad أو تنزيل قوائم خادم VPN على سبيل المثال. يجب أن يُنظر إلى مكونات talpid
على أنها عميل VPN عام يتمتع بميزات إضافية للحفاظ على الخصوصية وعدم الكشف عن هويته. من ناحية أخرى، تستخدم الصناديق التي تحمل اسم mullvad
مكونات talpid
لإنشاء عميل VPN آمن ومحدد لـ Mullvad.
شرح لبعض الكلمات الشائعة المستخدمة في الوثائق والتعليمات البرمجية الموجودة في هذا المستودع.
mullvad-daemon
Rust. يعرض هذا البرنامج بدون رأس واجهة إدارة يمكن استخدامها للتحكم في البرنامج الخفيmullvad
وهو واجهة أمامية تعتمد على المحطة الطرفية لتطبيق Mullvad VPN. قائمة بمسارات الملفات المكتوبة والقراءة منها بواسطة المكونات المختلفة لتطبيق Mullvad VPN
على نظام التشغيل Windows، عندما يتم تشغيل عملية ما كخدمة نظام، فإن المتغير %LOCALAPPDATA%
يتوسع إلى C:Windowssystem32configsystemprofileAppDataLocal
.
يتم تعريف كافة مسارات الدليل وجلبها من صندوق mullvad-paths
.
يمكن تغيير دليل الإعدادات عن طريق تعيين متغير البيئة MULLVAD_SETTINGS_DIR
.
منصة | طريق |
---|---|
لينكس | /etc/mullvad-vpn/ |
ماك | /etc/mullvad-vpn/ |
ويندوز | %LOCALAPPDATA%Mullvad VPN |
أندرويد | getFilesDir() |
يمكن تغيير دليل السجل عن طريق تعيين متغير البيئة MULLVAD_LOG_DIR
.
منصة | طريق |
---|---|
لينكس | /var/log/mullvad-vpn/ + systemd |
ماك | /var/log/mullvad-vpn/ |
ويندوز | C:ProgramDataMullvad VPN |
أندرويد | getFilesDir() |
يمكن تغيير دليل ذاكرة التخزين المؤقت عن طريق تعيين متغير البيئة MULLVAD_CACHE_DIR
.
منصة | طريق |
---|---|
لينكس | /var/cache/mullvad-vpn/ |
ماك | /Library/Caches/mullvad-vpn/ |
ويندوز | C:ProgramDataMullvad VPNcache |
أندرويد | getCacheDir() |
يمكن تغيير المسار الكامل لملف عنوان RPC عن طريق تعيين متغير البيئة MULLVAD_RPC_SOCKET_PATH
.
منصة | طريق |
---|---|
لينكس | /var/run/mullvad-vpn |
ماك | /var/run/mullvad-vpn |
ويندوز | //./pipe/Mullvad VPN |
أندرويد | getNoBackupFilesDir() |
تحتوي واجهة المستخدم الرسومية على ملف إعدادات محدد يتم تكوينه لكل مستخدم. تم تعيين المسار في ملف gui/packages/desktop/main/gui-settings.ts
.
منصة | طريق |
---|---|
لينكس | $XDG_CONFIG_HOME/Mullvad VPN/gui_settings.json |
ماك | ~/Library/Application Support/Mullvad VPN/gui_settings.json |
ويندوز | %LOCALAPPDATA%Mullvad VPNgui_settings.json |
أندرويد | موجود في logcat الخاص بنظام Android |
راجع الملف التمهيدي للرسومات للحصول على معلومات حول الرموز.
يمكنك العثور هنا على تعليمات حول كيفية التعامل مع اللغات والترجمات.
للحصول على تعليمات خاصة بتطبيق Android، راجع هنا.
استخدمت شركة Mullvad شركات اختبار خارجية لإجراء عمليات تدقيق أمنية لتطبيق VPN هذا. اقرأ المزيد عنها في الملف التمهيدي لعمليات التدقيق.
حقوق الطبع والنشر (C) لعام 2024 محفوظة لشركة Mullvad VPN AB
هذا البرنامج هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة جنو العامة كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الترخيص، أو (حسب اختيارك) أي إصدار لاحق.
للحصول على اتفاقية الترخيص الكاملة، راجع ملف LICENSE.md
الكود المصدري لتطبيق iOS مرخص بـ GPL-3 مثل كل شيء آخر في هذا المستودع. لكن التطبيق الموزع على Apple App Store ليس مرخصًا من GPL، فهو يقع ضمن اتفاقية ترخيص المستخدم النهائي لـ Apple App Store.