Аўтаматызацыя, якая месяцамі надзейна падключалася, перастае працаваць пасля абнаўлення кліента, хоць той жа профіль па-ранейшаму падключаецца ўручную. Гэты ўзор паказвае на кантракт кіравання, а не на сервер 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 пацвярджае, што пакет і актыўнасць, на якія вы нацэльваецеся, існуюць на гэтай прыладзе, што выключае друкарскую памылку ў полі класа. Вывад актыўнасці паказвае, што насамрэч знаходзіцца на пярэднім плане пасля запуску задачы, і гэта самы танны спосаб убачыць, ці адкрыла праграма запыт замест злучэння. Запусціце абодва пасля няўдалай задачы, замест таго каб угадваць, якое поле няправільнае. Разыходжанне ў імені класа дае неадкладную памылку, а адсутны профіль не дае ніякай бачнай памылкі.

Вырашыце, каму належыць адключэнне, перш чым адпраўляць задачу. Ярлык, які абрывае тунель, ад якога залежыць іншая працоўная задача, створыць запыт у падтрымку, які зусім не падобны на сваю прычыну. Трыманне двух аўтаматызацый, якія абедзве кіруюць адным кліентам, стварае гонку, якую вы не зможаце адладзіць з журналаў, таму выдаліце састарэлае дзеянне, калі новае запрацуе.

Падобныя артыкулы