Utility d2u_*

Sada utilít d2u_* slúži na automatickú aktualizáciu inštalácie systému D2000 z FTP/SFTP servera. Podpora SFTP bola pridaná do verzie d2u_client 4.0.0.37

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\.


Utilita d2u_client


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

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

[HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\<kľúč_inštalácie>\Update]
"FTPServer"=ip_adresa_(s)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, nastavenie má význam len pre protokol FTP
"FTPApplDir"=aplikačný_adresár_na_(s)ftp_serveri ; napríklad "/pub/D2000.APP", [2]
"FTPInstallRoot"=inštalačný_adresár_na_(s)ftp_serveri ; napríklad "/pub/D2000.EXE", [3]
"FTPScriptsFile"=meno popisného súboru skriptov; napríklad "scripstfile.ini", [3]
"FTPUser"=ftp_login ; napríklad "d2update"
"FTPPassword"=ftp_password ; napríklad "w589pt7yegsf6hjx" [4]
"Protocol"= 'FTP' alebo 'SFTP' (SFTP od verzie d2u_client 4.0.0.37);  ak nie je uvedený alebo nie je rozpoznaný, použije sa FTP


  1. D2Update je schopný pre "Update" použiť viac (S)FTP serverov. Ak sa použije viac (S)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 (S)FTP serverov nie je obmedzený.
  2. Aplikačný adresár na (S)FTP serveri má nasledovnú štruktúru:

    súbor /aplikačný_adresár_na_ftp_serveri/content.xml
    Súbor content.xml musí byť vygenerovaný utilitou d2u_snapshot.exe (viď nižšie) po každej zmene obsahu aplikačných adresárov na (S)FTP serveri.

    aplikačný adresár /aplikačný_adresár_na_ftp_serveri/aplikácia1/
    aplikačný adresár /aplikačný_adresár_na_ftp_serveri/aplikácia2/
    ...
    aplikačný adresár /aplikačný_adresár_na_ftp_serveri/aplikáciaN/

  3. Inštalačný adresár na (S)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 (S)FTP serveri.

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

    Tu môžu byť uložené popisné súbory skriptov a skripty , ktoré budú spustené pred a po aktualizácii. Ak má dôjsť k spusteniu skriptov, musí špecifikované meno popisného súboru skriptov scriptsfile.ini v registroch alebo z príkazového riadka prepínačom /S (viď nižšie)
    Formát skriptového súboru je nasledovný:

    [BEFORE]
    RUN_AS_CLIENT=before_cli.cmd
    RUN_AS_SERVICE=before_srv.cmd
    
    [AFTER]
    RUN_AS_CLIENT=after_cli.cmd
    RUN_AS_SERVICE=after_srv.cmd


    sekcia [before] definuje skripty spustené pred zahájením samotného update, sekcia [after] defunuje skripty ktoré sa vykonajú po ukončení update. RUN_AS_SERVICE vykoná skript v kontexte systémovej služby d2u_service (typicky bežiacej pod kontom LOCAL_SYSTEM), RUN_AS_CLIENT vykoná skript v kontexte prihláseného užívateľa

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

    Tu sú adresáre inštalácie D2000, tj. bin/, java/, resdll/ atď.
  4. Password je v nezakódovanom čitateľnom tvare.

Parametre z príkazového riadka:

/Vverbose
/S=scriptsfile.inispustí skripty popísané v scripstfile.ini
/Lskslovenský jazyk
/Qquiet
/Aaktualizuje iba aplikačný adresár
/Ttest - nič fyzicky nezapisuje, iba simuluje aktualizáciu
/Ffullcheck - ignoruje lokálny content.xml
/Dtimedelay [time] sekúnd

Utilita d2u_reload (pre verzie d2update < 3.0)


Utilitu používali d2u_service a d2u_client na svoju aktualizáciu, od verzie 3.0 už nie je potrebná

Utilita d2u_snapshot


Utilita po spustení vytvorí v aktuálnom pracovnom adresári súbor content.xml, ktorý je umiestnený na (S)FTP serveri a d2u_client.exe podľa tohto súboru porovnáva, ktoré súbory treba stiahnuť z (S)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 (S)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.


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.

Utility systému D2000