| 1 | <stránka | 
|---|
| 2 | xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana" | 
|---|
| 3 | xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"> | 
|---|
| 4 | <nadpis>Skriptování</nadpis> | 
|---|
| 5 | <perex>Na stránku můžeme vložit výstup skriptů.</perex> | 
|---|
| 6 | <pořadí>50</pořadí> | 
|---|
| 7 |  | 
|---|
| 8 | <text xmlns="http://www.w3.org/1999/xhtml"> | 
|---|
| 9 |  | 
|---|
| 10 | <p> | 
|---|
| 11 | Na stránkách můžeme používat skripty. | 
|---|
| 12 | Spouští se při generování a jejich standardní výstup se vloží do stránky. | 
|---|
| 13 | Třeba doprostřed textu ostavce nebo do jiného elementu. | 
|---|
| 14 | </p> | 
|---|
| 15 | <p> | 
|---|
| 16 | Příklad: | 
|---|
| 17 | <em> | 
|---|
| 18 | Tyto stránky byly vygenerované v systému | 
|---|
| 19 | <span title="tento text pochází ze skriptu"><m:skript jazyk="bash">uname -o</m:skript></span>. | 
|---|
| 20 | </em> | 
|---|
| 21 | </p> | 
|---|
| 22 |  | 
|---|
| 23 | <p> | 
|---|
| 24 | Díky skriptování můžeme stránky obohatit o prakticky libovolný obsah. | 
|---|
| 25 | Tato funkce ale může být nebezpečná – pokud byste spustili generátor na stránkách, | 
|---|
| 26 | které psal někdo nedůvěryhodný a vložil do nich škodlivý kód. | 
|---|
| 27 | Proto je skriptování ve výchozím stavu vypnuté – je potřeba ho povolit v souboru <code>web.conf</code>. | 
|---|
| 28 | </p> | 
|---|
| 29 |  | 
|---|
| 30 | <h2>Podporované jazyky</h2> | 
|---|
| 31 | <p> | 
|---|
| 32 | V současnosti jsou podporované tyto jazyky: | 
|---|
| 33 | </p> | 
|---|
| 34 |  | 
|---|
| 35 | <table> | 
|---|
| 36 | <thead> | 
|---|
| 37 | <tr> | 
|---|
| 38 | <td>Jazyk</td> | 
|---|
| 39 | <td>Interpret</td> | 
|---|
| 40 | </tr> | 
|---|
| 41 | </thead> | 
|---|
| 42 | <tbody> | 
|---|
| 43 | <m:skript jazyk="perl"  výstup="xml"><![CDATA[ | 
|---|
| 44 | use strict; | 
|---|
| 45 |  | 
|---|
| 46 | open(JAVA, "<", $ENV{"XWG_SKRIPTOVANI_JAVA"}) or die $!; | 
|---|
| 47 |  | 
|---|
| 48 | while (<JAVA>) { | 
|---|
| 49 | #i.put("bash", "/bin/bash"); | 
|---|
| 50 | if (/podporovanýJazyk\.put\("(\w+)",\s*"(.*)"\);/) { | 
|---|
| 51 | print "<tr><td><code>$1</code></td><td><code>$2</code></td></tr>\n"; | 
|---|
| 52 | } | 
|---|
| 53 | } | 
|---|
| 54 | ]]></m:skript> | 
|---|
| 55 | </tbody> | 
|---|
| 56 | </table> | 
|---|
| 57 |  | 
|---|
| 58 | <h2>Perl</h2> | 
|---|
| 59 | <p>Jazyky použité nebo citované na této stránce:</p> | 
|---|
| 60 | <!-- | 
|---|
| 61 | Lepšího výsledku bychom samozřejmě dosáhli pomocí XPath dotazu, | 
|---|
| 62 | ale toto je příklad na Perl :-) | 
|---|
| 63 | --> | 
|---|
| 64 | <pre><m:skript jazyk="perl"><![CDATA[ | 
|---|
| 65 | use strict; | 
|---|
| 66 |  | 
|---|
| 67 | open(XML, "<", $ENV{"XWG_STRANKA_SOUBOR"}); | 
|---|
| 68 | my %skripty; | 
|---|
| 69 |  | 
|---|
| 70 | while (<XML>) { | 
|---|
| 71 | if (/m:skript\s+jazyk="(\w+)"/) { | 
|---|
| 72 | $skripty{$1}++; | 
|---|
| 73 | } | 
|---|
| 74 | } | 
|---|
| 75 |  | 
|---|
| 76 | for(keys(%skripty)) { | 
|---|
| 77 | print "$skripty{$_}×\t $_\n"; | 
|---|
| 78 | } | 
|---|
| 79 | ]]></m:skript></pre> | 
|---|
| 80 |  | 
|---|
| 81 | <h2>BASH</h2> | 
|---|
| 82 | <pre><m:skript jazyk="bash"><![CDATA[ | 
|---|
| 83 | echo -n "Právě je: "; | 
|---|
| 84 | date; | 
|---|
| 85 | echo -n "Operační systém: "; | 
|---|
| 86 | uname -sir; | 
|---|
| 87 | echo -n "SHA-1 otisk zdrojáku této stránky: "; | 
|---|
| 88 | sha1sum "$XWG_STRANKA_SOUBOR" | cut -f 1 -d " "; | 
|---|
| 89 | ]]></m:skript></pre> | 
|---|
| 90 |  | 
|---|
| 91 | <!-- | 
|---|
| 92 | <h2>PHP</h2> | 
|---|
| 93 | <pre style="max-height: 200px;"><m:skript jazyk="php"><![CDATA[ | 
|---|
| 94 | <?php | 
|---|
| 95 | phpinfo(); | 
|---|
| 96 | ?> | 
|---|
| 97 | ]]></m:skript></pre> | 
|---|
| 98 | --> | 
|---|
| 99 |  | 
|---|
| 100 | <h2>Proměnné prostředí</h2> | 
|---|
| 101 | <p> | 
|---|
| 102 | Ve skriptech máme dostupné následující proměnné prostředí: | 
|---|
| 103 | </p> | 
|---|
| 104 |  | 
|---|
| 105 | <table> | 
|---|
| 106 | <thead> | 
|---|
| 107 | <tr> | 
|---|
| 108 | <td>Proměnná</td> | 
|---|
| 109 | <td>Význam</td> | 
|---|
| 110 | </tr> | 
|---|
| 111 | </thead> | 
|---|
| 112 | <tbody> | 
|---|
| 113 | <m:skript jazyk="perl" výstup="xml"><![CDATA[ | 
|---|
| 114 | use strict; | 
|---|
| 115 |  | 
|---|
| 116 | open(JAVA, "<", $ENV{"XWG_SKRIPTOVANI_JAVA"}) or die $!; | 
|---|
| 117 |  | 
|---|
| 118 | while (<JAVA>) { | 
|---|
| 119 | #i.put("bash", "/bin/bash"); | 
|---|
| 120 | if (/"(.*)=".*\/\/\s+env:(.*)/) { | 
|---|
| 121 | print "<tr><td><code>$1</code></td><td>$2</td></tr>\n"; | 
|---|
| 122 | } | 
|---|
| 123 | } | 
|---|
| 124 | ]]></m:skript> | 
|---|
| 125 | </tbody> | 
|---|
| 126 | </table> | 
|---|
| 127 |  | 
|---|
| 128 | <p> | 
|---|
| 129 | Kód: | 
|---|
| 130 | </p> | 
|---|
| 131 |  | 
|---|
| 132 | <m:pre jazyk="xml"><![CDATA[<m:skript jazyk="bash"> | 
|---|
| 133 | echo "URI:    $XWG_STRANKA_URI"; | 
|---|
| 134 | echo "Soubor: $XWG_STRANKA_SOUBOR"; | 
|---|
| 135 | echo "Nadpis: $XWG_STRANKA_NADPIS"; | 
|---|
| 136 | echo "Perex:  $XWG_STRANKA_PEREX"; | 
|---|
| 137 | </m:skript>]]></m:pre> | 
|---|
| 138 |  | 
|---|
| 139 | <p>nám vypíše:</p> | 
|---|
| 140 |  | 
|---|
| 141 | <pre><m:skript jazyk="bash"><![CDATA[ | 
|---|
| 142 | echo "URI:    $XWG_STRANKA_URI" | sed s/\\/home\\/$USER/\\/home\\/xwg/g; | 
|---|
| 143 | echo "Soubor: $XWG_STRANKA_SOUBOR" | sed s/\\/home\\/$USER/\\/home\\/xwg/g; | 
|---|
| 144 | echo "Nadpis: $XWG_STRANKA_NADPIS"; | 
|---|
| 145 | echo "Perex:  $XWG_STRANKA_PEREX"; | 
|---|
| 146 | ]]></m:skript></pre> | 
|---|
| 147 |  | 
|---|
| 148 | </text> | 
|---|
| 149 |  | 
|---|
| 150 | </stránka> | 
|---|
| 151 |  | 
|---|