Bíbi ìgbéṣe WireGuard bẹ̀rẹ̀ ń mú àpù wá sí iwájú, kì í gbé ọ̀nà àwọ̀n pàtó kan ró. Ìṣàkóso aládàáṣiṣẹ́ tí ó ṣí àpù tí ó sì dúró yóò ye ìdánwò náà, yóò sì kùnà ní ìgbà àkọ́kọ́ tí fọ́nù bá ti jókòó lórí ojú-ìbòjú ilé. WireGuard ń pèsè ọ̀nà ìṣàkóso jínjìn tí a ti ṣe àtìlẹ́yìn fún àwọn ọ̀nà àwọ̀n tí ó ní orúkọ, ó sì tóóró ju bí ọ̀pọ̀lọpọ̀ ìlànà ṣe dábàá. Àkójọ ìṣàyẹ̀wò tí ó wà nísàlẹ̀ ń tẹ̀lé ọ̀nà yẹn láti àṣẹ dé àbájáde tí a kíyèsí.

Ṣàyẹ̀wò bóyá ìṣàkóso jínjìn ti ṣí

Ẹ̀rọ gbígbà ìṣàkóso jínjìn kì í gbọ́ ní gbogbo ìgbà. Àwọn ètò WireGuard ní àṣàyàn kan tí ó ń tanná ìṣàkóso jínjìn àwọn ọ̀nà àwọ̀n, níwọ̀n ìgbà tí àṣàyàn yẹn kò bá tí tanná, ẹ̀rọ gbígbà náà ń fojú fo àwọn ìbéèrè dípò kí ó kùnà ní àríwo. Àkọ́kọ́ ètò náà jẹ́ àmọ̀ọ́nà, nítorí ẹ̀rọ gbígbà tí a kó jáde tí ó lè gbé àwọn ọ̀nà àwọ̀n ró yóò jẹ́ ihò ààbò lórí gbogbo ẹ̀rọ tí ó fi àpù náà sórí. Tanná rẹ̀ nípasẹ̀ ojú-ìbòjú kí o sì kọ sílẹ̀ pé o ṣe bẹ́ẹ̀, nítorí ètò ni olùlò tó ń bọ̀ lè pa tí kò mọ ohun tí ó gbára lé e.

Ẹ̀rọ gbígbà tí ó wà lókè ń ṣiṣẹ́ pẹ̀lú àwọn ìbéèrè UP àti DOWN tí ó ní orúkọ nìkan, nítorí náà kò sí ọ̀nà níbí láti dá ọ̀nà àwọ̀n tàbí láti ṣàtúnṣe ìṣètò rẹ̀. Ṣàfihàn pé ẹ̀yà náà wà nínú ìkọ́ tí a fi sórí ẹ̀rọ kí o tó gbára lé e: adb shell dumpsys package com.wireguard.android | grep -i receiver ń ṣe àkójọ àwọn ẹ̀rọ gbígbà tí a kéde, ìkọ́ tí kò sì ní ẹ̀rọ gbígbà ìṣàkóso jínjìn kò ní dáhùn láé. Bí iṣẹ́ náà bá nílò ibùdó mìíràn tàbí alábàáṣiṣẹ́ mìíràn, ìyẹn jẹ́ ọ̀nà àwọ̀n mìíràn àti ìṣètò afọwọ́ṣe ọ̀tọ̀ọ̀tọ̀ nínú àpù náà.

Ṣàyẹ̀wò àṣẹ tí olùṣàkóso ní

WireGuard ń dáàbò bo ẹ̀rọ gbígbà pẹ̀lú àṣẹ eléwu, com.wireguard.android.permission.CONTROL_TUNNELS, tí àpù tí ó ń ṣàkóso gbọ́dọ̀ ní. Ìkéde àdáni kò lè dá àṣẹ tí olùránṣẹ́ kò kéde rí tàbí tí a kò fún un rí. Èyí ni ìgbésẹ̀ tí àwọn ìlànà aládàáṣiṣẹ́ ti ń ró àgbára tí ìṣàkóso aládàáṣiṣẹ́ kò ní lọ́wọ́ láìsí ìdí.

Ṣàyẹ̀wò ẹ̀gbẹ́ méjèèjì kí o tó kọ iṣẹ́ náà. Àṣẹ àkọ́kọ́ ń ṣe àkójọ àṣẹ tí a kéde, èkejì sì ń fi hàn bóyá àpò olùṣàkóso ní í níti gidi. Olùṣàkóso tí ó kéde àṣẹ nínú manifest rẹ̀ ṣùgbọ́n tí a kò fún un rí ní àkókò ìṣiṣẹ́ yóò ṣì kùnà, ìkùnà náà sì ń wá bí ìdákẹ́jẹ́ dípò bí ìjíròrò.

adb shell pm list permissions -g -d | grep -i control_tunnels
adb shell dumpsys package net.dinglisch.android.taskerm | grep -i control_tunnels

Bí olùṣàkóso kò bá ní àṣẹ náà, lo ìsopọ̀ tí àpù náà ń gbà níti gidi dípò kí o fi ọwọ́ kọ́ ìkéde. Fífi Intent ránṣẹ́ àti rírí pé ìpè náà ṣẹ́gun ń fi hàn nìkan pé Android gbà á, kì í ṣe pé WireGuard ṣe nǹkan kan lórí rẹ̀. Ka fífi ránṣẹ́ tí a kò fi dá ni bí ohun àìmọ̀, kì í ṣe bí àṣeyọrí.

Fi àwọn pápá Intent wé àpù tí a fi sórí ẹ̀rọ

Pápá mẹ́rin ń gbé gbogbo ìbéèrè, ọ̀kọ̀ọ̀kan sì ní ọ̀nà ìkùnà tí ó dà bí ti àwọn yòókù. Fi ìgbésẹ̀, àfikún ọ̀nà àwọ̀n, àpò àti ibi àfojúsùn ṣe déédé bí ẹ̀ka kan.

Action:  com.wireguard.android.action.SET_TUNNEL_UP
Extra:   tunnel:lab-wg
Package: com.wireguard.android
Target:  Broadcast Receiver

Ìgbésẹ̀ ń dárúkọ UP tàbí DOWN kò sì ní ohun mìíràn, àfikún náà ń gbé orúkọ ọ̀nà àwọ̀n tí a ṣètò gan-an, àpò náà ń fi ìfìsílẹ̀ mọ́ WireGuard nìkan, ibi àfojúsùn sì gbọ́dọ̀ jẹ́ ẹ̀rọ gbígbà kì í ṣe ìgbéṣe. Orúkọ ọ̀nà àwọ̀n tí ó ní àṣìṣe ìtẹ̀wé ń dá ìdákẹ́jẹ́ kan náà bí ẹ̀rọ gbígbà tí a pa, nítorí náà ka orúkọ náà nínú àpù kí o tó parí pé ìṣàkóso aládàáṣiṣẹ́ ti bàjẹ́. Ìgbésẹ̀ DOWN ni com.wireguard.android.action.SET_TUNNEL_DOWN pẹ̀lú àfikún àti àpò kan náà. Fi ìbéèrè kan ránṣẹ́ ní ẹ̀ẹ̀kan nígbà ìdánwò, nítorí ìkéde méjì tí ń léra wọn yóò dá ipò tí ẹnikẹ́ni kò lè fi í sí ẹrù.

Dán ìbéèrè kan náà wò láti inú shell lórí ẹ̀rọ láti ya Intent kúrò nínú ìṣàkóso aládàáṣiṣẹ́. Bí àṣẹ yẹn bá kùnà nígbà tí iṣẹ́ Tasker ń ṣẹ́gun, ìyàtọ̀ ni àṣẹ olùránṣẹ́ kì í ṣe iye àwọn pápá.

adb shell am broadcast -a com.wireguard.android.action.SET_TUNNEL_UP -e tunnel lab-wg --receiver-permission com.wireguard.android.permission.CONTROL_TUNNELS

Ṣàyẹ̀wò ohun tí olùfàá kò bo

Ìṣẹ̀lẹ̀ ìbẹ̀rẹ̀ tàbí wíwá sí iwájú àpù lè béèrè ìsopọ̀, ṣùgbọ́n àpù náà lè ti gbìyànjú wíwá orúkọ tàbí ìbéèrè àkọ́kọ́ kí a tó ṣiṣẹ́ lórí ìṣẹ̀lẹ̀ yẹn. Olùfàá ń ṣiṣẹ́ nígbà tí ẹ̀rọ náà bá ṣàkíyèsí ìyípadà ipò, ìyẹn ni lẹ́yìn tí àpù ti bẹ̀rẹ̀ iṣẹ́. Bí àpù kò bá gbọ́dọ̀ bá ẹnikẹ́ni sọ̀rọ̀ níta ọ̀nà àwọ̀n rí, olùfàá ìbẹ̀rẹ̀ kì í ṣe òfin ìdínà, a kò sì lè sọ ọ́ di bẹ́ẹ̀ nípasẹ̀ fífi ìdádúró kún un. Ṣètò ìlànà àtìlẹ́yìn tí ó ń tanná nígbà gbogbo tàbí ti àpù kọ̀ọ̀kan fún ìhùwàsí ìdínà, kí o sì pa olùfàá mọ́ fún ìrọ̀rùn nìkan.

Ìhùwàsí ìdínà ń gbé ibòmíì pátápátá. adb shell settings get global always_on_vpn_app ń dárúkọ àpò tí a lù mọ́ bí ẹni tí ó ń tanná nígbà gbogbo, adb shell dumpsys connectivity | grep -i vpn sì ń fi àwọn nẹ́tíwọ́kì VPN tí ẹ̀rọ ń tọpinpin báyìí hàn. Kò sí ọ̀kan nínú wọn tí olùfàá ìbẹ̀rẹ̀ lè rọ́pò rẹ̀.

Ìrònú kan náà kan ẹ̀gbẹ́ kejì ìpàdé náà. Sísọ ọ̀nà àwọ̀n kalẹ̀ nítorí fèrèsé kan pàdánù àfojúsùn ń ba iṣẹ́ ẹ̀yìn, àwọn olùrànlọ́wọ́ ìjẹ́rìí àti àpù mìíràn tí ó gbára lé ìsopọ̀ náà jẹ́. Ṣàlàyé òpin ìpàdé àmọ̀ọ́nà dípò ìyípadà àfojúsùn, kí o sì yẹra fún àwọn ìtẹ̀lé UP àti DOWN kíákíá nígbà tí ìṣàkóso aládàáṣiṣẹ́ ń yí ipò padà.

Ṣàyẹ̀wò àbájáde, kì í ṣe fífi ránṣẹ́

Ìkéde tí ó padà láìsí àṣìṣe ni Android gbà, kì í sì ṣe ju bẹ́ẹ̀ lọ. Ka ipò ọ̀nà àwọ̀n láti inú àpù, kí o sì ka ìmúrasílẹ̀ iṣẹ́ náà láti inú ohun tí ìgbésẹ̀ tó kàn ń nílò níti gidi. Ìṣàyẹ̀wò méjì ọ̀tọ̀ọ̀tọ̀ ni wọ́n, àti pé kíkọjá èkíní kò túmọ̀ sí èkejì.

Ka ipò ojú-ìbòjú náà pẹ̀lú tààrà: adb shell ip -brief addr show tun0 ń tẹ̀ ojú-ìbòjú ọ̀nà àwọ̀n àti àdírẹ́sì rẹ̀ jáde, ojú-ìbòjú tí ó wà láìsí àdírẹ́sì wà lókè ṣùgbọ́n kò ṣe é lò. Lẹ́yìn náà ṣàyẹ̀wẹ̀ iṣẹ́ àdáni fúnra rẹ̀, nítorí ọ̀nà àwọ̀n tí ó wà lókè láìsí ìfọwọ́sowọ́pọ̀ tàbí láìsí ọ̀nà yóò ṣì kùnà nínú iṣẹ́ tí ó ṣe pàtàkì. Ìṣàkóso aládàáṣiṣẹ́ tí ó ń darí ìsopọ̀ kan tí ó ní orúkọ láàárín ààlà àṣẹ rẹ̀ gidi kò nílò láti fi ọwọ́ kan ojú-ìbòjú, ṣe àṣẹ root tàbí sọ ààbò nẹ́tíwọ́kì Android di aláìlera.

Àwọn àpilẹ̀kọ tó jọra