OpenVPN Connect i Tasker: l’ID del perfil, no el nom
OpenVPN Connect a Android 3.3.2 o posterior accepta un ID de perfil, no un nom visible. Refés l’intent de Tasker i condiciona el pas següent a l’estat real de la connexió.
Una automatització que es connectava de manera fiable durant mesos deixa de funcionar després d’una actualització del client, mentre el mateix perfil continua connectant a mà. Aquest patró apunta al contracte de control i no al servidor VPN. Algú ha canviat quina acció accepta l’aplicació, o quin identificador espera, i la tasca continua enviant l’anterior. Reconstruir el vincle porta menys temps que tornar a revisar el servidor.
El contracte pertany a una aplicació i a un interval de versions
OpenVPN Connect i OpenVPN for Android són aplicacions diferents, i un intent que anomena un paquet no fa res a l’altra. Abans de tocar la tasca, confirma quin client està instal·lat i quina versió va produir el comportament amb què compares. Per a Connect a Android 3.3.2 o posterior, l’integració documentada amb Tasker espera un ID de perfil. Les instruccions antigues que posen AS o PC davant d’un nom visible descriuen un contracte anterior, i copiar-les en una tasca actual és el motiu habitual que no passi res.
Aquest límit de versió explica la majoria dels informes que abans funcionava. L’aplicació no va trencar la funció; va canviar què accepta la funció. Tracta l’interval de versions com a part del contracte contra el qual escrius.
D’on surt l’identificador
Obre el perfil desitjat dins de Connect i copia el seu Profile ID des dels detalls del mateix perfil. Utilitza aquest valor en lloc d’un nom que reconeguis de la llista, perquè el nom és una etiqueta i l’identificador és el que l’aplicació compara. Els camps de connexió de l’acció Send Intent de Tasker s’assemblen al bloc de sota, amb només l’identificador substituït. Mantén també coherent la instància de l’aplicació personal o de perfil de feina.
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
Una còpia al perfil de feina amb el mateix nom de paquet i un altre perfil desat acceptarà l’intent i no trobarà cap perfil coincident, cosa que sembla una tasca trencada i no un error d’abast. Si el perfil es reimporta o se substitueix, considera l’identificador sospitós i torna a comprovar-lo. Reimportar sol produir una entrada de perfil nova encara que el nom visible no canviï. Comprova l’identificador abans de canviar qualsevol altra cosa.
Deixa buits els camps no relacionats tal com indica la documentació. Els camps de categoria, tipus MIME i dades que la guia no demana poden canviar com resol Android l’intent, i un intent que es resol de manera diferent pot obrir l’aplicació sense iniciar el teu perfil.
Què fa l’acció i què et deixa a tu
Enviar l’intent de connexió demana a l’aplicació que iniciï un perfil. No omet l’autorització que requereixi aquest perfil. Connect encara pot mostrar un avís, i per això el cas autònom documentat suposa que no hi ha autorització addicional ni credencials de connectivitat desades. La temptació és eliminar aquest límit incrustant contrasenyes o secrets de clau privada en una exportació de Tasker compartida.
No ho facis. Una exportació de tasca és un fitxer de text que la gent copia en fils de xat, i els secrets que s’hi posen queden exposats en el moment que es comparteix. Utilitza les credencials de connectivitat desades per la mateixa aplicació si el perfil les necessita, i deixa que els avisos MFA continuïn sent avisos. Qualsevol cosa que eviti l’avís desant la resposta ha mogut el secret en lloc de resoldre el problema.
El costat de la desconnexió té la seva pròpia acció documentada, i no és un truc contra el client:
Action: net.openvpn.openvpn.DISCONNECT
Extra: net.openvpn.openvpn.STOP:true
Package: net.openvpn.openvpn
Class: net.openvpn.unified.MainActivity
Target: Activity
Connectar-se a un perfil deliberadament inexistent per forçar una desconnexió és el tipus de solució improvisada que apareix en fils antics i després falla en silenci després d’una actualització. Utilitza l’acció explícita.
Comprova l’estat abans que s’executi el pas següent
Un llançament correcte de l’intent demostra que la petició s’ha lliurat, no que existeixi un túnel. Si la tasca obre després una aplicació interna,aquest pas necessita una condició de preparació amb un temps d’espera limitat. Una acció immediata després de l’enviament acabarà disparant-se contra un avís.
$ 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
La consulta resolve confirma que el paquet i l’activitat que apuntes existeixen en aquell dispositiu, cosa que descarta una errata al camp de classe. El bolcat d’activitat mostra què hi ha realment en primer pla després que s’executi la teva tasca, i és la manera més barata de veure si l’aplicació ha obert un avís en lloc de connectar-se. Executa les dues coses després d’una tasca fallida en lloc d’endevinar quin camp està malament. Una discrepància al nom de la classe produeix un error immediat, mentre que un perfil absent no produeix cap error visible.
Decideix la propietat de la desconnexió abans de publicar la tasca. Una drecera que tomba un túnel del qual depèn una altra tasca de feina generarà un tiquet de suport que no s’assembla gens a la seva causa. Mantenir dues automatitzacions que controlen el mateix client produeix una cursa que no pots depurar des dels registres, així que esborra l’acció obsoleta quan la nova funcioni.