شرح
از chrome.vpnProvider API برای پیادهسازی کلاینت VPN استفاده کنید.
اجازهها
vpnProviderدردسترس بودن
مفاهیم و کاربرد
استفاده معمول از browser.vpnProvider بهصورت زیر است:
با فراخوانی
createConfig()، پیکربندیهای VPN ایجاد کنید. پیکربندی VPN ورودی پایداری است که در میانای کاربر ChromeOS به کاربر نشان داده میشود. کاربر میتواند پیکربندی VPN را از فهرست انتخاب کند و به آن متصل شود یا اتصالش را قطع کند.شنوندگان را به رویدادهای
onPlatformMessage،onPacketReceived، وonConfigRemovedاضافه کنید.وقتی کاربر به پیکربندی VPN متصل میشود،
onPlatformMessageبا پیام"connected"دریافت خواهد شد. دوره بین پیامهای"connected"و"disconnected"«جلسه VPN» نامیده میشود. در این دوره زمانی، گفته میشود افزونهای که پیام را دریافت میکند مالک جلسه VPN است.اتصال به سرور ویپیان را آغاز کنید و کارخواه ویپیان را راهاندازی کنید.
با فراخوانی
setParameters()، پارامترهای اتصال را تنظیم کنید.با فراخوانی
notifyConnectionStateChanged()، وضعیت اتصال را بهعنوان"connected"اعلام کنید.وقتی مراحل قبلی بدون خطا تکمیل شد، تونلی مجازی به پشته شبکه ChromeOS ایجاد میشود. بستههای IP را میتوان با فراخوانی
sendPacket()ازطریق تونل ارسال کرد و هر بستهای که از دستگاه ChromeOS منشأ میگیرد بااستفاده از گرداننده رویدادonPacketReceivedدریافت خواهد شد.وقتی کاربر از پیکربندی VPN قطع میشود،
onPlatformMessageبا پیام"disconnected"فعال میشود.اگر پیکربندی VPN دیگر لازم نباشد، میتوان آن را با فراخوانی
destroyConfig()ازبین برد.
انواع
Parameters
مشخصات
-
نشانی
رشته
نشانی IP برای میانای VPN در نماد CIDR. درحالحاضر IPv4 تنها حالت پشتیبانیشده است.
-
broadcastAddress
رشته اختیاری
آدرس شبکه همهفرستی برای میانای VPN. (پیشفرض: از نشانی IP و ماسک استنتاج شده است)
-
dnsServers
string[]
فهرستی از نشانیهای IP برای سرورهای ساناد.
-
domainSearch
رشته[] اختیاری
فهرستی از دامنههای جستجو. (پیشفرض: بدون دامنه جستجو)
-
exclusionList
string[]
ترافیک شبکه به فهرست بلوکهای IP در نماد CIDR را از تونل مستثنی کنید. از این گزینه میتوان برای دور زدن ترافیک به و از سرور VPN استفاده کرد. وقتی قوانین زیادی با مقصد مطابقت داشته باشد، قانونی که طولانیترین پیشوند منطبق را داشته باشد برنده میشود. ورودیهایی که با بلوک CIDR یکسانی مطابقت دارند بهعنوان تکراری درنظر گرفته میشوند. این موارد تکراری در فهرست مرتبشده (exclusionList + inclusionList) حذف میشوند و ورودی تکراری دقیقی که حذف خواهد شد تعریف نشده است.
-
inclusionList
string[]
ترافیک شبکه را به فهرست بلوکهای IP در نماد CIDR به تونل اضافه کنید. از این پارامتر میتوان برای راهاندازی تونل تقسیمشده استفاده کرد. بهطور پیشفرض، هیچ ترافیکی به تونل هدایت نمیشود. با افزودن ورودی «0.0.0.0/0» به این فهرست، همه ترافیک کاربر به تونل هدایت میشود. وقتی قوانین زیادی با مقصد مطابقت داشته باشد، قانونی که طولانیترین پیشوند منطبق را داشته باشد برنده میشود. ورودیهایی که با بلوک CIDR یکسانی مطابقت دارند بهعنوان تکراری درنظر گرفته میشوند. این موارد تکراری در فهرست مرتبشده (exclusionList + inclusionList) حذف میشوند و ورودی تکراری دقیقی که حذف خواهد شد تعریف نشده است.
-
mtu
رشته اختیاری
تنظیم MTU برای میانای VPN. (پیشفرض: ۱۵۰۰ بایت)
-
اتصال مجدد
رشته اختیاری
Chrome نسخه ۵۱ و بالاتر browser.* از Chrome نسخه ۱۴۸اینکه افزونه VPN اتصال مجدد خودکار را اجرا میکند یا نه.
اگر درست باشد، از پیامهای پلاتفرم
linkDown،linkUp،linkChanged،suspend، وresumeبرای علامت دادن به رویدادهای مربوطه استفاده خواهد شد. اگر نادرست باشد، درصورت تغییر توپولوژی شبکه، سیستم VPN را بهاجبار قطع میکند و کاربر باید بهصورت دستی دوباره متصل شود. (پیشفرض: نادرست)این ویژگی در Chrome 51 جدید است؛ در نسخههای قبلی استثنا ایجاد میکند. try/catch میتواند برای فعال کردن مشروط ویژگی براساس پشتیبانی مرورگر استفاده شود.
PlatformMessage
پلاتفرم از enum برای مطلع کردن کارخواه از وضعیت جلسه VPN استفاده میکند.
شمارشی
«متصل»
نشان میدهد که پیکربندی VPN متصل شده است.
«قطعشده»
نشان میدهد که پیکربندی VPN قطع شده است.
«خطا»
نشان میدهد که خطایی در اتصال VPN رخ داده است، برای مثال وقفه زمانی. شرح خطا بهعنوان آرگومان خطا به onPlatformMessage داده میشود.
«linkDown»
نشان میدهد که اتصال شبکه فیزیکی پیشفرض قطع است.
«linkUp»
نشان میدهد که اتصال شبکه فیزیکی پیشفرض دوباره برقرار شده است.
"linkChanged"
نشان میدهد که اتصال شبکه فیزیکی پیشفرض تغییر کرده است، مثلاً wifi->mobile.
«تعلیق»
نشان میدهد که سیستمعامل درحال آماده شدن برای تعلیق است، بنابراین VPN باید اتصالش را قطع کند. تضمینی وجود ندارد که افزونه این رویداد را قبلاز تعلیق دریافت کند.
«resume»
نشان میدهد که سیستمعامل ازسر گرفته شده است و کاربر دوباره به سیستم وارد شده است، بنابراین VPN باید دوباره متصل شود.
UIEvent
پلاتفرم از enum برای نشان دادن رویدادی که onUIEvent را راهاندازی کرده است استفاده میکند.
شمارشی
«showAddDialog»
درخواست میکند که کارخواه VPN چارگوش گفتگوی افزودن پیکربندی را به کاربر نشان دهد.
«showConfigureDialog»
درخواست میکند که کارخواه VPN چارگوش گفتگوی تنظیمات پیکربندی را به کاربر نشان دهد.
VpnConnectionState
کارخواه VPN از این شمارش برای اطلاع دادن وضعیت فعلی خود به پلاتفرم استفاده میکند. این کار به ارائه پیامهای معنیدار به کاربر کمک میکند.
شمارشی
«متصل»
مشخص میکند که اتصال VPN موفقیتآمیز بوده است.
«failure»
مشخص میکند که اتصال ویپیان ناموفق بوده است.
روشها
createConfig()
browser.vpnProvider.createConfig(
name: string,
): Promise<string>
پیکربندی VPN جدیدی ایجاد میکند که در چندین جلسه ورود به سیستم کاربر باقی میماند.
پارامترها
-
نام
رشته
نام پیکربندی VPN.
بازگشتیها
-
Promise<string>
Chrome نسخه ۹۶ و بالاتر browser.* از Chrome نسخه ۱۴۸یک Promise برمیگرداند که وقتی پیکربندی ایجاد میشود حل میشود یا اگر خطایی وجود داشته باشد رد میشود.
destroyConfig()
browser.vpnProvider.destroyConfig(
id: string,
): Promise<void>
پیکربندی VPN ایجادشده توسط افزونه را ازبین میبرد.
پارامترها
-
id
رشته
شناسه پیکربندی VPN برای ازبین بردن.
بازگشتیها
-
Promise<void>
Chrome نسخه ۹۶ و بالاتر browser.* از Chrome نسخه ۱۴۸یک Promise برمیگرداند که وقتی پیکربندی ازبین میرود حل میشود یا اگر خطایی وجود داشته باشد رد میشود.
notifyConnectionStateChanged()
browser.vpnProvider.notifyConnectionStateChanged(
state: VpnConnectionState,
): Promise<void>
وضعیت جلسه VPN را به پلاتفرم اطلاع میدهد. این کار فقط زمانی موفقیتآمیز خواهد بود که جلسه VPN متعلق به افزونه باشد.
پارامترها
-
ایالت
وضعیت جلسه VPN کارخواه VPN.
بازگشتیها
-
Promise<void>
Chrome نسخه ۹۶ و بالاتر browser.* از Chrome نسخه ۱۴۸یک Promise برمیگرداند که وقتی اعلان کامل میشود حل میشود یا اگر خطایی وجود داشته باشد رد میشود.
sendPacket()
browser.vpnProvider.sendPacket(
data: ArrayBuffer,
): Promise<void>
بسته IP را ازطریق تونل ایجادشده برای جلسه VPN ارسال میکند. این کار فقط زمانی موفقیتآمیز خواهد بود که جلسه VPN متعلق به افزونه باشد.
پارامترها
-
داده
ArrayBuffer
بسته IP که باید به پلاتفرم ارسال شود.
بازگشتیها
-
Promise<void>
Chrome نسخه ۹۶ و بالاتر browser.* از Chrome نسخه ۱۴۸یک Promise برمیگرداند که وقتی بسته ارسال میشود حل میشود یا اگر خطایی وجود داشته باشد رد میشود.
setParameters()
browser.vpnProvider.setParameters(
parameters: Parameters,
): Promise<void>
پارامترهای جلسه VPN را تنظیم میکند. این باید بلافاصله پساز دریافت "connected" از پلاتفرم فراخوانی شود. این کار فقط زمانی موفقیتآمیز خواهد بود که جلسه VPN متعلق به افزونه باشد.
پارامترها
-
پارامترها
پارامترهای جلسه VPN.
بازگشتیها
-
Promise<void>
Chrome نسخه ۹۶ و بالاتر browser.* از Chrome نسخه ۱۴۸یک Promise برمیگرداند که وقتی پارامترها تنظیم میشوند حل میشود یا اگر خطایی وجود داشته باشد رد میشود.
رویدادها
onConfigCreated
browser.vpnProvider.onConfigCreated.addListener(
callback: function,
)
وقتی فعال میشود که پیکربندیای توسط پلاتفرم برای افزونه ایجاد شود.
پارامترها
-
تماس برگشتی
عملکرد
پارامتر
callbackبهصورت زیر است:(id: string, name: string, data: object) => void
-
id
رشته
-
نام
رشته
-
داده
شیء
-
onConfigRemoved
browser.vpnProvider.onConfigRemoved.addListener(
callback: function,
)
زمانی فعال میشود که پیکربندی ایجادشده توسط افزونه از پلاتفرم برداشته شود.
پارامترها
-
تماس برگشتی
عملکرد
پارامتر
callbackبهصورت زیر است:(id: string) => void
-
id
رشته
-
onPacketReceived
browser.vpnProvider.onPacketReceived.addListener(
callback: function,
)
وقتی راهاندازی میشود که بسته IP ازطریق تونل برای جلسه VPN متعلق به افزونه دریافت شود.
پارامترها
-
تماس برگشتی
عملکرد
پارامتر
callbackبهصورت زیر است:(data: ArrayBuffer) => void
-
داده
ArrayBuffer
-
onPlatformMessage
browser.vpnProvider.onPlatformMessage.addListener(
callback: function,
)
وقتی پیامی از پلاتفرم برای پیکربندی VPN متعلق به افزونه دریافت میشود، راهاندازی میشود.
پارامترها
-
تماس برگشتی
عملکرد
پارامتر
callbackبهصورت زیر است:(id: string, message: PlatformMessage, error: string) => void
-
id
رشته
-
پیام
-
خطا
رشته
-
onUIEvent
browser.vpnProvider.onUIEvent.addListener(
callback: function,
)
Triggered when there is a UI event for the extension. رویدادهای واسط کاربر سیگنالهایی از پلاتفرم هستند که به برنامه نشان میدهند که باید کادر گفتگوی واسط کاربر به کاربر نشان داده شود.