महीनों तक भरोसे से जुड़ने वाला एक ऑटोमेशन क्लाइंट अपडेट के बाद काम करना बंद कर देता है, जबकि वही प्रोफ़ाइल हाथ से अब भी जुड़ता है। यह पैटर्न VPN सर्वर की नहीं, नियंत्रण अनुबंध की ओर इशारा करता है। किसी ने बदल दिया कि ऐप कौन-सी क्रिया स्वीकार करता है या किस पहचानकर्ता की प्रतीक्षा करता है, और कार्य अब भी पुराना भेज रहा है। बाइंडिंग फिर से बनाने में सर्वर दोबारा जाँचने से कम समय लगता है।

अनुबंध एक ऐप और एक संस्करण-सीमा का है

OpenVPN Connect और OpenVPN for Android अलग-अलग ऐप हैं, और एक पैकेज का नाम लेने वाला intent दूसरे में कुछ नहीं करता। कार्य को छूने से पहले पुष्टि करें कि कौन-सा क्लाइंट इंस्टॉल है और किस संस्करण ने वह व्यवहार बनाया जिससे आप तुलना कर रहे हैं। Android 3.3.2 या उससे नए Connect के लिए Tasker का प्रलेखित एकीकरण प्रोफ़ाइल ID की प्रतीक्षा करता है। पुराने निर्देश जो दिखने वाले नाम से पहले AS या PC लगाते हैं, पिछले अनुबंध का वर्णन करते हैं, और उन्हें मौजूदा कार्य में कॉपी करना ही आम कारण है कि कुछ नहीं होता।

यह संस्करण-सीमा उन अधिकांश रिपोर्टों को समझाती है कि पहले यह काम करता था। ऐप ने सुविधा नहीं तोड़ी; उसने बदला कि सुविधा क्या स्वीकार करती है। संस्करण-सीमा को उस अनुबंध का हिस्सा मानें जिसके विरुद्ध आप लिख रहे हैं।

पहचानकर्ता कहाँ से आता है

Connect के भीतर इच्छित प्रोफ़ाइल खोलें और उसकी प्रोफ़ाइल ID प्रोफ़ाइल के अपने विवरण से कॉपी करें। सूची से पहचाने जाने वाले नाम के बजाय वही मान इस्तेमाल करें, क्योंकि नाम केवल लेबल है और पहचानकर्ता वह चीज़ है जिससे ऐप मिलान करता है। Tasker में Send Intent क्रिया के कनेक्शन फ़ील्ड नीचे दिए ब्लॉक जैसे दिखते हैं, जिनमें केवल पहचानकर्ता बदला जाता है। निजी या कार्य प्रोफ़ाइल की ऐप-प्रतिलिपि भी सुसंगत रखें।

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 क्वेरी पुष्टि करती है कि जिस पैकेज और गतिविधि को आप लक्षित कर रहे हैं वे उस डिवाइस पर मौजूद हैं, जो क्लास फ़ील्ड में टाइपिंग की गलती को रद्द करता है। गतिविधि डंप दिखाता है कि आपका कार्य चलने के बाद असल में सामने क्या है, और यह देखने का सबसे सस्ता तरीका है कि ऐप ने जुड़ने के बजाय कोई संकेत खोला या नहीं। असफल कार्य के बाद दोनों चलाएँ, बजाय इसके कि अनुमान लगाएँ कौन-सा फ़ील्ड गलत है। क्लास के नाम में अंतर तुरंत त्रुटि देता है, जबकि गायब प्रोफ़ाइल कोई दिखने वाली त्रुटि नहीं देता।

कार्य भेजने से पहले डिस्कनेक्ट का स्वामित्व तय करें। वह शॉर्टकट जो ऐसी सुरंग गिरा दे जिस पर कोई दूसरा कार्य निर्भर है, ऐसा सहायता टिकट बनाएगा जो अपने कारण से ज़रा भी नहीं मिलता। एक ही क्लाइंट को नियंत्रित करने वाले दो ऑटोमेशन रखना ऐसी दौड़ बनाता है जिसे आप लॉग से ठीक नहीं कर सकते, इसलिए नया काम करने लगे तो पुरानी क्रिया हटा दें।

संबंधित लेख