Автоматизација која со месеци се поврзуваше сигурно престанува да работи по ажурирање на клиентот, додека истиот профил сѐ уште се поврзува рачно. Тој образец упатува на управувачкиот договор, а не на VPN серверот. Некој го променил дејството што апликацијата го прифаќа или идентификаторот што го очекува, а задачата сѐ уште го испраќа стариот. Повторното изградување на врската трае помалку време од повторната проверка на серверот.

Договорот припаѓа на една апликација и еден опсег на верзии

OpenVPN Connect и OpenVPN for Android се различни апликации, а intent што именува еден пакет не прави ништо во другата. Пред да ја допрете задачата, потврдете кој клиент е инсталиран и која верзија го создала однесувањето со кое споредувате. За Connect на Android 3.3.2 или поново документираната интеграција со Tasker очекува ID на профил. Постарите упатства што ставаат AS или PC пред прикажаното име опишуваат претходен договор, а нивното копирање во тековна задача е вообичаената причина да не се случува ништо.

Таа граница на верзии објаснува повеќето извештаи дека порано работело. Апликацијата не ја расипа функцијата; го промени она што функцијата го прифаќа. Третирајте го опсегот на верзии како дел од договорот кон кој пишувате.

Од каде доаѓа идентификаторот

Отворете го саканиот профил во Connect и копирајте го неговиот ID на профил од деталите на самиот профил. Користете ја таа вредност наместо име што го препознавате од списокот, бидејќи името е ознака, а идентификаторот е она со што апликацијата споредува. Полињата за врска во дејството Send Intent во Tasker изгледаат како блокот подолу, при што е заменет само идентификаторот. Одржувајте доследност и на примерокот од апликацијата за личниот или работниот профил.

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

Копија во работниот профил со исто име на пакет и друг зачуван профил ќе го прифати intent-от и нема да најде соодветен профил, што изгледа како расипана задача, а не како грешка во опсегот. Ако профилот се увезе повторно или се замени, сметајте го идентификаторот за сомнителен и проверете го повторно. Повторното увезување често создава нов запис за профил, дури и кога прикажаното име не се менува. Проверете го идентификаторот пред да промените нешто друго.

Оставете ги неповрзаните полиња празни, како што е документирано. Полињата за категорија, MIME тип и податоци што водичот не ги бара можат да го променат начинот на кој Android го решава intent-от, а intent што се решава поинаку може да ја отвори апликацијата без да го стартува вашиот профил.

Што прави дејството и што ви остава

Испраќањето на intent-от за поврзување бара од апликацијата да стартува профил. Тоа не ја заобиколува авторизацијата што ја бара тој профил. Connect може сѐ уште да прикаже барање, поради што документираниот автономен случај претпоставува нема дополнителна авторизација и нема зачувани податоци за поврзување. Искушението е да се отстрани таа граница со вградување лозинки или тајни на приватниот клуч во споделен извоз на Tasker.

Не го правете тоа. Извозот на задача е текстуална датотека што луѓето ја копираат во чет-нишки, а тајните ставени таму се откриваат во моментот кога ќе се сподели. Користете ги сопствените зачувани податоци за поврзување на апликацијата ако на профилот му се потребни, и оставете барањата за MFA да останат барања. Сѐ што го избегнува барањето со зачувување на одговорот ја преместило тајната наместо да го реши проблемот.

Страната за исклучување има свое документирано дејство и тоа не е трик против клиентот:

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

Поврзувањето со намерно непостоечки профил за да се присили исклучување е вид заобиколно решение што се појавува во стари нишки и потоа тивко не успева по ажурирање. Користете го експлицитното дејство.

Проверете ја состојбата пред да се изврши следниот чекор

Успешното стартување на intent-от докажува дека барањето е доставено, а не дека постои тунел. Ако задачата потоа отвори внатрешна апликација,тој чекор бара услов за подготвеност со ограничено време. Непосредно дејство по испраќањето на крајот ќе удри во барање.

$ 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 потврдува дека пакетот и активноста кон кои целите постојат на тој уред, што исклучува печатна грешка во полето за класа. Исписот на активноста покажува што е навистина во преден план откако ќе се изврши вашата задача, и тоа е најевтиниот начин да се види дали апликацијата отворила барање наместо да се поврзе. Извршете ги двете по неуспешна задача наместо да погодувате кое поле е погрешно. Несовпаѓањето во името на класата дава непосредна грешка, додека профилот што недостасува не дава никаква видлива грешка.

Одлучете за сопственоста на исклучувањето пред да ја испратите задачата. Кратенка што урива тунел од кој зависи друга работна задача ќе создаде барање за поддршка што воопшто не наликува на својата причина. Одржувањето две автоматизации што и двете управуваат со истиот клиент создава трка што не можете да ја отстраните од дневниците, затоа избришете го застареното дејство штом новото проработи.

Поврзани статии