Utility d2u_*

Sada utilít d2u_* slúži na automatickú aktualizáciu inštalácie systému D2000 z FTP servera.

Poznámka: Popisovaný stav je platný od verzie d2u_client 2.2.0.6 (D2000 v7.02.002 patche).

Medzi utility d2u_* patria:

Od verzie d2u_client 2.3.0.24 je dostupný rýchly mód (štandardne zapnutý), t.j. na klientovi nekontroluje jednotlivé súbory a adresáre, ale prečíta si UUID (identifikátor) z lokálneho súboru "content.xml" v installdir a appldir a ak sa nelíšia od UUID v "content.xml" na FTP serveri, tak považuje klienta za plne synchronizovaného.
V prípade, že lokálne UUID v "content.xml" sa líši, prípadne chýba, prebehne plná aktualizácia a v prípade, že nenastala chyba, tak sa UUID do lokálneho "content.xml" zapíše. Rýchly mód je možné potlačiť prepínačom /F (viď parametre príkazového riadka).

Pre použitie rýchleho módu je treba použiť d2u_snapshot.exe minimálne verzie z 24.10.2011 a ním pregenerovať súbory content.xml na FTP serveri.

Utilita d2u_service


Utilita d2u_service beží ako servis pod užívateľom s právami na zápis do inštalačného a aplikačného adresára a umožňuje vykonať aktualizáciu, aj keď je za konzolou prihlásený užívateľ, ktorý tieto práva nemá. Utilitu musí na klientskom počítači zaregistrovať lokálny administrátor spustením "d2u_service -i" v adresári D2000_INSTALL_DIR\bin\.


Funkcionalita IPSAutoRun v d2u_service.exe

IPSAutorun umožňuje spustiť z definovaného adresára alebo prenosného USB média pripravený balíček, ktorý môže vykonať napr. aktualizáciu systému, nainštalovať patch, urobiť servisný zásah a pod. Balíček je digitálne podpísaný oprávneným subjektom a d2u_service spustí balíček iba po úspešnom overení podpisu.

IPSAutoRun balíček pozostáva z dvoch súborov:

pričom "<<nazov>>.7z" je .7zip archív a "<<nazov>>.7z.sig" je súbor s digitálnym podpisom zaručujúcim autenticitu archívu. Archív musí obsahovať súbor "\autorun.cmd" a štandardne ďalšie súbory.

d2u_service.exe sleduje prítomnosť IPSAutoRun balíčkov:


Konfigurácia IPSAutoRun

d2u_service.exe číta z registrov nasledovné parametre:

(string) HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\<<base>>\IPSAutoRun\PublicKey
- celá cesta k súboru s verejným kľúčom oprávneného subjektu (napr. "c:\D2000\D2000.EXE\utils\ipsautorun\public_key.pem"). Tento súbor musí byť chránený proti zmazaniu/zápisu prístupovými právami OS voči neautorizovaným užívateľom.

(string) HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\<<base>>\IPSAutoRun\UnpackDir
- cesta k pracovnému adresáru, do ktorého sa autorun balíčky rozbalia a odkiaľ budú spustené (napr. "c:\temp\ipsautorun\")

(string) HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\<<base>>\IPSAutoRun\WatchedDir
- cesta k pracovnému adresáru, ktorý bude monitorovaný na prítomnosť autorun balíčkov. Kvôli konzistencii balíčka a podpisu, je nutné najskôr do adresára kopírovať archív <meno>.7z a až potom podpis <meno>.7z.sig.


Podpisovanie balíčkov

Oprávnený subjekt si vygeneruje súkromný + verejný kľúč napríklad pomocou aplikácie openssl.exe, ktorú si stiahne z bezpečného zdroja (alebo použije openssl.exe, ktoré je v adresári <D2000_inštalačný_adresár>/bin resp. /bin64).

Postup generovania páru kľúčov v príkazovom riadku windows cmd.exe:

set RANDFILE=.\.rnd
openssl genrsa -out private_key.pem 4096
openssl rsa -pubout -in private_key.pem -out public_key.pem

V aktuálnom adresári vzniknú súbory "private_key.pem" - súkromný kľúč a "public_key.pem" - verejný kľúč. Privátny kľúč je nutné zabezpečiť proti neoprávnenému prístupu, bude slúžiť na podpisovanie balíčkov. Verejný kľúč je nutné rozdistribuovať na počítače, kde bude bežať d2u_service.


Postup prípravy a podpisovania balíčkov

Do balíčka (do koreňového adresára) umiestnite dávkový súbor autorun.cmd, v ktorom je implementovaná potrebná funkcionalia a prípadne ďalšie potrebné súbory. Balíček zbaľte do formátu 7zip (www.7-zip.org). Potom balíček podpíšte súkromným kľúčom nasledovným postupom (opäť je potrebný openssl.exe):

openssl dgst -sha256 -sign private_key.pem -keyform PEM -out .7z.sig .7z

Vznikne súbor .7z.sig, ktorý spolu so .7z tvorí balíček pripravnený na použitie pre d2u_service.

Utilita d2u_client


Utilita d2u_client po spustení vykoná aktualizáciu inštalačného a aplikačného adresára oproti FTP serveru a spustí zadaný proces (typicky HI.EXE).

K svojmu behu potrebuje v systémových registroch nasledovné hodnoty:

[HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\D2000V70\Update]
"FTPServer"=ip_adresa_ftp_servera ; napríklad: "192.168.103.10" [1]
"FTPMode"=mód_ftp_spojenia ; prípustné módy sú: "active" a "passive", záleží od konfigurácie firewallu
"FTPApplDir"=aplikačný_adresár_na_ftp_serveri ; napríklad "/pub/D2000.APP", [2]
"FTPInstallRoot"=inštalačný_adresár_na_ftp_serveri ; napríklad "/pub/D2000.EXE", [3]
"FTPUser"=ftp_login ; napríklad "d2update"
"FTPPassword"=ftp_password ; napríklad "w589pt7yegsf6hjx" [4]

  1. D2Update je schopný pre "Update" použiť viac FTP serverov. Ak sa použije viac FTP serverov, ich adresy musia byť oddelené čiarkami. D2Update postupne skúša spojenie so všetkými zadanými servermi a aktualizáciu vykoná s prvým fungujúcim. Počet zadaných FTP serverov nie je obmedzený.
  2. Aplikačný adresár na FTP serveri má nasledovnú štruktúru:

    súbor /aplikačný_adresár_na_ftp_serveri/content.xmld2group

    Súbor musí byť vygenerovaný utilitou d2u_snapshot.exe (viď nižšie) po každej zmene aplikačného adresára na FTP serveri:

    aplikačný adresár /inštalačný_adresár_na_ftp_serveri/aplikácia1/
    aplikačný adresár /inštalačný_adresár_na_ftp_serveri/aplikácia2/

    Toto sú aplikačné adresáre konkrétnych aplikácií.
  3. Inštalačný adresár na FTP serveri má nasledovnú štruktúru:

    súbor /inštalačný_adresár_na_ftp_serveri/update/content.xml

    Súbor musí byť vygenerovaný utilitou d2u_snapshot.exe (viď nižšie) po každej zmene aplikačného adresára na FTP serveri.

    adresár /inštalačný_adresár_na_ftp_serveri/scripts/

    Tu sú uložené skripty, ktoré budú spustené pred a po aktualizácii.

    /inštalačný_adresár_na_ftp_serveri/update/

    Tu sú adresáre bin/, gtk/, log/ atď.
  4. Password je v nezakódovanom čitateľnom tvare.

Parametre z príkazového riadka:

/V verbose
/S=scriptsfile spustí skripty popísané v scripstfile
/Lsk slovenský jazyk
/Q quiet
/A aktualizuje iba aplikačný adresár
/T test - nič fyzicky nezapisuje, iba simuluje aktualizáciu
/F fullcheck - ignoruje lokálny content.xml
/Dtime delay [time] sekúnd

Utilita d2u_reload


Utilitu používajú utility d2u_service a d2u_client na svoju aktualizáciu.

Utilita d2u_snapshot


Utilita po spustení vytvorí v aktuálnom pracovnom adresári súbor content.xml, ktorý je umiestnený na FTP serveri a d2u_client.exe podľa tohto súboru porovnáva, ktoré súbory treba stiahnuť z FTP servera.
Typický postup je nakopírovať d2u_snapshot.exe do /aplikačný_adresár_na_ftp_serveri/ a do /inštalačný_adresár_na_ftp_serveri/update/.

Pri každej zmene v inštalačnom a aplikačnom adresári na FTP serveri je potrebné zo servera spustiť obe utility, tie vygenerujú súbory /aplikačný_adresár_na_ftp_serveri/content.xml a /inštalačný_adresár_na_ftp_serveri/update/content.xml. Tieto súbory si potom pri aktualizácii klienta stiahne d2u_client.exe a podľa nich vykoná aktualizáciu.

Utility systému D2000