Automaatio, joka yhdisti luotettavasti kuukausia, lakkaa toimimasta asiakasohjelman päivityksen jälkeen, vaikka sama profiili yhdistää edelleen käsin. Tämä kuvio viittaa ohjaussopimukseen eikä VPN-palvelimeen. Joku muutti sitä, minkä toiminnon sovellus hyväksyy tai mitä tunnistetta se odottaa, ja tehtävä lähettää edelleen vanhaa. Uudelleen sitomisen rakentaminen vie vähemmän aikaa kuin palvelimen uudelleen tarkistaminen.

Sopimus kuuluu yhdelle sovellukselle ja yhdelle versioalueelle

OpenVPN Connect ja OpenVPN for Android ovat eri sovelluksia, eikä intent, joka nimeää yhden paketin, tee toisessa mitään. Varmista ennen tehtävään koskemista, mikä asiakasohjelma on asennettu ja mikä versio tuotti sen käyttäytymisen, johon vertaat. Androidin 3.3.2 tai uudemman Connectin kohdalla dokumentoitu Tasker-integraatio odottaa profiilin ID:tä. Vanhemmat ohjeet, jotka laittavat AS- tai PC-etuliitteen näyttönimen eteen, kuvaavat aiempaa sopimusta, ja niiden kopioiminen nykyiseen tehtävään on tavallinen syy siihen, ettei mitään tapahdu.

Tämä versioraja selittää useimmat ilmoitukset siitä, että ennen se toimi. Sovellus ei rikkonut ominaisuutta; se muutti sitä, mitä ominaisuus hyväksyy. Kohtele versioaluetta osana sopimusta, jota vasten kirjoitat.

Mistä tunniste tulee

Avaa aiottu profiili Connectissa ja kopioi sen profiilin ID profiilin omista tiedoista. Käytä tätä arvoa sen sijaan, että käyttäisit listalta tunnistamaasi nimeä, koska nimi on tarra ja tunniste on se, mihin sovellus vertaa. Taskerin Send Intent -toiminnon yhteyskentät näyttävät alla olevan kaltaisilta, ja vain tunniste on korvattu. Pidä myös henkilökohtaisen tai työprofiilin sovellusinstanssi johdonmukaisena.

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

Työprofiilin kopio, jolla on sama paketin nimi ja toinen tallennettu profiili, hyväksyy intentin eikä löydä yhtään sopivaa profiilia, mikä näyttää rikkinäiseltä tehtävältä eikä laajuusvirheeltä. Jos profiili tuodaan uudelleen tai korvataan, pidä tunnistetta epäilyttävänä ja tarkista se uudelleen. Uudelleentuonti tuottaa usein uuden profiilimerkinnän, vaikka näyttönimi pysyisi muuttumattomana. Tarkista tunniste ennen kuin muutat mitään muuta.

Jätä liittymättömät kentät tyhjiksi dokumentaation mukaisesti. Luokan, MIME-tyypin ja tietojen kentät, joita opas ei pyydä, voivat muuttaa sitä, miten Android ratkaisee intentin, ja eri tavalla ratkeava intent voi käynnistää sovelluksen käynnistämättä profiiliasi.

Mitä toiminto tekee ja mitä se jättää sinulle

Yhteysintentin lähettäminen pyytää sovellusta käynnistämään profiilin. Se ei ohita sitä valtuutusta, jota profiili vaatii. Connect voi silti näyttää kehotteen, minkä vuoksi dokumentoitu autonominen tapaus olettaa, ettei lisävaltuutusta eikä tallennettuja yhteystietoja ole. Kiusaus on poistaa tämä raja upottamalla salasanoja tai yksityisen avaimen salaisuuksia jaettuun Tasker-vientiin.

Älä tee sitä. Tehtävän vienti on tekstitiedosto, jota ihmiset kopioivat keskusteluketjuihin, ja sinne sijoitetut salaisuudet paljastuvat heti, kun se jaetaan. Käytä sovelluksen omia tallennettuja yhteystietoja, jos profiili tarvitsee niitä, ja anna MFA-kehotusten pysyä kehotteina. Kaikki, mikä välttää kehotteen tallentamalla vastauksen, on siirtänyt salaisuuden sen sijaan että olisi ratkaissut ongelman.

Yhteyden katkaisun puolella on oma dokumentoitu toimintonsa, eikä se ole asiakkaalle tehty temppu:

Action: net.openvpn.openvpn.DISCONNECT
Extra: net.openvpn.openvpn.STOP:true
Package: net.openvpn.openvpn
Class: net.openvpn.unified.MainActivity
Target: Activity

Yhdistäminen tarkoituksella olematomaan profiiliin katkaisun pakottamiseksi on sellainen kiertotie, joka esiintyy vanhoissa ketjuissa ja epäonnistuu sitten hiljaa päivityksen jälkeen. Käytä nimenomaista toimintoa.

Tarkista tila ennen kuin seuraava vaihe käynnistyy

Onnistunut intentin käynnistys todistaa, että pyyntö toimitettiin, ei sitä että tunneli on olemassa. Jos tehtävä avaa sen jälkeen sisäisen sovelluksen,tämä vaihe tarvitsee valmiusehdon, jolla on rajattu aikakatkaisu. Välitön toiminto lähettämisen jälkeen osuu lopulta kehotteeseen.

$ 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

Resolve-kysely vahvistaa, että paketti ja aktiviteetti, joihin tähtäät, ovat olemassa kyseisessä laitteessa, mikä sulkee pois kirjoitusvirheen luokkakentässä. Aktiviteettivedos näyttää, mitä tehtäväsi suorittamisen jälkeen on todella etualalla, ja se on halvin tapa nähdä, avasiko sovellus kehotteen sen sijaan että yhdistäisi. Suorita molemmat epäonnistuneen tehtävän jälkeen sen sijaan että arvaisit, mikä kenttä on väärin. Luokan nimen poikkeama tuottaa välittömän virheen, kun taas puuttuva profiili ei tuota lainkaan näkyvää virhettä.

Päätä katkaisun omistajuus ennen kuin toimitat tehtävän. Oikotie, joka repii alas tunnelin, josta toinen työtehtävä on riippuvainen, tuottaa tukipyynnön, joka ei muistuta lainkaan syytään. Kahden automaation pitäminen, jotka molemmat ohjaavat samaa asiakasohjelmaa, luo kilpajuoksun, jota et voi debugata lokeista, joten poista vanhentunut toiminto, kun uusi toimii.

Aiheeseen liittyvät artikkelit