Ένα μικρό πρόγραμμα που συνδέει ένα υπάρχον VPN χρειάζεται ελεγκτή, όχι νέα υλοποίηση VPN. Η υποστηριζόμενη μηχανή πρέπει να χειρίζεται τη διαπραγμάτευση και την κίνηση της σήραγγας· το πρόγραμμά σας πρέπει να εκφράζει το αίτημα του χρήστη και να εξηγεί το αποτέλεσμα ειλικρινά. Στο Linux η διεπαφή NetworkManager D-Bus δίνει σε αυτόν τον ελεγκτή ένα συγκεκριμένο μοντέλο να ακολουθήσει.

Τέσσερις έλεγχοι εμποδίζουν τον ελεγκτή να μπερδέψει ένα αποθηκευμένο προφίλ, ένα αίτημα ενεργοποίησης και μια συνεδρία σε λειτουργία.

Έλεγχος πρώτος: ποια ταυτότητα επιλέγεται

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

Επαληθεύστε τι επιστρέφει ο διαχειριστής πριν το ονομάσετε αντιστοίχιση. Ένα UUID που δεν υπάρχει πια παράγει αποτυχία αναζήτησης, που είναι διαφορετική διαδρομή κώδικα από ένα προφίλ που υπάρχει και αρνείται την ενεργοποίηση.

Έλεγχος δεύτερος: τι επιστρέφει η κλήση ενεργοποίησης

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

Για ένα VPN το συγκεκριμένο αντικείμενο επιλέγει την ενεργή βασική σύνδεση. Περνώντας τη ριζική διαδρομή αφήνετε την επιλογή συσκευής στον NetworkManager, που διαλέγει όποια είναι προεπιλεγμένη εκείνη τη στιγμή. Αυτή είναι απόφαση πλαισίου δρομολόγησης και όχι πεδίο κωδικού, και αλλάζει σε ποια συσκευή στρώνεται η σήραγγα.

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

Έλεγχος τρίτος: πώς αναπαρίσταται η κατάσταση

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

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

Έλεγχος τέταρτος: τι συμβαίνει μετά από επανεκκίνηση

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

Επιλέξτε τι σημαίνει το κλείσιμο του ελεγκτή. Το να αφήσετε ανοιχτή μια υπάρχουσα σύνδεση που ανήκει στο μηχάνημα μπορεί να είναι σωστό, και το να διαλύσετε μια σκόπιμα βραχύβια συνεδρία μπορεί επίσης να είναι σωστό. Το να αφήσετε ανοιχτή μια υπάρχουσα σύνδεση που ανήκει στο μηχάνημα μπορεί να είναι σωστό· το να διαλύσετε μια σκόπιμα βραχύβια συνεδρία μπορεί επίσης να είναι σωστό. Γράψτε αυτό το συμβόλαιο ιδιοκτησίας στη διεπαφή αντί να υποθέτετε ότι η έξοδος της διεργασίας εκτελεί την ενέργεια δικτύου. Οι χρήστες δεν πρέπει να μαντεύουν αν το κλείσιμο του παραθύρου θα ρίξει τη σήραγγά τους. Βάλτε την απάντηση στο κείμενο της διεπαφής, όχι μόνο σε σχόλιο κώδικα.

Κρατήστε την εξουσία και τα μυστικά στους ιδιοκτήτες τους

Οι άδειες επιστρέφουν ως ναι, auth ή όχι, και η διεπαφή πρέπει να αντικατοπτρίζει τη διαφορά μεταξύ επιτρεπόμενου, επιτρεπόμενου μετά από έλεγχο ταυτότητας και αρνημένου. Η εκτέλεση του ελεγκτή ως root δεν υλοποιεί πολιτική αδειών· αφαιρεί την ερώτηση.

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

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

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