Pliki .torrent i magnet linki w Firefox'ie

Spis treści

Przeglądarki mają to do siebie, że każda z nich korzysta z własnych ustawień dotyczących typów MIME (mime type). Do tego dochodzi jeszcze fakt, że często te ustawienia są inne od tych, które mamy w systemie. Może to nie jest jakiś wielki problem, bo w opcjach Firefox'a możemy bez trudu szereg rzeczy poprzestawiać. Natomiast jest jeden problem, którego w prosty sposób się obejść nie da i trzeba się trochę na nim pochylić. Chodzi o dodawanie nowych typów MIME, które nie są pokazane na liście obsługiwanych typów w Preferences -> Applications. Wiąże się z tym tak skonfigurowanie przeglądarki, by automatycznie otworzyła ona jakiś program ilekroć dany typ pliku będzie pobierany.

Domyślne typy MIME w Firefox'ie

Co się stanie, gdy odwiedzimy jakiś link, a ten będzie zawierał plik o określonym rozszerzeniu? Jako, że Firefox ma zdefiniowanych szereg typów MIME, to zostaną uruchomione określone w nich aplikacje, które można bez problemu sobie dostosować. Co się jednak stanie, gdy taki plik będzie zawierał rozszerzenie, które nie występuje na liście typów MIME w Firefox'ie? Zostanie wyrzucone okienko z informacją na temat tego gdzie zapisać dany plik. W sporej części przypadków, ten mechanizm może chronić przed wirusami i innym tego typu robactwem, no bo jakby nie patrzeć, np. plik .pdf nie zostanie automatycznie odpalony. Są też przypadki, gdzie taka polityka bardziej wnerwia człowieka niż go zabezpiecza.

Poniżej zostaną przedstawione dwa przykłady. Jeden dla linków MAGNET, a drugi dla plików .torrent . Domyślnie, Firefox nie ma pojęcia o MAGNET linkach, no i nie wie w czym otworzyć plik .torrent . Postaramy się go zatem tego nauczyć.

Plik mimeTypes.rdf

Dokładnie nie wiem jak Firefox buduje swoją bazę danych MIME, za to wiem, że jest ona trzymana w pliku mimeTypes.rdf ulokowanym w katalogu ~/.mozilla/firefox/profil.default/ . To jest zwykły plik tekstowy i można go podejrzeć w każdym edytorze tekstu. Wiem też, że Firefox tworzy ten plik, gdy ten zostanie w jakiś sposób skasowany czy uszkodzony. Standardowo jest w nim niewiele wpisów ale ten fakt zmienia się z czasem jak konfigurujemy typy MIME w opcjach Firefox'a. Zatem wszelkie niestandardowe ustawienia, tj. zmiany, które wprowadziliśmy, są zapisywane w tym pliku.

Plik mimeTypes.rdf ma kilka kontenerów, tj. bloków ujętych w znaczniki XML. Nas będą interesować te poniższe:

<RDF:RDF ... ...>
...
      <RDF:Seq RDF:about="urn:mimetypes:root">
      ...#1
      </RDF:Seq>
...
      <RDF:Seq RDF:about="urn:schemes:root">
      ...#2
      </RDF:Seq>
...#3
</RDF:RDF>

W miejsca oznaczone numerkami #1 , #2 i #3 musimy wstawić odpowiedni kod.

Firefox i pliki .torrent

Na sam początek zajmijmy się implementacją plików .torrent . W przypadków plików o konkretnym rozszerzeniu, trzeba ustalić pierw jak dany plik jest widziany w systemie, tj. jaki ma przypisany typ MIME. Poniżej jest fotka obrazująca właściwości pliku .torrent w menadżerze plików SpaceFM.

spacefm-mimetypes-rdf

Widzimy, że plik .torrent ma typ MIME application/x-bittorrent , zatem w mimeTypes.rdf w miejscu #1 na powyższym schemacie dodajemy ten poniższy kawałek kodu:

<RDF:li RDF:resource="urn:mimetype:application/x-bittorrent"/>

Za to tam gdzie #3 , wrzucamy ten poniższy:

<RDF:Description RDF:about="urn:mimetype:handler:application/x-bittorrent"
      NC:useSystemDefault="true"
      NC:alwaysAsk="false">
      <NC:possibleApplication RDF:resource="urn:handler:local:/usr/bin/qbittorrent"/>
      <NC:externalApplication RDF:resource="urn:mimetype:externalApplication:application/x-bittorrent"/>
</RDF:Description>

<RDF:Description RDF:about="urn:mimetype:externalApplication:application/x-bittorrent"
      NC:prettyName="qbittorrent"
      NC:path="/usr/bin/qbittorrent" />

<RDF:Description RDF:about="urn:handler:local:/usr/bin/qbittorrent"
      NC:prettyName="qbittorrent"
      NC:path="/usr/bin/qbittorrent" />

<RDF:Description RDF:about="urn:mimetype:application/x-bittorrent"
      NC:fileExtensions="torrent"
      NC:description="BitTorrent seed file"
      NC:value="application/x-bittorrent"
      NC:editable="true">
      <NC:handlerProp RDF:resource="urn:mimetype:handler:application/x-bittorrent"/>
</RDF:Description>

Firefox i MAGNET linki

W przypadku MAGNET linków, sprawa ma się nieco inaczej, bo tutaj nie mamy do czynienia z żadnym plikiem, a jedynie z ciągiem znaków zaczynającym się od magnet: , po którym następuje szereg parametrów. Nie ma zatem jak ustalić tutaj typu MIME dla tego linku. Niemniej jednak, obsługę MAGNET linków w dalszym ciągu jesteśmy w stanie zaimplementować w Firefox'ie.

W tym przypadku, musimy dodać do pliku mimeTypes.rdf ten poniższy kawałek w miejscu #2 :

<RDF:li RDF:resource="urn:scheme:magnet"/>

Oraz ten w miejsce #3 :

<RDF:Description RDF:about="urn:scheme:handler:magnet"
      NC:useSystemDefault="true"
      NC:alwaysAsk="false" />

<RDF:Description RDF:about="urn:scheme:magnet"
      NC:value="magnet">
      <NC:handlerProp RDF:resource="urn:scheme:handler:magnet"/>
</RDF:Description>

Inne typy MIME

Za pośrednictwem pliku mimeTypes.rdf jesteśmy w stanie określić dowolną konfigurację dla typów MIME. Edycja tego pliku jest nieco ryzykowna i dobrze jest się zaznajomić z jego składnią. Tak czy inaczej, po dokonaniu zmian, musimy jeszcze ponownie uruchomić przeglądarkę. Jeśli wszystko dobrze zrobiliśmy, powinniśmy zobaczyć dodatkowe pozycje w menu Firefox'a:

firefox-mimetypes-rdf

Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.