OpenVPN Connect és Tasker: a profil-ID, nem a név
Az OpenVPN Connect Android 3.3.2-es vagy újabb verzióján profil-ID-t fogad el, nem megjelenített nevet. Építsd újra a Tasker-intentet, és tedd a következő lépést a valódi kapcsolati állapottól függővé.
Egy automatizálás, amely hónapokig megbízhatóan kapcsolódott, egy kliensfrissítés után leáll, miközben ugyanaz a profil kézzel továbbra is kapcsolódik. Ez a minta a vezérlési szerződésre utal, nem a VPN-kiszolgálóra. Valaki megváltoztatta, melyik műveletet fogadja el az alkalmazás, vagy melyik azonosítót várja, és a feladat továbbra is a régit küldi. Az újraépítés kevesebb időt vesz igénybe, mint a kiszolgáló újbóli ellenőrzése.
A szerződés egyetlen alkalmazáshoz és egyetlen verziótartományhoz tartozik
Az OpenVPN Connect és az OpenVPN for Android különböző alkalmazások, és egy intent, amely az egyik csomagot nevezi meg, a másikban semmit sem tesz. Mielőtt hozzányúlsz a feladathoz, erősítsd meg, melyik kliens van telepítve, és melyik verzió hozta létre azt a viselkedést, amelyhez hasonlítasz. Az Android 3.3.2-es vagy újabb Connect esetén a dokumentált Tasker-integráció profil-ID-t vár. A régebbi utasítások, amelyek a megjelenített név elé AS vagy PC előtagot tesznek, egy korábbi szerződést írnak le, és ezek átmásolása egy jelenlegi feladatba a szokásos oka annak, hogy semmi sem történik.
Ez a verzióhatár magyarázza a legtöbb „eddig működött” jelentést. Az alkalmazás nem törte el a funkciót; megváltoztatta, hogy a funkció mit fogad el. Kezeld a verziótartományt a szerződés részeként, amelyhez írsz.
Honnan származik az azonosító
Nyisd meg a kívánt profilt a Connectben, és másold ki a profil-ID-jét magának a profilnak az adataiból. Ezt az értéket használd a listáról felismert név helyett, mert a név címke, és az azonosító az, amihez az alkalmazás illeszt. A Tasker Send Intent műveletének kapcsolati mezői az alábbi blokkhoz hasonlítanak, csak az azonosító van kicserélve. Tartsd következetesen ugyanazt a személyes vagy munkahelyi profilhoz tartozó alkalmazáspéldányt is.
Action: net.openvpn.openvpn.CONNECT
Extra: net.openvpn.openvpn.AUTOSTART_PROFILE_ID:'PROFILE_ID'
Extra: net.openvpn.openvpn.AUTOCONNECT:true
Package: net.openvpn.openvpn
Class: net.openvpn.unified.MainActivity
Target: Activity
Egy munkaprofilban lévő másolat ugyanazzal a csomagnévvel és egy másik tárolt profillal elfogadja az intentet, és nem talál egyetlen megfelelő profilt sem, ami törött feladatnak tűnik, nem hatókörhibának. Ha a profilt újraimportálják vagy lecserélik, tekintsd az azonosítót gyanúsnak, és ellenőrizd újra. Az újraimportálás gyakran új profilbejegyzést hoz létre akkor is, ha a megjelenített név változatlan marad. Ellenőrizd az azonosítót, mielőtt bármi mást megváltoztatnál.
Hagyd üresen a nem kapcsolódó mezőket a dokumentáció szerint. A kategória-, MIME-típus- és adatmezők, amelyeket az útmutató nem kér, megváltoztathatják, hogyan oldja fel az Android az intentet, és egy másképp feloldott intent elindíthatja az alkalmazást a profil indítása nélkül.
Mit tesz a művelet, és mit hagy rád
A kapcsolódási intent elküldése arra kéri az alkalmazást, hogy indítson el egy profilt. Ez nem kerüli meg a profillal szükséges engedélyezést. A Connect továbbra is mutathat kérést, ezért a dokumentált autonóm eset azt feltételezi, hogy nincs további engedélyezés és nincsenek mentett kapcsolati hitelesítő adatok. A kísértés az, hogy ezt a határt eltávolítsuk azzal, hogy jelszavakat vagy privátkulcs-titkokat ágyazunk egy megosztott Tasker-exportba.
Ne tedd ezt. Egy feladatexport szövegfájl, amelyet az emberek csevegésszálakba másolnak, és az ott elhelyezett titkok abban a pillanatban napvilágra kerülnek, amikor megosztják. Használd az alkalmazás saját mentett kapcsolati hitelesítő adatait, ha a profilnak szüksége van rájuk, és hagyd, hogy az MFA-kérések kérések maradjanak. Bármi, ami a válasz tárolásával elkerüli a kérést, áthelyezte a titkot ahelyett, hogy megoldotta volna a problémát.
A leválasztás oldalának saját dokumentált művelete van, és ez nem a kliens elleni trükk:
Action: net.openvpn.openvpn.DISCONNECT
Extra: net.openvpn.openvpn.STOP:true
Package: net.openvpn.openvpn
Class: net.openvpn.unified.MainActivity
Target: Activity
Egy szándékosan nem létező profilhoz kapcsolódni a leválasztás kikényszerítéséhez az a fajta kerülőút, amely régi szálakban felbukkan, majd egy frissítés után csendben meghiúsul. Használd a kifejezett műveletet.
Ellenőrizd az állapotot, mielőtt a következő lépés lefut
Egy sikeres intent-indítás azt bizonyítja, hogy a kérés kézbesítve lett, nem azt, hogy létezik alagút. Ha a feladat ezután egy belső alkalmazást nyit meg,annak a lépésnek korlátozott időtúllépésű készenléti feltételre van szüksége. A küldés utáni azonnali művelet előbb-utóbb egy kérésbe ütközik.
$ adb shell cmd package resolve-activity --brief net.openvpn.openvpn
net.openvpn.openvpn/net.openvpn.unified.MainActivity
$ adb shell dumpsys activity activities | grep -i openvpn
A resolve-lekérdezés megerősíti, hogy a célzott csomag és aktivitás létezik azon az eszközön, ami kizárja az osztálymező elírását. Az aktivitásdump megmutatja, mi van valójában az előtérben a feladat lefutása után, és ez a legolcsóbb módja annak, hogy lássuk, az alkalmazás kérést nyitott-e kapcsolódás helyett. Futtasd mindkettőt egy sikertelen feladat után, ahelyett hogy találgatnád, melyik mező rossz. Az osztálynév eltérése azonnali hibát okoz, míg a hiányzó profil egyáltalán nem okoz látható hibát.
Döntsd el a leválasztás tulajdonjogát, mielőtt kiadod a feladatot. Egy parancsikon, amely lerombol egy alagutat, amelytől egy másik munkafeladat függ, olyan támogatási jegyet generál, amely semmiben sem hasonlít az okára. Két automatizálás megtartása, amelyek ugyanazt a klienst vezérlik, olyan versenyhelyzetet teremt, amelyet nem tudsz a naplókból hibakeresni, ezért töröld az elavult műveletet, amint az új működik.