Python – 31. časť / Programujeme cestou Guacamole

0

V tejto časti seriálu predstavíme jeden z možných scenárov praktického využitia prostredia Guacamole na vzdialené programovanie (nielen) v Pythone. Po tom, ako sme heroicky nainštalovali všetky komponenty potrebné na sfunkčnenie celého prostredia, teraz ukážeme, čo sme tým dosiahli a akým spôsobom dokážeme využiť ponúkané služby vo svoj prospech.

 

Komunikačné prostredie

Pri opise komunikačného prostredia použijeme konkrétne údaje platné pre tento konkrétny prípad, ktoré sa však, samozrejme, budú líšiť pri iných konfiguráciách. Ide o veľmi jednoduché prostredie pozostávajúce z klienta = počítača, z ktorého sa chceme pripájať k serveru = počítaču, na ktorom máme nainštalované všetky služby, ďalej z internetovej a intranetovej počítačovej siete a routera (obr. 1). Veľmi podobnú konfiguráciu má každý z nás doma, nemusíme teda nič špeciálne dokupovať ani akokoľvek rozširovať naše súčasné prostredie.

Súčasti komunikačného prostredia nakonfigurujeme takto:

Klientsky PC

Žiadna dodatočná inštalácia, žiadna konfigurácia. Jediné, čo budeme potrebovať, je funkčný Internetový prehliadač, ako napr. Edge, Chrome, Firefox...

 

IP adresa klienta nie je podstatná, využijeme akékoľvek pripojenie k internetu.

Router

WAN IP adresa routera je 109.98.205.101.

LAN IP adresa routera je 192.168.0.1.

 

Pretože drvivá väčšina, resp. všetky routery pracujú tak, že oddeľujú časť WAN od časti LAN, k zariadeniam pripojeným na časť LAN zo strany WAN musíme nejakým spôsobom zabezpečiť/povoliť prístup, a to napr. pomocou tzv. Port Forwarding.

 

V príslušnej časti menu konfigurácie routera nastavíme presmerovanie externého portu 62123 na internú IP a port 192.168.0.48:8080, čo znamená, že akékoľvek spojenie iniciované zo strany internetu na adresu 109.98.205.101 a port 62123 bude presmerované na lokálnu adresu 192.168.0.48 a port 8080.

Server

LAN IP adresa servera je 192.168.0.48, resp. interne 127.0.0.1 = localhost.

 

Tu máme nainštalované, správne nakonfigurované a spustené všetky služby ako MySQL, Apache, Tomcat, Guacamole, x11vnc server...

 

Apache Tomcat Guacamole Servlet reaguje na požiadavky zaslané na adresu 192.168.0.48:8080.

 

Obr. 1 Súčasti pripraveného prostredia Guacamole

Fungovanie prostredia

Klientsky PC, resp. klientske zariadenie je akékoľvek zariadenie s IP rozhraním, ktoré sme schopní pripojiť k internetu. Je jedno, či je to desktop, laptop, smartfón, tablet... Navyše na danom zariadení nemusíme nič inštalovať ani konfigurovať. Potrebujeme iba to, aby bolo na ňom možné spustiť nejaký internetový prehliadač, ktorý by neobmedzoval prístup k URL 109.98.205.101:62123. Router požiadavky prijaté na uvedenej WAN IP:port presmeruje na LAN IP servera a port 8080.

Na serveri, ktorým je v našom prípade úplne bežný laptop s nainštalovaným Elementary OS 6.1 Jólnir, máme nainštalované všetky súčasti prostredia, teda x11vnc server na porte 5959, Apache HTTP server na porte 80, MySQL server na porte 3306, Guacamole server na porte 4822, Apache Tomcat servlet kontajner na porte 8080. Okrem portu, na ktorom „počúva“ Apache Tomcat Guacamole servlet (8080), pre nás nie sú ostatné čísla až také dôležité. Interný chod Guacamole je pre nás z pohľadu externého prístupu úplne zakrytý a jednotlivé služby vzájomne komunikujú bez toho, aby sme museli do tejto komunikácie akokoľvek zasahovať, resp. ju z externého prostredia nejako konfigurovať. Démon guacd komunikuje s x11vnc serverom a Tomcat servletom úplne transparentne.

Apache Tomcat

Na chvíľu sa vrátime k Apache Tomcat implementácii Java Enterprise Edition (EE), resp. špecifikácií Jakarta EE. Hlavný rozdiel medzi Apache Tomcat a Apache HTTP serverom je ten, že Tomcat je výrazne dynamicky orientovaný na spracovanie kódu Java a aplikačná logika generácie jeho webových stránok je zväčša priamo závislá od interakcie s používateľom.

Tomcat 10 implementuje špecifikácie vytvorené ako súčasť Jakarta EE. Naopak, Tomcat 9 implementuje špecifikácie Java EE. To je dôvod, prečo na sfunkčnenie nášho prostredia musíme použiť Tomcat 9 namiesto jeho novšej verzie. Aplikácie vytvorené pre Tomcat 9 bez úpravy nebudú fungovať správne na Tomcat 10 (na transformáciu starších aplikácií musíme použiť Migration Tool for Jakarta).

Programovanie cestou Guacamole

Našou snahou je sprístupniť IDE PyCharm, ktoré sme predstavili v 26. časti nášho seriálu. Server, resp. laptop s nainštalovaným Guacamole sme nechali doma, pričom sme na ňom nezabudli spustiť všetky potrebné služby vrátane samotného Guacamole démona a x11vnc servera:

sudo systemctl start mysql tomcat9 guacd

sudo x11vnc -rfbauth /home/tester/.vnc/passwd -rfbport 5959

V neposlednom rade, pokiaľ chceme našu komunikáciu zabezpečiť, čo, samozrejme, odporúčame, musíme správne nakonfigurovať a spustiť všetky ďalšie podporné služby. V našom prípade sme z dôvodu ukážky funkcionality Guacamole nijako neriešili zabezpečenie nášho komunikačného kanála vrátane firewallu, ktorý sme nechali vypnutý.

Na klientskom PC, ktorým bol v našom prípade takisto úplne bežný laptop s nainštalovaným MS Windows 10, sme spustili Google Chrome a zadali sme webovú adresu 109.98.205.101:62123/guacamole.

Pripojenie k routeru fungovalo bez problémov a router nás správne presmeroval na server. V okne prehliadača sa nám zobrazilo prihlasovacie okno Guacamole, do ktorého sme zadali naše známe meno a heslo guacadmin. Následne nám bola zobrazená domovská stránka Guacamole s presne tými istými pripojeniami, ktoré sme vytvorili v predošlej časti seriálu. Klikli sme na spojenie ElementaryOS_VNC, potom sa nám bez problémov zobrazilo GUI nášho Elementary OS.

Následne sme spustili PyCharm a začali sme programovať. Výsledok nášho úsilia možno vidieť na obr. 2. Samozrejmé sú pravidlá a obmedzenia, ktoré musíme dodržiavať pri takomto spôsobe práce. Guacamole spojenie (Connection) môžeme dodatočne konfigurovať v príslušnom menu vrátane takých parametrov, ako sú rozmery okna, rozlíšenia, bitový rozsah palety farieb...

Obr. 2 Programovanie cestou Guacamole

 

Marek Sopko

Zobrazit Galériu

Marek Sopko

Všetky autorove články

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať