توضیحات
برای پیادهسازی یک کلاینت VPN از API chrome.vpnProvider استفاده کنید.
مجوزها
vpnProviderدر دسترس بودن
کاربرد
استفاده معمول از vpnProvider به شرح زیر است:
با استفاده از متد
createConfigپیکربندیهای VPN ایجاد کنید. پیکربندی VPN یک ورودی دائمی است که در رابط کاربری بومی ChromeOS به کاربر نشان داده میشود. کاربر میتواند پیکربندی VPN را از یک لیست انتخاب کرده و به آن متصل شود یا از آن جدا شود.به رویدادهای
onPlatformMessage،onPacketReceivedوonConfigRemovedشنونده اضافه کنید.وقتی کاربر به پیکربندی VPN متصل میشود،
onPlatformMessageبا پیام"connected"دریافت میشود. ما به دوره زمانی بین پیامهای"connected"و"disconnected"به عنوان یک جلسه VPN اشاره میکنیم. در این دوره زمانی، به افزونهای که پیام را دریافت میکند، گفته میشود که صاحب جلسه VPN است.اتصال به سرور VPN را آغاز کنید و کلاینت VPN را اجرا کنید.
پارامترهای اتصال را با استفاده از
setParametersتنظیم کنید.با استفاده از
notifyConnectionStateChangedوضعیت اتصال را به عنوان"connected"اعلام کنید.وقتی مراحل بالا بدون خطا انجام شوند، یک تونل مجازی به پشته شبکه ChromeOS ایجاد میشود. بستههای IP میتوانند از طریق تونل با استفاده
sendPacketارسال شوند و هر بستهای که از دستگاه ChromeOS سرچشمه میگیرد با استفاده از رویدادonPacketReceivedدریافت میشود.وقتی کاربر از پیکربندی VPN جدا میشود،
onPlatformMessageبا پیام"disconnected"اجرا میشود.If the VPN configuration is no longer necessary, it can be destroyed using
destroyConfig.
انواع
Parameters
خواص
- آدرس
رشته
آدرس IP برای رابط VPN در نماد CIDR. IPv4 در حال حاضر تنها حالت پشتیبانی شده است.
- آدرس پخش
رشته اختیاری
آدرس پخش برای رابط VPN. (پیشفرض: از آدرس IP و ماسک استنباط میشود)
- سرورهای DNS
رشته[]
فهرستی از IPهای مربوط به سرورهای DNS.
- جستجوی دامنه
رشته[] اختیاری
فهرستی از دامنههای جستجو. (پیشفرض: بدون دامنه جستجو)
- فهرست استثنائات
رشته[]
ترافیک شبکه به لیست بلوکهای IP در نمادگذاری CIDR را از تونل حذف کنید. این میتواند برای دور زدن ترافیک به و از سرور VPN استفاده شود. هنگامی که بسیاری از قوانین با یک مقصد مطابقت دارند، قانونی که طولانیترین پیشوند تطبیق را دارد برنده میشود. ورودیهایی که با همان بلوک CIDR مطابقت دارند به عنوان تکراری در نظر گرفته میشوند. چنین تکراریهایی در لیست جمعآوریشده (exclusionList + inclusionList) حذف میشوند و ورودی تکراری دقیقی که حذف خواهد شد، تعریف نشده است.
- فهرست شمول
رشته[]
ترافیک شبکه را به لیست بلوکهای IP در نمادگذاری CIDR به تونل اضافه کنید. از این پارامتر میتوان برای راهاندازی یک تونل تقسیمشده استفاده کرد. بهطور پیشفرض هیچ ترافیکی به تونل هدایت نمیشود. اضافه کردن ورودی "0.0.0.0/0" به این لیست باعث میشود تمام ترافیک کاربر به تونل هدایت شود. وقتی چندین قانون با یک مقصد مطابقت دارند، قانونی که طولانیترین پیشوند منطبق را دارد، برنده میشود. ورودیهایی که با یک بلوک CIDR مشابه مطابقت دارند، بهعنوان تکراری در نظر گرفته میشوند. چنین تکراریهایی در لیست جمعآوریشده (exclusionList + inclusionList) حذف میشوند و ورودی تکراری دقیقی که حذف خواهد شد، تعریف نشده است.
- امتییو
رشته اختیاری
تنظیم MTU برای رابط VPN. (پیشفرض: ۱۵۰۰ بایت)
- دوباره وصل شدن
رشته اختیاری
کروم ۵۱+اینکه آیا افزونه VPN اتصال مجدد خودکار را پیادهسازی میکند یا خیر.
اگر مقدار آن درست باشد، پیامهای پلتفرم
linkDown،linkUp،linkChanged،suspendوresumeبرای اعلام رویدادهای مربوطه استفاده میشوند. اگر مقدار آن نادرست باشد، در صورت تغییر توپولوژی شبکه، سیستم به اجبار VPN را قطع میکند و کاربر باید به صورت دستی دوباره متصل شود. (پیشفرض: نادرست)این ویژگی در کروم ۵۱ جدید است؛ در نسخههای قبلی یک استثنا ایجاد میکرد. try/catch میتواند برای فعال کردن مشروط این ویژگی بر اساس پشتیبانی مرورگر استفاده شود.
PlatformMessage
این enum توسط پلتفرم برای اطلاعرسانی به کلاینت در مورد وضعیت جلسه VPN استفاده میشود.
شمارشی
"متصل" "قطع ارتباط" "خطا" "لینک داون" "لینکآپ" "لینک تغییر کرد" "تعلیق" "رزومه"
نشان میدهد که پیکربندی VPN متصل شده است.
نشان میدهد که پیکربندی VPN قطع شده است.
نشان میدهد که خطایی در اتصال VPN رخ داده است، مثلاً یک وقفه زمانی. توضیحی از خطا به عنوان آرگومان خطا به onPlatformMessage داده میشود.
نشان میدهد که اتصال فیزیکی شبکه پیشفرض قطع است.
نشان میدهد که اتصال شبکه فیزیکی پیشفرض پشتیبانگیری شده است.
نشان میدهد که اتصال شبکه فیزیکی پیشفرض تغییر کرده است، مثلاً wifi->mobile.
نشان میدهد که سیستم عامل در حال آماده شدن برای تعلیق است، بنابراین VPN باید اتصال خود را قطع کند. تضمینی وجود ندارد که افزونه قبل از تعلیق، این رویداد را دریافت کند.
نشان میدهد که سیستم عامل دوباره راهاندازی شده و کاربر دوباره وارد سیستم شده است، بنابراین VPN باید سعی کند دوباره متصل شود.
UIEvent
این enum توسط پلتفرم برای نشان دادن رویدادی که onUIEvent را فعال کرده است، استفاده میشود.
شمارشی
"نمایش افزودن دیالوگ" "نمایش پیکربندی دیالوگ"
درخواست میکند که کلاینت VPN کادر محاورهای افزودن پیکربندی را به کاربر نشان دهد.
درخواست میکند که کلاینت VPN کادر محاورهای تنظیمات پیکربندی را به کاربر نشان دهد.
VpnConnectionState
این enum توسط کلاینت VPN برای اطلاعرسانی به پلتفرم در مورد وضعیت فعلیاش استفاده میشود. این امر به ارائه پیامهای معنادار به کاربر کمک میکند.
شمارشی
"متصل" «شکست»
مشخص میکند که اتصال VPN موفقیتآمیز بوده است.
مشخص میکند که اتصال VPN ناموفق بوده است.
روشها
createConfig()
chrome.vpnProvider.createConfig(
name: string,
callback?: function,
): Promise<string>
یک پیکربندی VPN جدید ایجاد میکند که در چندین جلسه ورود کاربر باقی میماند.
پارامترها
- نام
رشته
نام پیکربندی VPN.
- تماس برگشتی
تابع اختیاری
پارامتر
callbackبه شکل زیر است:(id: string) => void
- شناسه
رشته
یک شناسه منحصر به فرد برای پیکربندی ایجاد شده، یا در صورت عدم موفقیت
undefined.
بازگشتها
قول<string>
کروم ۹۶+یک Promise برمیگرداند که هنگام ایجاد پیکربندی برطرف میشود یا در صورت وجود خطا، رد میشود.
Promiseها فقط برای Manifest V3 و نسخههای بعدی پشتیبانی میشوند، سایر پلتفرمها باید از callbackها استفاده کنند.
destroyConfig()
chrome.vpnProvider.destroyConfig(
id: string,
callback?: function,
): Promise<void>
پیکربندی VPN ایجاد شده توسط افزونه را از بین میبرد.
پارامترها
- شناسه
رشته
شناسه پیکربندی VPN برای از بین بردن.
- تماس برگشتی
تابع اختیاری
پارامتر
callbackبه شکل زیر است:() => void
بازگشتها
قول<void>
کروم ۹۶+یک Promise برمیگرداند که در صورت از بین رفتن پیکربندی یا رد شدن در صورت وجود خطا، برطرف میشود.
Promiseها فقط برای Manifest V3 و نسخههای بعدی پشتیبانی میشوند، سایر پلتفرمها باید از callbackها استفاده کنند.
notifyConnectionStateChanged()
chrome.vpnProvider.notifyConnectionStateChanged(
state: VpnConnectionState,
callback?: function,
): Promise<void>
وضعیت جلسه VPN را به پلتفرم اطلاع میدهد. این کار تنها زمانی موفقیتآمیز خواهد بود که جلسه VPN متعلق به افزونه باشد.
پارامترها
- ایالت
وضعیت جلسه VPN مربوط به کلاینت VPN.
- تماس برگشتی
تابع اختیاری
پارامتر
callbackبه شکل زیر است:() => void
بازگشتها
قول<void>
کروم ۹۶+یک Promise برمیگرداند که پس از تکمیل اعلان، برطرف میشود یا در صورت وجود خطا، رد میشود.
Promiseها فقط برای Manifest V3 و نسخههای بعدی پشتیبانی میشوند، سایر پلتفرمها باید از callbackها استفاده کنند.
sendPacket()
chrome.vpnProvider.sendPacket(
data: ArrayBuffer,
callback?: function,
): Promise<void>
یک بسته IP را از طریق تونل ایجاد شده برای جلسه VPN ارسال میکند. این کار تنها زمانی موفقیتآمیز خواهد بود که جلسه VPN متعلق به افزونه باشد.
پارامترها
- دادهها
آرایه بافر
بسته IP که قرار است به پلتفرم ارسال شود.
- تماس برگشتی
تابع اختیاری
پارامتر
callbackبه شکل زیر است:() => void
بازگشتها
قول<void>
کروم ۹۶+یک Promise برمیگرداند که هنگام ارسال بسته برطرف میشود یا در صورت وجود خطا، رد میشود.
Promiseها فقط برای Manifest V3 و نسخههای بعدی پشتیبانی میشوند، سایر پلتفرمها باید از callbackها استفاده کنند.
setParameters()
chrome.vpnProvider.setParameters(
parameters: Parameters,
callback?: function,
): Promise<void>
پارامترهای مربوط به جلسه VPN را تنظیم میکند. این باید بلافاصله پس از دریافت "connected" از پلتفرم فراخوانی شود. این تنها زمانی موفق خواهد بود که جلسه VPN متعلق به افزونه باشد.
پارامترها
- پارامترها
پارامترهای مربوط به جلسه VPN.
- تماس برگشتی
تابع اختیاری
پارامتر
callbackبه شکل زیر است:() => void
بازگشتها
قول<void>
کروم ۹۶+یک Promise برمیگرداند که با تنظیم پارامترها برطرف میشود یا در صورت وجود خطا، رد میشود.
Promiseها فقط برای Manifest V3 و نسخههای بعدی پشتیبانی میشوند، سایر پلتفرمها باید از callbackها استفاده کنند.
رویدادها
onConfigCreated
chrome.vpnProvider.onConfigCreated.addListener(
callback: function,
)
زمانی فعال میشود که پیکربندی توسط پلتفرم برای افزونه ایجاد شود.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(id: string, name: string, data: object) => void
- شناسه
رشته
- نام
رشته
- دادهها
شیء
onConfigRemoved
chrome.vpnProvider.onConfigRemoved.addListener(
callback: function,
)
زمانی فعال میشود که پیکربندی ایجاد شده توسط افزونه توسط پلتفرم حذف شود.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(id: string) => void
- شناسه
رشته
onPacketReceived
chrome.vpnProvider.onPacketReceived.addListener(
callback: function,
)
زمانی فعال میشود که یک بسته IP از طریق تونل مربوط به جلسه VPN متعلق به افزونه دریافت شود.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(data: ArrayBuffer) => void
- دادهها
آرایه بافر
onPlatformMessage
chrome.vpnProvider.onPlatformMessage.addListener(
callback: function,
)
Triggered when a message is received from the platform for a VPN configuration owned by the extension.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(id: string, message: PlatformMessage, error: string) => void
- شناسه
رشته
- پیام
- خطا
رشته
onUIEvent
chrome.vpnProvider.onUIEvent.addListener(
callback: function,
)
زمانی فعال میشود که یک رویداد رابط کاربری برای افزونه وجود داشته باشد. رویدادهای رابط کاربری سیگنالهایی از پلتفرم هستند که به برنامه نشان میدهند که یک کادر محاورهای رابط کاربری باید به کاربر نشان داده شود.