OpenVPN Connect اور Tasker: پروفائل کی ID، نام نہیں
Android 3.3.2 یا اس سے نئے پر OpenVPN Connect پروفائل کی ID قبول کرتا ہے، دکھایا جانے والا نام نہیں۔ Tasker کا intent دوبارہ بنائیں اور اگلے مرحلے کو حقیقی کنکشن حالت سے مشروط کریں۔
ایک آٹومیشن جو مہینوں تک قابلِ بھروسا طور پر جڑتی رہی، کلائنٹ اپڈیٹ کے بعد کام کرنا چھوڑ دیتی ہے، جبکہ وہی پروفائل اب بھی ہاتھ سے جڑتا ہے۔ یہ نمونہ کنٹرول معاہدے کی طرف اشارہ کرتا ہے، 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 استفسار تصدیق کرتا ہے کہ جس پیکیج اور سرگرمی کو آپ نشانہ بنا رہے ہیں وہ اس ڈیوائس پر موجود ہیں، جو کلاس فیلڈ میں ٹائپنگ کی غلطی کو خارج کرتا ہے۔ سرگرمی کا ڈمپ دکھاتا ہے کہ آپ کا کام چلنے کے بعد واقعی سامنے کیا ہے، اور یہ دیکھنے کا سستا ترین طریقہ ہے کہ ایپ نے جڑنے کے بجائے کوئی مطالبہ کھولا یا نہیں۔ ناکام کام کے بعد دونوں چلائیں، بجائے اس کے کہ اندازہ لگائیں کون سی فیلڈ غلط ہے۔ کلاس کے نام میں فرق فوری غلطی پیدا کرتا ہے، جبکہ غائب پروفائل کوئی نظر آنے والی غلطی پیدا نہیں کرتا۔
کام بھیجنے سے پہلے منقطع کرنے کی ملکیت طے کریں۔ وہ شارٹ کٹ جو ایسی سرنگ گرا دے جس پر کوئی دوسرا کام منحصر ہو، ایسی سپورٹ ٹکٹ بنائے گا جو اپنی وجہ سے ذرا بھی مشابہ نہ ہو۔ ایک ہی کلائنٹ کو کنٹرول کرنے والی دو آٹومیشنز رکھنا ایسی دوڑ پیدا کرتا ہے جسے آپ لاگز سے ٹھیک نہیں کر سکتے، اس لیے نیا کام کرنے لگے تو پرانی کارروائی حذف کر دیں۔