Virtlab:Komponenty/Applet
Z VirtlabWiki
Verze z 18:22, 22. 10. 2007 Ste377 (Diskuse | příspěvky) (→Výsledky rekonstrukce) ← Předchozí porovnání |
Verze z 18:33, 22. 10. 2007 Ste377 (Diskuse | příspěvky) (→Applet Default.conf - globální konfigurační soubor) Následující porovnání → |
||
Řádka 57: | Řádka 57: | ||
Applet pro svůj běh používá konfigurační soubor Default.conf. Tento je umístěn ve stejném místě jako balík appletu. Dalším konfiguračním souborem je b1.conf, ten definuje jaká tlačítka a menu jsou v appletu zobrazena. Tento soubor je umístěn přímo do balíku appletu. Je možné použít tento konfigurační soubor i externě, ale není zaručena stoprocentně funkčnost. | Applet pro svůj běh používá konfigurační soubor Default.conf. Tento je umístěn ve stejném místě jako balík appletu. Dalším konfiguračním souborem je b1.conf, ten definuje jaká tlačítka a menu jsou v appletu zobrazena. Tento soubor je umístěn přímo do balíku appletu. Je možné použít tento konfigurační soubor i externě, ale není zaručena stoprocentně funkčnost. | ||
- | == Applet Default.conf - globální konfigurační soubor== | + | == Applet Default.conf - globální konfigurační soubor appletu == |
+ | |||
+ | |||
+ | -- IMPORTANT NOTICE -- | ||
+ | ======================================================================= | ||
+ | common program defaults | ||
+ | ======================================================================= | ||
+ | plugins = Status,Socket,ButtonBar(1),Terminal, - nastavují se použité prvky appletu | ||
+ | pluginPath = de.mud.jta.plugin - nastavuje cestu k pluginum v balíčku | ||
+ | layout = BorderLayout - typ layut manažeru , který má být použit | ||
+ | layout.Terminal = Center - umístění jednotlivých pluginu v okně terminálu | ||
+ | layout.Status = South | ||
+ | layout.ButtonBar(1)(1) = North | ||
+ | |||
+ | Help.url = https://virtlab.cs.vsb.cz/applethelp.htm - adresa, kde je umístěn help k appletu | ||
+ | ======================================================================= | ||
+ | Applet defaults | ||
+ | ======================================================================= | ||
+ | Applet.detach = true | ||
+ | Applet.detach.fullscreen = false | ||
+ | Applet.detach.immediately = false | ||
+ | Applet.detach.menuBar = true | ||
+ | Applet.detach.startText = Connect | ||
+ | Applet.detach.stopText = Disonnect | ||
+ | Applet.disconnect = true | ||
+ | Applet.disconnect.closeWindow = true | ||
+ | to make Netscape behave good we would like to have some privileges | ||
+ | Applet.Netscape.privilege = UniversalConnect,UniversalPrintJobAccess,UniversalSystemClipboardAccess | ||
+ | ======================================================================= | ||
+ | Socket defaults | ||
+ | ======================================================================= | ||
+ | * Nastavuje IP adresu a port serveru kam se připojit - toto jsou default hodnoty, které se mění podle potřeby, applet | ||
+ | * si je přebírá jako parametr z PHP kódu | ||
+ | Socket.host = 158.196.135.24 | ||
+ | Socket.port = 10000 | ||
+ | ======================================================================= | ||
+ | Timeout settings | ||
+ | ======================================================================= | ||
+ | |||
+ | Timeout.seconds = 60 | ||
+ | Timeout.command = exit\n | ||
+ | ======================================================================= | ||
+ | Terminal defaults | ||
+ | ======================================================================= | ||
+ | nastavení parametrů vlastního terminálu | ||
+ | Terminal.foreground = #ffffff | ||
+ | Terminal.background = #000000 | ||
+ | Terminal.cursor.foreground = #000000 | ||
+ | Terminal.cursor.background = #ffffff | ||
+ | Terminal.print.color = false | ||
+ | Terminal.border = 2 | ||
+ | Terminal.borderRaised = false | ||
+ | if you use your own file use a fully qualified URL! | ||
+ | Terminal.colorSet = /de/mud/terminal/colorSet.conf | ||
+ | Terminal.scrollBar = east | ||
+ | Terminal.ButtonBar(1)(1) = north | ||
+ | now the real terminal configuration | ||
+ | Terminal.id = vt320 | ||
+ | Terminal.buffe = 100 | ||
+ | Terminal.size = [300,200] | ||
+ | Terminal.resize = screen | ||
+ | Terminal.font = Monospaced | ||
+ | Terminal.fontStyle = plain | ||
+ | Terminal.fontSize = 11 | ||
+ | ButtonBar(1).setup = /de/mud/jta/b1.conf | ||
+ | Terminal.keyCodes = /de/mud/terminal/keyCodes.conf | ||
+ | Terminal.VMS = false | ||
+ | Terminal.IBM = false | ||
+ | the setting below should be correct, but it does not work | ||
+ | Terminal.encoding = ASCII | ||
[[Kategorie:Komponenty virtlabu]] | [[Kategorie:Komponenty virtlabu]] |
Verze z 18:33, 22. 10. 2007
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 v současné verzi není, je pouze anglicky, ale bude doplněna
- Parametry appletu
- applet přijímá z PHP 6 parametrů, které mu slouží pro připojení na Conserver a následně na prvek v topologii.
- ip_addr
- IP adresa Conserveru
- ip_port
- Port na kterém Conserver poslouchá
- id_zar
- ID zařízení v topologii ve formátu : Prvek@Lokalita
- si
- Session ID, jednáse o jednoznačné ID, které určuje Session
- tutor_mode
- Určuje jestli je připojen k danému prvku Tutor a v jakém módu
Applet pro svůj běh používá konfigurační soubor Default.conf. Tento je umístěn ve stejném místě jako balík appletu. Dalším konfiguračním souborem je b1.conf, ten definuje jaká tlačítka a menu jsou v appletu zobrazena. Tento soubor je umístěn přímo do balíku appletu. Je možné použít tento konfigurační soubor i externě, ale není zaručena stoprocentně funkčnost.
Applet Default.conf - globální konfigurační soubor appletu
-- IMPORTANT NOTICE -- ======================================================================= common program defaults ======================================================================= plugins = Status,Socket,ButtonBar(1),Terminal, - nastavují se použité prvky appletu pluginPath = de.mud.jta.plugin - nastavuje cestu k pluginum v balíčku layout = BorderLayout - typ layut manažeru , který má být použit layout.Terminal = Center - umístění jednotlivých pluginu v okně terminálu layout.Status = South layout.ButtonBar(1)(1) = North Help.url = https://virtlab.cs.vsb.cz/applethelp.htm - adresa, kde je umístěn help k appletu ======================================================================= Applet defaults ======================================================================= Applet.detach = true Applet.detach.fullscreen = false Applet.detach.immediately = false Applet.detach.menuBar = true Applet.detach.startText = Connect Applet.detach.stopText = Disonnect Applet.disconnect = true Applet.disconnect.closeWindow = true to make Netscape behave good we would like to have some privileges Applet.Netscape.privilege = UniversalConnect,UniversalPrintJobAccess,UniversalSystemClipboardAccess ======================================================================= Socket defaults ======================================================================= * Nastavuje IP adresu a port serveru kam se připojit - toto jsou default hodnoty, které se mění podle potřeby, applet * si je přebírá jako parametr z PHP kódu Socket.host = 158.196.135.24 Socket.port = 10000 ======================================================================= Timeout settings ======================================================================= Timeout.seconds = 60 Timeout.command = exit\n ======================================================================= Terminal defaults ======================================================================= nastavení parametrů vlastního terminálu Terminal.foreground = #ffffff Terminal.background = #000000 Terminal.cursor.foreground = #000000 Terminal.cursor.background = #ffffff Terminal.print.color = false Terminal.border = 2 Terminal.borderRaised = false if you use your own file use a fully qualified URL! Terminal.colorSet = /de/mud/terminal/colorSet.conf Terminal.scrollBar = east Terminal.ButtonBar(1)(1) = north now the real terminal configuration Terminal.id = vt320 Terminal.buffe = 100 Terminal.size = [300,200] Terminal.resize = screen Terminal.font = Monospaced Terminal.fontStyle = plain Terminal.fontSize = 11 ButtonBar(1).setup = /de/mud/jta/b1.conf Terminal.keyCodes = /de/mud/terminal/keyCodes.conf Terminal.VMS = false Terminal.IBM = false the setting below should be correct, but it does not work Terminal.encoding = ASCII
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