Instant Messenger mit OTR

  • Wie gut findest du die Idee? 0

    1. Schon ganz nett... (0) 0%
    2. Blöd, brauch ich nicht. (0) 0%
    3. Sehr gut, will ich auch haben! (0) 0%

    Hi,


    ein Instantmessenger mit OTR (Off the record messaging) wäre sehr brauchbar.
    Man könnte ja libpurpble mit dem Android NDK zum laufen bringen, weiß jedoch nicht wie viel Aufwand das ist.


    Gruß,
    loeppel

  • Code
    loeppel@hermes:~$ apt-cache show libpurple-dev
    
    
    Depends: libpurple0 (>= 1:2.5.5-1ubuntu8), pkg-config, libglib2.0-dev, libdbus-glib-1-dev


    Also ich glaube D-Bus lässt sich auch ausschalten. Mal die configure switches anschauen. Ich weiß bisher jedoch auch nicht wie man von dem "managed" Code aufrufe in den nativen macht. Nutzt man sowas wie JNI (das ja recht umständlich und alt ist ;-)) oder gibts dafür eine spezielle Technik?


    Gruß,
    loeppel

  • Ah gute idee mal apt zu fragen :p jo dbus müsste definitiv aus sein, aber das sollte machbar sein. Problem ist ehr dass ich bei libpurple0 noch nen bissl was gefunden habe, unter anderem perl, libzephyr, libxml das klingt alles nicht so super, im Endeffekt müsste man sicher nen ganzes Stückchen neu schreiben von der lib, also nicht mal ebend in compiler pressen und ab gehts die luzi :(

  • Ich habe OTR noch nie benutzt :blush: ... Wie aktivier ich das in pidgin? Wie finde ich heraus ober der client gegenüber das auch kann(außer fragen :P)

  • Zitat von zachso


    Ah gute idee mal apt zu fragen :p jo dbus müsste definitiv aus sein, aber das sollte machbar sein. Problem ist ehr dass ich bei libpurple0 noch nen bissl was gefunden habe, unter anderem perl, libzephyr, libxml das klingt alles nicht so super, im Endeffekt müsste man sicher nen ganzes Stückchen neu schreiben von der lib, also nicht mal ebend in compiler pressen und ab gehts die luzi :(


    Hmm stimmt, hab ich auch grad gesehen. Naja was davon könnte denn laufen? Gibt irgendwo so ein tool was einen Abhängigkeitsbaum zeichnet. Da könnte man mal ansetzten und versuchen das ganze zu analysieren.


    Gruß,
    loeppel

  • ich kenne kein solches tool, geben tuts das aber mit sicherheit.
    das zweite problem wäre dann ja folgendes: man müsste die libpurple ja portiern auf anddroid, also erstmal anpassen, vllt. einige andere bibliothesfunktionen eingliedern usw... das ding ist halt dass dabei ein fork erzeugt wird da wir hier ganz andere Bedingungen haben, und dann müsste man sicha uch noch einigen ob man
    a) C nimmt und so gut wie alle lib-funktionen neu schreibt oder
    b) Gleich alles in Java und dafür dann auch alles neu


    der einzig praktikable wäre wahrscheinlich c, also a+b mixen und einen gesunden mittelweg zu finden.
    die einzige OS-Portierung die mir bekannt ist die mit C läuft ist ScummVM, und das ist ja nunmal schlimmer als Debian, das läuft ja wirklich überall, sogar auf meiner Katze, da es einfach so lowlevel programmiert worden ist.
    An sich denke ich es wäre eine machbare Aufgabe ein Pidgin aufs Android zu bekommen (oder wenigstens erstmal eine libpurple), aber auf jeden falls nicht ganz einfach und es müsste jemand machen der sowohl ahnung von C/C++ als auch von Java (insbesondere Android) hat.


    vielleicht sehe ich aber auch nur zu viele schwierigkeiten und eigentlich ists kein Problem ;) was man wirklich mal bräuchte wäre ne info welche libs und abhängigkeiten wozu gut sind, und was die machen, so nach dem motto: ohne die lib haben wir das und das nicht mehr, z.B. ist es vollkommen sinnlos die libnotify mitzunehmen, die bräuchte man schlichtweg nicht.


    eine andere idee die ich bis jetzt hatte wäre auch: man nimmt einen jabber-client, und einen eigenen jabber-server, kommunikation ist verschlüsselt (klar!). der jabber-server wiederum kommuniziert dann über jabber, msn, icq etc. mit der außenwelt. damit hat man zwar einen server mehr zwischendrinne aber mehrer vorteile:
    - jabberserver gibts zuhauf, auch welche die verschlüsselung können, ICQ sowieso
    - nur ein protokoll auf clientseite
    - jabber ist schon implementiert
    - bei einem verbindungsabbruch kann man es so einrichten dass der server erstmal für 5 minuten nur den status ändert, z.B. auf "verbindung abgebrochen" und dann nach 5 minuten erst offline zeigt, hätte den vorteil dass man dann wenn man reconnected gleich das gespräch fortsetzen kann


    nachteil ist ganz klar der jabber-server, der kann ausfallen, kostet zusätzliches geld und macht ärger, also nich so prickelnd

  • Zitat von zachso


    vielleicht sehe ich aber auch nur zu viele schwierigkeiten


    In der Tat. Die libpurble zu portieren ist ein Wahnsinn - libpurple *ist* pidgin. Pidgin selbst ist nur noch ein GTK-Oberfläche, die libpurple verwendet.


    Zitat


    was man wirklich mal bräuchte wäre ne info welche libs und abhängigkeiten wozu gut sind


    Das einzige, das du für OTR-Kommunikation brauchst ist die libotr. Die zu portieren dürfte um Welten einfacher sein als das komplette Pidgin in Form von libpurple. Die OTR-Kommunikation kannst du dann ohne Probleme in jeden OSS Android-IM-Client deiner Wahl einbauen.

  • Zitat von Temar

    In der Tat. Die libpurble zu portieren ist ein Wahnsinn - libpurple *ist* pidgin. Pidgin selbst ist nur noch ein GTK-Oberfläche, die libpurple verwendet.



    Das einzige, das du für OTR-Kommunikation brauchst ist die libotr. Die zu portieren dürfte um Welten einfacher sein als das komplette Pidgin in Form von libpurple. Die OTR-Kommunikation kannst du dann ohne Probleme in jeden OSS Android-IM-Client deiner Wahl einbauen.


    Hmm das stimmt natürlich. Ich dachte nur mit libpurple würde man eben viele Netze abdecken. Was für Muli-Protokoll Messenger die unter einer OSS Lizenz stehen gibts denn für Android.


    Java libs müssten sich ja eigentlich auch nutzen lassen oder? Leider gibt es keine OTR implementierung in Java, dazu wurde mal ein Projekt gestartet, das hat jedoch nie code veröffentlicht. Die libotr ist wohl auch nicht ganz trivial.


    Wie darf ich mir denn das NDK generell vorstellen? Ich mein klar der toolchain von libpurple ist schon recht heftig. Aber die glibc soll es ja geben, also sollten ja einfache, auf glibc beruhene libs laufen oder nicht?


    UPDATE


    Recherche auf Freshmeat hat ergeben das es zumindest einen vielversprechenden Java Client gibt.
    Ist eine Servlet Anwendung und nennt sich: Yafumato
    Webseite: http://sourceforge.net/projects/yafumato/ Sehr aktiv...
    Demo: https://randomtask.org/yafumato/Welcome.do
    Dort kann man sich die Verwendung der libs (für die Kommunikation) und sonstige generelle Client aspekte "abschauen" ;)


    Setzt jedoch das JDK 1.5 vorraus, ich weiß leider nicht wie kompatibel die Andorid Klassen sind... - scheint wohl ein "mono" status zu sein, also sollte gehen, muss aber nicht ;)
    Falls die Sachen laufen wäre es wirklich nicht soo schwer... - klar libotr anzubinden wäre dann nochmals eine Aufgabe.
    Die libotr benötigt ausser der libc nur libgpg-error und libgcrypt.

  • Zitat von loeppel


    Hmm das stimmt natürlich. Ich dachte nur mit libpurple würde man eben viele Netze abdecken. Was für Muli-Protokoll Messenger die unter einer OSS Lizenz stehen gibts denn für Android.


    Die libpurple hat aber einen Rattenschwanz an Abhängigkeiten, die du alle portieren müsstest. Die bessere Variante ist es einen OSS Java-IM-Client anzupassen und dann per JNI die libotr verwenden.


    Zitat


    Java libs müssten sich ja eigentlich auch nutzen lassen oder? Leider gibt es keine OTR implementierung in Java, dazu wurde mal ein Projekt gestartet, das hat jedoch nie code veröffentlicht. Die libotr ist wohl auch nicht ganz trivial.


    Sie ist mathematisch nicht ganz trivial, das stimmt. Von der Portierung her sollte es aber wenig Probleme geben.


    Zitat


    Aber die glibc soll es ja geben, also sollten ja einfache, auf glibc beruhene libs laufen oder nicht?


    Nein, genau das ist das Hauptproblem. Du hast keine glibc zur Verfügung sondern nur eine abgespeckte micro-libc (bionic).

  • Zitat


    Nein, genau das ist das Hauptproblem. Du hast keine glibc zur Verfügung sondern nur eine abgespeckte micro-libc (bionic).


    Ah ok daher weht der Wind ;) - hatte auf golem mal was von glibc gelesen.


    Ja das meinte ich ja auch, wie ist es mit JNI ist das Verfügbar? Gibt ja noch weitere methoden um auf native Libs zuzugreifen - was würde sich da eigenen.


    Ein Java IM gibts irgendwie kaum, also zumindest aktive mit Multi-Protokoll. Wie gesagt die WebApp die ich gepostet habe taugt ganz gut und nutzt ein paar upstream libs für die Protokolle, da könnte man sich einiges "abschauen".


    Naja ich werd mich erstmal mit der Entwicklung der Android spezifischen Methoden im SDK vertraut machen.

  • Zitat von loeppel


    Ja das meinte ich ja auch, wie ist es mit JNI ist das Verfügbar? Gibt ja noch weitere methoden um auf native Libs zuzugreifen - was würde sich da eigenen.


    JNI geht und sollte sich eignen. Willst ja eh nur eine handvoll Funktionen von libotr aufrufen.


    Zitat


    Ein Java IM gibts irgendwie kaum, also zumindest aktive mit Multi-Protokoll. Wie gesagt die WebApp die ich gepostet habe taugt ganz gut und nutzt ein paar upstream libs für die Protokolle, da könnte man sich einiges "abschauen".


    Naja, es gibt einige Java-Libraries für verschiedene Protokolle. Die sollte man eigentlich relativ einfach auf Android portieren können:


    Jabber: http://www.igniterealtime.org/projects/smack/
    MSN: http://jml.blathersource.org/
    Yahoo: http://jymsg9.sourceforge.net/


    Mehr konnte ich auf Anhieb nicht finden. Gibt aber bestimmt auch eine ICQ Java-Implementierung.


    Ich würde einfach die Android GoogleTalk App forken, dann haste Jabber abgedeckt und schonmal was lauffähiges mit dem du in aller Ruhe die libotr testen kannst. Sobald das dann läuft kann man sich der Unterstützung anderer Protokolle widmen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!