OpenVPN Connect ve Tasker: adı değil, profil kimliği
OpenVPN Connect, Android 3.3.2 veya üzerinde görünen adı değil profil kimliğini kabul eder. Tasker intent’ini yeniden kurun ve sonraki adımı gerçek bağlantı durumuna bağlayın.
Aylarca güvenilir biçimde bağlanan bir otomasyon, istemci güncellemesinden sonra çalışmayı bırakırken aynı profil elle bağlanmaya devam eder. Bu örüntü VPN sunucusuna değil, denetim sözleşmesine işaret eder. Birisi uygulamanın hangi eylemi kabul ettiğini veya hangi tanımlayıcıyı beklediğini değiştirdi ve görev hâlâ eskisini gönderiyor. Bağı yeniden kurmak sunucuyu yeniden denetlemekten daha az zaman alır.
Sözleşme tek bir uygulamaya ve tek bir sürüm aralığına aittir
OpenVPN Connect ve OpenVPN for Android farklı uygulamalardır ve bir paketi adlandıran intent diğerinde hiçbir şey yapmaz. Göreve dokunmadan önce hangi istemcinin kurulu olduğunu ve karşılaştırdığınız davranışı hangi sürümün ürettiğini doğrulayın. Android 3.3.2 veya üzerindeki Connect için belgelenmiş Tasker entegrasyonu bir profil kimliği bekler. Görünen adın önüne AS veya PC koyan eski yönergeler önceki bir sözleşmeyi anlatır ve bunları güncel bir göreve kopyalamak hiçbir şeyin olmamasının olağan nedenidir.
Bu sürüm sınırı, eskiden çalışıyordu biçimindeki bildirimlerin çoğunu açıklar. Uygulama özelliği bozmadı; özelliğin neyi kabul ettiğini değiştirdi. Sürüm aralığını, karşısında yazdığınız sözleşmenin bir parçası olarak ele alın.
Tanımlayıcı nereden gelir
İstediğiniz profili Connect içinde açın ve profil kimliğini profilin kendi ayrıntılarından kopyalayın. Listeden tanıdığınız bir ad yerine bu değeri kullanın, çünkü ad bir etikettir ve uygulamanın karşılaştırdığı şey tanımlayıcıdır. Tasker’daki Send Intent eyleminin bağlantı alanları aşağıdaki bloğa benzer, yalnızca tanımlayıcı değiştirilir. Kişisel veya iş profili uygulama örneğini de tutarlı tutun.
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
Aynı paket adına ve farklı bir kayıtlı profile sahip bir iş profili kopyası intent’i kabul eder ve eşleşen bir profil bulamaz; bu, kapsam hatasından çok bozuk bir görev gibi görünür. Profil yeniden içe aktarılır veya değiştirilirse tanımlayıcıyı şüpheli sayın ve yeniden denetleyin. Yeniden içe aktarma, görünen ad değişmese bile genellikle yeni bir profil girdisi üretir. Başka bir şeyi değiştirmeden önce tanımlayıcıyı denetleyin.
İlgisiz alanları belgelendiği gibi boş bırakın. Kılavuzun istemediği kategori, MIME türü ve veri alanları Android’in intent’i nasıl çözdüğünü değiştirebilir ve farklı çözülen bir intent uygulamayı profilinizi başlatmadan açabilir.
Eylemin ne yaptığı ve size ne bıraktığı
Bağlantı intent’ini göndermek uygulamadan bir profil başlatmasını ister. Bu, profilin gerektirdiği yetkilendirmeyi atlamaz. Connect yine de bir istem gösterebilir; bu yüzden belgelenmiş özerk durum, ek yetkilendirme ve kayıtlı bağlantı kimlik bilgisi olmadığını varsayar. Cazibe, parolaları veya özel anahtar sırlarını paylaşılan bir Tasker dışa aktarımına gömerek bu sınırı kaldırmaktır.
Bunu yapmayın. Görev dışa aktarımı, insanların sohbet dizilerine kopyaladığı bir metin dosyasıdır ve oraya konan sırlar paylaşıldığı anda açığa çıkar. Profil bunlara ihtiyaç duyuyorsa uygulamanın kendi kayıtlı bağlantı kimlik bilgilerini kullanın ve MFA istemlerinin istem olarak kalmasına izin verin. İstemi yanıtı saklayarak atlatan her şey, sorunu çözmek yerine sırrı taşımıştır.
Bağlantıyı kesme tarafının kendi belgelenmiş eylemi vardır ve bu istemciye oynanan bir numara değildir:
Action: net.openvpn.openvpn.DISCONNECT
Extra: net.openvpn.openvpn.STOP:true
Package: net.openvpn.openvpn
Class: net.openvpn.unified.MainActivity
Target: Activity
Bağlantıyı kesmeyi zorlamak için kasıtlı olarak var olmayan bir profile bağlanmak, eski dizilerde görünen ve güncellemeden sonra sessizce başarısız olan türden bir geçici çözümdür. Açık eylemi kullanın.
Sonraki adım çalışmadan önce durumu denetleyin
Başarılı bir intent başlatması, isteğin iletildiğini kanıtlar, tünelin var olduğunu değil. Görev ardından bir iç uygulama açarsa,o adım sınırlı zaman aşımı olan bir hazır olma koşuluna ihtiyaç duyar. Göndermeden hemen sonraki bir eylem eninde sonunda bir isteme çarpar.
$ 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 sorgusu, hedeflediğiniz paketin ve etkinliğin o cihazda var olduğunu doğrular; bu, sınıf alanındaki bir yazım hatasını eler. Etkinlik dökümü, göreviniz çalıştıktan sonra gerçekte neyin ön planda olduğunu gösterir ve uygulamanın bağlanmak yerine bir istem açıp açmadığını görmenin en ucuz yoludur. Başarısız bir görevden sonra hangi alanın yanlış olduğunu tahmin etmek yerine ikisini de çalıştırın. Sınıf adındaki bir uyumsuzluk hemen hata verir, oysa eksik bir profil hiçbir görünür hata vermez.
Görevi dağıtmadan önce bağlantıyı kesmenin sahipliğine karar verin. Başka bir iş görevinin bağlı olduğu tüneli yıkan bir kısayol, nedenine hiç benzemeyen bir destek kaydı üretir. Aynı istemciyi denetleyen iki otomasyonu tutmak, günlüklerden ayıklayamayacağınız bir yarış yaratır, bu yüzden yenisi çalışınca eski eylemi silin.