Portál AbcLinuxu, 30. dubna 2025 21:56
RFC 4709 z října minulého roku definuje způsob, jak inzerovat na webu WebDAV svazky. Namísto obskurdního micro$shitího použití <a folders="..."> (viz tuto m$ dokumentaci) představuje toto RFC čistou a jednoduchou cestu, jak toho dosáhnout.
Problém připojování WebDAV svazků totiž spočívá v tom, že jedno URL může označovat jak obyčejnou webovou stránku, tak WebDAV svazek. Micro$hit to řeší nestadartním elementem v HTML. Nové RFC místo toho vkládá mezistupeň, kdy z HTML dokumentu je dán odkaz na kratičký soubor, který označuje WebDAV svazek (včetně možnosti nadefinovat, co je „kořen“ svazku a v jakém jeho podadresáři jej má prohlížč otevřít). Tento soubor (včetně HTTP hlaviček) může vypadat nějak takto (vzato z RFC):
HTTP/1.1 200 OK Content-Type: application/davmount+xml Content-Length: xxx Cache-Control: private <dm:mount xmlns:dm="http://purl.org/NET/webdav/mount"> <dm:url>http://www.example.com/user42/</dm:url> <dm:open>inbox/</dm:open> </dm:mount>
Implementovat toto pomocí např. php skriptu je otázka chvilky. Jediný problém je, že si zatím prohlížeče neumí s tímto souborem poradit. Moje prozatimní řešení je (horkou jehlou ušitý) skriptík, který se použije jako wrapper pro content-type application/davmount+xml a spustí odpovídajícím způsobem nautilus:
#!/bin/sh F=$1 URL=`grep "<dm:url" $F | sed 's/^.*< *dm:url *>\(.*\)< *\/ *dm:url *>.*$/\1/'` OPEN=`grep "<dm:open" $F | sed 's/^.*< *dm:open *>\(.*\)< *\/ *dm:open *>.*$/\1/'` USER=`grep "<dm:username" $F | sed 's/^.*< *dm:username *>\(.*\)< *\/ *dm:username *>.*$/\1/'` U=`echo "$URL" |sed "s/:\/\//:\/\/$USER@/"`$OPEN U=`echo "$U" |sed "s/^http/dav/" ` nautilus "$U"
Lepší by si samozřejmě byl korektní wrapper, který správně rozpársuje soubor jako XML a spustí definovatelný program. Ale na to jsem byl moc línej :-P ...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.