Поврзување на мал контролер со VPN во NetworkManager
Активирањето враќа рачка, а не подготвена сесија. Држете ги профилот, барањето и активното поврзување одделно и повторно изградете ја состојбата по рестарт.
Мала програма што поврзува постоечки VPN има потреба од контролер, а не од нова имплементација на VPN. Поддржаниот мотор треба да ја обработи преговарањето и сообраќајот на тунелот; вашата програма треба да го изрази барањето на корисникот и чесно да го објасни резултатот. На Linux интерфејсот NetworkManager D-Bus му дава на тој контролер конкретен модел што да го следи.
Четири проверки го спречуваат контролерот да ги помеша зачуваниот профил, барањето за активирање и работната сесија.
Прва проверка: кој идентитет се избира
Држете го UUID на профилот како траен идентитет и разрешете го преку менаџерот кога ви треба патеката на објектот. Прикажаното име можат да го делат два профила, а патеката на автобусот за време на извршување не е разумна корисничка поставка за чување. Запишете го изборот во сопствената конфигурација, а не во коментар за тоа кој запис бил втор во списокот.
Проверете што враќа менаџерот пред да го наречете совпаѓање. UUID што повеќе не постои дава грешка при пребарување, а тоа е друга кодна патека од профил што постои и одбива активирање.
Втора проверка: што враќа повикот за активирање
Документираниот повик за активирање зема патека на објект на постоечко поврзување, патека на уред и конкретен објект. Тој враќа патека на активно поврзување, а тој одговор е рачка, а не резултат за подготвеност. Не поставувајте го знамето за подготвеност на апликацијата од вратената вредност; наместо тоа претплатете се на состојбата и причината на активното поврзување.
За VPN конкретниот објект го избира активното основно поврзување. Предавањето на коренската патека го препушта изборот на уред на NetworkManager, кој го избира тој што е моментално стандарден. Тоа е одлука за контекстот на рутирање, а не поле за лозинка, и го менува уредот врз кој се поставува тунелот.
Не земајте општ пример за додавање и активирање и не очекувајте дека ќе создаде VPN профил. Документираната помошна алатка ги исклучува VPN поврзувањата, така што подготвувањето или увозот на профилот е одделен, прегледан чекор. Тоа е важно зашто подготвувањето бара овластување и преглед што копчето за поврзување не ги дава. Третирајте го увозот како административна акција со сопствена линија во дневникот и сопствен одобрувач.
Трета проверка: како е претставена состојбата
Активното поврзување поминува низ активирање, активно, деактивирање и деактивирано, а полето за причина кажува зошто. Собирањето на сето тоа во логичка вредност наречена loggedIn ги губи информациите што му требаат на корисникот и тие што ќе ги побара поддршката. Прикажете барем дали поврзувањето е во чекање, воспоставено или исчезнато, и чувајте ја низата со причина за случајот на грешка.
Поврзете ги асинхроните одговори со барањето што ги создаде. Доцното завршување на постар обид не смее да препише понова корисничка акција, а двојното притискање на Connect треба или да се игнорира или да се третира како откажување и повторен обид со видлива политика.
Четврта проверка: што се случува по рестарт
Кога менаџерот се рестартира или вашиот контролер повторно се поврзува со автобусот, изградете ја набљудуваната состојба повторно од сопственикот. Не продолжувајте да прикажувате кеширана сесија како активна затоа што старата патека на објектот останува во меморијата. Сигналите за промена на состојбата постојат токму за да може контролерот да се ресинхронизира наместо да погодува.
Изберете што значи затворање на контролерот. Оставањето на постоечко поврзување во сопственост на машината вклучено може да биде точно, а растурањето на намерно краткотрајна сесија исто така може да биде точно. Оставањето на постоечко поврзување во сопственост на машината вклучено може да биде точно; растурањето на намерно краткотрајна сесија исто така може да биде точно. Запишете го тој договор за сопственост во интерфејсот наместо да претпоставувате дека излезот на процесот ја извршува мрежната акција. Корисниците не треба да погодуваат дали затворањето на прозорецот ќе им го прекине тунелот. Ставете го одговорот во текстот на интерфејсот, не само во коментар во кодот.
Задржете ги овластувањата и тајните кај нивните сопственици
Дозволите се враќаат како да, auth или не, а интерфејсот треба да ја одрази разликата меѓу дозволено, дозволено по автентикација и одбиено. Извршувањето на контролерот како root не спроведува политика за дозволи; ја отстранува прашањето.
Акредитивите им припаѓаат на поддржаниот агент за тајни или на интеграцијата на клиентот за конфигурираниот метод на автентикација. Лозинка во изворниот код, во аргумент или во дневник е наод, а локалното административно овластување не е истиот настан како автентикацијата кај портата.
Конечно, пријавете ја состојбата на поврзувањето одделно од задачата што корисникот сака да ја изврши. Тунелот може да е активен додека приватното име или апликацијата остануваат недостапни, а тој втор неуспех заслужува сопствена порака и сопствен статус. Контролер што точно кажува кој слој откажал е покорисен од оној што кажува дека VPN е паднат.