Uhlelo lwakho luthi kunqanyuliwe, umugqa wemenyu uthi kuxhunyiwe, futhi ithrafikhi igeleza ngokucacile. Leli gebe akusona isimo somjaho ongalungisa ngesinye isilingo: uhlelo nomhubhe kuyizinqubo ezihlukene, futhi into efundwa yikhodi yakho ingumbono ogcinwe engxenyeni yesikhashana wokuhlelwa okugcinwa uhlelo. Ingaphezulu le-Personal VPN lakwa-Apple liyi-API yokulawula, hhayi indlela yedatha, futhi iningi lokuziphatha kwalo okuxakile livela kulelo qiniso elilodwa. Nakhu okwenzeka ngempela ekubizeni ngakunye.

Into yomphathi ingumbono ogcinwe engxenyeni yesikhashana, hhayi umhubhe

NETunnelProviderManager ugcwaliswa kusuka esitolo sezintandokazi esiphethwe uhlelo, ngakho izakhiwo zaso azisho lutho kuze kuqede loadFromPreferences. Uma ufunda connection.status ngaphambi kwalokho uthola inani elizenzakalelayo, futhi yingakho ukuvuselelwa kokuqala kwesimo ngemuva kokuqalisa kabusha kubika ukunqanyulwa ngenkathi umhubhe usebenza. Qala ngokulayisha, bese ufunda isimo nokuhlelwa kweprotokholi kusuka kusiphathi sokuqedela esifanayo. Landelela izinguquko zakamuva ngokusebenzisa NEVPNStatusDidChange esikhundleni sokubuza njalo, futhi qaphela ukuthi isaziso sibuye sikhule ekuxhumekeni okuqalwe yi-On Demand, lapho kungekho khona ukubiza kohlelo okungabuyisela noma yini. Kuyafana ngezilungiselelo zeprotokholi: zifundwa kukuhlelwa okulayishiwe, hhayi kulokho okudluliswe uhlelo.

Umhubhe ngokwawo uhlala kunqubo yomhlinzeki we-Network Extension, ngakho uhlelo lungalahlekelwa yisimo saso ngaphandle kokulahlekelwa ukuxhumeka. Konke okukhonjiswa isixhumi kufanele kwakhiwe kabusha kusuka kumphathi, hhayi kukhunjulwe kusuka kuseshini edlule.

Ukulandelana kokuqalisa: gcina, layisha, bese uqalisa

Ukuxhumeka okusekelwe kumhlinzeki kudinga izinyathelo ezintathu ngokulandelana. Bhala ukuhlelwa komhlinzeki futhi ushayele saveToPreferences, layisha umphathi ukuze ukuhlelwa okugciniwe kube yikho okuphethe, bese uqalisa nge-NETunnelProviderSession.startVPNTunnel(). Uma weqa ukugcina, ukuqalisa akukho okungakuqalisa; uma ulayisha ngaphambi kokugcina, umphathi usabonisa ukuhlelwa okudala.

Inani le-boolean elibuyiswa yi-startVPNTunnel lisho kuphela ukuthi isicelo samukelwe. Ukwehluleka kwezinga lomhlinzeki kufika kamuva njengoshintsho lwesimo lokuya kokunqanyuliwe, okuqaphela ngokusebenzisa isaziso se-NEVPNStatusDidChange, futhi isiphathi sesaziso kufanele sifunde kabusha i-connection.status ngemuva kwe-loadFromPreferences ngoba inani eligcinwe engxenyeni yesikhashana lingase libe ngeledala. Ukwehluleka kwezinga lesicelo kubuya ngokushesha kusuka efomini eliphonsayo lalowo mbizo, noma ngokusebenzisa ipharamitha yokuphuma yephutha le-startVPNTunnelAndReturnError:. Ikhodi ethatha inani elibuyisiwe njengomphumela ibika ukuxhumeka okungakaze kusungulwe. Okunye ukwehluleka okuthulile isikhombi se-bundle somhlinzeki esingahambisani nesandiso esifakiwe: isicelo siyanqatshwa, futhi akukho lutho kumlayezo olukhomba isikhombi. Uma isikhombi singalungile, isicelo ngokuvamile sihluleka ngokushesha, ngaphambi kokuvela komugqa wokuloga womhlinzeki.

Ukuphinda kulayishwe izintandokazi ngemuva kokuqalisa yikho okwenza izikrini zesimo zilungele. Umshayi akakusunduzeli ukuhlelwa okusha uma uhlelo ukushintsha.

Izinto zokwethemba zifika ngephrofayela, azikaze zifike ngokukhodi yohlelo

Uhlelo alunayo indlela esekelwayo yokwengeza isitifiketi sengcindezi kunqubo yokwethemba ye-iOS, ngakho ukuhlelwa kwe-Personal VPN kungabhekisela kuphela ezintweni ocingo oselwezethemba ngazo: iketango elisungulwe iphrofayela efakiwe, ukuphathwa kocingo noma i-CA uhlelo oluyethembayo ngezinye izizathu. Uhlelo olwakha i-CA yalo ekuqaliseni kokuqala futhi lulindele ukuthi uhlelo luyamukele luzohluleka ekuqinisekiseni ngaphakathi kumhlinzeki, lapho isixhumi sohlelo singenakubona isizathu.

Thatha lowo mngcele njengomkhawulo wokuklama oyiyo, futhi thumela ihange lokwethemba kanye nephrofayela yokubhalisa. Gcina ukuqinisekiswa kwe-VPN kuhlukile esinqumweni sokwethemba, ngoba kuhluleka ezindaweni ezihlukene futhi kulungiswa abantu abahlukene.

Izibali zivela kwisixhumi, hhayi ku-API ye-VPN

Umphathi uveza isimo nokuhlelwa, futhi akukho okubala amabhayithi ngomhubhe ngamunye. Uma udinga izibalo zokusetshenziswa, shayela i-getifaddrs() futhi ufunde i-if_data yesixhumi esifanele: i-en0 ye-Wi-Fi, izixhumi ze-pdp_ip zeselula, nedivayisi ye-utun yomhubhe ngokwawo. Izibali ze-utun zichaza ithrafikhi yangaphakathi futhi zifaka isisindo seprotokholi.

Lezi zibalo ziyizilinganiso, hhayi ukubalwa ngohlelo ngalunye, futhi ziyasethwa kabusha uma isixhumi sakhiwe kabusha. Zifake ilebula kanjalo esixhumeni, uma kungenjalo othile uzozisebenzisela ukukhokhisa iklayenti. Uma udinga izibalo ngohlelo ngalunye, udinga indlela ehluke ngokuphelele, hhayi ukufundwa okungcono kwalezi zinkambu.

Ukuhlanza kuse-stopVPNTunnel, hhayi ekuqedeni

applicationWillTerminate ikunika amasekhondi ambalwa ngaphambi kokuthi uhlelo lwale ukubulala inqubo, futhi lokho akusona isizinda esithembekile sokuqaqa ukuxhumeka. Thumela ukumisa ku-stopVPNTunnel() noma kusingathwe ku-callback yokumisa yomhlinzeki, futhi gcina isikhombi somphathi noma sokuhlelwa owuqale ngaso ukuze ukumisa kubhekise kulolo xhumeko hhayi kukho konke ukuhlelwa kudivayisi.

Gcina leso sikhombi eceleni kwephrofayela esiyiso, ngoba into yomphathi ayibhali ukuthi umsebenzisi wakhetha ukuhlelwa okukuphi. Futhi khumbula ukuthi ukuxhumeka okuphakanyiswa i-On Demand akunakho ukubiza kohlelo ngemuva kwakho nhlobo, ngakho isikrini sesimo kusafanele silayishe izintandokazi ngaphambi kokudweba noma yini.

Izihloko ezihlobene