From 52c69a3521dd9085e1b2a7832019a89dbf502016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adolfo=20G=C3=B3mez?= Date: Tue, 5 Nov 2013 21:19:15 +0000 Subject: [PATCH] After a close look at Guacomole, i noticed that i forgot a lot of things Basically, i added the scripts, images, etc.. from Guacamole and this started to work fine!!! :-) I had to fix a few thins that are not uset in this implementation, but not much.. * Added support for remote printing * Added support for mobile devices --- .../org/openuds/guacamole/TunnelServlet.java | 5 +- .../webapp/images/action-icons/guac-close.png | Bin 0 -> 704 bytes .../images/action-icons/guac-config.png | Bin 0 -> 1063 bytes .../images/action-icons/guac-delete.png | Bin 0 -> 611 bytes .../images/action-icons/guac-first-page.png | Bin 0 -> 690 bytes .../images/action-icons/guac-last-page.png | Bin 0 -> 707 bytes .../images/action-icons/guac-monitor-add.png | Bin 0 -> 703 bytes .../images/action-icons/guac-next-page.png | Bin 0 -> 626 bytes .../images/action-icons/guac-prev-page.png | Bin 0 -> 648 bytes .../images/action-icons/guac-user-add.png | Bin 0 -> 971 bytes .../main/webapp/images/arrows/arrows-d.png | Bin 0 -> 3182 bytes .../main/webapp/images/arrows/arrows-l.png | Bin 0 -> 2750 bytes .../main/webapp/images/arrows/arrows-r.png | Bin 0 -> 2784 bytes .../main/webapp/images/arrows/arrows-u.png | Bin 0 -> 3185 bytes .../src/main/webapp/images/mouse/blank.cur | Bin 0 -> 584 bytes .../src/main/webapp/images/mouse/blank.gif | Bin 0 -> 71 bytes .../src/main/webapp/images/mouse/dot.gif | Bin 0 -> 72 bytes guacamole-tunnel/src/main/webapp/index.xhtml | 286 +--- .../webapp/layouts/en-us-qwerty-mobile.xml | 312 ++++ .../src/main/webapp/layouts/en-us-qwerty.xml | 496 ++++++ .../src/main/webapp/scripts/admin-ui.js | 1472 +++++++++++++++++ .../src/main/webapp/scripts/client-ui.js | 995 +++++++++++ .../src/main/webapp/scripts/guac-ui.js | 1376 +++++++++++++++ .../main/webapp/scripts/lib/blob/LICENSE.md | 30 + .../src/main/webapp/scripts/lib/blob/blob.js | 178 ++ .../webapp/scripts/lib/filesaver/LICENSE.md | 30 + .../webapp/scripts/lib/filesaver/filesaver.js | 216 +++ .../src/main/webapp/scripts/service.js | 1398 ++++++++++++++++ .../src/main/webapp/scripts/session.js | 107 ++ .../src/main/webapp/styles/client.css | 360 ++++ 30 files changed, 7063 insertions(+), 198 deletions(-) create mode 100644 guacamole-tunnel/src/main/webapp/images/action-icons/guac-close.png create mode 100644 guacamole-tunnel/src/main/webapp/images/action-icons/guac-config.png create mode 100644 guacamole-tunnel/src/main/webapp/images/action-icons/guac-delete.png create mode 100644 guacamole-tunnel/src/main/webapp/images/action-icons/guac-first-page.png create mode 100644 guacamole-tunnel/src/main/webapp/images/action-icons/guac-last-page.png create mode 100644 guacamole-tunnel/src/main/webapp/images/action-icons/guac-monitor-add.png create mode 100644 guacamole-tunnel/src/main/webapp/images/action-icons/guac-next-page.png create mode 100644 guacamole-tunnel/src/main/webapp/images/action-icons/guac-prev-page.png create mode 100644 guacamole-tunnel/src/main/webapp/images/action-icons/guac-user-add.png create mode 100644 guacamole-tunnel/src/main/webapp/images/arrows/arrows-d.png create mode 100644 guacamole-tunnel/src/main/webapp/images/arrows/arrows-l.png create mode 100644 guacamole-tunnel/src/main/webapp/images/arrows/arrows-r.png create mode 100644 guacamole-tunnel/src/main/webapp/images/arrows/arrows-u.png create mode 100644 guacamole-tunnel/src/main/webapp/images/mouse/blank.cur create mode 100644 guacamole-tunnel/src/main/webapp/images/mouse/blank.gif create mode 100644 guacamole-tunnel/src/main/webapp/images/mouse/dot.gif create mode 100644 guacamole-tunnel/src/main/webapp/layouts/en-us-qwerty-mobile.xml create mode 100644 guacamole-tunnel/src/main/webapp/layouts/en-us-qwerty.xml create mode 100644 guacamole-tunnel/src/main/webapp/scripts/admin-ui.js create mode 100644 guacamole-tunnel/src/main/webapp/scripts/client-ui.js create mode 100644 guacamole-tunnel/src/main/webapp/scripts/guac-ui.js create mode 100644 guacamole-tunnel/src/main/webapp/scripts/lib/blob/LICENSE.md create mode 100644 guacamole-tunnel/src/main/webapp/scripts/lib/blob/blob.js create mode 100644 guacamole-tunnel/src/main/webapp/scripts/lib/filesaver/LICENSE.md create mode 100644 guacamole-tunnel/src/main/webapp/scripts/lib/filesaver/filesaver.js create mode 100644 guacamole-tunnel/src/main/webapp/scripts/service.js create mode 100644 guacamole-tunnel/src/main/webapp/scripts/session.js diff --git a/guacamole-tunnel/src/main/java/org/openuds/guacamole/TunnelServlet.java b/guacamole-tunnel/src/main/java/org/openuds/guacamole/TunnelServlet.java index 015a37df..0f0588bb 100644 --- a/guacamole-tunnel/src/main/java/org/openuds/guacamole/TunnelServlet.java +++ b/guacamole-tunnel/src/main/java/org/openuds/guacamole/TunnelServlet.java @@ -84,6 +84,8 @@ public class TunnelServlet info.setOptimalScreenWidth(Integer.parseInt(width)); info.setOptimalScreenHeight(Integer.parseInt(height)); + System.out.println("Optiomal size: " + width + "x" + height); + // Add audio mimetypes String[] audio_mimetypes = request.getParameterValues("audio"); if (audio_mimetypes != null) @@ -98,13 +100,14 @@ public class TunnelServlet GuacamoleConfiguration config = new GuacamoleConfiguration(); config.setProtocol(params.get("protocol")); - System.out.println("PArsing parameters"); + System.out.println("Parsing parameters"); Enumeration keys = params.keys(); while( keys.hasMoreElements() ) { String key = keys.nextElement(); if( "protocol".equals(key) ) continue; + System.out.println("Parameter " + key + ": " + params.get(key)); config.setParameter(key, params.get(key)); } diff --git a/guacamole-tunnel/src/main/webapp/images/action-icons/guac-close.png b/guacamole-tunnel/src/main/webapp/images/action-icons/guac-close.png new file mode 100644 index 0000000000000000000000000000000000000000..ef29d0f874ba5b173f800cb35e72204ec842f655 GIT binary patch literal 704 zcmV;x0zdtUP)xg4pxEKp4+B2k$+4){Auj*4hDB2Vkuofa2T{fMW%skVA+?ChxuE z`1C=)-g_q;gK@YRgO4#~kD)Q2WCh{cd{Q<9t$8a5kIai8FwED6FlRm+0?T|Y2y4t| zL13CM4I#&T(jo-5`6M<3iTR{i2qnxXu^?#7Crv__nsii7n52ckFrPF&nqw*x`~q+m zXIK9k0DME1F}ir}K#1dv;OSnK=;wYDs?FU@AXalWbu}u_wHiRJz)XH}R(Isv0L|_< z2k*0rqU<~KTYS$R^R)JaTmS$U!X>`G62{6l56A!jTnG$_%meb0*eOoPNS3q`n+J3? z!4@E>%mezWuq6bwd4N+Ew}3z~5AgZ|H6hT<1Kh?)4G2{80KYR-5(3>kAkPDqMF6BMk#+SE$C6f-X2k|jGDX&u*CxdTP-A^Shrj|*b8$q4zyM&e zGNeJ!07&Bz9T+)Uw17asjZ5qQ`jHwc*y5j|-Qs z&C22}m~Xx@(sgUB>*i?J?Qu)0UEepzBRiS_qriCMSik zsg07k5H`70b}fWWZD(RKgK%+Br_cMlxUyJx=hoo{w$ zW_Na#)|x6?qih0YTP;A@1j@DtMJH5BO#&+Bu-01d6w0T_K~O0*4SY-qd!e=dR0JO= z{t|fODaM->b_OV=dVwS0VM^$4U`T6ynm?;z&wzQ-i$`MSbLMhoMGCNxQ*1WVT01%L z7?=gR6Ji>`9IydsOW%;TjRgE|;qchGjts?r6QX~B7D2BK%JBhU2{>>lJnRR8H6Yl7 zlB*@TwQz9~A#3qrZv)%Fxrf5TelFPUnBz_&_$>Y|xU~rPsdy(5Y-WL{z?emRSvE$% z)yRw&LQ1J_;3v@Q#_P&{0K34UIKVJ41WW*rGUA^S448k7qAkaO7H+5IG0+5NNS@Xj z64R76F1cEH4uT7oWX^yUpwD5p>65l+mN^&l6kw3}X(;Slz=&<(5jjT$%OqzTS&QT% zfDqa?AhHVd7-01S{RVM8f|-_g+qxdh;s;1yASSX=&HlVjrv?bAd! zM^=n^39w{v+TZGVpbJ9J| zBJf5?9vBZum}#;IFqcAjC8qcbhvGYa5hKD%O1rr{1W3B2Jtj2O$!YJ>^HFC)R|vb0 z_D($G--PxwM-ic08CnvJ0>*f5KL#jitqSh#Gq`uT%HWq8+A7rw`mb)yISjZ=(p#V z7$$ZDQ*wT_#JE+PkB6d%5x+h2fNO$zloiyw07|KTVAKO{*hU3AHn)paesk1^0K?b+ z(OUlk_C4T+ZC|isbGw*#0mQaE;F@3#Wd)5AKwDxwQA&kzK0ESBvKyF^bHWnic5U@S zs9p-!H$$cZRQ`6j+7Cn|d37I&34v-q6crMcek@+?jS=dtvHQ0qW_s2><=7vPHfwzX`lF z4F90Dew8PmjurV>{9R75nXLX`qKG5_Qqa0V=z3AbL-9L9?>)tMvqHZbgNlDPcNeYR h94(tb*;aW0{sBL^OvHYxG3WpQ002ovPDHLkV1mBe*6#oS literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/images/action-icons/guac-delete.png b/guacamole-tunnel/src/main/webapp/images/action-icons/guac-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..925e958319ca538f8466ed012f93fc42957c3b23 GIT binary patch literal 611 zcmV-p0-XJcP)&i(c77RiG&1 z#-cv;CCdbK3PkZeCxJ~%$;>cwJgEy%$0G^iB_RTyDxnhop@gkP*UAMc5=ihrV=WQDT-YU{RSoh2)N6NB zh-%Hgu7*N*FJDOo{B8l!1*+hS1Vk08gfA8lAmK9)3A{@{fCL%5TR>+L>h3nZ6FZSm z{k%~nKrDgtuvMEtB!Tw0O%c#o0=L(|O4LXKz1u_;5G*04)y7WvO9JZ#$8xTaX6y9t z2G5_sAn^VF2{wQakuVxOUBZa)R0*TP(e6<8M{8%k9GW=Lg(a1uT66Ek| z30=S|C3FL?TCq(j2-w#pVrIPPZY9TJYeUH%^l^BkDCBVqU>Gbtx3j(kw*)f_iD x%*Y3~p3UsVHQy`XC^7xJ!Bc>`0Ch|+;0yH|yZa)&SRw!b002ovPDHLkV1oYC{7wJ> literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/images/action-icons/guac-first-page.png b/guacamole-tunnel/src/main/webapp/images/action-icons/guac-first-page.png new file mode 100644 index 0000000000000000000000000000000000000000..86c7a97cc721070ce77696df0f7948b778ec545f GIT binary patch literal 690 zcmV;j0!{siP)9vxQ1whgj zunYW79Gd(`M{2Tt22=>235JmMTR_q!!4R^a2Sh_~ITLIk%o2w#9Kr2cphDQi8Nu~x zFv5}G{(FF=3mg&L0l*g_1OWIUgaH5_girwRh_FW{gm3@=lFrG55E20LA%q2hCkTHM zhrXUgQez{82LO6CVa z@)t?xi=aHM;Lv;Y7A07*qoM6N<$f(yJK00000 literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/images/action-icons/guac-last-page.png b/guacamole-tunnel/src/main/webapp/images/action-icons/guac-last-page.png new file mode 100644 index 0000000000000000000000000000000000000000..b03932c82d59c02391ba205a9eb9e7faac32201e GIT binary patch literal 707 zcmV;!0zCbRP)LaHoqODK58-CZ@)Q|okL#6XeP$}W32MJ4m z25XlPbs|)=gy>UY0|`5c>jp{E-{Bf1B=-Xp65caH30V!1nj~a*gbXC?=03M&R4p;3 zgdby&pzaBJmtfKq^(?`xE9_N*XCdYfJZDB<^qf`=Xi7{LFvuBj`g0=&V4p#TN^BZc6> zNPrT4uM|8O2=MyKho}S?!2i)azeTbI)Bq2e0&0PW3;{L4L!tmB{K44ZAwhrv{O`nd zgG4hV6_ZiJgMLV=D^H9Z9&CoB7R3cT*bPa&PJq8q)HPTvhorz6JlGCNxq}D0At{&e zU^6831RQ#V2mO##fIqh`Y^Z34q};2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4tkr$zs*;lae(sq!GdFxb5Yle>`P}JqGw0ql^yHa&EV{w`DnmZw zy%6R-tQE%3brYh_ys;@*q`F5v(^%_$;7zu(Ig&dr3&l+@QC55ZV7i0p0hkV+dku@W zIT}ZEw}>}R*4-HUzC(?r8`; zmTfG$yx}$HXW6a^jLHdtm%?5-o_!G3D(drnU&Pjg~>VxuNj%pzMO zxCZP-sRz0TW@j~QXUIo#xRgN0+_M(%cJ}N{SNdZ6VAV`p=6lBfvgUMMJ}|lECtqve zg^MMJygk4FmRfTS6qF_h^z#LO-*{WRq3xso@<|nUzc+XvkbYpkZ~u{f%>Fa)M7>=7 zcehe<+VPKTIjbiH2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4u?*!==k7JrvHL(6rt9@{5HH#^u_k-Cok3*X}Qp^(=YM3@H>TR6oHa}{u z+8%FC&FAL>yk2rtu$5igQ^GW->qPeJb5kd6W$QS>UBFngwlZ_G+LxkV;hs-T6E^x9 z)X99|Vx77mT4w>v-=?>!Hc=iL!6p-0idvgJG@@<%4>?va3aVV0nFf@aIxWDpA)WIo zOU2ZH&<1zTtE?516OO?htG3oBm1iL zjQkcezU`lVYT1g87{=#+?1kM9%$#j)-+yb}2QE(DKeNN?qXO@W#VaND1Xn1$4^POv zIDhiv;56=e-W3`u3~BSvFa)3f5D?%n1?c!`bNw3Nv9phH(PXRhnSC|!!1Tf3>FVdQ I&MBb@01Q|4MF0Q* literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/images/action-icons/guac-prev-page.png b/guacamole-tunnel/src/main/webapp/images/action-icons/guac-prev-page.png new file mode 100644 index 0000000000000000000000000000000000000000..6f6819dee966231443fcfde4c9127610446290d1 GIT binary patch literal 648 zcmV;30(bq1P)3hz{mVFF{qq9Ka%Q3FtS+Gq7tirZ@C2;7uh+gfBxPvPiSweb)A0M z;SYhe2`?Q1`+eX6-$#I^?XUQG+y9+4AOgIbfGF@T0$TX%2=LVfM1!v?AR>G<0l-p3 z_$mS-!xtCO!rw%NFDf7dd@%u8;EM>z1aB@N8@#E27XCI9yqSQk@FoI)<*e|%1!TVS zuSefsg-5_+&lo zsd<`BQkxTA+Iy2!h>en}`T%SL7ZY5Tf0NXh$KjlcYe0w&cum_0JAB;C0&c8S~Yk3eNWY5}RK3`i{?H4Se-T^)mxIt#kz08?}NegLlv#%|BMC)Aq(vBbq&+DkGW3Y&-9F9bkM?lgX zpbcmNo&a5D))ym}FTo6uv>iA|Ht}ggy89))0B!&$%&a$5UT@6Is{vDhvw)Rs-M}V? zJeLb%cDm~K+5;qQ0G-qz}Wyv(|}9BY?tA{VPL;&{!lm{gOV-+ zyFK&w0;|ld+cSDcN!Cv;rh`0V@LP*kWck1I8;&&CW||0+t2V zu{LnL(zqyHq3SX>Nv z99#uFj1aRFE(W{;z6I7XdJHhL0pM;x4FkZPfbnX=^#*nb2vy&oHnW$3V%3gE8GMBD zC2(GQ1x)ZQ$$gqnF*F9a4QzDuegN2LX7?S(2f?`r`MVeF0M0uMe+z6)J$beJLw2oQ11u$5VLfEW+(Y1oncWMLFc49`3rK1KmIKW| z7x2!^eg;nz051b1Eh76^(FRNhW&o{ZZ-oc%FMYtLLG3l!272AhJ~|5sK+Oh7S^~5K z+ko}Jc#r&jzyshGaLvpfdBk#~hK+6|a25EC|M~yF)(>0&=8xniSa$M9fiICJKD70a z{nJw)1^_3?E-fQ5`G4&z(4O1?VDAV|d~kaMOpa|p?oCkAMBsQ{{|K-EI1oEY(N%ae zurRiOVOSSCL6HGVVka-b;@Am_3}}v>yadrT6d5oOJ9!DBYbY`xe34K)(KS>nAZ79r tR0hOO(C`KneUIw^j>Q%*4AFnB`vWgkjnxI44G#bS002ovPDHLkV1l$am#_c; literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/images/arrows/arrows-d.png b/guacamole-tunnel/src/main/webapp/images/arrows/arrows-d.png new file mode 100644 index 0000000000000000000000000000000000000000..15b1a77b3f88cedecdd3f83555401b03f01013af GIT binary patch literal 3182 zcmXw+c{o&UAII-Alifr;D9Khs_Ci8r--aw1TZ9o|OtRAxa+FYd7$Zv$QCT1Rp0$~x z5F!d$vW+FgG)V}(r{{g&b6xkj&;7^!y?(!QU)Sez&Rr`DV+`jJP5=M~XJTND%<%8Q z&WhaIwA{LpXqULys$yZK*H@C)?HT-7`R0M|0kK-cDa)|W?7{x%q|WPZK}h_6TM?!)=83EzqxshfM}0#~lADWBLOm zuD_9nd*}FQ^MRzBd&9tkn5|owhH}Ua0_pRIqT8SyVc2Ye_ivm1Vi=m?BmKp_16KP8 zt@DDxpNZbFJd4_BpyLYSpx~i%ChT=QG+$5~=cfk&f);#dDf;Vd$82Zv@xNblWHXt} zQ$h3Rzw^4im@M=CTl(C!|jPe~FYyEz=1@}#(^ylV_v@QD-dTzmerJSK{q zHwJUJ{cb~6#WtyQr+7rQ zvb1t61*R^bmF_K~xUqlY%p<4rfvK69ppej*_~x_m zK(1C7Dh7vDAA{@8vanA%5q)3mY5()FM#BdFGWN`D)7a$okxIKl(5vQ}Z|m&bOQ+LA zUx=y)=EYc2axo6McvxUOWyo$tvdporxR>GX?!NWWD~DraoJiZwLe;)ZDtRBFB^tM1 zc(eee`Taefk4f2yg-Ai1{hZB2->z!|+2_I?F;x2s7tN?W%{w=JX-&ws7e8>fcr+P0 zC7g`y<%(|0-CJ}FYiXCXj!>&@{&glD7rHv$Xt;Tsjc5P*YIe@yN`XS~g(2qXRGV4r zKmAgGi?R1}4Zk>98;V_aNx;LQ+Y+gs=H?hS?!&yidodh;9M+jsCSWX}vs2e<>wQ#- zv#@vOvZ$?4)0MzQg>*I z*50POk)h!M@bmj}N5Y|#){89Y`A|+?gGt;IX?y`M7_M+VDZ0(mRnFS8!Y9`G>9KWr zQ4!(VH3jsdF>B8erOd#xDXSuFSRc$(9A(^SjlX;Mg7&;9h<$Oxm%#P;`K1V{5ESj; zcNpdYNo__9D5zXOL?$FQgt+}25^>_0deNVl>l%6%K_LeI*n9NX#dt48y--;IS|CD_ z+6D^7AMt#r(7emu@KhXV#eB#3qiDTAf%wQIW#u|6fOo;osI9dcH~c0X*#|&B7fl8n z58-)=4^;r59Wa(e^a@v8z*u*A1$5Lo4G%KA{|{|WLXbL3Wn&g<DWaMOJZ+FbTJ8j{g`tYGNkMKS+$Hc4QR{4to$8gl;sRm_CN~*;`Ox@hPsH!SiKbHI5{>tNt$T1=Ukl2y`7u-*AduHZKw|TVs_g5Xy z){c4}<7&KIw%k;6rW&D|^TUz$yMNT(zMAxN|jqHCmP*HFvBeM29~1{rctEqyhpG4|Fvq0onG=Cs0L2Wo42| z4XrGz>Ykf17LCMCuN6jz@egY0a9N0b4ht*52%Yhc8#|)S>^zRR;FFt9ftxMD=FMWh zwFZ5SskHGrl6|&%kWu1pEOasU3UmppZId!ijfxulaPIti!pY}S)5GKyum2*w<*%7} ztCSO#L;KH?{aU^n4So2~g_1iZ)>f&2uu|82edS}#%1~Km=+uDU^R0rIs9PQ_(AJ$u zXq&v=Z26NSVOEQ_k6dg0VY-Rk(nnV(#3OAe`&5U7gd9EXO%7#%#n9%9*4D?SfAzvW z$BMxt6A}AAJ~f4ugl+=0$n9VbYBK#9rc>@IVxC!#0d;kC$LSLi5>>^;ritG*(AD=k zk-%`D0X80yysLR$x<5Q1GfZquG)l_f|

dQ3Bwt(~16@=H-=&-=f5#NGK? zfCY3t^kHH!n4Zo~c8;Bf2DP-*t%)2tmQxSGrptm3sC1DolVu#qO@Tg zGV!q8wl2=UJ^n!1t(=UE&NpvNw?30F4k>u}%!pxNg(-s;jV`-k|E~H1a(cI_nH>B6^L!GZk>el zkF$s+23v94yQnCnEoeIFh{`?a^jla(jb-t1j@{j%;bCQY`CguzSFg&MnVCtiXG1j_ zEbO;tO+;+Fu8r0AR)8AM-ltZ_yUwFM!#H`du62K@s;Z`gjI6Alr6r#&2I;@l-WcnQ zTI?5p-QMm$_a>EZn=&*MH1Q2_Wi=HyuvVstoM3eQpS`CEL*$XX1j9H}S#X{-{k5%f z)s2v#ac{H=;D9NFJ@f6l0vx8Nn&|Q{kP2HZaRF_=`6}Pa0}-@rFFt^WYj7TzNO literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/images/arrows/arrows-l.png b/guacamole-tunnel/src/main/webapp/images/arrows/arrows-l.png new file mode 100644 index 0000000000000000000000000000000000000000..91f8150d3eec5dbce03232af5056867cd09d2431 GIT binary patch literal 2750 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 XZ)Xd<)&p61*91f}8`J9FFJAvYpPc5l literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/images/arrows/arrows-r.png b/guacamole-tunnel/src/main/webapp/images/arrows/arrows-r.png new file mode 100644 index 0000000000000000000000000000000000000000..3ab9d5b2b463f323136c66ce1854d1df05b46406 GIT binary patch literal 2784 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 literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/images/arrows/arrows-u.png b/guacamole-tunnel/src/main/webapp/images/arrows/arrows-u.png new file mode 100644 index 0000000000000000000000000000000000000000..057cccf95314bead5d62541f8ce45bdbf6192f60 GIT binary patch literal 3185 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 z literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/images/mouse/blank.cur b/guacamole-tunnel/src/main/webapp/images/mouse/blank.cur new file mode 100644 index 0000000000000000000000000000000000000000..4e2c5eed46d3884fad8ed03e3330b55de747bada GIT binary patch literal 584 zcmZQzU}9ioP*7lE009F=1_m)8tpUUeK5{)-0I$ZZ_jW3 VwnrY*o^>vJb!yu??%Avi)&Ppi9P9u9 literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/images/mouse/dot.gif b/guacamole-tunnel/src/main/webapp/images/mouse/dot.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ac8a00b920c77ff759bf7bc2b693191c4c6ead0 GIT binary patch literal 72 zcmZ?wbhEHbRA5kGXkcUjg8%>jEB<6*ij|0P}PjHUIzs literal 0 HcmV?d00001 diff --git a/guacamole-tunnel/src/main/webapp/index.xhtml b/guacamole-tunnel/src/main/webapp/index.xhtml index 57718a30..850fef48 100644 --- a/guacamole-tunnel/src/main/webapp/index.xhtml +++ b/guacamole-tunnel/src/main/webapp/index.xhtml @@ -28,126 +28,13 @@ + + UDS - - - - - - - - - - - - - @@ -161,7 +48,34 @@

- + + +
+ + +
+ + +
+ + + + + + + + + + + + + + + + + + + diff --git a/guacamole-tunnel/src/main/webapp/layouts/en-us-qwerty-mobile.xml b/guacamole-tunnel/src/main/webapp/layouts/en-us-qwerty-mobile.xml new file mode 100644 index 00000000..0be8167a --- /dev/null +++ b/guacamole-tunnel/src/main/webapp/layouts/en-us-qwerty-mobile.xml @@ -0,0 +1,312 @@ + + + + + + + + + + Tab + + + + q + 1 + Q + q + + + + w + 2 + W + w + + + + e + 3 + E + e + + + + r + 4 + R + r + + + + t + 5 + T + t + + + + y + 6 + Y + y + + + + u + 7 + U + u + + + + i + 8 + I + i + + + + o + 9 + O + o + + + + p + 0 + P + p + + + + [ + { + + + + ] + } + + + + Back + + + + + + + + ?123 + + + + a + # + A + a + + + + s + $ + S + s + + + + d + % + D + d + + + + f + & + F + f + + + + g + * + G + g + + + + h + - + H + h + + + + j + + + J + j + + + + k + ( + K + k + + + + l + ) + L + l + + + + ; + : + + + + ' + " + + + + Enter + + + + + + + + Shift + + + + z + < + Z + z + + + + x + > + X + x + + + + c + = + C + c + + + + v + ' + V + v + + + + b + ; + B + b + + + + n + , + N + n + + + + m + . + M + m + + + + , + ! + ! + ! + + + + . + ? + ? + ? + + + + / + ? + + + + Shift + + + + + + + + Ctrl + + + + Super + + + + Alt + + + + + + + + Alt + + + + Menu + + + + Ctrl + + + diff --git a/guacamole-tunnel/src/main/webapp/layouts/en-us-qwerty.xml b/guacamole-tunnel/src/main/webapp/layouts/en-us-qwerty.xml new file mode 100644 index 00000000..8a029446 --- /dev/null +++ b/guacamole-tunnel/src/main/webapp/layouts/en-us-qwerty.xml @@ -0,0 +1,496 @@ + + + + + + + + + + Esc + + + + F1 + + + + F2 + + + + F3 + + + + F4 + + + + F5 + + + + F6 + + + + F7 + + + + F8 + + + + F9 + + + + F10 + + + + F11 + + + + F12 + + + + + + + + + ` + ~ + + + + 1 + ! + + + + 2 + @ + + + + 3 + # + + + + 4 + $ + + + + 5 + % + + + + 6 + ^ + + + + 7 + & + + + + 8 + * + + + + 9 + ( + + + + 0 + ) + + + + - + _ + + + + = + + + + + + Back + + + + + + + + Tab + + + + q + Q + Q + q + + + + w + W + W + w + + + + e + E + E + e + + + + r + R + R + r + + + + t + T + T + t + + + + y + Y + Y + y + + + + u + U + U + u + + + + i + I + I + i + + + + o + O + O + o + + + + p + P + P + p + + + + [ + { + + + + ] + } + + + + \ + | + + + + + + + + Caps + + + + a + A + A + a + + + + s + S + S + s + + + + d + D + D + d + + + + f + F + F + f + + + + g + G + G + g + + + + h + H + H + h + + + + j + J + J + j + + + + k + K + K + k + + + + l + L + L + l + + + + ; + : + + + + ' + " + + + + Enter + + + + + + + + Shift + + + + z + Z + Z + z + + + + x + X + X + x + + + + c + C + C + c + + + + v + V + V + v + + + + b + B + B + b + + + + n + N + N + n + + + + m + M + M + m + + + + , + < + + + + . + > + + + + / + ? + + + + Shift + + + + + + + + Ctrl + + + + Super + + + + Alt + + + + + + + + Alt + + + + Menu + + + + Ctrl + + + + + + + + + + + + Ins + + + + Home + + + + PgUp + + + + + + Del + + + + End + + + + PgDn + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/guacamole-tunnel/src/main/webapp/scripts/admin-ui.js b/guacamole-tunnel/src/main/webapp/scripts/admin-ui.js new file mode 100644 index 00000000..4370cf18 --- /dev/null +++ b/guacamole-tunnel/src/main/webapp/scripts/admin-ui.js @@ -0,0 +1,1472 @@ +/* + * Guacamole - Clientless Remote Desktop + * Copyright (C) 2010 Michael Jumper + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/** + * General set of UI elements and UI-related functions regarding + * administration. + */ +var GuacAdmin = { + + "containers" : { + "connection_list" : document.getElementById("connection-list"), + "user_list" : document.getElementById("user-list"), + "user_list_buttons" : document.getElementById("user-list-buttons"), + }, + + "buttons" : { + "back" : document.getElementById("back"), + "logout" : document.getElementById("logout"), + "add_connection" : document.getElementById("add-connection"), + "add_connection_group" : document.getElementById("add-connection-group"), + "add_user" : document.getElementById("add-user") + }, + + "fields" : { + "username" : document.getElementById("username") + }, + + "cached_permissions" : null, + "cached_protocols" : null, + "cached_root_group" : null + +}; + +/** + * An arbitrary input field. + * + * @constructor + */ +GuacAdmin.Field = function() { + + /** + * Returns the DOM Element representing this field. + * + * @return {Element} The DOM Element representing this field. + */ + this.getElement = function() {}; + + /** + * Returns the value of this field. + * + * @return {String} The value of this field. + */ + this.getValue = function() {}; + + /** + * Sets the value of this field. + * + * @param {String} value The value of this field. + */ + this.setValue = function(value) {}; + +}; + + +/** + * Simple HTML input field. + * + * @augments GuacAdmin.Field + * @param {String} type The type of HTML field. + */ +GuacAdmin.Field._HTML_INPUT = function(type) { + + // Call parent constructor + GuacAdmin.Field.apply(this); + + // Create backing element + var element = GuacUI.createElement("input"); + element.setAttribute("type", type); + + this.getValue = function() { + return element.value; + }; + + this.getElement = function() { + return element; + }; + + this.setValue = function(value) { + element.value = value; + }; + +}; + +GuacAdmin.Field._HTML_INPUT.prototype = new GuacAdmin.Field(); + + +/** + * A basic text field. + * + * @augments GuacAdmin.Field._HTML_INPUT + */ +GuacAdmin.Field.TEXT = function() { + GuacAdmin.Field._HTML_INPUT.apply(this, ["text"]); +}; + +GuacAdmin.Field.TEXT.prototype = new GuacAdmin.Field._HTML_INPUT(); + + +/** + * A basic password field. + * + * @augments GuacAdmin.Field._HTML_INPUT + */ +GuacAdmin.Field.PASSWORD = function() { + GuacAdmin.Field._HTML_INPUT.apply(this, ["password"]); +}; + +GuacAdmin.Field.PASSWORD.prototype = new GuacAdmin.Field._HTML_INPUT(); + + +/** + * A basic numeric field, leveraging the new HTML5 field types. + * + * @augments GuacAdmin.Field._HTML_INPUT + */ +GuacAdmin.Field.NUMERIC = function() { + GuacAdmin.Field._HTML_INPUT.apply(this, ["number"]); +}; + +GuacAdmin.Field.NUMERIC.prototype = new GuacAdmin.Field._HTML_INPUT(); + + +/** + * Simple checkbox. + * + * @augments GuacAdmin.Field + */ +GuacAdmin.Field.CHECKBOX = function(value) { + + // Call parent constructor + GuacAdmin.Field.apply(this); + + // Create backing element + var element = GuacUI.createElement("input"); + element.setAttribute("type", "checkbox"); + element.setAttribute("value", value); + + this.getValue = function() { + if (element.checked) + return value; + else + return ""; + }; + + this.getElement = function() { + return element; + }; + + this.setValue = function(new_value) { + if (new_value == value) + element.checked = true; + else + element.checked = false; + }; + +}; + +GuacAdmin.Field.CHECKBOX.prototype = new GuacAdmin.Field(); + +/** + * Enumerated field type. + * + * @augments GuacAdmin.Field + */ +GuacAdmin.Field.ENUM = function(values) { + + // Call parent constructor + GuacAdmin.Field.apply(this); + + // Create backing element + var element = GuacUI.createElement("select"); + for (var i=0; i 0) { + + // History section + var history_section = GuacUI.createChildElement(sections, "dd"); + var history_table = GuacUI.createChildElement(history_section, + "table", "history section"); + + var history_table_header = GuacUI.createChildElement( + history_table, "tr"); + + GuacUI.createChildElement(history_table_header, "th").textContent = + "Username"; + + GuacUI.createChildElement(history_table_header, "th").textContent = + "Start Time"; + + GuacUI.createChildElement(history_table_header, "th").textContent = + "Duration"; + + // Paginated body of history + var history_buttons = GuacUI.createChildElement(history_section, "div", + "list-pager-buttons"); + var history_body = GuacUI.createChildElement(history_table, "tbody"); + var history_pager = new GuacUI.Pager(history_body); + + // Add history + for (i=0; i