Komunikace se serverem IPAS skrze knihovnu clsipas



Podobné dokumenty
Komunikace se serverem IPAS skrze knihovnu clsipas

IPAS Server komunikační rozhraní

IPAS Server komunikační rozhraní

IPAS Server komunikační rozhraní

IPAS Server komunikační rozhraní

1 Webový server, instalace PHP a MySQL 13

Dokumentace k API SSLmarketu. verze 1.3

Webová služba. Popis. Dostupné operace. add_subscriber_groups

Dokumentace ke službě SMS Connect.

17. července :51 z moravec@yahoo.com

Platební systém XPAY [

Základní popis Toolboxu MPSV nástroje

1. Webový server, instalace PHP a MySQL 13

Základní popis Toolboxu MPSV nástroje

Dokumentace k nevizuálnímu rozhraní aplikace DopisOnline

Artlingua Translation API

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Analýza Systém Správce

M4 PDF rozšíření. Modul pro PrestaShop.

Národní elektronický nástroj. Import profilu zadavatele do NEN

Překladač a jeho struktura

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST]

Školící dokumentace administrátorů IS KRIZKOM (úroveň KRAJ) (role manager, administrátor )

Systém elektronického rádce v životních situacích portálu

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

WNC::WebNucleatCreator

Školící dokumentace administrátorů IS KRIZKOM (úroveň ÚSÚ) role ( administrátor )

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Reranking založený na metadatech

Instalační manuál aplikace

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Uživatelský manuál

Objektové programování

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

CRM - manuál. Vypracovala: Monika Balažovičová [1] Softapp s.r.o., Kouty 1419, Valašské Meziříčí, tel.:

POKYNY K REGISTRACI PROFILU ZADAVATELE

NSWI096 - INTERNET JavaScript

Popis funkcí a parametrů programu. Reliance External communicator. Verze 1.5.0

Přehled úprav aplikace e-spis LITE verze

DUM 06 téma: Tvorba makra pomocí VBA

EQAS Online. DNY kontroly kvality a speciálních metod HPLC, Lednice

Modul pro PrestaShop 1.7

Reliance 3 design OBSAH

Manuál PVU zadavatel Platnost pro elektronický nástroj X-EN verze 4 a novější

B2B SOAP - popis funkcionality

Nápověda pro aplikaci Manuscriptorium Kandidátů (M-Can)

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

ČSOB Business Connector

1. Programování proti rozhraní

RESTful API TAMZ 1. Cvičení 11

ucetni-program-pohoda.cz Uživatelský návod a nastavení Instalace str. 2 Uživatelské práva str. 3

Max Homebanking PS uživatelský manuál rozhraní pro automatické stahování dat

Obchodní podmínky registračního systému Právnické fakulty Masarykovy univerzity

Web-Exam. Průvodce lektora administrační částí


NOVÁ STROMOVÁ STRUKTURA VE VÝROBĚ

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Informační systém webhostingu

Pantek Productivity Pack. Verify User Control. Uživatelský manuál

Sázková kancelář Z pekla štěstí

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Vyhledávač datových referencí. Dokumentace

H.P.L. Systems s.r.o. Jičínská PRAHA 3, CZ Obsah

Nastavení telefonu Windows Phone 8S by HTC

JSON API pro zjišťování cen MtG karet

Jan Forman Manuál CLASSIFICATIO N: public / veřejný dokument IDE NTIFICATIO N N U MBER: AUTH OR:

PC detektiv Instalace AWEDBA Archivace Obnova z archivace AWEDBA

Dokumentace k produktu IceWarp Notifikační nástroj

Modul msender message Sender. Nápověda

První kapitola úvod do problematiky

Uživatelská příručka 6.A6. (obr.1.)

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Outdoor Expert. Uživatelský manuál. Verze aplikace: OutdoorExpert_Manual.docx 1 /

Postup při zasílání dokumentů smluvních partnerů České pojišťovny prostřednictvím aplikace externí upload

Jaku b Su ch ý 1

Popis funkcí exportovaných z knihovny nddbe.dll

TÉMATICKÝ OKRUH Softwarové inženýrství

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze Výstupní kontrola 07.1/ Obsah

Popis egon služby. E164 - iszrprobe. Název dokumentu: Popis egon služeb Verze: Datum aktualizace: Správa základních registrů

Specifikace rozhraní. Oznamovací povinnost podle zákona č. 307/2013 Sb., ve znění pozdějších předpisů. Martin Falc, SW architekt.

ERP informační systém

Informační systém pro e-learning manuál

Maturitní projekt do IVT Pavel Doleček

Novinky verze systému Spisové služby (SpS) e-spis LITE

RELAČNÍ DATABÁZE ACCESS

Popis egon služby. E93 - roszapispravnistav. Název dokumentu: Popis egon služeb Verze: Datum aktualizace: Správa základních registrů

ANOTACE vytvořených/inovovaných materiálů

Programátorské večery. Tomáš Herceg Microsoft Student Partner

Athena Uživatelská dokumentace v

E-NABÍDKA PARTNER.REDA.CZ

Export zboží pro vyhledávače

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Aplikace objednávání svozů

Modul IRZ návod k použití

Nastavení telefonu Nokia Asha 311

Přizpůsobení Layoutu aplikace. Základní moduly a funkčnost aplikace

REGISTRACE A SPRÁVA UŽIVATELSKÉHO ÚČTU

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

FRED & PostgreSQL. CZ.NIC, z.s.p.o. Jaromír Talíř <jaromir.talir@nic.cz>

Transkript:

Komunikace se serverem IPAS skrze knihovnu clsipas Obsah Obsah 1 Seznámení se systémem 3 Server IPAS 3 Knihovna clsipas 3 RULE.XML 3 UI nad knihovnou clsipas 3 Komunikační protokol 4 XML 4 Hlavička 4 Hlavička pro GZIP formát 4 Pravidla spojení 4 Popis knihovny clsipas 5 Proměnné knihovny 5 Proměnné socket spojení 5 Proměnné ovládající GZIP chování 5 Proměnné určující místo a název souborů příkazů 5 Počitadla příkazů 5 Proměnné pro přípravu příkazů 5 Proměnné pro příchozí data 5 Proměnné XML data a index 5 Data pro znakovou konverzi 6 Metody knihovny 6 Popis knihovny IpasElementFunction 7 Obecný popis 7 Funkčnost 7 Implementace 7 Příklad 7 Popis přidaných funkcí v knihovně IpasAddFunction 8 Funkce arrmultiarraytosinglearray 8 Funkce arrquery 8 Funkce arrfromxml 8 Funkce arripasfromxml 8 Dynamické generování příkazů a knihovny clsipas 9 Obecně o generování 9 Nastavení 9-1 -

Princip tvorby knihovny a příkazů 9 Příkazy 11 Chybové kódy knihovny clsipas 11 Seznam příkazů 11 Popis důležitých příkazů 13 Login 13 GetDomainInfo 13 CheckDomain 13 Query 14 Příklady 15 Ukázka Login příkazu skrze knihovnu clsipas 15 Změny 16 Verze 2.2.0 (20050727) 16 Změna 'generate.php' 16 Verze 2.1.0 (20050722) 16 Změna 'clsipas.tpl' 16 Verze 2.0.1 (20050712) 16 Změna 'clsipas.tpl' 16 Verze 2.0.0 (20050623) 16 Změna 'clsipas.tpl' 16 Změna 'generate.php' 16 Verze 1.1.2 (20050510) 16 Oprava 'generate.php' 16 Verze 1.1.1 (20050415) 16 Oprava 'generate.php' 16 Verze 1.1.0 (20050331) 17 Oprava 'generate.php' 17 Verze 1.0.3 (20041026) 17 Oprava 'generate.php' 17 Verze 1.0.2 (20041025) 17 Oprava 17 Verze 1.0.1 (20040924) 17 IPAS (20040927) 17 Přidáno 17 Změny 17 Oprava 17 Verze 0.9.1 (20040915) 17-2 -

Seznámení se systémem Server IPAS Server IPAS je výkonným jádrem pro registraci CZ, generických a ostatních domén. V budoucnu se IPAS stane jádrem i pro registraci a správu webhostingů a dalších služeb poskytovaných společností Ignum. IPAS obsahuje nástroje pro poskytování služeb i jiných společností skrze společnost Ignum (např. partneři a subregistrátoři), kteří mohou se serverem libovolně komunikovat skrze komunikační rozhraní popsané níže. Server v současnosti obsahuje příkazy pro kompletní registraci CZ, generických a jiných domén. Dále pak příkazy pro ovládání fakturace, objednávání, kreditu a osobních nastavení uživatelů, správu uživatelských účtů. Knihovna clsipas Knihovna clsipas vznikla pro potřeby partnerů a subregistrátorů společnosti Ignum komunikovat se serverem IPAS. Vývojovým jazykem knihovny se stalo PHP ve své aktuální verzi 4.3.8. Další vývoj bude veden v PHP 5 a dalších, které je pro programování knihoven výrazně pokročilejší. Tato knihovna vychází z interní knihovny společnosti Ignum, request_xml, která byla jako první nabízena jako prostředek pro komunikaci se server IPAS. Jelikož tato knihovna byla posouzena jako nedostačující a o to především v oblasti aktualizace příkazů, vazeb a definic které je nutné dodržovat při komunikaci, vznikla knihovna clsipas. ClsIpas je distribuována ve zdrojovém kódu skrze svoji šablonu. Ta je základním kamenem pro dynamickou generaci clsipas knihovny a příkazy pro komunikaci pomocí souboru pravidel rule.xml. RULE.XML Soubor rule.xml obsahuje definice a pravidla pro komunikaci se serverem IPAS. Díky tomuto souboru je možné vytvořit validní kód příkazů a většinu možných chyb ošetřit již na straně klienta. Tím se šetří nutnost komunikace s IPASem. O rozparsování souboru pravidel se stará generační skript, který je schopen z definovaných pravidel vytvořit jednotlivé příkazy s předem definovanými návratovými kódy a vstupním formátem dat. Ze souboru je rovněž možné získat formát příkazů i jiným způsobem. Soubor sám obsahuje poznámky o typu pravidel. Jednoduché principy je možné vysledovat z generačního skriptu. UI nad knihovnou clsipas Knihovna clsipas by měla sloužit především jako základní stavební kámen uživatelských rozhraní komunikujících se serverem IPAS. - 3 -

Komunikační protokol XML Komunikačním protokolem serveru IPAS je jazyk XML. Veškerá komunikace probíhá v jazyce UTF-8 podle definice xml-1.0. Veškeré definice příkazů je možné získat skrze soubor rule.xml, který obsahuje jednotlivé GroupElementy a Elementy. Je třeba myslet na to, že jazyk XML je CaseSensitive. Je třeba také myslet na nutnost překladu speciálních HTML znaků, které v jazyky xml nejsou povoleny. Nahrazení je třeba provést HTMLENTITAMI. Knihovna clsipas je připravena na to, přijímat data v předem definované kódové stránce a nepřeložené do htmlentit. Obojí pak provádí během přípravy XML příkazu, tak aby během komunikace nedošlo k porušení specifikace xml-1.0 a příkaz tak nebyl serverem odmítnut. Hlavička Každý request, tedy každé spojení se serverem je třeba zahájit hlavičkou. Tato hlavička je serverem kontrolována a je-li zjištěna jakákoliv chyba, je komunikace odmítnuta. Hlavička obsahuje vždy 8 bytů a její formát je následující: DWORD m_dwsize; - velikost požadavku bez hlavičky BYTE m_byorder; - pořadí požadavku v otevřeném spojení BYTE m_byformat;- formát požadavku (výchozí formát nebo gzip) WORD m_wsum; - jednoduchý součet hlavičky Hlavička pro GZIP formát Používáte-li GZIP spojení, je nutné před každý odesílaný souhrn příkazů přidat DWORD hlavičku obsahující velikost rozbaleného souhrnu dat. Pravidla spojení Během jednoho spojení k serveru IPAS je třeba dbát především na provedení příkazu Login. Tímto příkazem se autorizujete vůči serveru a autorizujete tak celé spojení až do jeho konce, příkazu LogOut nebo nového příkazu Login. Příkaz Login je zároveň možný v několika typech. Jako běžný uživatel (subregistrátor) se přihlašujete s typem Account, jako partner pak typem Partner. Typ Admin je určen pouze pro správce systému. - 4 -

Popis knihovny clsipas Jelikož PHP 4 nepodporuje zapouzdření proměnných či metod knihovny, je možné všechny tyto proměnné nebo metody využít. Knihovna je ovšem napsána tak, aby bylo třeba využit pouze některých základních, které celou knihovnu obsluhují. Tuto skutečnost snadno zjistíte z přiložených příkladů komunikace. Proměnné knihovny Proměnné socket spojení $hcoresocket = False; Ukazatel připojení k jádru. Proměnné ovládající GZIP chování $bgzdata = false; Definuje defaultní chování komprese $igzlevel = 9; Určuje level komprese (1 minimální komprese, 9 maximální komprese) $igzmorethan = 1024; Gzipuje pouze příkazy větší než-li zadaná hodnota (v bytech bez hlavičky) $agzallways = Array('Login'); Definuje pole příkazů, které se zagzipují vždy, nezávisle na hodnotě v $bgzdata $bgzdatanow = false; Slouží k ukládání stavu komprese pro aktuálně odesílaný request Proměnné určující místo a název souborů příkazů $srequestfceprefix = '<%srequestfceprefix%>'; Předpona funkcí jednotlivých requestů (slouží k zabránění konfliktů s funkcemi Vašeho vlastního systému) $srequestfileextend = '<%spostfixrequesttmp%>'; Přípona souborů obsahujících příkazy a jejich definice. $mexternalfunctionspath = ''; Proměnná s relativním adresou k umístění souborů s definicí příkazů. Počitadla příkazů $irequestcounter = 0; Počítadlo příkazů v požadavku. $irequestsendcounter = 0; Počítadlo příkazů v otevřeném spojení. Proměnné pro přípravu příkazů $arequestdata = Array(); Proměnná pro vstupní data požadavků. $arequestout = Array(); Proměnná s výsledným XML požadavkem. $srequestcache = ''; Cache těla příkazu Proměnné pro příchozí data $srequestresult = ''; Výsledná XML odpověď z jádra. Proměnné XML data a index $aparsexmlvalues = Array(); Pole hodnot výstupu XML parseru. $aparsexmlindexes = Array(); Pole indexů XML parterů. - 5 -

Data pro znakovou konverzi $acharsetboth = Array(); Pomocné pole pro překlad kódových stránek. $acharsetin = Array(<%sCharsetIn%>); Pole s problematickými znaky ve vnitřní kódové stránce. $acharsetout = Array(<%sCharsetOut%>); Pole s problematickými znaky v UTF-8 Metody knihovny construct() konstruktor knihovny. desctruct() destruktor knihovny. strcreaterequest() vytvoří z aktuálních dat v $arequestdata pole $arequestout. Nedošlo-li k chybě, návratem bude string s XML requestem. V případě chyby bude na výstupu pole s chybovými kódy jednotlivých elementů příkazu. uncallexternalfunction($srequestname, array $ainrequestdata = '') Vyhledá a zavolá funkci s definicí daného příkazu. Není-li nalezen příkaz, nebo dojde-li k chybě, vrací false. Jinak vrací návratovou hodnotu volané funkce. arrayconvertindata(&$aindata) je rekurzivním překladačem vstupních dat na správné htmlentity. strconvertdata($sindata, $sorder) konvertuje data mezi kódovými stránkami za pomoci definovaných polí problematických znaků. strconvertrequest() skládá data z proměnné $arequestout do výsledného XML stringu. voidparsexml() plní datové a indexové pole rozparsovaným XML odpovědi jádra strcreateheader() vytváří hlavičku požadavku Command() odešle požadavek na server a zpracuje odpověď OpenConnect() otevře spojení k serveru CloseConnect() uzavře spojení k serveru ResetSession() resetuje aktuální spojení, případně vytvoří nové - 6 -

Popis knihovny IpasElementFunction Obecný popis Třída IpasElementFunction slouží k možnosti nastavení daného elementu requestu jako vnitřní funkce Ipasu. Vnitřní funkce Ipasu slouží především k překladu hodnot typu DomainName či RRID na hodnoty jako ID, které tak zjednodušují práci programátora a šetří užití příkazu Query. Funkčnost Zadáte-li jako hodnotu elementu objekt typu IpasElementFunction, element se zpracuje poněkud odlišným způsobem. Takový element bude vytvořen s attributem function= 1 a hodnotou představující klasické volání dané funkce. Ipas sám pak nejprve provede požadavek na volání funkce, její výstup dosadí za daný element a pak teprve zpracovává celý příkaz již klasickým způsobem. Implementace Třída IpasElementFunction obsahuje seznam funkcí, které jsou v Ipasu momentálně implementovány. Zároveň obsahuje seznam a typ atributů, které daná funkce vyžaduje. Typy atributů jsou rozděleny pouze jako Integer (I) a String (S), které se při generování volání funkce (a tedy obsahu daného elementu) liší užitím uvozovek. Vytvoříte-li objekt tohoto typu s uvedením chybného nazvu funkce, bude při generování jeho výstupní hodnoty (tedy při užití v Requestu) vyvolána vyjímka IpasException. Příklad $oipas = new clsipas(); $oqueryid = new IpasElementFunction( QueryCodeToID, array( Code => 45 )); $areqdata[0]['name'] = 'Query'; $areqdata[0]['data'] = array( 'ID' => $oqueryid, 'Params' => array('order' => 'date')); $oipas->arequestdata = $areqdata; $srequest = $oipas->strcreaterequest(); print_r($srequest); Vygeneruje výstup: <?xml version="1.0" encoding="utf-8"?> <Commands> <Command ID="0"> <Query> <ID function="1">querycodetoid('48')</id> <Params> <ORDER>date</ORDER> </Params> </Query> </Command> </Commands> - 7 -

Popis přidaných funkcí v knihovně IpasAddFunction Funkce arrmultiarraytosinglearray Slouží k přegenerování vícerozměrného pole do jednorozměrného. Více rozměrů je interpretováno pak interpretováno tečkou v klíči daného pole. Vstupem je pole předávané hodnotou. Výstupem je pak pole upravené. Funkce arrquery Slouží k volání příkazu Query skrze knihovnu clsipas. Výstupem je jednoduché a již rozparované pole hodnot, které Ipas vráti v XML. Vstupem je komunikační knihovna clsipas, skrze kterou se příkaz provede, Kód Query příkazu a pole dalších parametrů pro dosazení do Query. V této funkci je možné vidět použítí IpasElementFunction, které zde slouží k překladu QueryCode na QueryID. Funkce arrfromxml Je funkcí umožňující přegenerování dvou polí, vznikajících po rozparování XML skrze vnitřní parser PHPka, na více rozměrné pole. Vstupem je indexové a hodnotové pole vzniklého po parsovaní (v clsipas je to aparsexmlindexes a aparsexmlvalues) a název tagu, od kterého se má výstup provádět. Název tagu slouží k vymezení zanoření do XML. Výstupem je vícerozměrné pole. Tato funkce ignoruje hodnoty Atributů jednotlivých elementů Xml výstupu. Atributy jsou využity v podstatě pouze u příkazu CheckDomain. Funkce arripasfromxml Tato funkce je pouze aliasem k funkci arrfromxml. Její vstupní hodnotou však nejsou pole indexů a hodnot ale sama knihovna clsipas. Funkce sama pak pouze volá arrfromxml s uvedenými poli z dodané knihovny. Výstup je totožný. - 8 -

Dynamické generování příkazů a knihovny clsipas Obecně o generování Abychom mohli snadno přidávat příkazy, měnit jejich validační hodnoty a snižovat tak počty chyb a dalších dotazů, vytvořili jsme soubor rule.xml, který obsahuje velké množství těchto pravidel a skript, který tento soubor dokáže rozparsovat a vytvořit jednotlivé příkazy. Skript pro parsování souboru s pravidly se jmenuje generate.php a je opět volně dostupný ve zdrojovém kódu. Vzhledem k vývojovému jazyku knihovny clsipas je také vytvořen v PHP. U skriptu je přiložen soubor generate.var, který obsahuje nastavení pro generování příkazů a knihovny. Nastavení Proměnné v souboru generate.var přímo ovlivňují název, kódovou stránku, umístění i název funkcí jednotlivých příkazů. Názvy, default hodnoty a vysvětlení jednotlivých nastavení jsou $sfilerule = './rule.xml'; - soubor s pravidly podle kterých se generují jednotlivé příkazy $sfileclass = './clsipas.tpl'; - soubor s šablonou knihovny clsipas $snametestclass = 'clstest'; - název pro knihovnu s jednoduchými testy parametrů příkazů $snamecommclass = 'clsipas'; - název pro knihovny clsipas $spostfixclass = 'class'; - přípona souborů s knihovnou (clsipas a clstest) $spostfixrequest = 'class'; - přípona souborů s příkazy $srequestfceprefix = 'IpasReq'; - předpona pro název funkcí jednotlivých příkazů $srequestdir = 'request'; - umístění souborů s příkazy vůči knihovně $sdatadir = 'data'; - umístění vygenerovaných souborů vůči generačnímu skriptu $bgeneraterequest = true; - přepínač určující zda má skript generovat soubory s příkazy $bgeneratecommclass = true; - přepínač určující zda má skript generovat knihovnu clsipas $sipasserver = 'offline.ignum.cz'; - adresa IPAS serveru $sipasport = '5055'; - port serveru IPAS $swebcharset = 'WINDOWS-1250'; - kódová stránka uživatelského rozhraní. Vzhledem k tomu, že překlad se provádí pomoci funkce iconv, je třeba názvy kódových stránek volit z možných nastavení této funkce. Upozorňujeme, že vzhledem ke způsobu překladu není v tuto chvíli možné zvolit kódovou stránku UTF-8. Tento nedostatek odstraníme v některé z dalších verzí šablony clsipas. Řetězec $sconvertchar obsahuje znaky, které bude knihovna clsipas překládat do UTF-8. Tento řetězec je zapsán v kódové stránce WINDOWS-1250 a případná změna této kódové stránky vyžaduje změnu v generačním skriptu. Princip tvorby knihovny a příkazů Pro Vaši snazší orientaci, je jistě dobré znát něco malinko z principu generování knihovny a příkazů. - 9 -

Zatímco knihovna se prakticky negeneruje, pouze se na vyplní některé z hodnot (ty rozpoznáte snadno podle oddělovačů <% a %>), soubory s příkazy se generují zcela kompletně. Navíc, vzhledem k tomu, že dochází k prolínání se některých příkazů či spíše group elemetů do více příkazů je nutné sledovat tyto vazby. Program tedy prochází každé pravidlo, zjišťuje jeho typ, validační hodnoty a vytváří podle toho PHP kód dané funkce. Navíc, chce-li využít jiné funkce, které nejsou umístěné v daném souboru, vytvoří mezi oběma soubory jednosměrnou vazbu. Při volání daného příkazu je pak soubor s příkazem requirován čímž se zadefinuje funkce složená z předpony definované v generate.var a názvu příkazu. Tento princip pak zjednodušuje a zrychluje především při volání pouze několika příkazů či volání mnoha stejných příkazů. Z našich pokusů vyplynulo, že rozdělení do více souborů znamená při běžném připojení k serveru úsporu více než dvojnásobnou, oproti umístění všech příkazů do jednoho souboru (potažmo knihovny). To je způsobeno výrazným ušetřením množství kódu, který je třeba systémem kompilovat. Zároveň s těmito soubory vzniká soubor defaultně pojmenovaný clstest.class, který obsahuje knihovnu sdružující nejelementárnější validační pravidla definované v rule.xml. - 10 -

Příkazy Chybové kódy knihovny clsipas Při komunikaci se serverem pomocí generovaných příkazů, dochází k validaci již na straně klienta, což výrazně snižuje čas potřebný pro zpracování požadavku a zároveň snižuje požadavky na připojení k serveru IPAS. Skripty vrací chybové kódy vždy ve vztahu k elementu jehož se chyba týká. Jedná-li se o vnořený element, bude chyba také ve složeném poli. Hlavní snahou je vždy vrátit maximum chybových kód, tedy projít všechny validační mechanismy a sestavit z nich případně celý seznam kódů. Kódy jsou vraceny v poli, jehož klíč je shodný s názvem elementu a hodnoty jsou (nejedná-li se o již zmiňovaný vnořený element) umístěny ve dvou klíčích. První a vždy povinný je klíč code. Druhý nepovinný je z výběru klíčů format, value. Seznam hodnot klíče code, jejich význam a význam druhého nepovinného klíče: 200 Hodnota není řetězec 201 Hodnota není integer (momentálně se tato kontrola nepoužívá) 202 Hodnota není z hodnot True, False (string boolean) 300 Hodnota je příliš krátká (klíč format obsahuje minimální délku) 301 Hodnota je příliš dlouhá (klíč format obsahuje maximální délku) 302 Hodnota není z možných hodnot (klíč format obsahuje možné hodnoty oddělené čárkou) 303 Hodnota je příliš malá (klíč format obsahuje nejmenší možnou hodnotu) 304 Hodnota je příliš dlouhá (klíč format obsahuje největší možnou hodnotu) 305 Hodnota neodpovídá předepsanému datovému formátu (klíč format obsahuje předepsaný datový formát) 306 Hodnota neodpovídá předepsanému regulárnímu výrazu (klíč format obsahuje předepsaný regulární výraz) 400 Prázdná povinná hodnota 401 Neznámá hodnota neodpovídající žádné z možných hodnot přepínače (klíč value obsahuje chybový kód serveru Ipas, který by v takovém případě vrátil) 402 Data tohoto elementu musí být pole 403 Element je v nedostatečném množství (klíč format obsahuje minimální množství elementu) 404 Element je v příliš vysokém množství (klíč format obsahuje maximální množství elementu) Vzhledem k množství jednoduchých validačních metod budou tyto v dalších verzích dále implementovány a budou tedy vznikat i další chybové kódy. Chybové kódy jsou v tuto chvíli rozděleny tak aby odpovídaly programové pozici a typu validace. Kódy 2xx jsou z nejjednodušších validačních metod, kód 3xx jsou ze složených validačních metod a kódy 4xx jsou používány pro chyby elementů. Seznam příkazů Server Ipas momentálně podporuje tyto příkazy přístupné pro partnery nebo subregistrátory. AcceptAccountAccess Potvrzení spojení accountů (domena.cz správa plátců) AssignContact Import kontaktu - 11 -

AssignDomain Import domény AssignSubject Import subjektu AssignVirtualContact Import virtuálního kontaktu AutoRenewDomain Zapnutí/vypnutí automatické fakturace domény při expiraci CancelAccountAccess Zrušené spojení accountů (domena.cz správa plátců) CancelInvoice Storno výzvy k platbě CancelOrder Storno objednávky ChangeAccountPassword Změna hesla CheckContact Zjištění existence kontaktu CheckDomain Zjištění existence subjektu CheckSubject Zjištění existence domény ConfirmOrder Potvrzení objednávky CreateAccount Vytvoření accountu (uživatelského účtu) CreateContact Vytvoření kontaktu (bude zrušeno nahrazuje jej příkaz OrderService) CreateDomain Vytvoření domény (bude zrušeno nahrazuje jej příkaz OrderService) CreateFinalInvoice Vytvoření daňového dokladu CreateInvoice Vytvoření výzvy k platbě CreateNicAgreement Potvrzení pravidel pro CZ domény CreateNServer Vytvoření DNS serveru CreateSubject Vytvoření subjektu (bude zrušeno nahrazuje jej příkaz OrderService) CreateVirtualContact Vytvoření virtuálního kontaktu CreditNoteGetImage Zobrazení dobropisu DeleteContact Smazání (úplné) kontaktu DeleteDomain Zrušení (úplné) domény DeleteNServer Smazání DNS serveru DeleteSubject Smazání (úplné) subjektu DeleteVirtualContact Smazání virtuálního kontaktu DetachContact Odstranění kontaktu ze seznamu daného účtu DetachDomain Odstranění domény ze seznamu daného účtu DetachSubject Odstranění subjektu ze seznamu daného účtu GetAccountInfo Zobrazit informace o accountu GetContactInfo Zobrazit informace o kontaktu podle RRID GetContactInfoByID Zobrazit informace o kontaktu podle ID GetDomainInfo Zobrazit informace o doméně podle názvu domény GetDomainInfoByID Zobrazit informace o doméně podle ID GetNicAgreementVersions Vrátí aktuální platnou verzi pravidel pro CZ domény GetSubjectInfo Zobrazit informace o subjektu podle RRID GetSubjectInfoByID Zobrazit informace o subjektu podle ID GetVirtualContactInfo Zobrazit informace o virtuálním kontaktu InvoiceGetImage Zobrazit výzvu k platbě InvoiceTaxGetImage Zobrazit daňový doklad JoinAccount Sloučit účet Login Přihlášení se Logout Odhlášení se MakeInvoicePayed Zaplatit výzvu k platbě OrderManualFinish Potvrzení manuální objednávky OrderManualStart Označení začátku zpracování manuální objednávky - 12 -

OrderService Objednání služby Query Spuštění SELECTu RenewDomain Prodloužení domény (bude zrušeno nahrazuje jej příkaz OrderService) RepairRRID Oprava RRID pro CZ subjekty (dojde-li k obsazení v průběhu vyřizování objednávky) RequestAccountAccess Požadavek na spojení accountů (domena.cz správa plátců) ResendConfirm Přeposlání potvrzení objednávky ResendInvoice Přeposlání výzvy k platbě/daňového dokladu SendLoginInfo Přeposlání přihlašovacích údajů SetCurrentAccount Přihlášení se pod Account TransferDomain Transfer domény (bude zrušeno nahrazuje jej příkaz OrderService) UpdateAccount Upravit údaje accountu UpdateContact Úprava kontaktu (bude zrušeno nahrazuje jej příkaz OrderService) UpdateDomain Úprava domény (bude zrušeno nahrazuje jej příkaz OrderService) UpdateNServer Úprava DNS serveru UpdateSubject Úprava subjektu (bude zrušeno nahrazuje jej příkaz OrderService) UpdateVirtualContact Úprava virtuálního kontaktu ViewLogin Zobrazit informace o přihlášeném účtu Soubor rule.xml obsahuje i další příkazy, které však není bez oprávnění Admin možné volat. Při pokusu o zavolání takového příkazu server odmítne tento příkaz vykonat. Popis důležitých příkazů Login LoginName přihlašovací jméno účtu (pov.) Password heslo účtu (pov.) Type z výběru Account, Partner, Systém určuje typ účtu pod který se chcete přihlásit (pov.) Timeout určuje TimeOut spojení při nečinnosti Partner je group element určený nepovinně pro přihlášení typu Account. o LoginName přihlašovací jméno partnera o Password přihlašovací heslo partnera Není-li definován Element Partner a je-li typ přihlášení Account, systém zvolí defaultního partnera. GetDomainInfo Domain název domény jejíž informace chcete zobrazit (pov.) CheckDomain Domain je MultiElementem, tedy elementem který se může libovolně opakovat. Minimálně se musí vyskytnout právě jednou. Obsahuje název domény o které chcete vědět zda je volná či nikoliv. Jelikož jde o MultiElement, musí být vstupní data do tohoto elementu polem. - 13 -

Query ID určuje SELECT který chcete spustit. Seznam SELECTů je možné získat na naší technické podpoře. (pov.) Databáze je na výběr z hodnot data a log. Hodnotou data určujete datovou databázi, hodnotou log databázi logů. Defaultní hodnotou je data. Params je GroupElementem, který slučuje všechny klíče potřebné ke spuštění SELECTu. Tyto klíče zjistíte také na naší technické podpoře, společně s jednotlivými SELECTy. Klíče uvnitř tohoto elementu musí být názvem shodné s klíčem v SELECTu. Některé klíče systém predefinovává automaticky (např. AccID ID přihlášeného uživatele, AccLogin obsahuje login aktuálního uživatele, apod.). Tyto parametry jsou pak systémem přepsány a na přijaté parametry tedy není brán zřetel. - 14 -

Příklady Ukázka Login příkazu skrze knihovnu clsipas $omyipas = new clsipas(); $areqdata[0]['name'] = 'Login'; $areqdata[0]['data'] = Array('LoginName' => 'slon', 'Password' => 'bufamasvousama', 'Type' => 'Account'); $omyipas ->arequestdata = $areqdata; $aoutreq = $omyipas ->strcreaterequest(); If (is_array($aoutreq)) { strzpracujchyby($aoutreq); //fiktivni funkce } else { $omyipas ->Command(); } - 15 -

Změny Verze 2.2.0 (20050727) Změna 'generate.php' Změněn způsob generování překladových polí Verze 2.1.0 (20050722) Změna 'clsipas.tpl' Opravena chyba znemožňující správné rozparování českých znaků XML Parserem Přidáno ověření existence spojení před jeho zavřením Přidána funkce pro rekurzivní překlad polí Verze 2.0.1 (20050712) Změna 'clsipas.tpl' Opravena chyba znemožňující správné vyvolání Exception (použití @) Verze 2.0.0 (20050623) Změna 'clsipas.tpl' Upravena pro funkčnost v PHP5 (>=5.0.2) Přidána podpora funkcí (třída IpasElementFunction) Přidána třída s podpůrnými funkčnostmi (parsing XML, Query) (třída IpasAddFunction) Možnost spojení SSL Ošetření chyb skrze Exception a IpasException Změna 'generate.php' Přidána práce s funkcemi jako daty Elementu Přidána volba typu spojení (generate.var) Přesunutí ChangeLogu Verze 1.1.2 (20050510) Oprava 'generate.php' Oprava chyby volání Inherit Typu Elementu Verze 1.1.1 (20050415) Oprava 'generate.php' Oprava tvorby requestu OrderService (překlad ServiceCode a class_id) - 16 -

Verze 1.1.0 (20050331) Oprava 'generate.php' Změna způsobu jazykové konverze Oprava 'quantitymax' Verze 1.0.3 (20041026) Oprava 'generate.php' Opraven chybějící ')' a ';' ve vygenerovaných funkcích requestů Verze 1.0.2 (20041025) Oprava Opravena chyba v názvu proměnné ve funkci strconvertdata Verze 1.0.1 (20040924) IPAS (20040927) Opravena chyba zabraňující plnohodnotné komunikaci v UniCode Přidáno Schopnost komunikovat s GZIP komprimovanými příkazy Hodnoty $bgzdata, $igzlevel, $igzmorethan, $agzallways ovládající GZIPovaní a GZIPovaný výstup Hodnota $srequestcache zrychlující generování příkazů (použito ve funkcích Command, strcreaterequest, strconvertrequest) Volání trigger_error ve výjimečných chybových situacích Změny Příkaz vracený funkcí strcreaterequest je vracen ve skutečné formě. Při použití GZIPu je tedy zazipovaný (pak obsahuje i DWORD hlavičku) Funkce Command automaticky detekuje typ dat vracených serverem a zazipovaná data automaticky rozbalí. Kosmetické přejmenování funkce voidcallexternalfunction na uncallexternalfunction odpovídající typu vracených dat Funkce strconvertdata nově používá funkce strtr metodu pro překlad dat (nahrazuje funkci replace str_replace v jednom směru a For cyklus v druhém směru překladu) Oprava Opravena chyba v překlepu ve funkci strconvertdata (chyba v přípravě pole pro překlad dat) Verze 0.9.1 (20040915) První veřejně dostupná verze Základní funkcionalita pro komunikaci, zpracování příkazů - 17 -