Virtlab:Protokoly/Konzolový server
Z VirtlabWiki
Verze z 11:26, 15. 10. 2007 Vav166 (Diskuse | příspěvky) (Stránka Virtlab:Komunikační protokol Konzolového serveru přemístěna na stránku Virtlab:Protokoly/Konzolový server) ← Předchozí porovnání |
Aktuální verze Kuc274 (Diskuse | příspěvky) (→Iniciace) |
||
Řádka 1: | Řádka 1: | ||
+ | '''Komunikační protokol konzolového serveru''' slouží pro zajištění výměny dat mezi [[:Kategorie:Applet| konzolovým appletem]] (emulujícím terminál) a [[:Kategorie:Konzolový server|konzolovým serverem]], který umožňuje přímou výměnu dat s konzolí daného zařízení. Komunikaci lze rozdělit do několika fází: | ||
+ | |||
+ | === Iniciace === | ||
+ | Po navázání spojení na konzolový server odešle klient serveru přesně danou posloupnost čtyř řádků, každý standardně ukončený znakem LF (unix) nebo CRLF (DOS). Tyto řádky jsou následující: | ||
+ | * '''Název zařízení''', jehož konzoli chceme otevřít, ve formátu ''id@lokalita'' | ||
+ | * '''PHP session id''' (SID), což je identifikační řetězec uživatele přihlášeného k webovému rozhraní | ||
+ | * '''Tutor mode''' obsahuje řetězec s módem tutora ('''off''','''observer''','''exclusive''','''shared''') | ||
+ | * '''ID rezervace''' (celé_číslo@lokalita) | ||
+ | |||
+ | Ukázka: | ||
+ | router5@vsb<lf> | ||
+ | 5a89feb3983bd8b38ce89a153075<lf> | ||
+ | off<lf> | ||
+ | 13@vsb<lf> | ||
+ | |||
+ | === Běh === | ||
+ | Klient za sebou odesílá na server znaky, které určují ASCII kódy stisknutých kláves. Server vrací znaky výstupu, které přijal od zařízení. Nejsou definovány žádné speciální řídící znaky. Zprávy serveru pro klienta jsou přidány k k terminálovému výstupu. | ||
+ | |||
+ | ---- | ||
+ | |||
Při napojení přes TCP textově říct, na který fyz. prvek chci. | Při napojení přes TCP textově říct, na který fyz. prvek chci. | ||
Řádka 11: | Řádka 31: | ||
Možnost zasílat zprávy mezi appletem a Cserverem (obousměrně) během již navázaného spojení na konzoli – informace o vypršení času, varování několik minut před odpojením, informace, že se připojil Tutor a další, viz stávající protokol – patrně formou speciálních vyhrazených binárních znaků označující příkaz, navrhuji systém TLV (vyhrazený znak následující položkami Type(kód příkazu)-Length(délka následných dat)-Value(data proměnné délky pro příkaz)). | Možnost zasílat zprávy mezi appletem a Cserverem (obousměrně) během již navázaného spojení na konzoli – informace o vypršení času, varování několik minut před odpojením, informace, že se připojil Tutor a další, viz stávající protokol – patrně formou speciálních vyhrazených binárních znaků označující příkaz, navrhuji systém TLV (vyhrazený znak následující položkami Type(kód příkazu)-Length(délka následných dat)-Value(data proměnné délky pro příkaz)). | ||
- | Zabezpeřčení necháme na úrovni sítě. | + | Zabezpečení necháme na úrovni sítě. |
[[Kategorie:Konzolový server]] | [[Kategorie:Konzolový server]] | ||
[[Kategorie:Protokol]] | [[Kategorie:Protokol]] |
Aktuální verze
Komunikační protokol konzolového serveru slouží pro zajištění výměny dat mezi konzolovým appletem (emulujícím terminál) a konzolovým serverem, který umožňuje přímou výměnu dat s konzolí daného zařízení. Komunikaci lze rozdělit do několika fází:
Iniciace
Po navázání spojení na konzolový server odešle klient serveru přesně danou posloupnost čtyř řádků, každý standardně ukončený znakem LF (unix) nebo CRLF (DOS). Tyto řádky jsou následující:
- Název zařízení, jehož konzoli chceme otevřít, ve formátu id@lokalita
- PHP session id (SID), což je identifikační řetězec uživatele přihlášeného k webovému rozhraní
- Tutor mode obsahuje řetězec s módem tutora (off,observer,exclusive,shared)
- ID rezervace (celé_číslo@lokalita)
Ukázka:
router5@vsb<lf> 5a89feb3983bd8b38ce89a153075<lf> off<lf> 13@vsb<lf>
Běh
Klient za sebou odesílá na server znaky, které určují ASCII kódy stisknutých kláves. Server vrací znaky výstupu, které přijal od zařízení. Nejsou definovány žádné speciální řídící znaky. Zprávy serveru pro klienta jsou přidány k k terminálovému výstupu.
Při napojení přes TCP textově říct, na který fyz. prvek chci.
Přihlašování vždy k Cserveru lokality, do které uživatel patří, ten relayuje dále.
Autentizace na domovském Cserveru (globálním) uživatelským jménem a globálním rezervationID, Cserver zkontroluje v DB, zda v daný čas daný uživatel má skutečně uživatelem dodané rezervationID.
Analyzujte stávající protokol Applet-Cserver (verzi Pavla Němce i Romana Kubína), odbourejte počáteční falešný handshake, pouze jednorázový dotaz-odpověď ve stylu HTTP, v hlavičkách přihlašovacího požadavku (ve stylu HTTP) údaje pro autentizaci, v příkazu pro připojení globální identifikace fyzického laboratorního prvku, ke kterému se chce uživatel připojit. Uživatelské jméno nutno předávat také pro účely logování, kdo se kam připojuje. Pro snadné ladění Telnetem dejte možnost uvést „tajné vyhrazené“ RezervationID, které pustí na kterýkoli prvek.
Odpovědi na žádost o připojení k prvku: pozitivní nebo negativní, po pozitivní odpovědi již obousměrný přenos na konzolu síťového prvku, negativní odpověď uvede důvod – neúspěšná autentizace nebo zařízení obsazeno. Uvažujte s budoucím rozšířením – možnost převzetí konzoly tutorem (režim převzetí se/bez zobrazení textu psaného tutorem žákovi, možnost sledování, co žák píše) – identifikace přihlášení v některém subrežimu tutora formou hlavičky v přihlašovacím požadavku.
Možnost zasílat zprávy mezi appletem a Cserverem (obousměrně) během již navázaného spojení na konzoli – informace o vypršení času, varování několik minut před odpojením, informace, že se připojil Tutor a další, viz stávající protokol – patrně formou speciálních vyhrazených binárních znaků označující příkaz, navrhuji systém TLV (vyhrazený znak následující položkami Type(kód příkazu)-Length(délka následných dat)-Value(data proměnné délky pro příkaz)).
Zabezpečení necháme na úrovni sítě.