Virtlab:Komponenty/Applet
Z VirtlabWiki
Verze z 11:57, 15. 10. 2007 Ste377 (Diskuse | příspěvky) (→Výsledky rekonstrukce) ← Předchozí porovnání |
Verze z 11:58, 15. 10. 2007 Ste377 (Diskuse | příspěvky) (→Podporované kombinace OS, JAVA, Prohlížeč) Následující porovnání → |
||
Řádka 17: | Řádka 17: | ||
Applet je plně v angličtině, více jazyčnost bude doplněna. | Applet je plně v angličtině, více jazyčnost bude doplněna. | ||
- | == Podporované kombinace OS, JAVA, Prohlížeč == | + | |
- | 1)WINDOWS XP, Java ver. 1.6.0_03-b05, Mozilla Firefox 2.0.0.7 | + | |
== Napady, jak na to == | == Napady, jak na to == |
Verze z 11:58, 15. 10. 2007
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.
Výsledky rekonstrukce
Jelikož vyznat se v původním kódu nedistribuovaného appletu, byla hrůza, zvolil jsem variantu nalezení a upravení nějakého funkčního appletu který je dostupný free. Podařilo se mi najít applet JTA - Java Terminal Applet, který se umý připojit na telnet server i na SSH server. U toho appletu jsem upravil komunikační protokol tak, aby vyhovoval protistraně(CServeru),dále vyřadil telenet a ssh část. Jelikož bylo přip testování zjištěno, že pod OS Linux nejsou správně předávány řídící znaky jako CTRL+C, provedl jsem doimplemetaci tlačítek, která tyto řídící znakypo svém, stisku odešlou. Applet splňuje i požadavky na práci s konzolí XENu, je možné používat jak VI, tak i MC ale to s drobným grafickým omezením v podobě špatně vykreslených rámečků. Applet je plně v angličtině, více jazyčnost bude doplněna.
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 ?) ....