Ένας αυτοματισμός που συνδεόταν αξιόπιστα για μήνες σταματά να λειτουργεί μετά από ενημέρωση του πελάτη, ενώ το ίδιο προφίλ εξακολουθεί να συνδέεται χειροκίνητα. Αυτό το μοτίβο δείχνει το συμβόλαιο ελέγχου και όχι τον διακομιστή VPN. Κάποιος άλλαξε ποια ενέργεια δέχεται η εφαρμογή ή ποιο αναγνωριστικό περιμένει, και η εργασία στέλνει ακόμη το παλιό. Η ανακατασκευή του δεσμού παίρνει λιγότερο χρόνο από τον νέο έλεγχο του διακομιστή.

Το συμβόλαιο ανήκει σε μία εφαρμογή και σε ένα εύρος εκδόσεων

Το OpenVPN Connect και το OpenVPN for Android είναι διαφορετικές εφαρμογές, και ένα intent που ονομάζει το ένα πακέτο δεν κάνει τίποτα στο άλλο. Πριν αγγίξετε την εργασία, επιβεβαιώστε ποιος πελάτης είναι εγκατεστημένος και ποια έκδοση παρήγαγε τη συμπεριφορά με την οποία συγκρίνετε. Για το Connect σε Android 3.3.2 ή νεότερο, η τεκμηριωμένη ενσωμάτωση Tasker περιμένει ID προφίλ. Οι παλαιότερες οδηγίες που βάζουν AS ή PC πριν από ένα εμφανιζόμενο όνομα περιγράφουν προηγούμενο συμβόλαιο, και η αντιγραφή τους σε τρέχουσα εργασία είναι ο συνηθισμένος λόγος που δεν συμβαίνει τίποτα.

Αυτό το όριο έκδοσης εξηγεί τις περισσότερες αναφορές ότι παλιά δούλευε. Η εφαρμογή δεν έσπασε τη λειτουργία· άλλαξε το τι δέχεται η λειτουργία. Αντιμετωπίστε το εύρος εκδόσεων ως μέρος του συμβολαίου για το οποίο γράφετε.

Από πού προέρχεται το αναγνωριστικό

Ανοίξτε το επιθυμητό προφίλ μέσα στο Connect και αντιγράψτε το ID προφίλ του από τα στοιχεία του ίδιου του προφίλ. Χρησιμοποιήστε αυτή την τιμή αντί για ένα όνομα που αναγνωρίζετε από τη λίστα, γιατί το όνομα είναι ετικέτα και το αναγνωριστικό είναι αυτό με το οποίο αντιπαραβάλλει η εφαρμογή. Τα πεδία σύνδεσης στην ενέργεια Send Intent του Tasker μοιάζουν με το παρακάτω μπλοκ, με μόνο το αναγνωριστικό να αντικαθίσταται. Διατηρήστε συνεπές και το στιγμιότυπο εφαρμογής του προσωπικού ή εργασιακού προφίλ.

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 μπορεί να εμφανίσει ακόμη ένα αίτημα, γι' αυτό η τεκμηριωμένη αυτόνομη περίπτωση υποθέτει ότι δεν υπάρχει πρόσθετη εξουσιοδότηση ούτε αποθηκευμένα διαπιστευτήρια σύνδεσης. Ο πειρασμός είναι να αφαιρεθεί αυτό το όριο ενσωματώνοντας κωδικούς πρόσβασης ή μυστικά ιδιωτικού κλειδιού σε ένα κοινόχρηστο export του Tasker.

Μην το κάνετε. Ένα export εργασίας είναι αρχείο κειμένου που οι άνθρωποι αντιγράφουν σε νήματα συνομιλίας, και τα μυστικά που τοποθετούνται εκεί αποκαλύπτονται τη στιγμή που κοινοποιείται. Χρησιμοποιήστε τα αποθηκευμένα διαπιστευτήρια σύνδεσης της ίδιας της εφαρμογής αν το προφίλ τα χρειάζεται, και αφήστε τα αιτήματα 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 επιβεβαιώνει ότι το πακέτο και η δραστηριότητα που στοχεύετε υπάρχουν σε αυτή τη συσκευή, κάτι που αποκλείει τυπογραφικό λάθος στο πεδίο κλάσης. Το dump δραστηριότητας δείχνει τι βρίσκεται πραγματικά στο προσκήνιο αφού εκτελεστεί η εργασία σας, και είναι ο φθηνότερος τρόπος να δείτε αν η εφαρμογή άνοιξε αίτημα αντί να συνδεθεί. Εκτελέστε και τα δύο μετά από μια αποτυχημένη εργασία αντί να μαντέψετε ποιο πεδίο είναι λάθος. Μια ασυμφωνία στο όνομα κλάσης παράγει άμεσο σφάλμα, ενώ ένα προφίλ που λείπει δεν παράγει κανένα ορατό σφάλμα.

Αποφασίστε την ιδιοκτησία της αποσύνδεσης πριν παραδώσετε την εργασία. Μια συντόμευση που γκρεμίζει ένα τούνελ από το οποίο εξαρτάται άλλη εργασία θα δημιουργήσει δελτίο υποστήριξης που δεν μοιάζει καθόλου με την αιτία του. Το να κρατάτε δύο αυτοματισμούς που ελέγχουν και οι δύο τον ίδιο πελάτη δημιουργεί έναν αγώνα που δεν μπορείτε να εντοπίσετε από τα αρχεία καταγραφής, οπότε διαγράψτε την παρωχημένη ενέργεια μόλις δουλέψει η νέα.

Σχετικά άρθρα