abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 12:00 | Zajímavý článek

Dragos Barosan ve svém článku New in Git: switch and restore popisuje dva nové příkazy verzovacího systému git. Původně k přepnutí pracovního stromu do jiné větve i k zahození lokálních změn v souborech sloužil příkaz git checkout, což bylo nepřehledné pro nové uživatele. Nyní pro tyto dvě akce přibyly dva nové jednoúčelné příkazy, které práci s gitem mají zjednodušit.

Harvie.CZ | Komentářů: 1
dnes 08:00 | IT novinky

Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu aktuálně činí 1,00 %. Před měsícem to bylo 0,89 %. Nejčastěji používanou linuxovou distribucí je Ubuntu 20.04.2 LTS 64 bit. Přehled her oficiálně podporujících SteamOS a Linux na stránkách Steamu. Přehled her pro Windows běžících na Linuxu díky Protonu na stránkách ProtonDB.

Ladislav Hagara | Komentářů: 0
dnes 07:00 | Zajímavý projekt

Na Humble Bundle byla spuštěna akce Humble RPG Heroes Bundle. Za 1 euro lze koupit počítačovou hru Delver. Za 7 euro lze koupit navíc hry Tower of Time a Swords & Souls: Neverseen. Za 8 euro navíc Dreadlands, Slasher's Keep a Quest Hunter. Hry Delver, Tower of Time a Quest Hunter běží na Linuxu přímo. Zbylé tři s využitím Protonu nebo Wine.

Ladislav Hagara | Komentářů: 0
dnes 06:00 | Zajímavý článek

Jiří Eischmann v příspěvku Elektronický podpis a Linux v roce 2021 na svém blogu řeší získání kvalifikovaného certifikátu pro elektronický podpis u České pošty a možnosti jeho využití v Linuxu.

Ladislav Hagara | Komentářů: 0
31.7. 16:55 | Nová verze

Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 108 (pdf), HackSpace 45 (pdf) a Wireframe 52 (pdf).

Ladislav Hagara | Komentářů: 0
31.7. 16:44 | Zajímavý projekt

Jeff Geerling, který se věnuje mj. testování kompatibility různých komponent s Raspberry Pi, oznamuje, že se mu podařilo dosáhnout povolení SATA ve výchozí konfiguraci jádra Raspberry Pi OS, oficiální distribuce pro Raspberry Pi. Zavádění systému ale zatím není připraveno na start ze SATA úložiště.

Fluttershy, yay! | Komentářů: 3
31.7. 16:33 | Zajímavý projekt

Emmanuele Bassi oznámil spuštění nového webu s dokumentací pro vývojáře aplikací pro desktopové prostředí GNOME. Web je generován pomocí nástroje Sphinx. Starý web je stále dostupný.

Fluttershy, yay! | Komentářů: 0
31.7. 02:11 | Pozvánky

Týden po online konferenci LibreOffice, ve dnech 30.9.-1.10., proběhne dvoudenní konference COOL days 2021 firmy Collabora, zaměřená na Collabora Online. Collabora Online je výkonná online kancelář založená na LibreOffice, která podporuje všechny hlavní formáty dokumentů, tabulek a prezentací a kterou můžete integrovat do vlastní infrastruktury.

… více »
Zdeněk Crhonek | Komentářů: 0
30.7. 18:11 | IT novinky

Hra, resp. interaktivní vyprávění Wanderlust: Transsiberian je na portále GOG.com zdarma, akce trvá do 3. srpna.

Fluttershy, yay! | Komentářů: 0
30.7. 18:00 | Nová verze

Dokumentační tým LibreOffice vydává příručku LibreOffice Draw 7.1. LibreOffice Draw umožňuje vytvořit cokoli od rychlého náčrtu až po složitou kresbu a poskytuje prostředky pro komunikaci pomocí grafiky a diagramů. S maximální velikostí stránky 300 × 300 cm je Draw vynikajícím balíkem pro tvorbu technických výkresů, brožur, plakátů a mnoha dalších dokumentů. Draw manipuluje s grafickými objekty, seskupuje je, ořezává, používá

… více »
Zdeněk Crhonek | Komentářů: 0
Jak synchronizujete data mezi zařízeními?
 (29%)
 (17%)
 (13%)
 (13%)
 (29%)
Celkem 24 hlasů
 Komentářů: 3, poslední dnes 09:45
Rozcestník

Čuňačíme v Mediawiki – Pozor na staré šablony

11.3. 19:55 | Přečteno: 2214× | Za vším hledej Linux | poslední úprava: 11.3. 19:55

Minulý pátek, po 12 letech a 8 měsících jsem změnil doménu u nejstarší, mnou kontinuálně provozované wiki. A nebyla to změna jediná.

Aktualizace MediaWiki

Nejprve jsem zvednul verzi MediaWiki z 1.34, které skončil životní cyklus loni na konci listopadu, na aktuální verzi 1.35, s podporou až do září 2023. A s tím byl pochopitelně spojen také upgrade používaných rozšíření.

Z toho jsem měl poněkud obavy, protože udržovat kód rozšíření tak, aby všechno fungovalo i s aktuální verzí MediaWiki není žádná sranda. Většina jejich tvůrců má svojí práce dost a řeší jiné problémy než zrovna to, jestli rozšíření, které si napsali pro MediaWiki verze 1.12 se dá používat i s verzí 1.35.

Problémy, spojené s nějakým rozšířením, se po aktualizaci MediaWiki obvykle projeví tak, že server zobrazí nějakou chybu, nebo nic. A řeší se tak, že se nejdřív zakomentují všechna používaná rozšíření, a pak se znovu postupně zapínají, od těch nejdůležitějších po ta méně důležitá, dokud nepřijdete na to, které z nich způsobuje problém.

Pokud se aktualizujete nějakou starší MediaWiki (viz životní cyklus verzí MediaWiki, tak doporučuji “vyskákat” nejprve na nejbližší LTS verzi a teprve pak aktualizovat dál až po aktuální LTS verzi. I tak si ale nejprve ověřte, jestli lze vámi používaná rozšíření použít. Tyhle informace najdete na vývojářském webu https://www.mediawiki.org, kde má každé rozšíření svou stránku.

Změna domény a certifikát

Důvodem pro změnu domény bylo postupné sjednocení domén používaných v rámci FEL ČVUT. Tato fakulta sídlí ve dvou lokalitách. V Dejvicích a na Karlově náměstí, a historicky se tak používaly dvě domény feld.cz a felk.cz.

Web katedry řídicí techniky, kde jsem v květnu 2008 nastoupil, používal původně doménu dce.felk.cvut.cz proto jsem zvolil pro wiki, která měla za cíl zdokumentovat do té doby panující chaos, doménové jméno support.dce.felk.cvut.cz.

Peripetie katederního webu jsem naštěstí řešil pouze okrajově. Nastoupil jsem, coby specialista přes virtualizaci v linuxovém prostředí, se základním cílem a předsevzetím – do windows už ani klacíkem. Ovšem v době, kdy už bylo defakto rozhodnuto o tom, že se nový web katedry rozjede na redakčím systému MediaCentrik, které však bylo MS Windows server only – do té doby běžel katederní web na BSD. Proto byl na jeho správu přijat kolega, specialista na MS Windows. Tento takzvaný “nový web katedry” používal doménu www.dce.felk.cvut.cz

S tímto webem byl ale neustálý oser. Navíc, kolega až jinak fajn kluk to vůbec neuměl s linuxem, takže ho pár let nahradil budoucí šéf SVTI, kterému se podařilo cca po třech letech té MS Win only verze katederního webu konečně zbavit. “Nový nový katederní web” pak měl primární doménu www.dce.cz. Dnes již všechny tyhle domény vedou na https://control.fel.cvut.cz.

U stroje support jsem s aktualizací a změnou domény (a IP adres) vyčkával až bude po obhajobách, protože se jeho prostřednictvím zveřejňují také bakalářské a diplomové práce studentů. Certifikát končil teď v březnu, takže jsme to spojili s přechodem na Lets' encrypt. Vše proběhlo minulý pátek a pochopitelně se to neobešlo bez problému.

Chyba 501

Google umožňuje změnu domény u naindexovaných URL, ale podmínkou k úspěšné realizaci této operace je funkční přesměrování. Než se do toho pustí, kontroluje, jestli se ze všech naindexovaných adres vrací permanent redirect (301). No a v tom byla potíž. Původní certifikát byl vyexpirovaný a nový byl vystaven pouze pro novou doménu, takže veškeré moje pokusy o přesměrování končily na SSL_ERROR_RX_RECORD_TOO_LONG

Příčina i řešení tohoto problému byla jako obvykle lapidární. Především jsme se s kolegou nepochopili. Nedošlo mi, když mi sděloval že “Lets' encrypt je pro supporta povolený” že tím měl na mysli že je to povolené i pro původní doménu. Ovšem poté co jsme si to vyjasnili, pokus o vygenerování certifikátu pro obě domény stejně selhal. Ukázalo se, že chyběl ještě CAA záznam.

Po vyřešení přesměrování začal Google konečně přesouvat naindexovaná URL, ovšem asi z 11 tisíc naindexovaných url adres jich asi 20 házelo error 501, což bylo divné. A skutečně, když jsem se pokusil některou z nich otevřít, skončil jsem s bílou plochou prohlížeče.

Bylo jasné, že za tím vězí nejspíš moje rozšíření AccessControl. To jsem však kompletně přepsal už předloni a pro verzi 3.0.2, až doposud nikdo žádný problém neoznámil. A jak to, že zrovna tyhle stránky? Kdyby nebyly dostupné, tak by je přeci google nenaindexoval.

Vrtalo mi to v hlavě, ovšem abych se na některou z těch stránek dostal a zjistil v čem je problém, bylo nutné ho rozšíření dočasně vypnout.

Ukázalo se, že ty problémové stránky natahovaly šablonu Smazat. Poté co jsem zrušil její obsah, a rozšíření znova zapnul byly stránky normálně dostupné. Chyba tedy byla v šabloně. Jenže její obsah nebyl na první pohled ničím výjimečný.

Používala se jen u stránek určených ke smazání, takže žádná tragédie. Ale přece jen. Proč skončil zacyklením také pokus o otevření stránky s šablonou? Byla to jedna z nejstarších šablon, zkopírovaná v září 2008 z Wikipedie. Tehdy se používala s MediaWiki verze 1.12, ale zrovna tahle šablona se používala jen krátce a to hlavně kolem roku 2014, kdy na údržbě wiki pracovala skupina studentů, takže v té době musela rozhodně fungovat. Souvisel ten problém s MediaWiki verze 1.35, nebo trval delší dobu? To už jsem zpětně ověřit nemohl.

Příčina

Ale byla tam ještě jedna problémová stránka – singlepage stránka s manuálem k DjVu. Zjistil jsem, že jedna z inkludovaných stránek používá komplexní šablonu, která na základě předaných parametrů natahuje dvě naprosto jednoduché šablony vytvořené v roce 2015. Ovšem ty už jsem si napsal sám. Se šablonou Smazat měly ale jedno společné – způsob, jakým byly dokumentovány.

Od roku 2015 používám dokumentaci vkládanou přes šablonu Dokumentace. Ovšem u inkriminovaných šablon byla dokumentace napsaná přímo do šablony a uzavřená do elementu noinclude. A pochopitelně tam byl i ukázkový příklad použití šablony. A to bylo ono!

Zjistil jsem, že MediaWiki má jednu nepříjemnou chybu, která je ve spojení s rozšířením AccessControl verze 3.x fatální. V roce 2019, během MediaWiki Hackatonu a asi 14 následujících dní jsem tohle rozšíření přepsal pro potřebu Semantic wiki tak, aby bylo možné používat access listy na bázi šablon. Vše jsem důkladně otestoval, takže mě nenapadlo že by mohl někde nastat problém. Jenže jak se ukázalo, problém nastane, pokud se pokud šablona inkluduje sebe sama.

Nevím sice od kdy, ale od určité doby MediaWiki při náhledu varuje před zasmyčkováním šablony, ale netušil jsem, že takový kód dovolí uložit. Dodatečně, metodou pokus omyl, jsem pak zjistil že ani mému rozšíření to nevadí. Až na jedinou výjimku a tou jsou právě šablony. Tím, že MediaWiki kód nejprve uloží a teprve pak interpretuje, nastane situace kdy vznikne nekonečná smyčka a další editace, která by umožnila chybu opravit, již není možná. Pokud o načtení takové stránky končí s následující chybou:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8388616 bytes) in /srv/main/wiki/includes/libs/stats/BufferingStatsdDataFactory.php on line 89

Nejprve jsem tedy kontaktoval Nicholase, na jehož přání jsem změny implementoval, abych ho na případný problém upozornil. A pak jsem začal pracovat na opravě. Bylo nezbytně nutné přidat hook, který by kód ověřil ještě před jeho uložením a v případě self-include jeho uložení zabránil.

V té době už jsem měl tenhle blogpost prakticky napsaný, ale počkal jsem s jeho uveřejněním na to až bude nová verze 4.0 v git repozitáři MediaWiki. Přijde mi, že jde o natolik zásadní změnu, že si to zasloužilo navýšení verze, byť oprava nebyla z hlediska kódu nijak veliká. I z bezpečnostního hlediska to nebyl nějak zvlášť zásadní problém. Obsah nedostupných stránek nebyl nijak kompromitován. Ale to, že pro vyřešení problému je nutné zabezpečení dočasně vypnout mi přišlo jako hodně velký bezpečnostní problém.

Už by k němu tedy nemělo dojít. Většina uživatelů na šablony stejně nehrabe. Problém by mohl nastat jedině v případě, že by chtěl někdo záměrně uškodit tím, že by takto zasmyčkoval nějakou hodně používanou šablonu. Ovšem soudný administrátor takové šablony zamyká. Ale hlavně si říkám, jak bych na ten problém vůbec přišel, kdyby mi ho neoznámil google, protože zasmyčkovanou šablonu vyhledávání ignoruje. Nevíte-li o ní, tak to vypadá jako kdyby neexistovala. Jenže ona existuje a jejím použití bezpečně zabetonuje stránku, do které byla vložena.

Na téma MediaWiki zde ode mne v minulosti vyšlo…

  1. (11.3.2015)MediaWiki - rozšíření Translate - kromě rozšíření Translate zde padla zmínka také o rozšíření AccessControl.
  2. (12. 3.2015) Čuňačíme v MediaWiki - příklad využití rozšíření ExternalRedirect.
  3. (14. 3.2015) Čuňačíme v MediaWiki dál - popisuje, jak v prostředí MediaWiki modifikovat textové zprávy k rozšíření ConfirmAccount.
  4. (15. 3.2015) Od čuňáren ke korektnímu obsahu MediaWiki - popisuje jak u multijazyčné wiki využívat možnosti rozšíření ParserFunctions
  5. ( 1. 4.2015) Čuňačíme v MediaWiki - opět - popisuje jak využít možností rozšíření ParserFunctions MyVariables k modifikaci nabízeného obsahu wiki na základě autentifikace.
  6. ( 2. 4.2015) MediaWiki - dynamicky generované stánky - názorná ukázka využití rozšíření DynamicPageList (third-party) pro dynamicky generované stránky v MediaWiki. Kromě toho se zde objevila zmínka or rozšíření Loops a Variables, které umožňují v šablonách využívat smyčky a uživatelsky definované proměnné.
  7. ( 3. 4.2015) Čuňačíme v MediaWiki - proč? seznámení s tím, jak a proč jsem se dostal k MediaWiki
  8. (17. 8.2018) Čuňačíme v MediaWiki - responzivní obrázky blogpost o tom, jak donutit MediaWiki aby responzivně pracovala s obrázky. Součástí je šablona mé provenience, která využívá kromě již uvedených rozšíření navíc rozšíření ImageSizeInfoFunctions
  9. ( 3. 4.2019) Čuňačíme v Mediawiki – RecentChanges bez javascriptu
  10. (10. 4.2019) MediaWiki.org - překlad dokumentace
  11. (20. 5.2019) Wikimedia Hackaton 2019
  12. (12. 7.2020) Čuňačíme v MediaWiki - výřezy z obrázků
  13. ( 7. 1.2021) Čuňačíme v MediaWiki - responzivní obsah II., o pomocné šabloně I-size
  14. (10. 2.2021) Čuňačíme v MediaWiki - šablony jako nástroj., o pomocných šablonách ToDo, transstat, hop a block
  15. (26. 2.2021) Čuňačíme v MediaWiki - povídání z jiného světa, o šabloně BIO
       

Hodnocení: 86 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.