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 მოთხოვნა ადასტურებს, რომ პაკეტი და აქტივობა, რომლებსაც მიზნად ისახავთ, ამ მოწყობილობაზე არსებობს, რაც კლასის ველში ბეჭდვით შეცდომას გამორიცხავს. აქტივობის დამპი აჩვენებს, რა არის სინამდვილეში წინა პლანზე თქვენი დავალების გაშვების შემდეგ, და ეს ყველაზე იაფი გზაა იმის სანახავად, გახსნა თუ არა აპმა მოთხოვნა დაკავშირების ნაცვლად. გაუშვით ორივე წარუმატებელი დავალების შემდეგ, იმის გამოცნობის ნაცვლად, რომელი ველია არასწორი. კლასის სახელში შეუსაბამობა მყისიერ შეცდომას იძლევა, მაშინ როცა არარსებული პროფილი არავითარ ხილულ შეცდომას არ იძლევა.
გადაწყვიტეთ გათიშვის მფლობელობა, სანამ დავალებას გაუშვებთ. მალსახა, რომელიც ამონგრავს გვირაბს, რომელზეც სხვა სამუშაო დავალებაა დამოკიდებული, წარმოქმნის მხარდაჭერის ბილეთს, რომელიც თავის მიზეზს სრულიად არ ჰგავს. ორი ავტომატიზაციის შენახვა, რომლებიც ორივე ერთ კლიენტს მართავს, ქმნის რბოლას, რომელსაც ჟურნალებიდან ვერ გამართავთ, ამიტომ წაშალეთ მოძველებული მოქმედება, როგორც კი ახალი იმუშავებს.