qrios

IT ist kurios!

Bitlove-Proxy läuft

10 Kommentare

Mit etwas Verspätung wg. anderer Projekte ist nun doch der Bitlove-Proxy fertig. Unter “Bitlove-Proxy for the rest of us” ist ausführlich erklärt worum es geht und was der Proxy tun soll. Im Kern geht es darum, die ganze Arbeit mit den Podcast-Torrents und vor allem die Terabyte Mediendaten auf einen echten Server auszulagern und im Hintergrund laufen zu lassen.

Das minimale Interface für den Proxy bietet vor allem das Abspielen on demand. Bei mp4 auch das Springen zu einer Position, die noch nicht geladen ist.

Der Service besteht aus vier Teilen: Apache, node.js-Script, XSL-Template und einem Torrent-Daemon. Der Apache ist notwendig wg. der Auslieferung von Chunks aus MP4. Allerdings ist er nur für das Medienverzeichnis zuständig. Alle anderen Requests leitet er als Proxy an den node.js-Server durch. Das node.js-Script kümmert sich um die Requests des Browsers und verwaltet die torrent- und Medien-Files. Das XSLT verarbeitet die Feed-Daten und baut die HTML-Seite zusammen. Derzeit geschieht letzteres noch im Browser.

In einem XML stehen die Podcasts mit den jeweiligen Feeds drin. Wird die jeweilige Seite jetzt aufgerufen, wird der Feed geparsed und der lokale Server abgefragt, ob die Mediendatei vorliegt. Wenn nicht, wird geschaut, ob eine entsprechende Torrent-Datei gespeichert ist. Falls auch letzteres nicht der Fall ist, wird die Datei von Bitlove.org geholt und der lokale Torrent-Client angewiesen, den Torrent-Download zu starten.

Da der Server mit mehreren hundert MBit angebunden ist, läuft der Download schnell ab. Naja, schnell ist untertrieben: im Falle der letzten mobilemacs-Folge von Gestern waren es laut Logfile von transmission 32 Sekunden. Immerhin handelt es sich um knapp 100MB.

Jun 22 15:44:27 transmission-daemon[23676]: Saved ".config/transmission-daemon/torrents/mm090-speerspitze-der-digitalen-revolution-tm.m4a.898d7344f4a76b76.torrent" (bencode.c:1683)
Jun 22 15:44:37 transmission-daemon[23676]: mm090-speerspitze-der-digitalen-revolution-tm.m4a Starting DHT announce (firewalled, 120 nodes) (tr-dht.c:671)
Jun 22 15:44:59 transmission-daemon[23676]: mm090-speerspitze-der-digitalen-revolution-tm.m4a State changed from "Incomplete" to "Complete" (torrent.c:1869)

Die Quellen kann man hier runterladen. Allerdings empfehle ich das nur wirklich erfahrenen Leuten (Apache-Konfiguration, node.js-Module, etc.), da es keine Dokumentation gibt und ich kaum Zeit für Support habe.


Written by qrios

June 22nd, 2012 at 4:34 pm

Posted in code,web

10 Responses to 'Bitlove-Proxy läuft'

Subscribe to comments with RSS or TrackBack to 'Bitlove-Proxy läuft'.

  1. Danke Dir! Finde das Projekt interessant. Habe in etwa das gleiche Problem.

    Trotz einiger Apache- und node-Kompetenz ist mir nicht ganz klar, warum Du in der xslt.js Saxon über Java aufrufst? Warum nicht das node-Modul node_xslt (https://github.com/bahblah/node_xslt)? Offensichtlich kennst Du das ja; hast ja da kommentiert. Und laut xslt/index.xslt verwendest Du ja nicht mal XSLT 2.0. Also: warum?

    gollum

    22 Jun 12 at 5:00 pm

  2. @gollum: Hm, kommt davon, wenn man ohne vernünftige IDE rumspielt. Die xslt.js wird momentan gar nicht verwendet. Und die Umstellung auf node_xslt steht noch an. Momentan läuft das gesamte XSLT im Browser.

    qrios

    22 Jun 12 at 5:22 pm

  3. mom

    28 Jun 12 at 11:52 am

  4. @mom: Was machst Du denn mit dem Link? Alles in Ordnung:

    bash-3.2$ curl -I “http://qrios.de/wp-content/uploads/bitloveproxy-0.1.2.tgz”
    HTTP/1.1 200 OK
    Date: Thu, 28 Jun 2012 09:55:32 GMT
    Server: Apache/2.2.17 (Linux/SUSE)
    Last-Modified: Thu, 28 Jun 2012 09:54:01 GMT
    ETag: “195667e-2a706-4c3854fa32040”
    Accept-Ranges: bytes
    Content-Length: 173830
    Content-Type: application/x-gzip

    gollum

    28 Jun 12 at 11:55 am

  5. Hallo quiros,

    ich habe mir das Paket runtergeladen und auch zum Laufen gebracht. Offensichtlich funktioniert es aber mit FF nicht. Hast Du es es damit getestet?

    Der Browser lädt ja für das index.xml die xslt/index.xslt und transformiert daraus HTML. In der index.xslt wird eine xslt/parameter.xslt included. Das node.js baut die Zusammen an Hand der GET-Parameter des Referers. Also der index.xml. Wählt man z.B. id=raumzeit steht dies dann in der generierten parameter.xslt. Eigentlich eine sehr coole Idee.

    Nur übermittelt der Firefox den Referer für den Aufruf nicht mit. Dadurch geht das zumindest in dem Browser nicht. In Chrome und WebKit läuft es sauber.

    KvL

    28 Jun 12 at 12:26 pm

  6. Ja, FF übermittelt den Referrer nicht in der Art, wie es andere Browser machen. Allerdings weiss ich gar nicht, ob das ein Bug ist oder ob das überhaupt irgendwo definiert ist. Denn aus Sicht des XSLT-Prozessors ist ja eigentlich tatsächlich das includierende Template der Referrer. Vielleicht macht es also auch der FF einzig richtig.

    Egal. Das XSLT sollte so wie so auf dem Server und nicht im Browser laufen. Dann wären die Parameter ja bekannt. Müsste mal jemand ändern. …

    qrios

    5 Jul 12 at 11:18 am

  7. […] Der Bitlove-Proxy läuft inzwischen und steht zur freien Verfügung unter: “Bitlove-Proxy läuft” […]

  8. Hey,

    Klasse Projekt! Möchtest du das nicht auf Github stellen, damit vielleicht andere daran weiter entwickeln können, wenn du selbst nicht so viel Zeit hast wie du sagst? Dann könnte man auch eine Dokumentation machen oder so.

    Wir haben zu Hause mittlerweile auch den Fall, dass so ein Proxy super praktisch wäre. Hier laden 3 Leute ständig neue Podcasts meist dann auch 3x herunter und das dank Apple Geräten ohne torrent. Wenn man da die Feeds auf einen lokalen Proxy stellen könnte würde das die Bandbreite richtig schonen.

    i42n

    23 Oct 12 at 12:08 pm

  9. Hach, würde mich ja gerne weiter darum kümmern. Leider laufen grade zu viele Projekte gleichzeitig. Gerne kann es jedermann übernehmen. Ich fürchte allerdings, dass die Architektur (Browser-XSLT, node.js) nicht geeignet ist, viele Supporter zu finden.

    qrios

    24 Oct 12 at 2:58 am

  10. […] möchte, technisch Ahnung hat und nen eigenen Server zur Verfügung, der kann sich mal die Anleitung zu einem Bitlove-Proxy durchlesen. Und dann melde dich, wenn du das verstehst und umsetzen […]

Leave a Reply