Virtlab:Komponenty/Applet
Z VirtlabWiki
← Starší verze | Novější verze →
Klíčovou součástí klientského webového rozhraní je applet, jehož úkolem je zajistit uživateli vzdálený přístup k sériovým, případně telnetovým konzolám síťových prvků. Konzolový applet čte vstup uživatele a posílá ho konzolovému serveru (CServer),který zpět mu odesílá výstupy ze zařízení. Konzolový applet se rovněž umí přípojit v módu tutora, což umožňuje tomuto speciálnímu uživateli sledovat práci obyčejných uživatelů, případně jim pomáhat s konfigurací.
Obsah |
Požadavky na rekonstrukci appletu z nedistribuované verze
- Prepsat to cele slusne. Zvaz, do jake miry jen vycistit existujici kody nebo se jimi nechat inspirovat a napsat to cele znovu. Nekdy se to za nedefinovanych okolnosti zasekava.
- Potrebovali bychom v blizke budoucnosti take, aby applet byl pouzitelny nejen pro CLI Cisca, kde se vystaci se zpracovavanim sipek nahoru, dolu, doleva, doprava a backspace, ale i pro vzdaleny pristup na Linuxy, kde si clovek bude chtit spustit rekneme vi. Jde tedy o to vymyslet, jake ridici znaky by mel applet umet zpracovavat (jak jdouci ze strany uzivatele tak od serveru). Za idealni bych povazoval, kdyby umel zpracovavat, resp. generovat ridici znaky podle stanardu nejakeho vhodneho terminalu, rekneme VT100.
- Je otazkou, zda uz nejaky terminal emulator pro vt100 (ci jiny) nekdo v Jave uz nenapsal a zda by se to nedalo jako opensource jen prevzit, prip. upravit. Timhle pruzkumem bych mozna zacal, usetrilo by nam to tunu prace.
- Soucasti vypracovani by mela byt zakladni dokumentace k parametrum appletu, jen nejaky odstavec (nejlepe i do wiki). Mel bys rozkoumat a popsat existujici parametry a pokud nejsou moc nesystematicke, nechat jak jsou kvuli kompatibilite se zbytkem systemu. Pokud bys je menil, dej vedet.
- Protokol komunikace s konzolovym serverem prevzit z existujicich zdrojaku, mel by byt take popsan na strankach vl-wiki, nebo kontaktovat autora conserveru (thrabalek@seznam.cz).
- Vyhodit ty veci kolem nepovedeneho pokusu o sifrovani parametru a obsahu. Pis to prosim s ohledem na to, ze parametry appletu mohou zase nekdy v budoucnu byt pripadne zasifrovany, takze napis nejakou obalujici funkcni na zjistovani parametru appletu. Stejne tak prosim ber v potaz, ze pozdeji muzeme chtit sifrovat i data prenasena mezi appletem a conserverem (asi pomoci SSL), takze vsechny cteni/zapisy do streamu by mely jit pres spolecne funkce, do kterych by se da (de)sifrovani pozdeji snadno doplnit.
- Ber prosim v uvahu moznou podporu vicejazycnosti v menu. Za idealni bych povazoval pridat (volitelny) parametr appletu, kterym se zvoli jazyk menu. Dafault by mela byt anglictina.
- Potrebujeme dale dodelat funkce pristupne pomoci menu, ktere poslou do streamu ke conserveru nektery ze znaku Ctrl-A az Ctrl-Z. Z klavesnice vygenerovat bohuzel na nekterych platformach a JVM nejdou a pak ani napr. neprerusime vypis z Cisca pomoc ^C.
- Kvuli kontrole zakazanych prikazu by se nam hodilo, aby si applet skladal radku, kterou uzivatel pise (vcetne toho, ze bude brat v uvahu postupne editace sipkami a vkladanim doprostred textu nebo mazani backspacem) a vzdy pri stisku ENTERu zavolal funkci, ktera se rekne, zda tento command je dovoleno provest (vnitrek funkce uz mame od Romana Kubina). V negativnim pripade by jen pisknul a enter zahodil. Do skladane radky se samozrejme nesmi priplest vypisy asynchronne generovane conserverem, jako se deje v soucasne implementaci.
- Vytahni si ze SVN konzolovy server, abys to mel proti cemu ladit (na Linuxu). Muzes jej treba nakonfigurovat, aby pripojeni z appletu presmerovaval na lokalni Telnet server. Kdyz tak Katka Ti poradi, jak s tim (nebo se ozvi).
- Vyhodnocovani zakazanych prikazu chceme rozhodne v budoucnu presunout do konzoloveho serveru, resp. mozna radeji do nejake komponenty, ktera se mu do TCP streamu predradi.
Napady, jak na to
Pavel Nemec napsal:
možná by se dal použít http://commons.apache.org/net/ (příklad http://www.java2s.com/Code/Java/Network-Protocol/ExampleofuseofTelnetClient.htm). Už jsem to zkoumal dříve, ale díky "speciálnímu :-)" protokolu se nedalo dříve použít. Filtrování příkazů na serveru je rozhodně lepší. Hodně zdaru.
Konkretniho jsem cosi nasel. Je tam funkcni priklad, http://www.java2s.com/Code/Java/Network-Protocol/ExampleofuseofTelnetClient.htm , zkousel jsem to, pripojil jsem se na telnet server, to slo v pohode, ale po prihlaseni to zobrazovalo nejak divne vracene znaky, urcite by se to dalo nejak osefovat. Tez nestiham, ale myslim ze tudy by mohla vest cesta k novemu appletu.
Tom Kucera napsal:
K ukolu "DISCMDCSRV (Přesun vyhodnocování zakázaných příkazů z appletu do konzolového serveru .... Vhodné je nalézt vhodnou knihovnu pro vyhodnocování reg. výrazů, jako je použita v Javové implementaci.)"
Dival jsem se trochu po netu - existuje knihovna regex.h (neni sice standardizovana v POSIXu, ale vypada pouzitelne....) Pripadne by se dal volat externi program (grep, perl ?) ....
Výsledky rekonstrukce
- Applet je zcela a slušně přepsán s využitím volně dostuného appletu JAVA TELNET APPLET (JTA)
- Dokáže emulovat terminály VT100, VT220, VT320, IBM terminal, ASCII ( viužívame terminálu VT320 s kterým pracují jak Cisca, tak i emulovane Linuxové stroje )
- Umožňuje zasílání řídících znaků CTRL + A -Z a CTRL+Shift+6, toto je realizováno pomocí tlačítek z důvodu nekonzistence zasílání řídících kódů operačnímy systémy(WINDOWS XP SP2 - OK , LINUX - ne všechny fungují jak mají)
- Vyhodnocování zakázaných příkazů je realizováno mimo vlastní applet
- Multijazyčnost - současná verze appletu umí Češtinu, Němčinu a Angličtinu
Podporované kombinace OS, JAVA, Prohlížeč
- WINDOWS XP, Java ver.1.6.0_03-b05, Mozilla Firefox 2.0.0.7
- WINDOWS XP, Java ver.1.4.2, Mozilla Firefox 2.0.0.7
- WINDOWS XP, Java ver.1.6.0_03-b05, Internet Explorer 7.0 (zatím přetrvávají problémy s CSS)
- UBUNTU LINUX, Java ver.1.6.0_03-b05
- openSUSE 10.3(jádro 2.6), JAVA 1.5.0, Mozilla Firefix 2.0.0.7