 Stručný popis

Stručný popis

Produkt Vema Služba vzdálené správy umožňuje vzdálenou správu stanice nebo serveru a realizuje automatické instalace produktů Vema.

Služba je schopna instalovat nebo odinstalovávat produkty Vema, kontrolovat jejich integritu a kontrolovat dostupnost nové verze produktu. Ve svém lokálním úložišti uchovává instalační balíčky produktů a je schopna tyto balíčky zasílat Službě vzdálené správy na vzdáleném počítači. Takto je možné instalační balíčky distribuovat na jednotlivé stanice k automatické instalaci.

Jejích služeb využívá především aplikace Vema Správce ke správě nebo vzdálené správě dané stanice. Produkt Vema Start (modul Vema.exe) používá tuto službu ke kontrole aktuálnosti daného produktu a případně k instalaci nové verze produktu.

Jestliže je Služba vzdálené správy Vema nastavena pro běh s autorizační autoritou, pak při spouštění jednotlivých funkcí kontroluje, zda má uživatel oprávnění takovou funkci spustit.


 Vema - Služba vzdálené správy
  • Stručný popis

  • Instalace a konfigurace

  • Installer služeb


 Instalace a konfigurace

Instalace a konfigurace

Aplikace Vema – Služba vzdálené správy se instaluje standardní procedurou z instalačního MSI balíčku. Po instalaci je vhodné ji nakonfigurovat.

Vema – Služba vzdálené správy je také součástí instalace nového V3 serveru.

Pro instalaci Služby vzdálené správy doporučujeme operační systém Windows NT nebo novější.

Upozornění
Operační systém Windows řady 9x, tedy Windows 95, 95 a Millenium, není podporovanou platformou pro Službu vzdálené správy. Na počítači s těmito operačními systémy není možná automatická instalace služby a uživatel musí provést sám ručně její instalaci do operačního systému.
To znamená, že instalace z instalačního balíčku proběhne, ale služba se nenainstaluje do Windows a nespustí se. Tyto dvě operace musí uživatel provést sám prostředky operačního systému.

  • Systémové předpoklady

  • Konfigurace V3 Serveru

  • Konfigurace Služby vzdálené správy

  • Autorizace

  • Konfigurační databáze

  • Postupy


 Systémové předpoklady

Systémové předpoklady

Klasifikace konfigurací

Obecně je možné říci, že pro provoz aplikací Vema na klientské stanici podporujeme české verze operačních systémů Microsoft Windows 98 SE, 2000, XP, Server 2003 a vyšší. Nelze garantovat práci v jinojazyčných verzích s doinstalovanou češtinou. Na serverové stanici (varianta V3 a Portál) je nutný serverový operační systém Microsoft Windows 2000, Server 2003 nebo vyšší, nejlépe v české nebo anglické verzi.

Výše uvedené obecné konstatování o podporovaných platformách má však svá úskalí. Každý ze zmíněných operačních systémů existuje v různých verzích a jazykových mutacích, pro většinu z nich existují různé opravné balíčky a zejména instalace jakékoliv aplikace může zásadním způsobem ovlivnit celkové prostředí operačního systému. Není v našich silách ověřit zcela a dokonale všechny aplikace Vema na všech verzích těchto operačních systémů, navíc v kombinaci s variantami dalších aplikací (různé verze aplikace Internet Explorer, Microsoft Office apod.). Abychom jasně určili, které platformy a konfigurace používáme pro důkladné ověření veškeré systémové funkčnosti, a současně jasně definovali i konfigurace, o kterých víme, že jsou z nejrůznějších důvodů problematické, zavádíme následující klasifikaci konfigurací:

Certifikované konfigurace jsou ty, na kterých probíhá úplné ověřování nových verzí aplikací Vema. Pro provoz aplikací Vema by měly být jednoznačně preferovány tyto konfigurace. Garantujeme u nich plnou podporu a maximální možné úsilí při řešení jakýchkoliv problémů s instalací či provozem aplikací Vema.

Podporované konfigurace jsou ty, na kterých by aplikace Vema měly pracovat bez problémů. Úplné ověřování nových verzí aplikací Vema však na těchto konfiguracích neprobíhá. Poskytujeme u nich plnou podporu - snažíme se o vyřešení jakéhokoliv problému. Jako minimální podporované konfigurace pak označujeme kombinace nejnižších možných verzí operačního systému a podpůrných komponent, resp. aplikací, se kterými jsou aplikace Vema schopny spolupracovat.

Nedoporučené konfigurace jsou ty, na kterých by aplikace Vema měly pracovat bez problémů, avšak z provozních důvodů je nedoporučujeme používat, většinou z důvodu omezení v kapacitě, výkonu nebo škálovatelnosti. Společnost Vema neposkytuje podporu svých produktů u těchto konfigurací.

Nepodporované konfigurace jsou ty, o nichž máme pozitivně zjištěno, že na nich provoz aplikací Vema není možný či spolehlivý. Typicky se jedná o zastaralé verze operačních systémů, některé známé případy kombinací vzájemně nekompatibilních komponent apod. Společnost Vema neposkytuje podporu svých produktů u těchto konfigurací.

Technické požadavky

Požadavky na hardware

Obecně je doporučená minimální hardwarová konfigurace shodná s doporučenou konfigurací konkrétního operačního systému. Orientačně lze pro provoz v operačních systémech řady Windows 98 SE uvažovat jako minimum procesor Pentium 150 MHz a 32 MB RAM, pro operační systémy řady Windows 2000 a vyšší jsou zejména paměťové nároky o něco vyšší (64 MB RAM a více).

Potřebný diskový prostor pro programové soubory je obvykle do 20 MB.

Požadavky na software

Obecné požadavky

Pro všechny dále uvedené konfigurace platí, že se jedná o základní instalaci operačního systému Microsoft Windows s českým národním nastavením (tzv. locale) a s výchozími verzemi aplikací Microsoft Installer a Microsoft Internet Explorer, které se s danou verzí Windows instalují, není-li u konkrétní konfigurace uvedeno jinak.

Pro práci v síti se předpokládá síť Microsoft. Aplikace Vema fungují i v jiných síťových prostředích, jako např. Novell NetWare, Samba aj.; podmínkou bezproblémového provozu je však správné nastavení těchto sítí tak, aby jejich chování při práci se síťovými prostředky odpovídalo chování sítě Microsoft.

Pro instalaci aplikace formou balíčku MSI je zapotřebí, aby v systému byl přítomen program Microsoft Installer verze 1.10 nebo vyšší. Doporučujeme používat vždy jeho nejnovější verzi.

Minimální podporované konfigurace

Podporované operační systémy:

  • Microsoft Windows 98 SE CZ
  • Microsoft Windows 2000 Professional SP2 CZ a vyšší
  • Microsoft Windows XP Home CZ a vyšší
  • Microsoft Windows XP Professional CZ a vyšší
  • Microsoft Windows Vista a vyšší (nutno dodržet instalační postup pro Windows Vista)
  • Microsoft Windows Server 2003 Standard CZ a vyšší

Minimální podporovaná verze aplikace Microsoft Internet Explorer je 5.5 CZ, která je důležitá zejména kvůli šifrování komunikace mezi klientem a serverem. S ohledem na celkové zabezpečení systému však doporučujeme používat vždy nejnovější verzi aplikace Internet Explorer.

Certifikované konfigurace

Operační systém | Microsoft Installer | Microsoft Internet Explorer
MS Windows 98 SE CZ | 2.0 | 6.0 SP1 CZ
MS Windows 2000 Professional SP4 CZ | výchozí | 6.0 SP1 CZ
MS Windows XP Professional SP2 CZ | výchozí | výchozí (6.0 SP2 CZ)

Nepodporované konfigurace

Nepodporované operační systémy:

  • Microsoft Windows NT 3.5
  • Microsoft Windows NT 3.51
  • Microsoft Windows NT 4.0
  • Microsoft Windows 95 (všechny varianty)
  • Microsoft Windows 98 (první vydání)
  • Microsoft Windows ME
  • Microsoft Windows 2000 SP1 a nižší
  • všechny ostatní operační systémy mimo Microsoft Windows (DOS, Unix, Linux, OS/2, Mac/OS, ...)

Nepodporované verze programu MS Installer:

  • Microsoft Installer 1.00

Nepodporované verze aplikace Microsoft Internet Explorer:

  • Microsoft Internet Explorer 5.01 a nižší

Speciální instalační postupy

  • Přihlásit se pod účtem, který má administrátorská práva.
  • Nejprve ručně spustit instalaci MSI balíčku produktu Vema - Start verze 2.1.4 nebo vyšší (poklepáním na příslušný balíček např. VemaStart.02.01.04.msi). Objeví-li se dotaz na potvrzení spuštění, spuštění potvrdit i přesto, že se nepodaří ověřit vydavatele.
  • V průběhu instalace zvolit "Výběrovou instalaci" a jako kořenový i integrační adresář zadat adresář C:\Vema.
  • Dokončit instalaci Vema - Start, v jejím průběhu je potřeba povolit přístup instalačního programu k počítači.
  • Další produkty distribuované po 25. 10. 2007 je pak již možné instalovat běžným způsobem, tzn. včetně použití instalačních plánů (přes Start nebo Správce), pouze je potřeba během instalace každého balíčku povolit přístup k počítači. Starší produkty není možné instalovat běžným způsobem, lze je však používat či instalovat z knihovny produktů Vema (bude dodávána na DVD).


 Konfigurace V3 Serveru

Konfigurace V3 Serveru

Pokud je Služba vzdálené správy instalována jako součást V3 Serveru, pak běží v rámci Vema V3 Serveru jako tzv. applet a konfiguruje se konfiguračním souborem V3 Serveru.

Server Vema Správce se konfiguruje konfiguračním souborem Vema V3 Serveru, tedy souborem SrvConfig.xml, který je uložen v programovém adresáři V3 Serveru.

  • Konfigurace serveru


 Konfigurace serveru

Konfigurace serveru

Konfigurační soubor je v XML formátu a dodržuje syntaxi VmConfig. Hlavní uzel xml dokumentu proto musí mít název <Config>.

Konfigurace je složena s několika částí:

  1. Konfigurace appletů
  2. Konfigurace "přípojných bodů"
  3. Konfigurace diagnostiky
  • Konfigurace appletů

  • Diagnostika

  • Přípojné body

  • Typy zabezpečovacího protokolu

  • Typy autentizace

  • Třídy appletů vázané na přípojné body


 Konfigurace appletů

Konfigurace appletů

Konfigurace appletů vychází z konfigurace DLL tříd, protože každý NV3 applet je implementován jako tzv. DLL třída, což je univerzální, verzovně nezávislý objekt. DLL nejsou implementovány technologií COM, a proto nevyžadují žádnou registraci v systému windows. Pro jejich použití je důležité pouze uvedení cesty k příslušné DLL knihovně v konfiguraci.

Konfigurační část, která definuje applety dostupné v systému, proto odpovídá konfiguraci DLL tříd, která je popsaná v následují kapitole

  • DLL Třídy


 DLL Třídy

DLL Třídy

Povinně musí konfigurace obsahovat uzel <DLLClassRoot>. V jeho hodnotě je bázový adresář, od kterého se uvažují relativní cesty k DLL knihovnám. Tento uzel může obsahovat podřetězec "$(ProgPath)", který nahrazuje adresář, odkud je spuštěna aplikace, která ji používá. Dalším akceptovaným klíčovým slovem je $(CfgPath), které je při běhu nahrazeno cestou ke konfiguračnímu souboru.

Konfigurace DLL tříd je v poduzlu <DLLClassList>. Ten obsahuje seznam uzlů, jejichž názvy jsou shodné se jmény tříd. Povinně musí mít každá DLL třída poduzel <DLLName>, jehož hodnota určuje relativní cestu k DLL knihovně s implementací vzhledem k cestě v <DLLClassRoot>.

  • Nepovinné parametry uzlu DLL třídy

  • Příklad konfiguračního souboru


 Nepovinné parametry uzlu DLL třídy

Nepovinné parametry uzlu DLL třídy

Akronym | Název vlastnosti | Popis vlastnosti
Entrypoint | Entrypoint | Číslo vstupního bodu do DLL knihovny, na kterém je funkce, která DLL třídu dokáže vytvořit. Toto číslo nelze volit libovolně, je dáno implementací. Jeho zadání zkracuje čas potřebný pro vytvoření třídy při běhu, a je proto vhodné jej zadat u tříd, které jsou vytvářeny velmi často. U implementací DLL knihoven, které nemají univerzání vytvářecí funkci je zadání povinné.
Location | Location | Může modifikovat umístění, při vytváření DLL třídy

  • Config


 Config

Config

Vlastní nastavení pro konkrétní třídu. V tomto uzlu mohou být buď další poduzly nebo přímo textová hodnota. Konkrétní strukturu definuje sama třída. Tato konfigurace je přístupná pouze prvku, pod kterým je definována.


 Příklad konfiguračního souboru

Příklad konfiguračního souboru

Konfigurační soubor v následujícím příkladě definuje dvě DLL třídy (DBVBridge a DBVPrintApplet), které jsou umístěné ve stejné DLL knihovně. U první z nich je definován entrypoint, protože předpokládáme, že bude vytvářena velmi často.

<?xml version="1.0" encoding="windows-1250"?>
<Config>
   <DLLClassRoot>$(CfgPath)</DLLClassRoot>
   <DLLClassList>
      <DBVBridge>
         <DLLName>DBVAppBridgeApplet.DLL</DLLName>
         <Entrypoint>1</Entrypoint>
         <Config>
            <AuthorizationServer>Local</AuthorizationServer>
         </Config>
      </DBVBridge>
      <DBVPrintApplet>
         <DLLName>DBVAppBridgeApplet.DLL</DLLName>
      </DBVPrintApplet>
   </DLLClassList>
</Config>


 Diagnostika

Diagnostika

Nastavení diagnostiky je možné v šesti úrovních.

  • 0 - Logování je vypnuto
  • 1 - Zapisují se pouze chyby
  • 2 - Zapisují se všechny běžné události, např. spuštění procesu, vytvoření sezení, spouštění a ukončení jednotlivých appletů
  • 3 - Zapisují se také některé technické detaily, které by mohly usnadnit pozdější detekci problémů
  • 4 - Podrobný zápis prakticky všech operací jádra, včetně všech odesílaných a přijímaných zpráv. U zpráv se loguje jen jejich délka
  • 5 - Ještě o něco podrobnější než úroveň 4, u zpráv se zapisuje také jejich obsah.

Stupně logování 4 a 5 nejsou vhodné pro běžný provoz a používají se jen při detekci problémů.

Stupeň diagnostiky se nastavuje v konfiguračním souboru. Na základní úrovni se definuje nový uzel Diagnostics a v něm poduzel System, jehož číselná hodnota určuje úroveň logování. V tomto uzlu je možné také nastavit cestu k logovému souboru v poduzlu LogFile.Dále je zde možné nastavit počet dnů, pro uchovávání logových souborů - v poduzlu NumLogDays. V poduzlu LogThreadUserName se nastavuje jestli se má logovat jméno uživatele vlákna. Možné hodnoty tohoto uzlu jsou 1-ano, 0-ne.

   <Diagnostics>
      <System>3</System>
      <LogFile>c:\logs\NV3Server.log</LogFile>
      <NumLogDays>20</NumLogDays>
      <LogThreadUserName>1</LogThreadUserName>

   </Diagnostics>
  • Logový soubor


 Logový soubor

Logový soubor

Logový soubor má příponu *.lgs. Jméno souboru obsahuje datum dne, kdy byl vytvořen a po přechodu na nový den se založí nový soubor. Pokud není nastaveno jinak, ponechávají se soubory za posledních 30 dní. Pokud je počet dní pro uchování logů nastaven na -1, logové soubory se nemažou. K promazávání souborů dochází při zakládání nového souboru.

Struktra souboru je stejná jako u systémového protokolu DBV aplikací. Zobrazit obsah logového souboru lze v DBV aplikaci - menu Pomoc - Prohlížeč logů.

Velikost logového souboru je omezena na velikost 4GB, toto omezení je z důvodu podpory Windows 98.

  • Popis položek logového souboru


 Popis položek logového souboru

Popis položek logového souboru

  • Datum a čas vzniko logového záznamu
  • Jméno počítače
  • Číslo procesu
  • Uživatel procesu
  • Číslo threadu
  • Uživatel threadu, pokud není stejný jako uživatel procesu
  • Jméno knihovny odkud se loguje
  • Číslo logového hlášení
  • Typ záznamu
  • Data - text nebo data
  • Číslo záznamu
  • Úroveň diagnostiky záznamu


 Přípojné body

Přípojné body

V konfiguraci je možné zadat jeden nebo více automaticky spouštěných přípojných bodů - (daemonů). Každý přípojný bod má definován zabezpečovací protokol a autentizaci, takže je možné např. pro vnitřní síť používat nešifrované spojení a pro vnější šifrované. Nebo lze pro klienty, kteří nepodporují autentizaci typu ActiveDir, otevřít další port s autentizací VEMA, který v systému otevřeme jen pro vybrané IP adresy.

Přípojný bod je branou do jinak uzavřeného systému, přes kterou je možno vzdáleně vytvářet a komunikovat s lokálními applety. Přes přípojný bod je možné vytvořit pouze applet, který je definován v konfiguraci.

Přípojné body se definují v sekci <ConnectionPoints>. Každý poduzel <CP> definuje jeden přípojný bod pomocí parametrů spojení. Např.

   <ConnectionPoints>
    <CP>SP:4147,Enc=RSA/RC4</CP>
    <CP>SP:4148,Auth=Plain</CP>
       <CP>SP:4149,Enc=RSA/RC4,Auth=ActiveDir(ServiceName=NV3/myserver.firma.cz,Realm=FIRMA.CZ)</CP>
   </ConnectionPoints>

První přípojný bod se otevírá na portu 4147 a akceptuje pouze šifrované spojení se zadaným protokolem. Nevyžaduje autentizaci.

Druhý přípojný bod se otevírá na portu 4148 a nevyžaduje šifrované spojení. Vyžaduje ale jednoduchou autentizaci zadáním jména, které se neověřuje.

Třetí přípojný bod se otevírá na portu 4149, vyžaduje šifrovanou komunikaci a autentizaci protokolem Kerberos v implementaci MS Active directory.

  • Parametry spojení


 Parametry spojení

Parametry spojení

V NV3 systému se používá jednotný způsob zadávání parametrů spojení. Úvodní sekvence rozlišuje typ použité přenosové linky a typ spojení. Další parametry jsou specifické pro konkrétní typy spojení

Pro TCP/IP jsou to sekvence:

  • SP - pro příchozí spojení (daemon)
  • IP - pro odchozí spojení

Pro HTTP jsou to sekvence:

  • HS - pro příchozí spojení (daemon)
  • HC - pro odchozí spojení

AT Prefix: Pokud se jako prefix přípojného bodu pro odchozí spojení použije řetězec "AT", zkouší se sekvence spojení:

  • IP se zadaným portem
  • HC na portu 80
  • HC na portu 80 přes proxy server nastavený v systému windows
  • Odchozí spojení

  • Příchozí spojení


 Odchozí spojení

Odchozí spojení

  • IP

  • HC


 IP

IP

IP označuje sekvenci pro výstupní TCP/IP spojení. Povinným parametrem je adresa, nepovinným číslo portu. Pokud není čislo portu uvedeno, předpokládá se implicitní port 4147.

Syntaxe:

"IP:"<adresa>[":" <číslo portu>]
  • adresa - symbolická nebo IP adresa vzdáleného počítače, se kterým chceme navázat spojení
  • číslo portu - TCP/IP port na vzdáleném počítači, přes který se chceme připojit.

Příklady:

IP:192.168.2.1
IP:212.87.20.21:4147
IP:V3Server
IP:V3Server:5840


 HC

HC

HC označuje sekvenci pro výstupní HTTP spojení. Povinným parametrem je adresa, nepovinným číslo portu. Pokud není čislo portu uvedeno, předpokládá se implicitní port 80.

Syntaxe:

"HC:"<adresa>[":"<číslo portu>] [",Proxy=HTTP" ["/" <verze protokolu> ] "(" <adresa proxy serveru> [":" <proxy port>] ")" ]
  • adresa - symbolická nebo IP adresa vzdáleného počítače, se kterým chceme navázat spojení a na kterém běží NV3 server. Tento počítač nemusí být nutně viditelný z klientské stanice, musí pak ale být viditelný z proxy serveru.
  • číslo portu - TCP/IP port na vzdáleného NV3 serveru, na který se chceme připojit.
  • verze protokolu - verze HTTP protokolu, který se má použít pro přenos. Implicitní je použití protokolu 1.1, který je rychlejší, protože umožňuje držet spojení. Většina proxy serverů protokol sice akceptuje, ale spojení stejně přerušuje. Pokud proxy server neakceptuje požadavky v protokolu verze 1.1, je nutné přepnout na protokol 1.0
  • adresa proxy serveru - symbolická nebo IP adresa HTTP proxy serveru.
  • proxy port - port, na kterém je dostupná HTTP proxy.

Příklady:

HC:V3Server:80,Proxy=HTTP/1.0(proxy.firma.cz:8080)
HC:V3Server


 Příchozí spojení

Příchozí spojení

  • SP

  • HS


 SP

SP

SP označuje sekvenci pro vstupní TCP/IP spojení. Povinným parametrem je pouze číslo portu.

Syntaxe:

"SP:"<číslo portu> ["(" <adresa síť. rozhraní> ")" ] [",Enc="<typ zabezpečovacího protokolu>][",Auth="<parametry autentizace>]
  • číslo portu - TCP/IP port, na kterém je očekáváno spojení
  • adresa síť. rozhraní - adresa síťového rozhraní, na kterou má být spojení navázáno. Pokud není uvedena, otevře se naslouchací port na všech síťových rozhraních.
  • typ zabezpečovacího protokolu - definuje protokol pro výměnu klíče a šifrování přenášených dat
  • parametry autentizace - typ autentizace a jeho parametry


 HS

HS

HS označuje sekvenci pro vstupní HTTP spojení. Povinným parametrem je pouze číslo portu. Spojení je realizováno přes HTTP protokol verze 1.1. Po celou dobu trvání sezení s klientem se linková vrstva snaží udržet navázané spojení. Podporována je ale také komunikace přes proxy servery, které nepodporují trvalé spojení a po každém dotazu spojení uzavírají.

Syntaxe:

"HS:"<číslo portu> ["(" <adresa síť. rozhraní> ")" ] [",Enc="<typ zabezpečovacího protokolu>] [",Auth="<parametry autentizace>]
  • číslo portu - TCP/IP port, na kterém je očekáváno spojení
  • adresa síť. rozhraní - adresa síťového rozhraní, na kterou má být spojení navázáno. Pokud není uvedena, otevře se naslouchací port na všech síťových rozhraních.
  • typ zabezpečovacího protokolu - definuje protokol pro výměnu klíče a šifrování přenášených dat
  • parametry autentizace - typ autentizace a jeho parametry


 Typy zabezpečovacího protokolu

Typy zabezpečovacího protokolu

Syntaxe:

"Enc=" <typ protokolu> [ "/" <verze protokolu> ] [ "(" parametry ")" ]

V současnosti je implementovány tyto typy zabezpečovacího protokolu

  • RSA/RC4
  • RSA/AES - Tento typ protokolu je možné použít jen na systémech Windows XP, Windows Server 2003 a novějších
  • SSL - Tento typ protokolu je možné použít jen na systémech Windows 2000 a novějších

Akceptována je i hodnota "Plain", která je implicitní a znamená, že zprávy jsou přenášeny po lince v nešifrované podobě.

Protokol RSA/RC4 využívá asymetrické šifry RSA k výměně klíče sezení (délka RSA klíče je 1024 bitů). Samotná data jsou pak přenášena proudovou šifrou RC4 s klíčem o délce 56 bitů

Protokol RSA/AES funguje obdobně, ale pro přenost dat je použita bloková šifra AES, implicitně má nastavenu délku klíče na 128 bitů. Přenos dat blokovou šifrou je z principu pomalejší, protože je nutné zarovnávat jednotlivé zprávy a i samotné kódování je složitější než u proudových šifer. Pro šifru AES jsou podporovány délky klíčů 128, 192 a 256 bitů.

Pokud chcete změnit délky klíčů, je možné je uvést v kulatých závorkách. Jako první se uvádí délka klíče pro asymetrickou šifru, jako druhá se uvádí délka klíče pro symetrickou šifru.

Např.

    Enc=RSA/RC4(2048/128)
  • Parametry protokolu RSA/RC4

  • Parametry protokolu RSA/AES

  • Parametry protokolu SSL


 Parametry protokolu RSA/RC4

Parametry protokolu RSA/RC4

U protokolu RSA/RC4 je možné nastavit délky klíčů pro jednotlivé šifry. Úplný popis syntaxe je tedy:

'Enc='<typ protokolu> ['('<délka klíče asymetrické šifry> '/' <délka klíče symetrické šifry>')']


 Parametry protokolu RSA/AES

Parametry protokolu RSA/AES

U protokolu RSA/AES je také možné nastavit délky klíčů pro jednotlivé šifry. Úplný popis syntaxe je tedy:

'Enc=RSA/AES' ['('<délka klíče asymetrické šifry> '/' <délka klíče symetrické šifry>')']

Pro šifru AES lze použít pouze klíče o délce 128, 192 a 256 bitů.


 Parametry protokolu SSL

Parametry protokolu SSL

Pro protokol SSL je potřeba nastavit umístění certifikátu, který se použije pro identifikaci serveru. Tento certifikát musí být vydán tak, aby měl v položce "CN" (Common Name) předmětu shodnou adresu s tou, kterou použíjí klienti na příkazové řádce v parametru "/Server" - tzn. musí souhlasit se síťovou identifikací serveru.

Příklad:

Adresa serveru je v lokální síti "VemaV3". Klienti se na server hlásí přes příkaz:

vema.exe /app=dbv /server=VemaV3 ...

Položka "Předmět" (subject) certifikátu pak bude například "C=CZ, O=Vema a.s., CN=VemaV3".

Syntaxe:

'Enc=SSL' [ '/' <verze protokolu> ] '(' [<Jméno parametru> '=' <hodnota parametru> [',' <Jméno parametru> '=' <hodnota parametru>]*] ')'

Akceptovány jsou následující parametry:

  • Store - úložiště certifikátu. Může nabývat následujících hodnot:
    • "System" (implicitní hodnota)
    • "File"
    • "Physical"
    • "PKCS7"
    • "LDAP"
  • StoreName - jméno úložiště, pro úložiště "System" nejčastěji hodnota "My", která je nastavena jako implicitní. Pro úložiště v souboru jde o jméno a cestu k souboru.
  • SubjectDN - identifikace certifikátu v úložišti. Stačí zadat jen některé položky, certifikát pak bude dohledán. Parametr nemusí být zadán pouze tehdy, když úložiště obsahuje pouze jeden certifikát.
  • CurrentUser - Pro úložiště typu "System" definuje, zda se použije úložiště přihlášeného uživatele (current user - hodnota větší než jedna) nebo úložiště systémové (local machine - hodnota 0). Implicitně se používá úložiště systémové.

Příklad:

Enc=SSL(Store=System,Storename="My",SubjectDN="CN=VemaV3")
Enc=SSL - tento zkrácený zápis lze použít jen tehdy, když je v systémovém úložišti pouze jeden certifikát!


 Typy autentizace

Typy autentizace

Syntaxe:

"Auth=" <typ autentizace> "(" [<Jméno parametru> "=" <hodnota parametru> ["," <Jméno parametru> "=" <hodnota parametru>]*] ")"

Za typem autentizace může následovat v závorkách uzavřený seznam parametrů oddělený čárkami.

Podporovány jsou tyto typy autentizace:

  • None - žádná identifikace není vyžadována
  • Plain - Je vyžadována jakákoliv identifikace, která se neověřuje. Pokud není identifikace nastavena, bere se implicitně jméno uživatele přihlášeného ve windows
  • Vema - Autentizace proti autentizačnímu serveru Vema.
  • ActiveDir - Autentizace protokolem Kerberos v prostředí Active Directory. Tento typ autentizace je možné použít jen na systémech Windows 2000 a novějších.
  • SSL - Autentizace protokolem SSL, který musí být použitý i jako šifrovací protokol. Tento typ autentizace je možné použít jen na systémech Windows 2000 a novějších.
  • Parametry pro autentizaci VEMA

  • Parametry pro autentizaci ActiveDir

  • Parametry pro autentizaci SSL


 Parametry pro autentizaci VEMA

Parametry pro autentizaci VEMA

Jediným a povinným parametrem je adresa autentizačního serveru. Pokud autentizační služba běží na výchozím portu 6100, není třeba číslo portu zadávat.

Syntaxe:

'Auth=VEMA' '(' 'Server' '=' <adresa> [':'<Port>] ')'

Příklady:

Auth=VEMA(Server=192.168.1.2:6100)
Auth=VEMA(Server=localhost)


 Parametry pro autentizaci ActiveDir

Parametry pro autentizaci ActiveDir

Syntaxe:

'Auth=ActiveDir' [(' [ 'ServiceName' '=' <principal name> ',' ] ['ServicePass' '=' <principal account password> ','] [ 'DefaultDomain' '=' <realm> '])']

Všechny parametry v závorce jsou nepovinné:

  • DefaultDomain = <Jméno výchozí domény Active Directory>.

Dalšími parametry můžeme předepsat název služby, který se použije pro ověření autentizačního tokenu. Tyto parametry je vhodné použít pouze v případě, že používáte V3 server jako službu v pozadí, tj. že na ni přistupují nejen přímo klienti, ale také jiné služby zprostředkující ověření klientů (např. Portál). V ostatních případech je vhodnější tyto parametry vůbec nezadávat a ověřovat pouze pod účtem, pod kterým běží služba.

  • ServiceName = <jméno SPN nebo jméno účtu v Active Directory>
  • ServicePass = <heslo účtu v Active Directory> (Tento parametr je zachován pouze z důvodu zpětné kompatibility a neměl by být používán.)

Příklady:

Doporučená varianta:

      <CP>SP:4147, Enc=RSA/RC4, Auth=ActiveDir</CP>

Další typické možnosti:

      <CP>SP:4147, Enc=RSA/RC4, Auth=ActiveDir(DefaultDomain=FIRMA.CZ)</CP>
      <CP>SP:4147, Enc=RSA/RC4, Auth=ActiveDir(ServiceName=VemaNV3/v3server.firma.cz)</CP>
      <CP>SP:4147, Enc=RSA/RC4, Auth=ActiveDir(ServiceName=VemaNV3/v3server.firma.cz, DefaultDomain=FIRMA.CZ)</CP>

Další možnosti, zachované pouze z důvodu zpětné kompatibility konfigurací:

      <CP>SP:4147, Enc=RSA/RC4, Auth=ActiveDir(ServiceName=VemaNV3/v3server.firma.cz, ServicePass=heslo, DefaultDomain=FIRMA.CZ)</CP>

DefaultDomain

Jméno výchozí autentizační domény (realm) pro typ autentizace ACTIVEDIR. Uvádí se v plném tvaru i s příponou. Tato doména se použije, pokud není uvedena u uživatele (platí pro klientskou i serverovou stranu). Lze použít v případě, kdy se k serveru hlásí klienti mimo doménu nebo klienti z jiné domény. Na serveru lze takto dodefinovat doménu účtu, pod kterým se ověřuje autentizační token.

Jaká doména se má k účtu autentizujícího se uživatele použít, se určí podle těchto priorit:

  1. Bylo zadáno plně kvalifikované jméno včetně domény (uživatel na příkazové řádce nebo v dialogu, server v definici přípojného bodu) - název domény se převezme z plně kvalifikovaného jména.
  2. Výchozí doména v definici přípojného bodu (DefaultDomain).
  3. Je-li zadán parametr ServiceName v definici přípojného bodu a má-li za znakem @ uvedenu doménu, použije se tato doména.
  4. Použije se stejná doména, jakou má uživatelský účet, pod kterým běží služba serveru.

Úplný tvar doménového jména bývá shodný se jménem domény služby v parametru ServiceName (např. pro službu s názvem (SPN) VemaNV3/myserver.mydomain.cz by byla typická hodnota MYDOMAIN.CZ). Uvádí se vždy velkými písmeny, protože některé domény nepodporují uvedení tohoto parametru malými písmeny (např. doména Windows 2003 na operačním systému Windows Server 2003).

Z výše uvedených bodů rovněž vyplývá, že tento parametr (DefaultDomain) lze nahradit uvedením domény za názvem služby (SPN) v parametru ServiceName, např. takto:

VemaNV3/myserver.mydomain.cz@MYDOMAIN.CZ

ServiceName

Název služby pro autentizaci ActiveDir, tzv. "Service Principal Name" (dále jen SPN). SPN jednoznačně identifikuje službu v rámci domény a umožňuje službě vystupovat jako samostatná entita při autentizaci protokolem Kerberos.

Využití nalezne SPN zejména v situacích, kdy ke službě s definovaným SPN přistupuje klient (uživatel) skrze jinou mezilehlou službu. Pak lze SPN využít pro mechanismus tzv. "vynuceného delegování" ("constrained delegation") při delegování ověření klienta, tj. mezilehlé službě je dovoleno delegovat ověření (autentizační lístek) klienta pouze na vymezená SPN, tedy pouze na zcela určité služby na zcela určitých počítačích v síti. To v konečném důsledku zvyšuje bezpečnost těchto tří- a vícevrstvých architektur. Příkladem takové architektury je webová aplikace přistupující na databázový či aplikační server v pozadí, konkrétně např. webová aplikace Vema Portál přistupující na aplikační server Vema V3 server.

Formát SPN:

   ServiceClass / InstanceName [ : InstancePort ] [ / ServiceName ] [@ Domain ]

kde jednotlivé složky mají následující význam (hranaté závorky ohraničují nepovinný parametr):

  • ServiceClass - název třídy služby. Pro služby založené na komunikačním protokolu Vema NV3 je standardem uvádět "VemaNV3".
  • InstanceName - Název instance služby. Obvykle název počítače, na kterém služba běží.
  • InstancePort - Port, na kterém služba na daném počítači běží. Nepovinný parametr, jeho uvedení však zvyšuje bezpečnost při mechanismu tzv. delegovaného ověření, které se používá při přístupu služeb střední vrstvy na služby v pozadí (např. Portál přistupující na V3 server).
  • ServiceName - Název služby. Nepovinný parametr, obvykle se neuvádí.
  • Domain - Doména, ve které služba běží. Nepovinný parametr, obvykle se neuvádí.

Příklady SPN:

SPN | Popis
"VemaNV3/myserver" | SPN určené NetBIOS názvem počítače.
"VemaNV3/myserver.firma.cz" | SPN určené plně kvalifikovaným názvem počítače (FQDN - Fully Qualified Domain Name).
"VemaNV3/myserver:4147" | SPN určené plně kvalifikovaným názvem počítače (FQDN - Fully Qualified Domain Name) a portem služby.
"VemaNV3/myserver@FIRMA.CZ" | SPN určené NetBIOS názvem počítače. Specifikovaná doména se pak používá jako výchozí při autentizaci klientů, není-li zadán parametr DefaultDomain v definici přípojného bodu.

Postup vytvoření SPN:

Vytvoření SPN a jeho přiřazení k účtu počítače nebo k uživatelskému účtu v doméně se provádí doplňkovým nástrojem "setspn.exe". Operace se provádí na doménovém serveru, k použití tohoto nástroje musíte mít patřičná správcovská oprávnění. Podle zvoleného provozního účtu služby NV3 zvolte jeden ze dvou následujících postupů:

Postup pro provoz služby NV3 serveru pod některým lokálním systémovým účtem (SYSTEM, Local Service, Network Service) proveďte následující kroky:

  1. Doinstalujte "Support Tools" z instalačního CD Windows (pokud ještě nejsou nainstalovány).
  2. Spusťte příkazový řádek systému Windows a proveďte vytvoření příslušných SPN využitím nástroje setspn.exe. Vytváří se obvykle dvě SPN, jedno s NetBIOS názvem počítače pro přístup ze stejné domény a druhé s FQDN názvem počítače pro přístup z jiných domén ("myserver" je NetBIOS název serveru, "myserver.firma.cz" je plně kvalifikovaný doménový název serveru (FQDN)):
      setspn -a VemaNV3/myserver myserver
      setspn -a VemaNV3/myserver.firma.cz myserver

      nebo přísnější varianta s uvedením portu služby NV3:

      setspn -a VemaNV3/myserver:4147 myserver
      setspn -a VemaNV3/myserver.firma.cz:4147 myserver

Postup pro provoz služby pod vyhrazeným doménovým účtem (nazvěme jej třeba "VemaSysV3") proveďte následující kroky:

  1. Doinstalujte "Support Tools" z instalačního CD Windows (pokud ještě nejsou nainstalovány).
  2. Vytvořte v doméně účet, který bude použit pro provoz služby (není-li dosud vytvořen), a nastavte mu heslo.
  3. Spusťte příkazový řádek systému Windows a proveďte vytvoření příslušných SPN využitím nástroje setspn.exe. Vytváří se obvykle dvě SPN, jedno s NetBIOS názvem počítače pro přístup ze stejné domény a druhé s FQDN názvem počítače pro přístup z jiných domén ("myserver" je NetBIOS název serveru, "myserver.firma.cz" je plně kvalifikovaný doménový název serveru (FQDN), "firma.cz\VemaSysV3" je plně kvalifikovaný název doménového provozního účtu služby):
      setspn -a VemaNV3/myserver firma.cz\VemaSysV3
      setspn -a VemaNV3/myserver.firma.cz firma.cz\VemaSysV3

      nebo přísnější varianta s uvedením portu služby NV3:

      setspn -a VemaNV3/myserver:4147 firma.cz\VemaSysV3
      setspn -a VemaNV3/myserver.firma.cz:4147 firma.cz\VemaSysV3

Řešení problémů

Pokud autentizace nefugnuje, prověřte následující body:

  1. Chybějící SPN. Prověřte na doménovém serveru prostřednictvím nástroje ADSIEdit.msc, zda u provozního účtu služby (tj. u účtu počítače (v případě provozu pod účtem SYSTEM, Local Service, Network Service) nebo u vyhrazeného uživatelského účtu existují ve vlastnosti servicePrincipalName příslušná dvě SPN (např. "VemaNV3/myserver" a "VemaNV3/myserver.firma.cz").
  2. Zdvojená SPN. Je-li stejné SPN uvedeno u více účtů v Active Directory (typicky se stává, že po změně provozního účtu služby ze systémového účtu na vyhrazený uživatelský účet správce zavede příslušné SPN k vyhrazenému provoznímu účtu, ale zapomene SPN zrušit u účtu počítače). KDC pak neví, které heslo účtu má použít pro zašifrování lístku služby, a autetnizace selže. Je nutno zajistit, aby každé SPN bylo přiřazeno pouze jednomu účtu v Active Directory. Pro vyhledání zdvojených SPN použijte nástroj "ldp" dle postupu uvedeného na adrese http://technet2.microsoft.com/windowsserver/en/library/579246c8-2e32-4282-bce7-3209d1ea8bf11033.mspx?mfr=true) nebo nástroj "ldifde" dle postupu na adrese http://msdn2.microsoft.com/en-us/library/aa480609.aspx v kapitole "Duplicate SPNs".

Bližší informace o protokolu Kerberos a SPN naleznete v následujících zdrojích na Internetu:

  • Windows 2003 a vyšší
    • "Kerberos Technical Supplement for Windows" - http://msdn2.microsoft.com/en-us/library/aa480609.aspx
    • "Kerberos Authentication Technical Reference" - http://technet2.microsoft.com/windowsserver/en/library/b748fb3f-dbf0-4b01-9b22-be14a8b4ae101033.mspx?mfr=true
    • "Troubleshooting Kerberos Errors" - http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/security/tkerberr.mspx
    • "Delegování ověření" - http://www.microsoft.com/technet/prodtechnol/windowsserver2003/cs/library/ServerHelp/dac7ecea-7c82-43c0-847b-3a1a81454cfe.mspx?mfr=true
    • "Troubleshooting Kerberos Delegation" - http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/security/tkerbdel.mspx
    • "Service Logons Fail Due to Incorrectly Set SPNs" (dole na stránce je uveden postup pro nalezení zdvojených SPN) - http://technet2.microsoft.com/windowsserver/en/library/579246c8-2e32-4282-bce7-3209d1ea8bf11033.mspx?mfr=true
    • "How New Delegation of Authentication Options Improve Security" - http://www.windowsecurity.com/articles/Delegation_Authentication_Windows_Server_2003.html
  • Windows 2000 a Windows XP
    • "Windows 2000 Kerberos Authentication" - http://technet.microsoft.com/en-us/library/Bb742431.aspx
    • "Exploring Kerberos, the Protocol for Distributed Security in Windows 2000" - http://www.microsoft.com/msj/0899/kerberos/kerberos.aspx
    • "TechNet Support WebCast: How to understand, implement, and troubleshoot Kerberos double-hop authentication" - http://support.microsoft.com/kb/887682

ServicePass

Heslo provozního účtu služby, kterému je přiřazeno SPN uvedené v atributu ServiceName.

Tento parametr je zachován z důvodu zpětné kompatibility a v nových konfiguracích by neměl být používán.


 Parametry pro autentizaci SSL

Parametry pro autentizaci SSL

Syntaxe:

'Auth=SSL' [ '(' 'UserName' '='  ( 'DNFilter:' <UserDNFilter> )
                             | 'ActiveDir'
                             | ( 'Vema:' <AuthServer> [ ':' <port> ] ) ')' ]
  • UserName - tento parametr definuje, jakým způsobem se získá jméno uživatele z certifikátu.
    • Překlad jména předmětu z certifikátu - jméno se získá pomocí filtru z jména předmětu (vlastníka) certifikátu. Hodnota parametru začíná klíčovým slovem "DNFilter" a za dvojtečkou je uveden vlastní přčedpis pro filtr jména. Ve stejném pořadí v jakém jsou vypsány jednotlivé položky se vytvoří uživatelské jméno. Položky budou odděleny čárkami. Pokud za jménem atributu bude znaménko "-", jméno atributu se nepoužije. Pokud parametr není zadán, použije se celé jméno z certifikátu

      Příklad: Jméno vlastníka certifikátu (předmětu) je: "C=CZ, O=Vema a.s., CN=Zvonimír Pech"
      Pro filtr uživatelského jména UserName="DNFilter:CN-" bude výsledný autentizovaný uživatel "Zvonimír Pech",
      Pro filtr UserName="DNFilter:CN,O-" bude autentizovaný uživatel "CN=Zvonimír Pech, Vema a.s."
    • Z ActiveDir - pokud je hodnota parametru nastavena na klíčové slovo "ActiveDir", pokusí se server na základě certifikátu klienta najít uživatele v ActiveDir doméně. Certifikát klienta musí být v tomto případě v doméně zaregistrován.
    • Z Autentizační služby Vema - hodnota parametru musí být nastavena na klíčové slovo "Vema". Za dvojtečkou je pak uvedena adresa a případnš port serveru, na kterém běží Autentizační služba Vema. V její databázi se vyhledá uživatel, který má přiřazen certifikát, použitý pro navázání SSL spojení.

Příklady:

    Auth=SSL                                	- použije se plné jméno vlastníka certifikátu

    Auth=SSL(UserName="DNFilter:CN-")	        - použije se položka Common Name z certifikátu bez uvození zkratkou položky

        Auth=SSL(UserName=ActiveDir)			- použije se překlad na doménového uživatele z databáze ActiveDir

        Auth=SSL(UserName=Vema:localhost)		- použije se překlad uživatele přes Autentizační službu Vema na výchozím portu 6100

        Auth=SSL(UserName="Vema:192.168.2.4:6125")	- použije se překlad uživatele přes Autentizační službu Vema na zadaném serveru s nestandardním portem
  • SSL pod účtem s nižším oprávněním


 SSL pod účtem s nižším oprávněním

SSL pod účtem s nižším oprávněním

Pro přístup k úložišti certifikátů je podobně jako u souborů nebo záznamů v registrech potřeba mít příslušné oprávnění. Především pro přístup k soukromému klíči. Pokud např. chceme, aby služba V3 serveru běžela pod účtem "LocalService", který má nižší práva než účet "System", a certifikát se soukromým klíčem počítače máme uložen v systémovém úložišti, pak s implicitním oprávněním nebude služba mít přístup k soukromému klíči. Práva k přístupu je potřeba explicitně povolit, např. pomocí utility "winhttpcertcfg", kterou je možné zdarma stáhnout na webu společnosti Microsoft.

Uvedeme si příklad pro certifikát, který je vystaven pro: "CN:PCV3server, O=Vema, C=CZ". Utilitě stačí zadat jen část jména, velikost písmen není důležitá.

winhttpcertcfg -g -a LocalService -c LOCAL_MACHINE\My -s PCV3server

Významy parametrů jsou tyto:

  • -g - povoluje přístup k soukromému klíči (opakem je parametr -r, kterým přístup zase zakážeme)
  • -a - název účtu, pro který přístup změnit práva přístupu
  • -c - umístění a název úložiště, ve kterém se má certifikát hledat
  • -s - Určení certifikátu. Hledá se první certifikát, který má ve jménu vlastníka tento řetězec, velikost písmen není důležitá.


 Třídy appletů vázané na přípojné body

Třídy appletů vázané na přípojné body

Applety definované v konfiguraci je možné rozdělit do skupin a skupiny navázat na konkrétní přípojný bod. Applet z dané skupiny pak může používat pouze klient připojený přes přípojný bod, který má danou skupinu povolenu. Applety ze skupiny 0 (implicitní hodnota), může používat každý.

V následujícím příkladu je konfigurace serveru se dvěma otevřenými porty. Přes port 4112 se může přihlásit kdokoliv a spouštět applet "VemaAdminKernelApplet". Applet NV3KernelMonitor může spustit pouze ten, kdo se připojil přes port 4125 a řádně se autentizoval (může samozřejmě spouštět oba applety, protožeVemaAdminKernelApplet je v implicitní skupině 0).

<ConnectionPoints>
   <CP>SP:4112,Enc=Plain,Auth=Plain</CP>
   <CP>SP:4125,Enc=Plain,Auth=Vema(Server=localhost),EnabledClassGroup=1</CP>
</ConnectionPoints>
<DLLClassList>
      <VemaAdminKernelApplet>
         <DLLName>VemaAdminServer.dll</DLLName>

      </VemaAdminKernelApplet>
      <NV3KernelMonitor>
         <DLLName>NV3KernelMonitorApplet.dll</DLLName>
         <ClassGroup>1</ClassGroup>
      </NV3KernelMonitor>
</DLLClassList>


 Konfigurace Služby vzdálené správy

Konfigurace Služby vzdálené správy

Pokud je Služba vzdálené správy instalována samostatně ze svého instalačního balíčku, pak je konfigurační soubor Služby vzdálené správy uložen v jejím programovém adresáři pod jménem VemaAdminService.VmConfig. Má stejnou strukturu jako konfigurační soubor Vema V3 Serveru.


 Autorizace

Autorizace

Autorizační server Vema je serverový aplet, který umožňuje klientským aplikacím získávat autorizační oprávnění pro uživatele a jimi prováděné operace. Umožňuje jak lokální běh (v rámci jednoho procesu), tak i vzdálený běh (meziprocesově či síťově). K uložení autorizačních dat používá autorizační databázi.
  • Konfigurace

  • Autorizační databáze


 Konfigurace

Konfigurace

Pokud chceme v nějakém systému používat autorizační databázi, je potřeba nastavit dvě věci:

  1. Autorizačnímu serveru nastavit cestu k autorizační databázi.
  2. Všem klientům autorizační databáze zadat umístění serveru (adresu), na který se mají připojovat.
  • Konfigurace autorizačního serveru

  • Konfigurace klientů


 Konfigurace autorizačního serveru

Konfigurace autorizačního serveru

Zadává se v konfiguračním souboru serveru u definice třídy s autorizačním serverem jako vlastní konfigurace. Poduzel musí mít název <DBPath>. Cesta k souboru nesmí být relativní.

Příklad:

      <VemaAuthorizationServer>
         <DLLName>VemaAuthorizationServer.dll</DLLName>
         <Config>
            <DBPath>c:\Program Files\Vema\DBVServer\Authorization.VmConfigDB</DBPath>
         </Config>
      </VemaAuthorizationServer>

Pokud není cesta k autorizační databázi určena, pokusí se autorizační server nalézt autorizační databázi se standardním názvem "Authorization.VmConfigDB" v adresáři aktuálního DLL, případně aktuálního spuštěného EXE, ve kterém je konfigurační server spuštěn.


 Konfigurace klientů

Konfigurace klientů

Všechny aplety, které mají používat autorizační databázi, musí mít v konfiguračním souboru serveru nastaven parametr <AuthorizationServer> ve vlastní konfiguraci.

Příklad:

      <DBVBridge>
         <DLLName>DBVAppBridgeApplet.dll</DLLName>
         <Config>
            <AuthorizationServer>Local</AuthorizationServer>
         </Config>
      </DBVBridge>
      <VemaAdminServerApplet>
         <DLLName>VemaAdminServer.dll</DLLName>
         <Config>
            <AuthorizationServer>Local</AuthorizationServer>
         </Config>
      </VemaAdminServerApplet>
      <VemaAdminKernelApplet>
         <DLLName>VemaAdminServer.dll</DLLName>
         <Config>
            <AuthorizationServer>Local</AuthorizationServer>
         </Config>
      </VemaAdminKernelApplet>
      <DBVScriptApplet>
         <DLLName>DBVAppBridgeApplet.dll</DLLName>
         <Config>
            <AuthorizationServer>Local</AuthorizationServer>
         </Config>
      </DBVScriptApplet>


 Autorizační databáze

Autorizační databáze

Autorizační databáze autorizačního serveru je tvořena obecným konceptem nazvaným "Konfigurační databáze Vema". Jedná se o textový soubor nebo sadu textových souborů s definovanou syntaxí. Výchozí název centrálního souboru autorizační databáze je "Authorization.VmConfigDB" a je obvykle uložen v adresáři, kde je hlavní knihovna autorizačního serveru - VemaAuthorizationServer.dll, nebo v cestě určené konfigurací autorizačního serveru.

Klientská aplikace při dotazu na autorizační server předá vlastní vstupní parametry dotazu, autorizační server vyhodnotí autorizační databázi na základě předaných parametrů a vrátí klientovi výsledná autorizační data v podobě množiny pojmenovaných strukturovaných hodnot. Názvy parametrů jsou dány autorizačním serverem, názvy a obsah výsledných hodnot dotazu (přístupových oprávnění) si určuje a interpretuje klientská aplikace sama, nicméně existuje standardní sada přístupových oprávnění.

  • Vstupní parametry

  • Popis přístupových oprávnění

  • Překlad rolí

  • Příklad autorizační databáze


 Vstupní parametry

Vstupní parametry

App

Identifikace aplikace. Řetězec musí souhlasit s názvem, pod kterým je aplikace instalována a uložena v hlavní obsahové knize.

Příklady:

App=="PAM"
App=="UCT"
App=="VZD"

AppVersion

Verze aplikace. Nemusí být zadána a kontroluje se pouze hlavní a vedlejší verze. Např.

AppVersion=="19.03"
AppVersion=="7.01"

Data

Název datového prostředí. Musí odpovídat názvu, pod kterým je datové prostředí zaregistrováno a uloženo v konfiguračním souboru DBVConfig.xml.

Příklady:

Data=="HRData"
Data=="EKOSFirma"

User

Jméno uživatele, který se přihlašuje do aplikace. Kontroluje se jméno, které vrací autentizační autorita, bez domény.

Domain

Název domény, ve které je přihlášen uživatel (User), který se přihlašuje do aplikace.

Role

Název role uživatele (User), ve které se uživatel rozhodl přihlásit.

AuthUser

Jméno uživatele autentizovaného vzhledem k autorizačnímu serveru. Např. v případě dotazu z V3 serveru to bude název účtu, pod kterým běží služba V3 server.

AuthDomain

Název domény, ve které je přihlášen uživatel (AuthUser) autentizovaný vzhledem k autorizačnímu serveru. Např. v případě dotazu z V3 serveru to bude název domény účtu, pod kterým běží služba V3 server.

LicNum

Licenční číslo. Lze použít např. pro filtrování operací nad licencemi.

Příklad:

LicNum==100


 Popis přístupových oprávnění

Popis přístupových oprávnění

Přístupová oprávnění jsou definována ve třech skupinách, rozdělených podle typu. V každé skupině je sada proměnných, které mohou být nastaveny na hodnoty:

  • 0 - oprávnění zamítnuto
  • 1 - oprávnění uděleno

Dále je možné nastavit parametry archivace.

  • Aplikační oprávnění

  • Datová oprávnění

  • Práva pro přenosy souborů

  • Nastavení archivace

  • Parametry pro DBV aplikaci


 Aplikační oprávnění

Aplikační oprávnění

Oprávnění pro práci s aplikacemi se nastavují ve struktuře AppPermissions. Proměnné pro nastavení jednotlivých oprávnění jsou:

Název | Typ | Impl. hodnota | Popis
List | 0/1 | 1 | Definuje oprávnění zobrazení aplikace. Aplikace je uvedena v seznamu aplikací nebo DBV aplikací.
ListAppNames | výčet | nedef. | Definuje oprávnění na zobrazení produktů či aplikací, které je nadřazeno oprávnění List. To znamená, že pokud je nastaveno oprávnění ListAppNames, oprávnění List se již nevyhodnocuje. Oprávnění ListAppNames obsahuje seznam názvů produktů či aplikací, které mají být viditelné, tedy uvedené ve výpisu produktů či aplikací. Implicitně toto oprávnění není uvedeno a použije se tedy oprávnění List. Je možné použít speciální hodnotu * (hvězdička), která znamená libovolný produkt či aplikaci. Viditelné tedy jsou všechny. Toto oprávnění je vhodné využít pro zrychlení práce při použití velkého množství produktů či aplikací.
Install | 0/1 | 1 | Definuje oprávnění instalace aplikace.Aplikaci je možné instalovat, opravit její instalaci, vyhledávat ji nebo ji registrovat do DBV.
Uninstall | 0/1 | 1 | Definuje oprávnění odinstalace aplikace. Aplikaci je možné odinstalovat nebo odregistrovat z DBV.
Execute | 0/1 | 1 | Definuje oprávnění na spuštění aplikace či produktu.
Configure | 0/1 | 0 | Definuje oprávnění na nastavení diagnostiky produktu a zobrazení logového souboru.
UseMonitor | 0/1 | 1 | Definuje oprávnění na používání monitoru serveru.
MonitorAccess | 0/1 | 0 | Pomocí tohoto oprávnění můžeme regulovat jednotlivým uživatelům oprávnění vidět a zavírat konkrétní aplikace v monitoru. Pro viditelnost aplikací musí mít uživatel také oprávnění UseMonitor, aby mohl monitor vůbec spustit.
AdminTools | 0/1 | 1 | Definuje oprávnění používat aplikace a funkce v menu "Nástroje" aplikace Vema - Správce, kromě funkce "DBV Monitor", která se řídí oprávněním UseMonitor.
EditInstPlan | 0/1 | 1 | Definuje oprávnění editovat instalační plán ve funkci "Nastavení" v menu "Instalační plán" aplikace Vema Správce.
ApplicationTabs | 0/1 | 1 | Definuje oprávnění zobrazit záložky "Produkty" a "Aplikace" v aplikaci Vema - Správce.
LicView | 0/1 | 1 | Definuje oprávnění zobrazit informace o instalované licenci ve Vema - Správci.
LicChange | 0/1 | 1 | Definuje oprávnění změnit licencování stanice. Zahrnuje přidání, či odebrání licence, změnu implicitního čísla licence, aktualizaci nebo manipulaci s licenčními podklady.
LicSave | 0/1 | 1 | Definuje oprávnění uložit zdrojovou licenci při on-line získání licenční karty z licenčního serveru Vema.
RegisterAppObj | 0/1 | 1 | Definuje oprávnění zaregistrovat aplikační objekt.
EditPStorage | 0/1 | 0 | Definuje oprávnění editace hesel v chráněném úložišti (Protected Storage).
ManageServices | 0/1 | 0 | Definuje oprávnění zastavovat a spouštět služby přes produkt "Manager služeb".

Typ 0/1 znamená numerickou hodnotu 0 nebo 1, typ výčet znamená seznam textů, viz příklad níže.

Příklad 1:

Uživatel Metlička má oprávnění vidět a spouštět aplikaci PAM všech verzí, ale nemá oprávnění ji instalovat nebo odinstalovat.

   Section (App=="PAM" && User=="Metlicka")
   {       AppPermissions {
         List = 1;
         Install = 0;
         Execute = 1;
         Uninstall = 0;
      }
   }

Příklad 2:

Uživatel Metlička má oprávnění vidět aplikace PAM a PER.

Na rozdíl od předchozího příkladu 1 je použito oprávnění ListAppNames. Pokud je na počítači nainstalováno velké množství, například několik desítek, produktů Vema, což je při ponechávání starších verzí snadno možné, bude zřetelně patrný rozdíl v rychlosti při použití oprávnění List a ListAppNames. Zatímco oprávnění List se vyhodnocuje pro každý produkt a aplikaci každé verze, tedy před zobrazením seznamu produktů či aplikací probíhá několik desítek testů tohoto oprávnění, oprávnění ListAppNames se vyhodnocuje jen jednou a produkty či aplikace se pak vyfiltrují podle výskytu svých názvů v seznamu ListAppNames.

   Section (User=="Metlicka")
   {
      AppPermissions {
         ListAppNames = [ "PAM", "PER" ];
      }
   }


 Datová oprávnění

Datová oprávnění

Oprávnění pro práci s datovými prostředími se nastavují ve struktuře DataPermissions. Proměnné pro nastavení jednotlivých oprávnění jsou:

Název | Typ | Impl. hodnota | Popis
List | 0/1 | 1 | Definuje oprávnění na zobrazení datového prostředí, které pak je uvedeno v každém výpisu datových prostředí.
ListDataNames | výčet | nedef. | Definuje oprávnění na zobrazení datových prostředí, které je nadřazeno oprávnění List. To znamená, že pokud je nastaveno oprávnění ListDataNames, oprávnění List se již nevyhodnocuje. Oprávnění ListDataNames obsahuje seznam jmen datových prostředí, která mají být viditelná, tedy uvedena ve výpisu datových prostředí. Implicitně toto oprávnění není uvedeno a použije se tedy oprávnění List. Je možné použít speciální hodnotu * (hvězdička), která znamená libovolné datové prostředí. Viditelná tedy jsou všechna. Toto oprávnění je vhodné využít pro zrychlení práce při použití velkého množství datových prostředí.
Create | 0/1 | 0 | Definuje oprávnění na vytvoření datového prostředí případně na jeho zaregistrování. Datové prostředí je možné založit, zaregistrovat nebo vyhledat.
Delete | 0/1 | 0 | Definuje oprávnění na zrušení datového prostředí. Datové prostředí je možné zrušit nebo odregistrovat.
ConvertData | 0/1 | 1 | Definuje oprávnění na převod datového prostředí na verzi.
Archive | 0/1 | 1 | Definuje oprávnění na archivaci datového prostředí.
Restore | 0/1 | 0 | Definuje oprávnění na obnovu datového prostředí z archivu.
DeleteArchive | 0/1 | 0 | Definuje oprávnění na zrušení archivu.
Lock | 0/1 | 1 | Definuje oprávnění na zamknutí datového prostředí. Datové prostředí je možné zamknout nebo odemknout.
NormalArchive | 0/1 | 1 | Definuje oprávnění použít typ archivace "obyčejný archiv".
WeeklyArchive | 0/1 | 1 | Definuje oprávnění použít typ archivace "cyklický týdenní archiv".
MonthlyArchive | 0/1 | 1 | Definuje oprávnění použít typ archivace "měsíční archiv po uzávěrce".
YearlyArchive | 0/1 | 1 | Definuje oprávnění použít typ archivace "roční archiv po uzávěrce".
DirectArchive | 0/1 | 1 | Definuje oprávnění použít typ archivace "přímý archiv do adresáře".
CopyArchive | 0/1 | 0 | Definuje oprávnění kopírovat archiv ze vdáleného počítače na lokální disk.
CrossNewYear | 0/1 | 0 | Definuje oprávnění převádět datové prostředí do nového roku (tj. duplikovat obsah).
CrossNewYearName | výčet | nedef. | Definuje jméno datového prostředí, do kterého se převedou data fukcí "Převod na nový rok"

Typ 0/1 znamená numerickou hodnotu 0 nebo 1, typ výčet znamená seznam textů, viz příklad níže.

Příklad 1:

V datovém prostředí "EKOSFirma" bude mít uživatel Metlička omezena práva. Datové prostředí pro něj bude viditelné a může jej převádět na novou verzi, archivovat a zamykat. Ostatní akce má zakázány.

   Section (Data=="EKOSFirma" && User=="Metlicka")
   {
      DataPermissions {
         List = 1;
         Create = 0;
         Delete = 0;
         ConvertData = 1;
         Archive = 1;
         Restore = 0;
         DeleteArchive = 0;
         Lock = 1;
      }
   }

Příklad 2:

V tomto příkladu je demonstrován zákaz vytvoření jakéhokoliv datového prostředí pro subsystém BAN. Zákaz opět platí pro uživatele Metličku.

   Section (App=="BAN" && User=="Metlicka")
   {
      DataPermissions {
         Create = 0;
      }
   }

Příklad 3:

Uživatel Metlička má oprávnění vidět datová prostředí DataPAMky a EKOSFirma.

Na rozdíl od předchozího příkladu 1 je použito oprávnění ListDataNames. Pokud na počítači existuje velké množství, například několik desítek, datových prostředí, bude zřetelně patrný rozdíl v rychlosti při použití oprávnění List a ListDataNames. Zatímco oprávnění List se vyhodnocuje pro každé datové prostředí, tedy před zobrazením seznamu datových prostředí probíhá velké množství testů tohoto oprávnění, oprávnění ListDataNames se vyhodnocuje jen jednou a datová prostředí se pak vyfiltrují podle výskytu svých názvů v seznamu ListDataNames.

   Section (User=="Metlicka")
   {
      DataPermissions {
         ListDataNames = [ "DataPAMky", "EKOSFirma" ];
      }
   }

Příklad 4:

Data datového prostředí ABC_2007 je možné převádět do nového roku a výsledek se uloží vždy do datového prostředí ABC_2008. Testovací data z prostředí TestData je možné převádět na nový rok do datového prostředí libovolného jména.

   Section (Data=="ABC_2007")
   {
      DataPermissions {
         CrossNewYear = 1;
         CrossNewYearName = "ABC_2008";
      }
   }
   Section (Data=="TestData")
   {
      DataPermissions {
         CrossNewYear = 1;
      }
   }


 Práva pro přenosy souborů

Práva pro přenosy souborů

Poslední skupina oprávnění je uložena ve struktuře FileTransferPermissions.

Název | Typ | Impl. hodnota | Popis
ReadConfig | 0/1 | 0 | Definuje oprávnění na čtení a prohlížení DBV konfigurace z Vema Správce.
WriteConfig | 0/1 | 0 | Definuje oprávnění na uložení DBV konfigurace z Vema Správce.
ReadLocalStore | 0/1 | 1 | Definuje oprávnění na čtení lokálního úložistě. Pokud má uživatel na serveru toto oprávnění, může z lokálního úložistě serveru stahovat instalační balíčky.
WriteLocalStore | 0/1 | 1 | Definuje oprávnění na zápis do lokálního úložiště. Pokud má uživatel na serveru toto oprávnění, může do lokálního úložistě serveru stahovat balíčky (například z nadřazeného úložiště support.vema.cz).
ReadFromProgDir | 0/1 | 1 | Pokud má uživatel toto oprávnění, může stahovat soubory z programového adresáře aplikací. Toto oprávnění je důležité například pro staré aplety typu V3Exe, které se ke klientovi dostávají právě touto cestou.

Typ 0/1 znamená numerickou hodnotu 0 nebo 1.

Příklad:

Pokud je tímto způsobem nastaven server, pak může uživatel Metlička stahovat ze serveru instalační balíčky a aplety V3Exe. Vše ostatní má zakázáno.

   Section (User=="Metlicka")
   {
      FileTransferPermissions {
          ReadConfig=0;
          WriteConfig=0;
          ReadLocalStore=1;
          WriteLocalStore=0;
          ReadFromProgDir=1;
      }
   }


 Nastavení archivace

Nastavení archivace

Parametry archivace jsou uloženy v proměnné ArchivRoot. Obsahuje kořenový adresář archivace, tedy adresář, do jehož podadresářů se provádí archivace jednotlivých datových prostředí.

Pokud je tato proměnná nastavena, pak je možné provádět archivace pouze do podadresářů tohoto adresáře, je možné pracovat s archivy pouze z tohoto adresáře a jeho podadresářů. Toto omezení se týká všech operací s archivy, tedy vyhledávání, registrace, obnova i archivace.

Archivace se implicitně provádí do podadresářů daných jménem datového prostředí a časem archivace. Například pokud je kořenový adresář archivace nastaven na hodnotu "c:\data\archiv\" a provádí-li se archivace datového prostředí "MojeFirma" dne 5.3.2005 ve 12:20, pak se archiv uloží implicitně do adresáře "c:\data\archiv\MojeFirma\2005.03.05 12.20". Jméno podadresáře je možné ovlivnit nastavením typu archivace.

Je-li kořenový adresář archivace nastaven přímo v autorizační databázi, pak není možné toto implicitní umístění archivu změnit.

Kořenový adresář archivace je možné nastavit pro všechny operace s archivy, pro operace prováděné zadaným uživatelem nebo pro operace prováděné nad zadaným datovým prostředím. Zadání se liší pouze podmínkou v příslušné sekci autorizační databáze, viz příklad.
Pokud je zadán kořenový adresář pro konkrétní datové prostředí, má toto nastavení vždy přednost před ostatními nastaveními kořenového adresáře archivace.
Pokud je nastaven kořenový adresář archivace pouze pro některá datová prostředí, pak pro tato datová prostředí není možné měnit adresář archivu, ale pro ostatní datová prostředí ano.

Příklad:

Pokud je tímto způsobem nastavena autorizační databáze, pak může uživatel Metlička archivovat pouze do podadresářů adresáře c:\data\archiv a pouze odtud může data obnovovat a prohlížet si archivy.

ArchivRoot = "c:\\data\\archiv";

Pozor na nutné zdvojení zpětných lomítek vynucené standardní syntaxí programovacího jazyka C.


 Parametry pro DBV aplikaci

Parametry pro DBV aplikaci

AppParams - Použití tohoto parametru závisí čistě na aplikaci. Např. v modulu CEP se používají na filtrování podle osobího čísla

Příklad:

   Section (App=="CEP" && User=="Novák") {
      AppParams="1478";
   }

MFileFilter - Soubory v libovolné DBV aplikaci lze filtrovat pomocí nastavení proměnné MFileFilter. Její hodnotou je seznam souborů a pro každý soubor definovaný seznam klíčů vět podle zvoleného indexu, které mají být vidět. DBV aplikace pak v těchto souborech pracuje jen s vyjmenovanými větami. Navíc, pokud takový soubor je někde použit jako číselník u některé položky, pracuje se v souboru obsahujícím tuto položku jen s větami, které mají v položce hodnotu viditelnou v číselníku.

Syntaxe:

MFileFilter="<jméno souboru>:<jméno indexu>=(<klíč1>[,<klíč2>...][;...])[;<jméno souboru>...)";

Hodnotou je tedy:

  • textová hodnota (řetězec v uvozovkách)
  • seznam filtrovaných souborů (číselníků) oddělených středníkem
  • u každého se za dvojtečkou uvede jméno indexu následované rovnítkem, za kterým v kulatých závorkách následuje definice vět patřících do filtru oddělených středníkem
  • pokud je index z více položek (klíčů), je každá věta definována seznamem hodnot příslušných klíčů, které jsou odděleny čárkou
  • hodnota klíče může být textová (v uvozovkách), číselná (přímo číslo) nebo znak *, vyjadřující libovolnou hodnotu klíče

Zápis proměnné MFileFilter se provádí do konfigurační databáze.

Příklad:

User Section (App In ["PAM","PER"] && Data=="HR" && Role=="vonasek")
{
MFileFilter = "osobyv:hlavni=(100)";
}

Ve všech souborech aplikací PAM a PER se v datovém prostředí HR bude při přihlášení uživatele Vonasek pracovat (budou viditelné) jen s větami patřícími osobě s osobním číslem 100.


 Překlad rolí

Překlad rolí

V autorizační databázi je možné pro DBV aplikace aktivovat překlad autentizovaných uživatelů na role v DBV. Ve všech námi zvolených datových prostředích (které spolu datově vůbec nemusí souviset), pak není potřeba opakovaně definovat všechny uživatele, ale pouze několik rolí, ve kterých mohou naši uživatelé vystupovat. Autorizační databáze pak zajistí překlad uživatele na roli v DBV podle pravidel, které v ní definujeme. Výhodou je především správa všech uživatelů na jednom místě, takže při založení nového datového prostředí stačí jen nadefinovat do nového prostředí několik rolí. Na rozdíl od centrální správy není třeba, aby nové prostředí bylo s existujícími jakkoliv datově provázáno.

Překlad rolí je možné zapnout pouze ve V3 verzi. V lokální verzi není tato funkčnost dostupná.

Při použití překladu rolí v DBV aplikaci uživatel vystupuje v přidělené roli, ale informace o autentizovaném uživateli se neztratí. Zapisuje se do aplikačního logu a je viditelná také na stavovém okně. Od jména role autentizovaného uživatele je oddělena dvojtečkou.

V následujících kapitolách jsou vysvětleny jednotlivé kroky, které je potřeba udělat pro aktivaci překladu rolí.

  • Definice rolí v DBV aplikacích

  • Definice pravidel v autorizační databázi

  • Aktivace autorizace na serveru


 Definice rolí v DBV aplikacích

Definice rolí v DBV aplikacích

Ve všech DBV aplikacích, ve kterých chceme použít překlad rolí musíme nadefinovat uživatelské role. Postupujeme jako při definici normálních DBV uživatelů.

V příkladu jsou v aplikaci PAM nadefinovány 3 role - Administrator, ucetni a Vedouci.


 Definice pravidel v autorizační databázi

Definice pravidel v autorizační databázi

V dalším kroku musíme v autorizační databázi, která je implicitně po instalaci umístěna do programového adresáře serveru v souboru Authorization.VmConfigDB, nadefinovat pravidla pro pro překlad rolí.

Úplně nejjednodušší pravidlo může vypadat například takto:

   Section (User=="Vonasek" && App=="PAM")
   {
      Roles += [
         "Administrator",
         "Ucetni"
      ];
   }

V něm jsme nadefinovali, že uživatel Vonasek v aplikaci PAM může vystupovat v rolích Administrator nebo v roli Ucetni.

Definovat pro nové pravidlo každého uživatele by bylo příliš pracné a nepřehledné. Proto pro více uživatelů, kteří mají přidělenou stejnou množinu rolí, nadefinujeme skupinu pomocí vazby include.

   Section (User=="Vonasek"
         || User=="Otoupal"
         || User=="Machacek") {
      Include {
         Group = "Administratori";
      }
   }

Pak můžeme v pravidle pro aplikaci použít pouze nově definovanou skupinu Administratori.

   Section (Group=="Administratori" && App=="PAM")
   {
      Roles += [
         "Administrator",
         "Ucetni"
      ];
   }

Tímto způsobem nadefinujeme pravidla pro všechny uživatele, kteří mohou přistupovat do DBV aplikací.


 Aktivace autorizace na serveru

Aktivace autorizace na serveru

V serverové konfiguraci (implicitně soubor SrvConfig.xml) musíme aktivovat autorizaci pro aplet DBVBridge. Příslušná část konfigurace bude ve většině případů vypadat takto.

      <DBVBridge>
         <DLLName>DBVAppBridgeApplet.dll</DLLName>
         <Entrypoint>1</Entrypoint>
         <Config>
            <AuthorizationServer>Local</AuthorizationServer>
         </Config>
      </DBVBridge>

Samozřejmě je možné autorizační server provozovat odděleně od V3 serveru, takže místo klíčového slova "Local" bychom uvedli adresu přípojného bodu. Pak by příslušná část konfigurace vypadala asi takto:

      <DBVBridge>
         <DLLName>DBVAppBridgeApplet.dll</DLLName>
         <Entrypoint>1</Entrypoint>
         <Config>
            <AuthorizationServer>IP:authorize.vema.cz:4150</AuthorizationServer>
         </Config>
      </DBVBridge>


 Příklad autorizační databáze

Příklad autorizační databáze

VemaConfigScript Version=1
{
   // Předdefinované vstupní parametry:
   //
   //  - App        - název aplikace
   //  - AppVersion - verze aplikace (ve formátu "x.yy", např. "19.02", "8.03"
   //                 atp.)
   //  - Data       - název datového prostředí
   //  - User       - jméno uživatele, který se přihlašuje do aplikace.
   //  - Domain     - název domény, ve které je přihlášen uživatel (User),
   //                 který se přihlašuje do aplikace
   //  - Role       - název role uživatele (User), ve které se uživatel
   //                 rozhodl přihlásit
   //  - AuthUser   - jméno uživatele autentizovaného vzhledem k autorizačnímu
   //                 serveru. Např. v případě dotazu z V3 serveru to bude
   //                 název účtu, pod kterým běží služba V3 server.
   //  - AuthDomain - název domény, ve které je přihlášen uživatel (AuthUser)
   //                 autentizovaný vzhledem k autorizačnímu serveru. Např.
   //                 v případě dotazu z V3 serveru to bude název domény účtu,
   //                 pod kterým běží služba V3 server.
   // Tato sekce bez podmínky obsahuje implicitní nastavení platná pro všechny
   // uživatele, všechny aplikace a všechna datová prostředí.
   Section
   {
      // Implicitní nastavení pro práci s daty (klíčováno podle názvu datového
      // prostředí).
      DataPermissions {
         List = 1;
         Create = 0;
         Delete = 0;
         ConvertData = 1;
         Archive = 1;
         Restore = 0;
         Lock = 1;
         DeleteArchive = 0;
      }
      // Implicitní nastavení pro práci s aplikacemi (klíčováno podle názvu
      // a příp. verze aplikace).
      AppPermissions {
         List = 1;
         Install = 0;
         Execute = 1;
         Uninstall = 0;
      }
      // Implicitní nastavení pro práci se soubory a konfiguracemi
      // (neklíčováno, platí pro uživatele globálně).
      FileTransferPermissions {
         ReadConfig = 0;
         WriteConfig = 0;
         ReadLocalStore = 1;
         WriteLocalStore = 0;
         ReadFromProgDir = 1;
      }
   }
/*
   // Příklad nastavení kořenového adresáře archivace.
   // Uživatel Vonásek vidí jen archívy v adresáři c:\data\archiv a jeho podadresářích
   // a může archivovat jen do jeho podadresářů (neklíčováno, platí pro uživatele
   // globálně):
   Section (Domain=="domena" && User=="Vonasek")
   {
      ArchivRoot = "c:\\data\\archiv";
   }
   // Datové prostředí DataPAMky se archivuje do adresáře c:\data\archivPAMky

   Section (Data=="DataPAMky")
   {
      ArchivRoot = "c:\\data\\archivPAMky";
   }
*/
/*
   // Příklad zavedení rolí do aplikace PAM:
   Section (Domain=="domena" && User=="Vonasek" && App=="PAM")
   {
      Roles += [
         "Admin",
         "Ucetni"
      ];
   }
*/
/*
   // Příklad zákazu zobrazení aplikace PAM a jejího spuštění pro uživatele
   // Vonáska:
   Section (Domain=="domena" && User=="Vonasek" && App=="PAM")
   {
      AppPermissions {
         list = 0;
         execute = 0;
      }
   }
*/
}


 Konfigurační databáze

Konfigurační databáze

Konfigurační server Vema je serverový aplet, který umožňuje klientským aplikacím ukládat a získávat jejich aplikační či uživatelská nastavení. Umožňuje jak lokální běh (v rámci jednoho procesu), tak i vzdálený běh (meziprocesově či síťově). K uložení konfiguračních dat používá konfigurační databázi.
  • Konfigurace

  • Konfigurační databáze


 Konfigurace

Konfigurace

Pokud chceme v nějakém systému používat konfigurační server, je potřeba nastavit dvě věci:

  1. Všem klientům konfigurační databáze zadat umístění serveru (adresu), na který se mají připojovat.
  2. Konfiguračnímu serveru nastavit umístění konfigurační databáze (cestu).
  • Postup hledání umístění konfiguračního serveru

  • Postup hledání umístění konfigurační databáze


 Postup hledání umístění konfiguračního serveru

Postup hledání umístění konfiguračního serveru

Klientská aplikace postupuje při zjišťování umístění konfiguračního serveru v následujícím pořadí (použije první dostupný spojovací řetězec z níže uvedených umístění):

  1. Hodnota určená přímo klientskou aplikací.
  2. Hodnota z příkazové řádky u klientských aplikací, které to podporují (např. Vema.exe - parametr /ConfigServer=...).
  3. Konfigurace klientského apletu v konfiguračním souboru klientské aplikace (např. NazevAplikace.VmConfig - umístěn obvykle v adresáři aplikace) - uzel konfigurace Config/DLLClassList/NázevApletu/Config/ConfigServer. Není zde povoleno použít spojovacího řetězce typu "FILE:".
  4. Aplikační nastavení přihlášeného uživatele (obvykle "C:\Documents and Settings\JménoUživatele\Data aplikací\Vema\Vema.VmConfig") - uzel konfigurace Config/CfgServerAddr. Pokud je zde uveden spojovací řetězec typu "FILE:", je namísto něj použit spojovací řetězec "Local" a načtení cesty ke konfigurační databázi z tohoto uzlu se provede až na straně lokálního serveru.
  5. Aplikační nastavení společné všem uživatelům (obvykle "C:\Documents and Settings\All Users\Data aplikací\Vema\Vema.VmConfig") - uzel konfigurace Config/CfgServerAddr. Pokud je zde uveden spojovací řetězec typu "FILE:", je namísto něj použit spojovací řetězec "Local" a načtení cesty ke konfigurační databázi z tohoto uzlu se provede až na straně lokálního serveru.
  6. Konfigurace klientské aplikace v konfiguračním souboru klientské aplikace (např. NazevAplikace.VmConfig - umístěn obvykle v adresáři aplikace) - uzel konfigurace Config/CfgServerAddr.

Klientská aplikace navíc může na vlastní žádost změnit pořadí hledání přehozením bodů 1.) a 2.).

Jako hodnotu spojovacího řetězce lze použít tyto hodnoty:

  • None - konfigurační server pro danou aplikaci či aplet není nastaven. Toto je implicitní hodnota, pokud není nalezeno nic dle výše uvedeného postupu.
  • Local - konfigurační server si klientská aplikace spustí sama ve svém kontextu (lokální provoz). Databáze bude nalezena dle vyhledávacího postupu uvedeného níže.
  • FILE:cesta_k_souboru - totéž, co Local, ale lokálnímu konfiguračnímu serveru bude předána uvedená cesta ke konfigurační databázi.
  • IP:adresa nebo IP:adresa:port - aplikace se připojí ke konfiguračnímu serveru běžícímu na uvedené adrese, příp. na uvedeném portu.


 Postup hledání umístění konfigurační databáze

Postup hledání umístění konfigurační databáze

Konfigurační server hledá cestu ke konfigurační databázi podle následujícího postupu:

  1. Cesta určená klientskou stranou. Tento krok se uplatní pouze při lokálním spuštění konfiguračního serveru klientem na základě připojovacího řetězce typu "FILE:").
  2. Konfigurace konfiguračního serveru v konfiguračním souboru aplikace (např. NazevAplikace.VmConfig - umístěn obvykle v adresáři aplikace) - uzel konfigurace Config/DLLClassList/VemaConfigServer/Config/DBPath.
  3. Aplikační nastavení přihlášeného uživatele (obvykle "C:\Documents and Settings\JménoUživatele\Data aplikací\Vema\Vema.VmConfig") - uzel konfigurace Config/CfgServerAddr.
  4. Aplikační nastavení společné všem uživatelům (obvykle "C:\Documents and Settings\All Users\Data aplikací\Vema\Vema.VmConfig") - uzel konfigurace Config/CfgServerAddr.
  5. Implicitně nazvaný řídicí soubor databáze ("Config.VmConfigDB") v adresáři, kde je umístěna knihovna DLL, ze které je konfigurační server spuštěn (VemaConfigServer.dll).
  6. Implicitně nazvaný řídicí soubor databáze ("Config.VmConfigDB") v adresáři, kde je umístěn spustitelný soubor EXE, v němž je konfigurační server spuštěn.

Klientská aplikace navíc může lokálně spuštěnému konfiguračnímu serveru nařídit, že pokud server nenalezne v žádné z výše uvedených umístění cestu ke konfigurační databázi, bude konfigurační databáze automaticky vytvořena s výchozím názvem Config.VmConfigDB v profilu přihlášeného uživatele nebo v profilu společném všem uživatelům (All Users) a cesta k ní bude zapsána do příslušného Vema.VmConfig v tomtéž profilu.


 Konfigurační databáze

Konfigurační databáze

Konfigurační databáze konfiguračního serveru je tvořena obecným konceptem nazvaným "Konfigurační databáze Vema". Jedná se o textový soubor nebo sadu textových souborů s definovanou syntaxí. Výchozí název centrálního souboru konfigurační databáze je "Conmfig.VmConfigDB" a je obvykle uložen v adresáři, kde je hlavní knihovna konfiguračního serveru - VemaConfigServer.dll, nebo v cestě určené konfigurací konfiguračního serveru.

Klientská aplikace při dotazu na konfigurační server předá vlastní vstupní parametry dotazu (množiny pojmenovaných strukturovaných hodnot), konfigurační server vyhodnotí konfigurační databázi na základě předaných parametrů a vrátí klientovi výsledná konfigurační data opět v podobě množiny pojmenovaných strukturovaných hodnot. Názvy a obsah parametrů, stejně jako názvy a obsah výsledných hodnot dotazu si určuje a interpretuje klientská aplikace sama, vyjma některých vstupních parametrů nastavovaných konfiguračním serverem.

  • Konfigurační databáze Vema

  • Vstupní parametry dotazu

  • Příklad konfigurační databáze


 Konfigurační databáze Vema

Konfigurační databáze Vema

Konfigurační databáze Vema (dále jen KDV) představuje obecný koncept strukturovaného asociativního úložiště konfiguračních dat pro aplikace Vema.

Dotaz na konfigurační data pak představuje vyhodnocení KDV se zadanými vstupními parametry. Vyhodnocením KDV se vytvoří strukturovaná data (tzv. datový prostor - dále jen DP), která představují výslednou konfiguraci pro vznesený dotaz. Názvy, význam a obory hodnot jednotlivých vstupních parametrů nejsou přitom tímto konceptem nijak pevně stanoveny, záleží na konkrétní aplikaci či službě, která vyhodnocení KDV spouští a spravuje. Totéž platí i pro složení výsledných konfiguračních dat. Pokud je KDV např. použita pro autorizační databázi v rámci autorizačního serveru, budou autorizačním serverem pevně stanoveny např. vstupní parametry "App" (tj. "Aplikace"), "User" ("Uživatel") a "Role" a výstupní konfigurační data např. Execute ("Oprávnění ke spuštění"), Install ("Oprávnění k instalaci") apod. Pokud je KDV použita pro konfigurační databázi v rámci konfiguračního serveru, budou serverem pevně stanoveny např. vstupní parametry "App" a "User" a struktura výstupních dat bude zcela záviset na konkrétní aplikaci, která vznáší dotaz na konfigurační server.

  • Informace o verzích

  • Struktura

  • Vyhodnocování


 Informace o verzích

Informace o verzích

Řídicí soubor i skriptové soubory KDV jsou verzovány. Je tím zajištěna zpětná kompatibilita interpretu při analýze starších verzí jednotlivých souborů tvořících KDV. V rámci jedné KDV je tedy možné používat různé verze jednotlivých jejích souborů, pokud není v dokumentaci uvedeno jinak.

Tato dokumentace se vztahuje

  • k řídicímu souboru KDV verze 1,
  • ke skriptovým souborům KDV verze 2 a nižší. Všechny uvedené informace platí pro verzi 1, informace platné pro vyšší verze jsou označeny textem "platí od syntaxe skriptu verze n".


 Struktura

Struktura

Jednoduchá KDV se skládá pouze z jednoho skriptového souboru.

Složená KDV se skládá z těchto částí:

  • řídicí soubor
  • skriptové soubory
  • pomocné datové soubory
  • Řídicí soubor

  • Skriptové soubory

  • Pomocné datové soubory

  • Šifrování řídicích a skriptových souborů

  • Akceptovaná kódování textových souborů

  • Praktické rady pro tvorbu databáze


 Řídicí soubor

Řídicí soubor

Řídicí soubor KDV (dále jen "řídicí soubor") je centrálním vstupním bodem pro vyhodnocování KDV.

  • Perzistence

  • Syntaxe


 Perzistence

Perzistence

Standardní perzistencí řídicího souboru je textový soubor v souborovém systému počítače uložený v některém z akceptovaných kódování.

Standardní (doporučená) přípona řídicího souboru je ".VmConfigDB".


 Syntaxe

Syntaxe

  • Nevýznamové znaky

  • Struktura

  • Komentáře


 Nevýznamové znaky

Nevýznamové znaky

Bílé znaky (mezery, tabulátory, konce řádků) jsou nevýznamové a jsou tedy ignorovány. Bílé znaky jsou významové pouze uvnitř řetězců.


 Struktura

Struktura

Řídicí soubor

Řídicí soubor se skládá ze záhlaví a těla řídicího souboru.

Záhlaví řídicího souboru obsahuje identifikaci řídicího souboru (VemaConfigDatabase) a verzi syntaxe řídicího souboru (Version=n).

Tělo řídicího souboru je ohraničeno složenými závorkami a obsahuje struktury definující části a vlastnosti databáze, např. seznam skriptů.

Příklad:

VemaConfigDatabase Version=1
{
   Scripts
   {
      "PAM.20.02.00";
      "Custom\\PAM.10.02.00.admin";
      "PER.10.02.00";
      "Custom\\PER.10.02.00.novak";
   }
}

Seznam skriptů

Seznam skriptů je struktura uvozená klíčovým slovem Scripts, ohraničená složenými závorkami a obsahující seznamem identifikátorů konfiguračních skriptů uzavřených v uvozovkách a ukončených středníky:
VemaConfigDatabase Version=1
{
   Scripts
   {
      "PAM.20.02.00";
      "Custom\\PAM.10.02.00.admin";
      "PER.10.02.00";
      "Custom\\PER.10.02.00.novak";
   }
}

Identifikátor skriptu je použit k nalezení skriptového souboru tak, že k identifikátoru je připojena standardní přípona skriptového souboru (".VmConfigDB") a soubor je hledán relativně vzhledem k adresáři, ve kterém je umístěn řídicí soubor. Skriptové soubory tedy mohou být umístěny ve stejném, nebo podřízeném adresáři, jako je umístěn řídicí soubor. Např. ve výše uvedeném příkladu jsou dva skripty umístěny v podadresáři "Custom".


 Komentáře

Komentáře

Komentáře (neboli poznámky), tj. text, který je ignorován interpretem, je možné zapisovat dvojím způsobem - jako komentář řádkový a komentář blokový.

Řádkový komentář

Začíná dvěma lomítky (//) a končí koncem řádku.

Příklad

// Toto je řádkový komentář

Blokový komentář

Začíná lomítkem a hvězdičkou (/*) a končí nejbližší hvězdičkou a lomítkem (*/).

Komentář, který pokračuje až do konce souboru a není uzavřen, není povolen (vyvolá při interpretaci chybu).

Příklad

/* Toto je blokový komentář */
/*
   Toto je také blokový komentář.
   Může mít i více řádků.
*/


 Skriptové soubory

Skriptové soubory

Skriptový soubor KDV (dále jen "skriptový soubor") je základní jednotkou perzistence KDV. Jedná se o textový soubor, jehož syntaxe odpovídá jazyku nazvanému "Konfigurační skript Vema" (dále jen KSV), což je strukturovaný interpretovaný jazyk pro sestavování konfiguračních informací aplikacím Vema.

  • Perzistence

  • Syntaxe


 Perzistence

Perzistence

Standardní perzistencí skriptového souboru je textový soubor v souborovém systému počítače uložený v některém z akceptovaných kódování.

Standardní přípona skriptového souboru je ".VmConfigDB". Tato přípona je:

  • doporučená u skriptového souboru tvořícího jednoduchou KDV
  • povinná u skriptového souboru, který je součástí složené KDV


 Syntaxe

Syntaxe

  • Nevýznamové znaky

  • Struktura

  • Klíčová slova

  • Identifikátory

  • Datové typy

  • Příkazy

  • Výrazy

  • Funkce

  • Komentáře


 Struktura

Struktura

  • Skript


 Skript

Skript

KSV se skládá ze záhlaví a těla skriptu.

Záhlaví skriptu obsahuje identifikaci skriptu (VemaConfigScript) a verzi syntaxe skriptu (Version=n).

Tělo skriptu je ohraničeno složenými závorkami a je rozděleno na sekce.

  • Sekce


 Sekce

Sekce

Každá sekce je uvozena klíčovým slovem Section nebo MSection, skládá se ze záhlaví sekce a těla sekce, ohraničeného složenými závorkami. Klíčové slovo MSection má stejný sémantický význam jako Section a je zachováno pouze z důvodu kompatibility se staršími verzemi syntaxe skriptu.

Záhlaví sekce může obsahovat podmínku zpracování dané sekce pro vyhodnocování skriptu.

Tělo sekce obsahuje příkazy, které se provedou, pokud je podmínka zpracování v záhlaví sekce splněna. V úvodu těla sekce mohou být uvedeny příkazy Include.

(Následující platí od syntaxe skriptu verze 2.)

Záhlaví sekce může navíc obsahovat specifikaci úrovně zpracování sekce a příznak Data. V jednom skriptu se nesmí vyskytnout dvě sekce, které by měly stejnou podmínku zpracování a zároveň stejnou úroveň zpracování.

Úroveň zpracování

(Platí od syntaxe skriptu verze 2.)

Úroveň zpracování může být uvedena na začátku záhlaví sekce. Úroveň zpracování udává prioritu, s jakou bude sekce zpracována. Vyšší úroveň zpracování znamená vyšší prioritu při zpracování, tj. sekce s vyšší úrovní zpracování bude vyhodnocena dříve, než všechny sekce s některou nižší úrovní zpracování. Díky tomu lze nastavovat např. výchozí či vynucené hodnoty ve výsledném datovém prostoru.

Pokud není úroveň zpracování uvedena, je sekce zpracována až nakonec - za sekcemi s nejnižší úrovní zpracování.

Seznam úrovní zpracování Klíčová slova jsou zde uvedena od nejvyšší po nejnižší úroveň zpracování.

Klíčové slovo úrovně zpracování | Od verze syntaxe skriptu | Význam
GlobalDef | 2 | Výchozí globální nastavení. Vytváří je dodavatel produktu, přináší je instalace produktu. V této úrovni se obvykle nastavují výchozí hodnoty nebo vynucené hodnoty.
Global | 2 | Globální nastavení. Vytváří je správce produktu.
ProductDef | 2 | Výchozí nastavení konkrétního produktu. Vytváří je dodavatel produktu, přináší je instalace produktu. V této úrovni se obvykle nastavují výchozí hodnoty nebo vynucené hodnoty.
Product | 2 | Nastavení konkrétního produktu. Vytváří je správce produktu nebo jednotlivé produkty samy.
UserGroup | 2 | Nastavení skupiny uživatelů. Vytváří je správce produktu nebo jednotlivé produkty samy.
User | 2 | Nastavení uživatele. Vytváří je správce produktu nebo jednotlivé produkty samy.

Příklad

VemaConfigScript Version=2
{
   User Section (App=="PAM" && User=="novak")
   {
      // Tato sekce bude provedena jako třetí ze zde uvedených sekcí
      // (za předpokladu splnění podmínky zpracování v záhlaví sekce)
   }
   ProductDef Section (App=="PAM")
   {
      // Tato sekce bude provedena jako druhá ze zde uvedených sekcí
      // (za předpokladu splnění podmínky zpracování v záhlaví sekce)
   }
   User Section (App=="PAM" && User=="vonasek")
   {
      // Tato sekce bude provedena jako čtvrtá ze zde uvedených sekcí
      // (za předpokladu splnění podmínky zpracování v záhlaví sekce)
   }
   Section (App=="PAM")
   {
      // Tato sekce bude provedena jako šestá ze zde uvedených sekcí
      // (za předpokladu splnění podmínky zpracování v záhlaví sekce)
   }
   GlobalDef Section (App=="PAM")
   {
      // Tato sekce bude provedena jako první ze zde uvedených sekcí
      // (za předpokladu splnění podmínky zpracování v záhlaví sekce)
   }
   User Section (App=="PAM" && User=="pilny")
   {
      // Tato sekce bude provedena jako pátá ze zde uvedených sekcí
      // (za předpokladu splnění podmínky zpracování v záhlaví sekce)
   }
}

Příznak "Data"

(Platí od syntaxe skriptu verze 2.)

Příznak Data označuje tzv. "datovou sekci" a je možné jej uvést v záhlaví sekce za případným uvedením úrovně zpracování. Uvedení tohoto příznaku nemá vliv na vyhodnocení skriptu, určuje však, že sekce je určena pro automatickou (programovou) modifikaci a v případě změny obsahu těla této sekce musí být dodržena pravidla jednoduché syntaktické struktury, aby bylo tělo sekce snadno algoritmicky modifikovatelné. Tzn., že sekce smí obsahovat pouze jednoduché přiřazovací příkazy, na jejichž pravé straně mohou být pouze konstanty, a nesmí obsahovat např. žádné příkazy If ani složené či nekonstantní výrazy na pravých stranách přiřazovacích příkazů.

Aplikace si totiž do těchto sekcí mohou ukládat např. svá nastavení apod. Uživatel (správce) by do nich neměl ručně zasahovat vůbec, nebo nanejvýš jen ruční změnou přiřazovaných konstant.

Příklad

VemaConfigScript Version=2
{
   Section (App=="PAM")
   {
      // Tato sekce není datová - je možné v ní používat složitější syntaktické konstrukce
      if (AuthUser=="Admin") {
         //...
         x = AuthUser;
         y = 5*8+4;
      }
   }
   Data Section (App=="PAM")
   {
      // Tato sekce je datová - pouze omezené synt. konstrukce
      x = 5;
      y = "bbb";
      z {
         a = 8;
         b = 5;
      }
   }
   ProductDef Data Section (App=="PAM")
   {
      // Tato sekce je datová - pouze omezené synt. konstrukce
      x := 1;
      y = "aaa";
      z {
         a = 0;
         b::= 1;
      }
   }
}

Podmínka zpracování

Podmínku zpracování tvoří podmínkový výraz ohraničený v kulatých závorkách "(" a ")". Pokud podmínka zpracování není uvedena, je sekce při vyhodnocování KDV provedena vždy, tj. bez ohledu na vstupní parametry. Pokud podmínka zpracování uvedena je, pak je sekce při vyhodnocování KDV provedena pouze tehdy, pokud je po dosazení stávajícího obsahu datového prostoru (resp. dosazení iniciálních parametrů) splněna.

Příklad

VemaConfigScript Version=1
{
   Section
   {
      // Tato sekce nemá v záhlaví podmínku zpracování - bude provedena vždy
   }
   Section (App=="PAM")
   {
      // Tato sekce má v záhlaví podmínku zpracování - bude provedena pouze tehdy,
      // pokud parametr "App" bude mít hodnotu "PAM"
   }
   Section (User=="vonasek" && Data=="Data2005" && App=="UCT" && AppVersion>="17.02")
   {
      // Tato sekce má v záhlaví podmínku zpracování - bude provedena pouze tehdy,
      // pokud parametr "User" bude mít hodnotu "vonasek", parametr
      // "Data" bude roven hodnotě "Data2005", parametr "App" bude mít hodnotu
      // "UCT" a parametr "AppVersion" bude větší nebo roven hodnotě "17.02".
   }
}


 Klíčová slova

Klíčová slova

Klíčová slova jsou vyhrazená slova jazyka KSV. Jsou rozlišována bez ohledu na velikost písmen (case-insensitive), tj. např. "Section" a "section" jsou považovány za totožná klíčová slova. Pro přehlednost je však vhodné zapisovat klíčová slova s úvodními velkými písmeny.

Klíčová slova skriptu

Klíčové slovo | Od verze syntaxe skriptu
Data | 2
Global | 2
GlobalDef | 2
MSection | 1
Product | 2
ProductDef | 2
Section | 1
User | 2
UserGroup | 2

Klíčová slova podmínky zpracování a těla sekce

Tvůrcem skriptu nesmí být definován žádný identifikátor, který by se jmenoval stejně, jako některé z těchto klíčových slov.

Klíčové slovo | Od verze syntaxe
If | 1
In | 1
Include | 1


 Identifikátory

Identifikátory

Identifikátory slouží k volitelnému pojmenování prvků v kolekcích, tj. v podstatě k vytvoření pojmenovaných datových prvků ve výsledku dotazu.

Identifikátory jsou rozlišovány bez ohledu na velikost písmen (case-insensitive), tj. např. "MojeAplikace" a "mojeaplikace" jsou považovány za totožné identifikátory. Pro přehlednost je však vhodné zapisovat klíčová slova s úvodními velkými písmeny a velkými písmeny uprostřed názvu tam, kde začíná další část identifikátoru (další slovo). Jméno identifikátoru nesmí kolidovat s žádným z klíčových slov.

Identifikátory mohou začínat pouze velkým nebo malým písmenem anglické latinky nebo podtržítkem ("A"-"Z", "a"-"z", "_") a mohou obsahovat pouze velká a malá písmena anglické latinky, podtržítka a číslice ("0"-"9").

Příklad:

   Identifikator_3

Identifikátory mohou navíc mít připojen klíč. Ten se používá pro rozlišení stejnojmenných stejnolehlých identifikátorů. Klíč se za identifikátor připojuje do hranatých závorek ("[", "]") a platí pro něj stejná pravidla zápisu jako pro hlavní část identifikátoru, uvedená výše. Příklad:

   Identifikator[Klic]

Pozn.: Pokud je potřeba, aby klíč obsahoval i jiné znaky, než které jsou povoleny (např. mezery, interpunkci, české znaky apod.), je možné jej ohraničit uvozovkami. Tato vlastnost však nemá zaručeno trvání v dalších verzích jazyka, nebo může být syntaxe zápisu této vlastnosti přetvořena. Příklad:

   Identifikator["Klíč s mezerami"]

Příklady vhodného zápisu

  • App
  • MujPrvniIdentifikator
  • MojePromenna2
  • MOJE_PROMENNA_2
  • _SysParam
  • IdentifikatorSKlicem[Klic1]
  • IdentifikatorSKlicem[Klic2]
  • Osoby[Josef]


 Datové typy

Datové typy

KSV pracuje nad datovým prostorem, který může obsahovat prvky několika různých datových typů. Datový typ prvku datového prostoru je dán implicitně (přiřazením hodnoty), takže prvek získává datový typ podle přiřazené hodnoty.

Základní

  • String (řetězec)

  • Integer (celé číslo)

  • Real (reálné číslo)

Složené

  • Set (množina)

  • Collection (kolekce)


 String (řetězec)

String (řetězec)

Popis Řetězec představuje sled znaků. Maximální délka řetězce je omezena možnostmi operačního systému a dostupnou virtuální pamětí, nejvýše však 2×10^31-2 znaků (2147483646 znaků).

Řetězcová konstanta je ohraničena uvozovkami. Speciální znaky mohou být uvozeny zpětným lomítkem (tzv. "backslash") - "\" - vytváří se tím tzv. "escape sekvence". Konce řádku uvnitř řetězce jsou převzaty do řetězce nezměněné.

Escape sekvence | Výsledný znak
\" | "
\\ | \
\n | konec řádku uvnitř řetězce
\t | tabulátor
\<konec řádku> | potlačení (ignorování) konce řádku - řetězec pokračuje na dalším řádku

Příklady

  • "abc"
  • "Toto je řetězec."
  • ""
  • "Toto je první řádek.\nToto je druhý řádek."
  • "Toto je první řádek.
    Toto je druhý řádek."
  • "Toto je první část řetězce \
    a tady pokračuje bez přerušení koncem řádku."
  • "\tToto je odsazený první řádek.\n\tToto je odsazený druhý řádek."
  • "Toto je řetězec obsahující jednu uvozovku - \" - a zpětné lomítko - \\."


 Integer (celé číslo)

Integer (celé číslo)

Popis Celé číslo se znaménkem. Rozsah od -2147483648 do 2147483647, paměťová náročnost 32 bitů (4 byte).

Příklady

  • 0
  • 25
  • -38
  • +56


 Real (reálné číslo)

Real (reálné číslo)

Popis Reálné číslo se znaménkem a s plovoucí řádovou čárkou. Rozsah max. 15 platných cifer od 1,7×10^-308 do 1,7×10^+308. Paměťová náročnost 64 bitů.

Oddělovačem desetinných míst je tečka, oddělovačem exponenciální části písmeno "E" nebo "e".

Formát zápisu konstanty (a je celočíselná část, b je desetinná část a exp je exponent):

  • a.b
  • +a.b
  • -a.b
  • a.bE+exp
  • a.bE-exp
  • aE+exp
  • aE-exp

Je zapotřebí mít na paměti, že zobrazení čísla s plovoucí řádovou čárkou je vždy zatíženo určitou chybou danou omezením počtu platných cifer, takže ne všechna určitá reálná čísla jdou tímto datovým typem zobrazit - vždy dojde k zobrazení nejbližší zobrazitelné hodnoty.

Příklady
Konstanta | Matematický význam
0.0 | 0
0.5 | 0,5
5.0 | 5
+25.3 | 25,3
-25.3 | -25,3
1.4E+3 | 1400
1.4E-3 | 0,0014
-5E+2 | -500
-5E-2 | -0,05


 Set (množina)

Set (množina)

Popis Neuspořádaná heterogenní množina nepojmenovaných prvků základního datového typu bez opakování.

Konstruktor množiny tvoří hranaté závorky, uvnitř nichž je obsažen seznam prvků množiny oddělených čárkami.

Příklady

  • množina obsahující několik prvků:
[ "Prvek1", 5, 8.3, "Prvek 4" ]
  • množina obsahující jeden prvek:

[ 32 ]

  • prázdná množina:

[]


 Collection (kolekce)

Collection (kolekce)

Popis Uspořádaná heterogenní množina pojmenovaných prvků bez opakování i nepojmenovaných prvků s opakováním. Prvky mohou být jak základního, tak i složeného datového typu.

Jednotlivým prvkům lze přiřadit jména - identifikátory.

Konstruktor kolekce tvoří složené závorky, uvnitř nichž je obsažena sekvence příkazů, které vytvoří obsah kolekce.

Příklady

{
   Prvek1 = "hodnota1";
   "hodnota2";
   Prvek3 = "hodnota3";
   Prvek4 = 39;
   "hodnota5";
}


 Příkazy

Příkazy

Jednoduché (přiřazovací)

Jednoduché příkazy jsou příkazy, které neobsahují další (vnořené) příkazy. Musí být ukončeny středníkem (";").

  • Příkaz pro vytvoření nepojmenovaného prvku

  • Příkaz =

  • Příkaz = (smazání prvku)

  • Příkaz :=

  • Příkaz ::=

  • Příkaz +=

  • Příkaz :+=

  • Příkaz ::+=

Složené

Složené příkazy jsou příkazy, které obsahují ve svém těle další (vnořené) příkazy. Mají tělo ohraničené složenými závorkami, nemusí být ukončeny středníkem.

  • Příkaz If

  • Příkaz Include


 Příkaz pro vytvoření nepojmenovaného prvku

Příkaz pro vytvoření nepojmenovaného prvku

Nepojmenovaný prvek v datovém prostoru vzniká uvedením datového literálu, množiny nebo kolekce bez uvedení názvu uzlu.

Příklady:

"něco";
5;
4.8;


 Příkaz =

Příkaz =

Vytvoření pojmenovaného prvku s přiřazením výsledku výrazu. Pokud pojmenovaný prvek již existuje, je nejprve obsah existujícího prvku smazán. Provede se vyhodnocení výrazu na pravé straně a přiřazení výsledku výrazu do nově vzniklého prvku.

Příklady:

a = 1;
Retezec = "první část řetězce";
MojeKolekce = {
   Prvek5 = hodnota1;
   Prvek6 = hodnota1;
}


 Příkaz = (smazání prvku)

Příkaz = (smazání prvku)

Speciální syntaxe přiřazovacího příkazu umožní také odstranění pojmenovaného prvku. Stačí neuvést přiřazovanou hodnotu, ale ihned ukončovací středník.

Příklady:

Ident = ;


 Příkaz :=

Příkaz :=

Vytvoření pojmenovaného permanentního prvku.

Má stejný funkční význam, jako příkaz "=", ale navíc označí nový prvek jako "permanentní", tzn. už jej nelze odstranit.

Příklady:

a := 1;
Retezec := "první část řetězce";
MojeKolekce := {
   Prvek5 = hodnota1;
   Prvek6 = hodnota1;
}


 Příkaz ::=

Příkaz ::=

Vytvoření pojmenovaného permanentního prvku.

Má stejný funkční význam, jako příkaz "=", ale navíc označí nový prvek jako "konstantní permanentní", tzn. už nelze změnit jeho obsah ani jej už nelze odstranit. Pokud je takto označena kolekce, nelze už po tomto příkazu přidat, odebrat či jakkoli změnit její obsah

Příklady:

a ::= 1;
Retezec ::= "první část řetězce";
MojeKolekce ::= {
   Prvek5 = hodnota1;
   Prvek6 = hodnota1;
}


 Příkaz +=

Příkaz +=

Vytvoření pojmenovaného prvku (pokud pojmenovaný prvek neexistuje), nebo přičtení hodnoty, resp. přidání prvků do kolekce (pokud pojmenovaný prvek již existuje).

Příklady:

a += 1;
Retezec += " další část řetězce";
MojeKolekce += {
   Prvek5 = hodnota1;
   Prvek6 = hodnota1;
}

Pro kolekce lze též zkráceně psát (bez uvedení operace "+="):

MojeKolekce {
   Prvek5 = hodnota1;
   Prvek6 = hodnota1;
}


 Příkaz :+=

Příkaz :+=

Vytvoření pojmenovaného permanentního prvku (pokud pojmenovaný prvek neexistuje), nebo přičtení hodnoty, resp. přidání prvků do kolekce (pokud pojmenovaný prvek již existuje). Má stejný funkční význam, jako příkaz "+=", ale navíc označí prvek jako permanentní, tj. nelze jej už odstranit.

Příklady:

a :+= 1;
Retezec :+= " další část řetězce";
MojeKolekce :+= {
   Prvek5 = hodnota1;
   Prvek6 = hodnota1;
}


 Příkaz ::+=

Příkaz ::+=

Vytvoření pojmenovaného konstantního permanentního prvku (pokud pojmenovaný prvek neexistuje), nebo přičtení hodnoty, resp. přidání prvků do kolekce (pokud pojmenovaný prvek již existuje). Má stejný funkční význam, jako příkaz "+=", ale navíc označí prvek jako konstantní permanentní, tj. nelze změnit jeho obsah ani jej už nelze odstranit.

Příklady:

a ::+= 1;
Retezec ::+= " další část řetězce";
MojeKolekce ::+= {
   Prvek5 = hodnota1;
   Prvek6 = hodnota1;
}


 Příkaz If

Příkaz If

Podmínka uvnitř sekce. Příkazy uzavřené ve složených závorkách se provedou pouze tehdy, pokud je splněna podmínka uvedená v závorkách za příkazem If.

Příklad:

If (Oscis==5) {
   // ... zanořené příkazy ...
   PracvFilter = "310";
}


 Příkaz Include

Příkaz Include

Znovuvyhodnocení KDV s přidáním dalších parametrů. Parametry uvedené v příkazu Include překryjí stejnojmenné prvky datového prostoru a vyhodnocení KDV se začne provádět od začátku. Po vyhodnocení celé KDV s přidanými parametry se přidané parametry odstraní a vyhodnocování pokračuje za příkazem Include. Podrobněji popsáno v kapitole o vyhodnocování KDV.

Příkazy Include smí být uvedeny pouze na začátku sekce. V jedné sekci lze uvést libovolný počet příkazů Include.

Příkaz Include umožňuje realizovat např. skupiny uživatelů.

Příklad:

Uživatel "novak" je následující syntaxí zaveden v aplikaci "VemaCentrum" jako člen skupin "Správci" a "Uživatelé".

Section (App=="VemaCentrum" && Group=="Správci")
{
   // ... příkazy sekce ...
}
Section (App=="VemaCentrum" && User=="novak")
{
   Include {
      // ... zanořené příkazy ...
      Group = "Správci";
   }
   Include {
      // ... zanořené příkazy ...
      Group = "Uživatelé";
   }
   // ... další příkazy sekce ...
}


 Výrazy

Výrazy

Operátory

  • Operátor +

  • Operátor -

  • Operátor *

  • Operátor /

  • Operátor \

  • Operátor %

  • Operátor ( )

  • Operátor ==

  • Operátor !=

  • Operátor <

  • Operátor >

  • Operátor <=

  • Operátor >=

  • Operátor In

  • Operátor &&

  • Operátor ||

  • Operátor !

Podmínkový výraz

Podmínkový výraz je takový výraz, který se vyhodnotí na datový typ Integer. Pokud je výsledkem hodnota 0, je výsledek podmínkového výrazu považován za logickou nepravdu (False), pokud je výsledkem nenulová hodnota, je výsledek podmínkového výrazu považován za logickou pravdu (True).


 Operátor +

Operátor +

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Aritmetický součet | Integer | Integer | Integer
Aritmetický součet | Integer | Real | Real
Aritmetický součet | Real | Integer | Real
Aritmetický součet | Real | Real | Real
Spojení dvou řetězců | String | String | String
Množinový součet (spojení množin) | Set | Set | Set
Přidání prvku do množiny | Set | Integer Real String | Set

Příklady


 Operátor -

Operátor -

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Aritmetický rozdíl | Integer | Integer | Integer
Aritmetický rozdíl | Integer | Real | Real
Aritmetický rozdíl | Real | Integer | Real
Aritmetický rozdíl | Real | Real | Real

Příklady


 Operátor *

Operátor *

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Aritmetický součin | Integer | Integer | Integer
Aritmetický součin | Integer | Real | Real
Aritmetický součin | Real | Integer | Real
Aritmetický součin | Real | Real | Real

Příklady


 Operátor /

Operátor /

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Aritmetický podíl | Integer | Integer | Integer
Aritmetický podíl | Integer | Real | Real
Aritmetický podíl | Real | Integer | Real
Aritmetický podíl | Real | Real | Real

V případě, že pravý operand je vyhodnocen na hodnotu 0, je hlášena chyba běhu vyhodnocování skriptu.

Příklady


 Operátor \

Operátor \

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Aritmetický celočíselný podíl | Integer | Integer | Integer

Operace představuje aritmetický celočíselný podíl, tj. celou část aritmetického podílu.

Příklady


 Operátor %

Operátor %

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Zbytek po aritmetickém celočíselném podílu (tzv. modulo) | Integer | Integer | Integer

Příklady


 Operátor ( )

Operátor ( )

Závorky - změna priority vyhodnocování operátorů.

Příklady


 Operátor ==

Operátor ==

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Test na rovnost | Integer, Real | Integer, Real | Integer
Test na rovnost | String | String | Integer

Operace vrací hodnotu 1, pokud si hodnoty operandů jsou rovny, jinak vrací 0.

Porovnání dvou řetězců se provádí bez ohledu na velikost písmen (case-insensitive). Tzn. řetězce "Řetězec 1" a "řEtĚzEc 1" jsou považovány za shodné.

Příklady


 Operátor !=

Operátor !=

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Test na nerovnost | Integer, Real | Integer, Real | Integer
Test na nerovnost | String | String | Integer

Operace vrací hodnotu 1, pokud si hodnoty operandů nejsou rovny, jinak vrací 0.

Porovnání dvou řetězců se provádí bez ohledu na velikost písmen (case-insensitive). Tzn. řetězce "Řetězec 1" a "řEtĚzEc 1" jsou považovány za shodné.

Příklady


 Operátor <

Operátor <

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Test "aritmeticky menší než" | Integer, Real | Integer, Real | Integer
Test "abecedně menší než" | String | String | Integer

Operace vrací hodnotu 1, pokud je hodnota levého operandu menší než hodnota pravého operandu, jinak vrací 0.

Porovnání dvou řetězců se provádí bez ohledu na velikost písmen (case-insensitive). Tzn. řetězce "Řetězec 1" a "řEtĚzEc 1" jsou považovány za shodné.

Příklady


 Operátor >

Operátor >

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Test "aritmeticky větší než" | Integer, Real | Integer, Real | Integer
Test "abecedně větší než" | String | String | Integer

Operace vrací hodnotu 1, pokud je hodnota levého operandu větší než hodnota pravého operandu, jinak vrací 0.

Porovnání dvou řetězců se provádí bez ohledu na velikost písmen (case-insensitive). Tzn. řetězce "Řetězec 1" a "řEtĚzEc 1" jsou považovány za shodné.

Příklady


 Operátor <=

Operátor <=

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Test "aritmeticky menší nebo rovno" | Integer, Real | Integer, Real | Integer
Test "abecedně menší nebo rovno" | String | String | Integer

Operace vrací hodnotu 1, pokud je hodnota levého operandu menší nebo rovna hodnotě pravého operandu, jinak vrací 0.

Porovnání dvou řetězců se provádí bez ohledu na velikost písmen (case-insensitive). Tzn. řetězce "Řetězec 1" a "řEtĚzEc 1" jsou považovány za shodné.

Příklady


 Operátor >=

Operátor >=

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Test "aritmeticky větší nebo rovno" | Integer, Real | Integer, Real | Integer
Test "abecedně větší nebo rovno" | String | String | Integer

Operace vrací hodnotu 1, pokud je hodnota levého operandu větší nebo rovna hodnotě pravého operandu, jinak vrací 0.

Porovnání dvou řetězců se provádí bez ohledu na velikost písmen (case-insensitive). Tzn. řetězce "Řetězec 1" a "řEtĚzEc 1" jsou považovány za shodné.

Příklady


 Operátor In

Operátor In

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Test přítomnosti prvku v množině | Integer, Real, String | Set | Integer

Operace vrací hodnotu 1, pokud je hodnota levého operandu přítomna v množině určené pravým operandem. Vrací hodnotu 0, pokud prvek v množině přítomen není.

Test na přítomnost řetězce v množině se provádí bez ohledu na velikost písmen (case-insensitive). Tzn. řetězce "Řetězec 1" a "řEtĚzEc 1" jsou považovány za shodné.

Příklady

5 In [5, 8, 9]


 Operátor &&

Operátor &&

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Logický součin | Integer | Integer | Integer

Operace představuje logický součin, tj. logický výraz "platí první a zároveň platí i druhý" (neboli "platí oba zároveň"). Vrací hodnotu 1, pokud jsou hodnoty obou operandů nenulové (tedy oba jsou logická "pravda" - "True"), jinak vrací 0.

Příklady


 Operátor ||

Operátor ||

Význam operace | Datový typ levého operandu | Datový typ pravého operandu | Datový typ výsledku operace
Logický součet | Integer | Integer | Integer

Operace představuje logický součet, tj. logický výraz "platí první nebo platí druhý" (neboli "platí aspoň jeden"). Vrací hodnotu 1, pokud je aspoň jeden z operandů nenulový (tedy aspoň jeden je logická "pravda" - "True"), jinak vrací 0.

Příklady


 Operátor !

Operátor !

Význam operace | Datový typ operandu | Datový typ výsledku operace
Logická negace | Integer | Integer

Operace představuje logickou negaci, tj. logický výraz "neplatí" (neboli "platí opak"). Vrací hodnotu 1, pokud byl operand nulový, a hodnotu 0, pokud byl operand nenulový.

Příklady


 Funkce

Funkce

(Funkce byly zavedeny od syntaxe skriptu verze 2.)

Funkce byly v KSV zavedeny jako prostředek pro složitější operace nad datovým prostorem.

Syntakticky je volání funkce uvozeno znakem '$', následuje název funkce a v závorkách ohraničený seznam argumentů oddělených čárkami. Argumentem volání může být libovolný prvek datového prostoru nebo konstanta, přičemž každá funkce má stanoven počet argumentů a seznam povolených datových typů každého argumentu. Pokud volání funkce neobsahuje povolený počet argumentů nebo datový typ některého argumentu neodpovídá definici funkce, je hlášena chyba za běhu skriptu.

Sémanticky volání funkce představuje vytvoření hodnoty na základě vstupních parametrů a vnitřního algoritmu funkce.

  • $ReadTextFile()

  • $StrComp()

  • $StrCompI()

  • $VerComp()

  • $VerCompB()


 $ReadTextFile()

$ReadTextFile()

Načtení obsahu pomocného externího textového souboru.

Argumenty

Pořadí | Symbolický název | Povolené datové typy | Význam
1 | RelativePath | String | Cesta k načítanému textovému souboru. Musí být umístěn ve stejném nebo podřízeném adresáři relativně vzhledem ke skriptu, ve kterém je volání této funkce. Obsahem cesty nesmí být zpětné prvky cesty, jako např. "..", "." a nesmí to být absolutní cesta, tedy nesmí začínat názvem disku ("C:\").

Návratová hodnota

Datový typ: String

Význam: Obsah načteného textového souboru.

Příklady

Text = $ReadTextFile("MujSoubor.txt");
Sablona = $ReadTextFile("VemaCentrum.03.01.00\\Sablony\\MojeSablona.xml");


 $StrComp()

$StrComp()

Abecední porovnání dvou řetězců bez ohledu na velikost písmen.

Pokud je jeden z řetězců v celé své délce abecedně shodný s druhým, ale druhý je delší, je první považován za abecedně "menší".

Argumenty

Pořadí | Symbolický název | Povolené datové typy | Význam
1 | Str1 | String | První řetězec k porovnání
2 | Str2 | String | Druhý řetězec k porovnání

Návratová hodnota

Datový typ: Integer

Význam:

Jestliže | Návratová hodnota
Str1 > Str2 | 1
Str1 je shodný se Str2 | 0
Str1 < Str2 | -1

Příklady

Section ($StrComp(LoginName,"Novak")==0)
{
   // ...
}


 $StrCompI()

$StrCompI()

Abecední porovnání dvou řetězců s ohledem na velikost písmen.

Pokud je jeden z řetězců v celé své délce abecedně shodný s druhým, ale druhý je delší, je první považován za abecedně "menší".

Argumenty

Pořadí | Symbolický název | Povolené datové typy | Význam
1 | Str1 | String | První řetězec k porovnání
2 | Str2 | String | Druhý řetězec k porovnání

Návratová hodnota

Datový typ: Integer

Význam:

Jestliže | Návratová hodnota
Str1 > Str2 | 1
Str1 je shodný se Str2 | 0
Str1 < Str2 | -1

Příklady

Section ($StrCompI(Prijmeni,"M")<0)
{
   // Sekce pro příjmení začínající písmeny A až N
}


 $VerComp()

$VerComp()

Porovnání dvou řetězců obsahujících číslo verze.

Čísle verze může sestávat ze dvou až čtyř složek oddělených tečkami, např. "1.25", "03.01.08.4523", "25.2.3" apod.

Pokud není některé ze dvou posledních čísel uvedeno, je místo něj dosazena 0.

Argumenty

Pořadí | Symbolický název | Povolené datové typy | Význam
1 | Ver1 | String | První číslo verze k porovnání
2 | Ver2 | String | Druhé číslo verze k porovnání

Návratová hodnota

Datový typ: Integer

Význam:

Jestliže | Návratová hodnota
Ver1 > Ver2 | 1
Ver1 je shodné s Ver2 | 0
Ver1 < Ver2 | -1

Příklady

Section (App=="PAM" && $VerComp(Version,"20.02.01")==0)
{
   // Sekce pro aplikaci PAM verze 20.02.01
}


 $VerCompB()

$VerCompB()

Porovnání dvou řetězců obsahujících číslo verze. Z čísla verze jsou porovnány pouze bázové (společné) složky obou čísel. Pokud tedy např. jedno číslo verze nemá uvedenu třetí složku a druhé ji má, jsou porovnány pouze první dvě složky a třetí i čtvrtá jsou ignorovány..

Čísle verze může sestávat ze dvou až čtyř složek oddělených tečkami, např. "1.25", "03.01.08.4523", "25.2.3" apod.

Argumenty

Pořadí | Symbolický název | Povolené datové typy | Význam
1 | Ver1 | String | První číslo verze k porovnání
2 | Ver2 | String | Druhé číslo verze k porovnání

Návratová hodnota

Datový typ: Integer

Význam:

Jestliže | Návratová hodnota
Ver1 > Ver2 | 1
Ver1 je shodné s Ver2 | 0
Ver1 < Ver2 | -1

Příklady

Section (App=="PAM" && $VerCompB(Version,"20.02")>=0)
{
   // Sekce pro aplikace PAM verze 20.02 a vyšší
}


 Pomocné datové soubory

Pomocné datové soubory

Pomocné datové soubory obvykle obsahují objemná data, jejichž umístění přímo do konfiguračního skriptu by mohlo výrazně ztížit jeho čitelnost, jeho editovatelnost nebo aktualizovatelnost dotyčných dat.

Každý pomocný datový soubor musí být umístěn ve stejném nebo podřízeném adresáři relativně vzhledem ke skriptům, které se na něj odkazují. Data z těchto pomocných souborů lze načíst do prvků datového prostoru pomocí importních funkcí, jako např. $ReadTextFile().

Importní funkce, které slouží k načítání textových souborů (např. již zmíněná funkce $ReadTextFile()), předpokládají uložení pomocných souborů v některém z akceptovaných kódování.


 Šifrování řídicích a skriptových souborů

Šifrování řídicích a skriptových souborů

Řídicí a skriptové soubory mohou zašifrovány za účelem zvýšení ochrany proti úniku citlivých dat a zvýšení ochrany proti neautorizovaným zásahům do obsahu. Šifrovaný soubor je uložen v textovém formátu v některém z akceptovaných kódování. Jeho obsah je uvozen klíčovým slovem "VemaEncText", následuje mezera, číslo verze ("1.0"), konec řádku a poté šifrovaný obsah v podobě sledu ASCII znaků. Příklad zašifrovaného souboru:

VemaEncText 1.0
Myk51uyTRbGY9AxIMDICHQZdRHJ5RHAcJXZNzZN4VIZk3jbwu9c9+m8AuAz582yWX52ixdlA
Ze9ba2NQlILdqSZjf/j/rq1oQy/zUZv2QR0G4O4FkNez8ELYEr6lgMXgEogQdywAnkVhGoGO
uBuRY4ev9a....

Podrobnější informace o použitých šifrovacích algoritmech a poskytované nástroje pro šifrování jsou dostupné na vyžádání u společnosti Vema.


 Akceptovaná kódování textových souborů

Akceptovaná kódování textových souborů

Textové soubory, které tvoří konfigurační databázi (tj. řídicí, skriptové a textové pomocné soubory), mohou být uloženy v některém z následujících kódování:

  • UTF-8 se standardní tříbytovou úvodní hlavičkou souboru (decimálně 239, 187, 191; hexadecimálně 0xEF, 0xBB, 0xBF)
  • UTF-16 se standardní dvoubytovou úvodní hlavičkou souboru (decimálně 255, 254; hexadecimálně 0xFF, 0xFE)
  • výchozí ANSI kódová stránka systému - na českých Windows je to obvykle kódová stránka Windows-1250 (záleží na jazykovém nastavení v "Ovládacích panelech" Windows)

Vzhledem k poměru úplnosti množiny znaků a objemu uložených dat je doporučeno pro uložení souboru používat kódování UTF-8.

Pokud při otevření souboru není nalezena některá z výše uvedených hlaviček formátů UTF-8 nebo UTF-16, je soubor načítán ve výchozím kódování systému (ANSI).


 Praktické rady pro tvorbu databáze

Praktické rady pro tvorbu databáze

Psaní některých znaků na české klávesnici Pro psaní některých málo používaných znaků, které jsou však hojně používány při psaní KDV a KSV (např. {}<>[]), je mnoho uživatelů zvyklých pracně přepínat z české klávesnice na anglickou, kde jsou tyto znaky standardně dostupné. Přitom pro jejich psaní na české klávesnici bez nutnosti přepnutí na klávesnici anglickou lze použít speciálních klávesových zkratek pomocí klávesy AltGr (tj. Alt napravo od mezerníku). Podmínkou je standardní česká klávesnice (s rozložením QWERTZ).

Zde je seznam těch nejpoužívanějších:

Znak | Klávesová zkratka
{ | AltGr+B
} | AltGr+N
[ | AltGr+F
] | AltGr+G
< | AltGr+, (čárka)
> | AltGr+. (tečka)
& | AltGr+C
| | AltGr+W
\ | AltGr+Q
@ | AltGr+V
# | AltGr+X
$ | AltGr+; (středník)


 Vyhodnocování

Vyhodnocování

Při vyhodnocení dotazu na KDV je nejprve načten řídicí soubor. Jsou vyhodnoceny všechny definice v něm uvedené (např. seznam skriptů). Poté je ověřena existence všech skriptových souborů uvedených v seznamu skriptů, provedena kontrola syntaxe všech skriptů a analýza záhlaví všech sekcí ve skriptech. (Při druhém a dalších dotazech jsou soubory načítány a analyzovány znovu pouze tehdy, pokud dojde ke změně některého z nich.)

Následně se parametry dotazu stanou konstantní permanentní (tj. neměnnou a neodstranitelnou) součástí strukturovaného datového prostoru. S předanými parametry prováděna těla těch těch sekcí, jejichž podmínka zpracování v záhlaví sekce je po dosazení hodnot z datového prostoru splněna. Nejprve jsou provedena těla sekcí s nejvyšší úrovní zpracování, a to postupně ve všech skriptech podle pořadí, jak jsou skripty uvedeny v seznamu skriptů. Následně nad tímtéž datovým prostorem jsou provedena těla sekcí s nižší úrovní zpracování, a tak dále, až po nejnižší úroveň zpracování. Na závěr jsou provedena těla sekcí, které nemají uvedenu úroveň zpracování.

Provádění těla každé sekce probíhá sekvenčně shora dolů (od začátku ke konci těla sekce). V těle každé sekce probíhá vytváření a změny jednotlivých prvků datového prostoru pomocí přiřazovacích příkazů.

V úvodu každé sekce lze uvést jeden nebo více příkazů Include. Při provádění tohoto příkazu se do stávajícího datového prostoru dočasně přidají prvky uvedené v těle příkazu Include podobným způsobem jako parametry dotazu (při shodě názvů prvky uvedené v Include překryjí existující prvky datového prostoru i parametry dotazu), a vyhodnocení KDV se začne provádět znovu od začátku. Při tomto zanořeném vyhodnocování KDV jsou dříve provedená těla sekcí ignorována. Až toto zanořené vyhodnocení KDV skončí, jsou dočasně přidané prvky uvedené v příkazu Include odstraněny z datového prostoru a vyhodnocování KDV pokračuje za příkazem Include. Těla sekcí, která byla při zanoření již provedena, jsou opět ignorována. Počet rekurzivních zanoření příkazem Include je omezen pouze interním nastavením kapacity zásobníku interpretu.

Na závěr jsou z datového prostoru odstraněny iniciální parametry dotazu. Výsledkem vyhodnocení KDV je strukturovaný datový prostor.


 Vstupní parametry dotazu

Vstupní parametry dotazu

Parametry vstupující do vyhodnocení dotazu nad konfigurační databázi jsou dány klientskou aplikací, která dotaz vznesla. Čili závisí jen na klientské aplikaci, jaké názvy a hodnoty vstupních parametrů v dotazu předá, a jakým způsobem vyhodnotí výsledná data, která dotazem vzniknou. Konfiguračním serverem jsou pevně dány pouze následující vstupní parametry:

AuthUser

Jméno uživatele autentizovaného vzhledem ke konfiguračnímu serveru. Např. v případě dotazu z V3 serveru to bude název účtu, pod kterým běží služba V3 server.

AuthDomain

Název domény, ve které je přihlášen uživatel (AuthUser) autentizovaný vzhledem ke konfiguračnímu serveru. Např. v případě dotazu z V3 serveru to bude název domény účtu, pod kterým běží služba V3 server.


 Příklad konfigurační databáze

Příklad konfigurační databáze


 Postupy

Postupy

  • Postup zprovoznění firemního aktualizačního serveru


 Postup zprovoznění firemního aktualizačního serveru

Postup zprovoznění firemního aktualizačního serveru

Firemní aktualizační server je vhodné použít v instalacích, kde více uživatelů používá systémové moduly VEMA, které mají instalovány lokálně (např. klienta, Vema Centrum, ...) Je zbytečné, aby každý z nich stahoval balíčky samostatně a zatěžoval firemní připojení k internetu. Aktualizační server podstatně méně zatěžuje firemní síť než lokální úložiště umístěné na síťovém disku.

Postup:

  1. Na zvoleném počítači, který bude sloužit jako firemní aktualizační server nainstalujeme balíček "Vema - Služba Vzdálené Správy"
  2. V konfiguračním souboru nastavíme autentizaci a autorizaci. Tento krok není nutný, ale velmi ho doporučujeme. Pokud není nastavena bezpečná autentizace a autorizace, pak může kdokoliv spustit Vema - Správce proti firemnímu aktualizačnímu serveru a měnit instalace produktů VEMA.
    1. Autentizaci nastavíme v programovém adresáři služby (implicitně "c:\Program Files\Vema\VemaAdminService\") v souboru "VemaAdminService.VmConfig". Implicitně je nastavena autentizace typu "Plain", což lze brát jen jako evidenci. Syntaxe nastavení autentizace u přípojných bodů je popsána zde.
    2. Autorizaci aktivujeme odpoznámkováním konfiguračního uzlu appletu "VemaAdminKernelApplet". Jde o uzly:

      <Config>
      <AuthorizationServer>Local</AuthorizationServer>
      </Config>
    3. Dále je třeba povolit spouštění autorizačního appletu a nastavit cestu k autorizační databázi. V konfiguraci, která se instaluje se Službou vzdálené správy je vše připraveno a stačí jen zrušit poznámku u appletu "VemaAuthorizationServer" tak, aby celá skupina kolem tohoto uzlu byla viditelná.
    4. Autorizační databáze je implicitně v souboru "Authorization.VmConfigDB". Nastavíme všechna oprávnění na 0, ponecháme pouze práva "ReadLocalStore" a "WriteLocalStore" nastavena na hodnotu 1. Pro vybrané uživatele vytvoříme sekci skriptu, která umožní vzdálenou správu. Např. pro uživatele "Administrator" přidáme následující uzel:

      Section (User=="Administrator")
      {
      AppPermissions {
      List = 1;
      }
      FileTransferPermissions {
      WriteConfig = 1;
      }
      }
    5. V příkladu jsme přidali práva pro uživatele "Administrator". Může to být samozřejmě jakýkoliv jiný uživatel. Je také možné povolit ještě i další oprávnění. Oprávnění nastavená v příkladu jsou důležitá pro vzdálenou správu aktualizačního serveru.
    6. Po těchto změnách je nutné službu restartovat.
  3. Spustíme aplikaci Vema - Správce. Buď lokálně přímo na aktualizačním serveru nebo vzdáleně z kteréhokoliv počítače (Při vzdáleném přihlášení se musíme autentizovat jako uživatel, kterému jsme přidělili vyšší autorizační práva. V našem příkladě to byl "Administrator"). Vema správce se rozjede v omezeném režimu. Z nabídky "Nástroje" vybereme funkci "Konfigurace služby vzdálené správy". V dialogu necháme nabídnutou hodnotu, která je stejná jako aktuálně spravovaný počítač. Pokud bychom měli pocit, že ne, zadáme adresu aktualizačního serveru

  4. V dalším dialogu se zobrazí aktuální nastavení aktualizačního serveru. To může vypadat třeba takto:

    Pokud chceme, aby se náš aktualizační server automaticky synchronizoval s firemním serverem Vema, nastavíme první položku na "AT:support.vema.cz", tak jako na obrázku. V druhé položce zadáme adresář lokálního úložiště (jde o adresář na aktualizačním serveru), kam se budou stahovat balíčky (v případě nastaveného nadřazeného serveru) nebo kam je budeme ručně kopírovat z distribučního CD disku nebo po stažení z www stránek firmy Vema. Poslední položku má smysl vyplňovat pouze tehdy, když je nastaven nadřazený aktualizační server (první kolonka). Udává interval, ve kterém budou kontrolovat novější verze balíčků na nadřazeném serveru (tuto hodnotu lze nastavit až od verze 1.03).
  5. Pokud máme nastaveno použití nadřazeného aktualizačního serveru, nemusíme se už o nic dalšího starat. Pokud je náš aktualizační server vrchol aktualizačního řetězce, pak musíme do jeho lokálního úložiště ještě nakopírovat balíčky, které chceme zpřístupnit klientům. Balíčky pak musíme po každé distribuci ručně aktualizovat.


 Installer služeb

Installer služeb

VmSrvInstaller.EXE je nástroj, který slouží k instalaci a dalšímu ovládání služeb Vema (např. V3-Server) v systémech MS Windows. Druhou funkčností je ukládání a editace hesel v chráněném úložišti (Protected Storage) systému MS Windows. Správa služeb nepracuje na systému Windows 98, který nemá Služby ve smyslu systémů NT.

Na Windows 98 je možná pouze přímá editace chráněného úložiště pro účet aktuálního uživatele. Zobrazí se tedy rovnou dialog pro editaci chráněného úložiště.

  • Ovládání

  • příklad souboru CMD_ServiceInstall.cmd

  • Editace hesel

  • Příkazová řádka


 Ovládání

Ovládání

Hlavní okno se skládá ze dvou částí. V první části je účet pro běh služby. Tato část okna je společná pro správu služeb i editace hesel.

Pokud je služba již nainstalovaná, je zobrazen účet, pod kterým běží, a změny jsou v této části formuláře znemožněny. U nainstalované služby není možné měnit její účet. Pokud služba nainstalovaná ještě není, určí se zde účet, pod kterým má běžet. Na systémech Windows 2000 nejsou možné volby Místní služba a Síťová služba. Pod volbou Jiný uživatel je možné zadat např. i doménové jméno uživatele ve tvaru Domain\User. Pro nestandardní účty ale může pozdějšímu spuštění služby bránit omezení systémové politiky Windows. (Local /Domain Policy - User Rights Assignment - "Log on as a Service")

Pokud služba není nainstalovaná, vyplní se po spuštění účet podle zadaných parametrů. Pokud není jméno účtu zadáno z příkazové řádky, přednastaví se pro služby účet Místní systém. Pokud nejde o službu, a má tedy jít o režim editace hesel, předvybere se Jiný uživatel, což může při nevyplnění hodnot být i aktuální uživatel.

Ovládání služeb

Dolní část okna je určená pro správu služeb. Je zde vypsán stav služby, jméno služby. Službu je možné pomocí tlačítek instalovat, spustit, zastavit nebo odinstalovat.

V režimu ovládání služeb musí mít program ve svém adresáři k dispozici soubor CMD_ServiceInstall.cmd. Tento soubor nese základní informace pro zřízení instance služby Vema v systému Windows a je dodán při instalaci MSI balíčkem.

VmSrvInstaller.EXE při instalaci služeb buď zpracuje příkaz zadaný pomocí parametrů anebo při spuštění bez parametrů zobrazí grafický dialog s aktuálním stavem služby a umožní její ovládání - Instalaci, Odinstalaci, Zastavení a Spuštění. V případě instalace je možné vybrat účet, pod kterým bude služba běžet.

Program pracuje správně pouze tehdy, pokud je spuštěn v instalačním adresáři služby, kterou chceme konfigurovat!


 příklad souboru CMD_ServiceInstall.cmd

příklad souboru CMD_ServiceInstall.cmd

Tento soubor bývá dodáván v instalačním balíčku služeb Vema.

@echo off
echo Instaluji Vema - Službu vzdálené správy, prosím čekejte ...

NV3ServerSrv.exe /Inst /Name:"VemaAdminService" /DispName:"Vema - Služba vzdálené správy" /Desc:"služba vzdálené správy Vema" /SvcParams /Config:"C:\Program Files\Vema\VemaAdminService\VemaAdminService.VmConfig" /LogFile:"C:\Program Files\Vema\VemaAdminService\VemaAdminService.log"


 Editace hesel

Editace hesel

Režim ukládání a editace hesel v chráněném úložišti (Protected Storage) může být provozován samostatně anebo i ve spojení s režimem ovládání služeb - viz Režim spuštění. Editace hesel není možná na vzdáleném počítači.

Pro aktivaci režimu editace hesel v chráněném úložišti (Protected Storage) musí být v adresáři programu VmSrvInstaller.exe přítomen konfigurační soubor PSEditConfig.xml nebo musí být specifikován parametrem příkazové řádky.

Pak se objeví tlačítko Editace hesel, zpřístupňující tuto funkci:

Editace hesel je možná dvěma způsoby:

  • Pokud je zadán jeden z účtů Místní systém, Místní služba, Síťová služba, provádí se editace skrze připojení k běžící Službě vzdálené správy nebo V3 serveru, která musí běžet pod tímto účtem. V případě 'kombinovaného' režimu, kdy dialog zároveň ovládá službu a spouští Editaci hesel, je zajištěna konzistence účtu služby. Pokud je ale v konfiguračním souboru znepřístupněna část pro instalaci a ovládání služby, je třeba předem zajistit běh služby pod požadovaným účtem.

    Pro připojení ke službě je pak v následujícím dialogu potřeba zadat port Služby vzdálené správy nebo V3 serveru, kam se funkce Editace hesel připojí. Pro tento způsob editace je třeba mít u služby zapnutou autorizaci a mít nastaveno příslušné oprávnění (EditPStorage).

    Při editaci prostřednictvím připojení ke službě nejsou z bezpečnostních důvodů - na rodíl od editace pod uživatelem - načítány již existující údaje z chráněného úložiště.

  • Pokud je vybrána volba Jiný uživatel a jméno uživatele není vyplněno, provádí se editace přímo pod aktuálně přihlášeným uživatelem. Jinak je možné zadat jméno uživatele (lze zadat i doménové jméno ve tvaru Domain\User). Program se v tomto případě nepřipojuje k žádné službě. V případě, že se editaci pod zadaným uživatelem nepodaří spustit, budete dotázáni, jestli se má editace provést náhradní metodou - připojením ke službě, jako v prvním případě.

    Na Windows 98 nelze editovat PS přímo pod jiným účten než aktuálním. V tomto případě se nabídne možnost editace pomocí připojení ke službě.

Režim spuštení Editace hesel

Samotným výskytem konfiguračního souboru PSEditConfig.xml v adresáři programu je aktivován režim Editace hesel. V konfiguračním souboru je na začátku atributem <ShowDialog> s hodnotou 1 stanoveno, že se má program spustit v 'kombinovaném' režimu, kdy ovládá jak instalaci + účet služby a její běh, tak Editace hesel.

K provozu v tomto 'kombinovaném' režimu se ale musí program VmSrvInstaller.EXE nacházet v plnohodnotném prostředí, to jest mít vedle sebe NV3ServerSrv.exe (NV3 server, který poběží jako služba Windows) a soubor CMD_ServiceInstall.cmd, definující parametry zřizované služby.

Pokud má být VmSrvInstaller.EXE v režimu Editace hesel spouštěn z místa, které nesplňuje výše popsané podmínky, anebo má být zamezeno ovládání vlastní služby, musí být atribut <ShowDialog> v konfiguračním souboru nastaven na 0.

Ovládací okno pak bude redukováno o ovládací prvky služby:

a pro funkci Editace hesel je nutné, aby byl předem zajištěn běh služby pod účtem, jemuž míníme ukládat hesla do chráněného úložiště (Protected Storage). Nebo je možné zvolit Jiného uživatele, případně při ponechání prázdných hodnot proběhne Editace pro aktuálního uživatele.

  • Konfigurační soubor Editace hesel

  • NV3Login

  • Login Klienta

  • Přednastavené hodnoty


 Konfigurační soubor Editace hesel

Konfigurační soubor Editace hesel

Konfigurační soubor PSEditConfig.xml je ve formátu xml. Hlavní uzel je <Config>.

Na začátku je uvedeno, jestli se má zobrazovat část dialogu se správou služeb, zpřístupňující základní funkčnost programu - Ovládání služeb. Tímto atributem se řídí Režim spuštení programu pro Editaci hesel.

    <SrvInst>
      <ShowDialog>1</ShowDialog>
    </SrvInst>

V další části konfiguračního souboru jsou uvedeny definice jednotlivých záznamů, které se mají zapisovat do chráněného úložiště (Protected Storage). Pod hlavním uzlem <Config> je uzel <PSEdit> a ten v uzlech <Item> popisuje jednotlivé záznamy, které se budou editovat a ukládat do chráněného úložiště. Každý uzel <Item> popisuje jeden záznam.

U každého záznamu musí být uveden uzel <Type>. Záznamy mohou být tří typů:

  • Typ 0 - Obecný záznam
  • Typ 1 - NV3 login (přihlášení k serveru, např. na V3-Server)
  • Typ 2 - Login klienta (přihlášení do dat)

U obecného záznamu (Typ 0) je možné v uzlu <RecType> zadat, jestli má být přístupný pro uživatele (hodnota 0) nebo počítač (hodnota 1). Pokud není tato hodnota zadána v konfiguračním souboru, je možné ji vybrat později v dialogu při editaci. Pokud je tato hodnota zadaná pro jiný než obecný typ, je ignorována.

Každý záznam by měl mít popis <Description>, který se pak uživateli v dialogu zobrazí jako malý nadpis.

Obecně použitelné záznamy Typu 0 musí mít položku <Id>, kterou je třeba zajistit identifikaci záznamu v úložišti. U zbylých Typ 1 a 2 je tato identifikace tvořena automaticky podle systémových zvyklostí pro daný účel.

Typ 0 - Obecný záznam obsahuje:

  • <Id> - Klíč, pod kterým se záznam ukládá. Pokud není zadána, zadává se přímo v dialogu, zobrazí se editační pole s názvem Název.
  • Parametry <Param> v kolekci <Params>:
    • Jméno parametru <Name>. Toto jméno se uživateli ve formuláři nezobrazí. Povinná položka.
    • Popis, který se uživateli zobrazuje v dialogu editace jako název políčka. <Description>
    • Hodnota, přednastavená hodnota <Value>.
    • Typ parametru <ParamType> - může být 0 (obecný řetězec), nebo 1 - hesl. Není povinný. Pokud není zadaný, předpokládá se obecný řetězec. U heslo se zobrazují v editačním poli hvězdičky.

Typ 1 - NV3Login obsahuje:

  • Popis, který se zobrazuje v dialogu editace jako nadpis. <Description>
  • Jméno Autentizačního serveru, přednastavená hodnota <AuthServer>
    • pro autentizaci Vema je to server, tak jak je nastaven v konfiguraci V3 serveru (atribut server, příslušného connection pointu)
    • pro autentizaci ActiveDir je to plný název domény, tak jak je nastaven v konfiguraci V3 serveru (atribut Realm, příslušného connection pointu)
  • Typ autentizace, přednastavená hodnota <AuthType>
    • Vema nebo ActiveDir, pokud není nastaveno nebo je nastaveno špatně bere se implicitně ActiveDir
  • Uživatel, přednastavená hodnota <User>
  • Heslo, přednastavená hodnota <Password>

Typ 2 - Login Klienta obsahuje:

  • Popis, který se zobrazuje v dialogu editace jako nadpis. <Description>
  • Cesta k datovému prostředí, přednastavenná hodnota <Data>
  • Aplikace, přednastavená hodnota <Application>
  • Uživatel (Role) v datovém prostředí Aplikace, přednastavená hodnota <User>
  • Heslo, přednastavená hodnota <Password>

Uvedené přednastavené hodnoty se předvyplní do dialogu editace hesel.

Příklad konfigurace

<?xml version="1.0" encoding="windows-1250"?>
<Config>
   <SrvInst>
      <ShowDialog>1</ShowDialog>
   </SrvInst>
   <PSEdit>
      <Item>
         <Type>0</Type>
         <Description>Záznam 1</Description>
         <RecType>0</RecType>
         <Id>Key1</Id>
         <Params>
            <Param>
               <Name>Parametr1</Name>
               <Description>Popisek parametru 1</Description>
               <Value>Par1</Value>
            </Param>
            <Param>
               <Name>Parametr2</Name>
               <Description>Popisek parametru 2</Description>
            </Param>
         </Params>
      </Item>
      <Item>
         <Type>0</Type>
         <Description>Záznam 2</Description>
         <Params>
            <Param>
               <Name>Parametr1</Name>
               <Description>2/ Popisek parametru 1</Description>
               <Value>Par21</Value>
            </Param>
            <Param>
               <Name>Parametr2</Name>
               <Description>2/ Popisek parametru 2</Description>
            </Param>
         </Params>
      </Item>
      <Item>
         <Type>1</Type>
         <Description>NV3Login</Description>
         <AuthServer>VemaServer</AuthServer>
         <AuthType>Vema</AuthType>
         <User>kmoskova</User>
         <Password></Password>
      </Item>
      <Item>
         <Type>2</Type>
         <Description>Login klienta</Description>
         <Data>C:\data\dataxxx</Data>
         <Application>BAN</Application>
         <User>s1</User>
         <Password></Password>
      </Item>
   </PSEdit>
</Config>
Výsledný dialog editace hesel:


 NV3Login

NV3Login

Pro uložení přihlašovacího jména a hesla pro přihlášení k V3 serveru je nutné zadat:

  • Typ autentizace - Vema nebo ActiveDir
  • Autentizační server
    • pro autentizaci Vema je to server, tak jak je nastaven v konfiguraci V3 serveru (atribut server, příslušného connection pointu)
    • pro autentizaci ActiveDir je to plný název domény, tak jak je nastaven v konfiguraci V3 serveru (atribut Realm, příslušného connection pointu)
  • Uživatel
  • Heslo


 Login Klienta

Login Klienta

Pro uložení jména uživatele a hesla pro vstup do datového prostředí se zadáva

  • Subsystém
  • Data - cesta k datovému prostředí
  • Uživatel
  • Heslo


 Přednastavené hodnoty

Přednastavené hodnoty

Při přímé editaci pod uživatelem (ne při editaci pomocí V3-Serveru nebo Služby vzdálené správy) jsou z chráněného úložiště načítány již existující údaje, pokud identifikační údaje zadané předem do dialogu ukazují na některý existující záznam.
  • Načítané hodnoty pro NV3Login - pokud je přednastavený autentizační server a typ autentizace, přečte se z chráněného úložiště odpovídající uživatel heslo. Tyto údaje se zobrazí v dialogu.
  • Načítané hodnoty pro LoginKlienta - pokud je přednastavený subsystém a cesta k datovému prostředí přečte se z chráněného úložiště odpovídající uživatel heslo. Tyto údaje se zobrazí v dialogu.
  • Načítané hodnoty pro obecný záznam - u tohoto typu záznamu musí být přednastaven klíč - položka id, potom se načtou všechny ukládáné parametry záznamu

Přednastavené hodnoty pro údaje, které jsou z chráněného úložiště načítány (uživatel, heslo) se uplatní pouze v případě, že z chráněného úložiště nejsou načteny. Pro případ editace pomocí Služby vzdálené správy nebo V3-Serveru se tyto přednastavené hodnoty neuplatní vůbec.


 Příkazová řádka

Příkazová řádka

Pokud není uveden parametr /SvcName, pokusí se vyhledat ve stejném adresáři soubor Cmd_ServiceInstall.cmd, který obsahuje příkazovou řádku pro instalaci služby a z něj si jméno služby přečte.

Pokud není uveden parametr /CfgFile, pokusí se vyhledat ve stejném adresáři soubor PSEditConfig.xml, výchozí soubor pro editaci hesel.

Pro spuštění programu musí být známý název služby (pro správu služby) nebo soubor s konfigurací (pro Editaci hesel), příp. oboje.

Příkazová řádka pro správu služeb i editaci chráněného úložiště

VmSrvInstaller.exe /svcName=<jméno služby> [/Cmd=<požadovaná akce>] [/Silent] [/KeepInstallStatus][/UserName=<jméno účtu> [/Password]=<heslo k účtu>]] /CfgFile=<cesta k souboru>

Příkazová řádka pouze pro správu služeb (bez editace chráněného úložiště)

VmSrvInstaller.exe /svcName=<jméno služby> [/Cmd=<požadovaná akce>] [/Silent] [/KeepInstallStatus]] [/UserName=<jméno účtu> [/Password]=<heslo k účtu>]]

Příkazová řádka pouze pro editaci chráněného úložiště (bez správy služby)

VmSrvInstaller.exe /CfgFile=<cesta k souboru> [/UserName=<jméno účtu> [/Password]=<heslo k účtu>]]

SvcName

Jméno služby, se kterou se bude pracovat.
  • Cmd

  • KeepInstallStatus

  • Silent

  • UserName

  • Password

  • CfgFile

  • OnlyPSEdit


 Cmd

Cmd

Parametr specifikuje jednu z akcí managementu služby. Má smysl pouze ve spojení se jménem služby - /SvcName.

  • Start

  • Stop

  • Rem


 Start

Start

Spustí danou službu. Pokud není nainstalována, nejdříve ji i nainstaluje.


 Stop

Stop

Zastaví zadanou službu.


 Rem

Rem

Odebere zadanou službu.


 KeepInstallStatus

KeepInstallStatus

Pokud je přítomen tento parametr, pak se drží stav služby před spuštěním programu. Tzn. pokud zadáme jako příkaz "Run", tak se automaticky služba neregistruje do systému, ale spustí se jen v případě, že je již zaregistrovaná.


 Silent

Silent

Tichý režim. V tomto režimu se nezobrazí hlavní dialog, pouze v případě potřeby se zobrazují messageboxy s upozorněním.

Tento parametr má smysl, pouze když jsou zadány parametry /SvcName a /Cmd.


 UserName

UserName

Jméno účtu pro požadované operace (instalace služby, Editace hesel)


 Password

Password

Heslo k účtu.


 CfgFile

CfgFile

Cesta ke konfiguračnímu souboru režimu Editace hesel.


 OnlyPSEdit

OnlyPSEdit

Spustí pouze Editaci hesel. Parametr je určen k internímu použití, při volání jinými aplikacemi Vema.