Seoses seadusandluse muutmisega seoses usaldusteenustega ("Elektroonilised usaldusteenused" Ukraina), on ettevõttes tekkinud vajadus, et mitmed osakonnad töötaksid võtmetega, mis on paiknenud tokenitel (hetkel on küsimus füüsiliste võtmete arvu üle veel avatud).
Kuna odavaim lahendus (tasuta) valiti kohe . Server Ubintu 18.04 käivitati tänu avaldamisele ja see toimis edukalt mitmete välistallenditega (tokenite puudumise tõttu). Erilisi probleeme, välja arvatud monopoolne omamine (kasutajale reserveerimine), sel hetkel ei esinenud. On selge, et mitme kasutaja (vähemalt kahe, alguses) juurdepääsu korraldamiseks on vajalik nende ajaliselt eraldamine ja järjestikku tööle panemine.
Küsimus tekkis: Kuidas kõige vähem vaeva nähes saavutada, et kõigil oleks kõik toimiv…
Esimene variant

. Mitmed otseteed bat-failidele, nimelt. Mitmed otseteed bat-failidele, nimelt
a) Juurdepääsu võtme ühendamine.
b) Teadlik väljalülitamine.
Punkt "b» vaidluslik, seetõttu otsustati anda võtme käsitlemiseks aega 3 minutit.
Kliendi usbip eripära seisneb selles, et pärast selle käivitamist jääb see konsoolis riputama, konsooli sessiooni katkestamata saab ühenduse „karmilt” sulgeda nii kliendi kui ka серверi poolt.
Siin on see, mis meil normaalselt töötas:
esimene: ühendamine on.bat
usbip -a 172.16.12.26 4-1
msg * "Allkiri/token ei ole saadaval või on hõivatud"teine: katkestamine off.bat
ping 127.0.0.1 -n 180
taskkill /IM usbip.exe /Fuskudes, et kasutaja ei käitu teadlikult, on skriptid ühendatud token.bat
on.bat | off.batMis toimub: kõik failid asuvad samas kaustas, käivitamine failiga token.bat, kui ühendus kasutaja poolt katkestatakse, ilmub kohe teade võtme puudumise kohta, muudel juhtudel alles pärast 180 pingutust. Esitatud koodiridu saab varustada „@ECHO OFF” ja suunata konsool „> nul” ni, et kasutajat liiga palju šokeerida, kuid testimiseks ei ole see vajalik. Esialgne „test” USB-mälu peal näitas, et kõik on ennustatav-usaldusväärne-selge. Samuti ei ole serveri poolt vaja mingeid manipuleerimisi.

Muidugi, töötades otse tokeniga, ei läinud kõik nii nagu oodatud: seadmehalduris registreeritakse token kahel seadmel (WUDF ja nutikaart), kuid võrgus ainult WUDF-na (kuigi PIN-koodi pärimiseks on sellest piisavalt).

Samuti selgus, et karm "taskkill" ei ole nii karm ja kliendi ühenduse katkestamine on probleemne ning isegi kui see õnnestub, ei garanteeri see, et serveris ühendus suletakse.
Loovutades kõik konsoolid kliendil, muutus teine skript järgmisekuiseks:
ping 127.0.0.1 -n 180 > nul
taskkill /IM usbip.exe /F /T > nul
ping 127.0.0.1 -n 10 > nul
taskkill /IM conhost.exe /F /T > nulkuigi selle efektiivsus on alla 50%, kuna server jätkas järjekindlalt ühenduse arvamist avatud olevaks.
Ühendusprobleemid viisid mõteteni serveripoolse uuendamise üle.
Serveripoolne
Mida on vaja:
- Keerata mitteaktiivsed kasutajad teenusest välja.
- Näha, kes praegu kasutab (või veel kasutab) tokenit.
- Näha, kas token on arvutisse ühendatud.
Need to address these tasks using crontab and apache services. The discrete rewriting of the monitoring state results for points 2 and 3 indicates that the file system can be located on a ramdrive. The line has been added to /etc/fstab
tmpfs /ram_drive tmpfs defaults,nodev,size=64K 0 0
A folder named script has been created in the root with scripts for unmounting and mounting the token usb_restart.sh
usbip unbind -b 1-2
sleep 2
usbip bind -b 1-2
sleep 2
usbip attach --remote=localhost --busid=1-2
sleep 2
usbip detach --port=00Getting the list of active devices usblist_id.sh
usbip list -r 127.0.0.1 | grep ':' |awk -F ":" '{print $1}'| sed s/' '//g | grep -v "^$" > /ram_drive/usb_id.txtGetting the list of active IPs (with further development to show user identifiers) usbip_client_ip.sh
netstat -an | grep :3240 | grep ESTABLISHED|awk '{print $5}'|cut -f1 -d":" > /ram_drive/usb_ip_cli.txtThe crontab looks like this:
*/5 * * * * /!script/usb_restart.sh > /dev/null 2>&1
* * * * * ( sleep 30 ; /!script/usblist_id.sh > /dev/null)
* * * * * (sleep 10 ; /!script/usbip_client_ip.sh > /dev/null)Thus, we have: every 5 minutes a new user may connect, regardless of who was working with the token. The folder /ramdrive has been linked to the HTTP server via a symlink, containing 2 text files that show the server status of usbip.
Järgmine osa: «Kole ümbrikus»
II variant. Kasutajat on pisut rõõmustada vähem hirmutava liidesega. Olles mures, et kasutajatel on erinevad Windowsi versioonid koos erinevate raamistikega, erinevate õigustega, ei leidnud ma vähem probleemset lähenemist kui ma ei leidnud (ma olen loomulikult C#-i poolt, aga mitte sel juhul). Bat-failide käivitamine liideste kaudu on võimalik ka taustal, minimiseerituna, kuid ilma nõuetekohase testimiseta, arvan isiklikult, et on vajalik kasutajate rahulolematuse kogumiseks visualiseerida.

Liidese ja tarkvaraküljega on lahendatud järgmised ülesanded:
- Kuvamine, kas token on hetkel hõivatud.
- Esmasel käivitamisel algne seadistamine «õigete» bat-failide genereerimisega, mis teostavad sessiooni käivitamist ja katkestamist serveriga. Järgmistes käivitustes «teenuserežiimi» rakendamine parooli kaudu.
- Serveriga ühenduse olemasolu kontrollimine, mille tulemuseks küsitakse sellelt teavet hõivamise kohta või kuvatakse sõnum probleemi kohta. Ühenduse taastumisel hakkab programm automaatselt töötama tavarežiimis.
Veebiserveriga töötamine on rakendatud täiendava tööriista fphttpclient abil.

on ka jätkuvaid mõtteid artikli teemal, samuti algne osaline vaimustus VirtualHere toote omaduste üle...
Allikas: habr.com
