Provide english readme file and update build instructions

This commit is contained in:
mjentsch 2014-09-20 18:13:37 +02:00
parent 55949d8d92
commit 90bed1ef61

271
README.md
View file

@ -1,252 +1,85 @@
telegram-purple
===============
Telegram-purple is a Libpurple plugin that adds support for the Telegram messenger. Its still in an early (pre-alpha) development stage, but already provides basic chat functionality and group chats.
# Installieren
This plugin is based on the great [Telegram-cli](http://github.com/vysheng/tg), a full-featured terminal-based client for Telegram created by [Vysheng](http://github.com/vysheng).
1. Sicherstellen dass Pidgin installiert ist.
2. Dieses Git-Repository klonen.
# Features
## Already Implemented
- Group chats
- Multiple accounts at once
- Support for libpurple proxy settings
## Planned
We are trying to create a full-featured protocol plugin for Telegram, that can make use of all major features of
the Messenger. The following features are currently under active development (or planned) and will probably be
added in the future:
- encrypted chats
- picture, audio and video messages
- file transfers
- geo-locations
- emojis
# Installation Instructions
Unfortunately there are currently no packages, so you need to compile it yourself:
1. Get this repository either from Bitbucket or from the Github mirror.
git clone https://bitbucket.org/telegrampurple/telegram-purple
3. Im Ordner von **telegram-purple** make ausführen:
2. Fetch all needed dependencies
cd telgram-purple
./configure --disable-liblua --disable-libconfig
make install
This plugin depends on a working libpurple client and the following packages:
- glib-2.0
- libcrypto
- libpurple
- libzlib
Das Protokoll Telegram sollte dann beim nächsten Start in der Accountverwaltung von Pidgin automatisch auftauchen.
On Fedora you can install all dependencies with:
# Testen und Debuggen
sudo yum install gcc openssl-devel glib2-devel libpurple-devel
Um **telegram-purple** während der Entwicklung zu testen, ist es sinnvoll vorher die Berechtigungen des Plugin-Ordners zu ändern, damit beim Kopieren nicht jedes Mal Root-Rechte benötigt werden:
And on Debian/Ubuntu you can use:
sudo chmod 777 -R `pkg-config --variable=plugindir purple`
sudo chmod 777 -R `pkg-config --variable=datarootdir purple`pixmaps/pidgin/protocol
sudo apt-get install libssl-dev libglib2.0-dev libpurple-dev
## Testen
3. Compile and install
./configure
make
sudo make install
Zum Compilen, Testen und Ausgeben aller Debugnachrichten folgenden Befehl ausführen:
# Usage
make run
After succesfully completing all steps mentioned in the installation instructions, you should restart Pidgin to ensure that the plugin is loaded. When everything went well, Telegram should show up in the account manager:
![Create a new Telegram account](lauschgift.org/telegram-purple/res/install-1.png)
Falls die Lognachrichten nach kurzer Zeit nicht mehr angezeigt werden, und die Meldung "Wird geschlossen, da bereits ein andere libpurple-Client läuft" erscheint, die laufende Instanz von Pidgin mit folgendem Befehl beenden:
The username is your current phone number, including your full country prefix instead of a leading '0'. For Germany, this would be '+49' for example. Telegram will verify your phone number by sending you a verification code via sms. You will be prompted for this code, once that happens.
![Provide a phone number](lauschgift.org/telegram-purple/res/install-2.png)
Now you should be able to see all your contacts and chats in your buddy list and send/receive messages.
sudo killall pidgin
# A Word of Warning
This is a very early (pre-alpha) version of the plugin, mainly used for development and testing and NOT for productive use.
Even though it already provides basic features, you should stil expect bugs and crashes when running it.
### Filtern der Lognachrichten
Wenn Pidgin einfach mit **make run** ausgeführt wird, werden alle Debugnachrichten des gesamten Programms ausgegegeben. Libpurple verwendet interne Loggingfunktionen die den Lognachrichten automatisch einen Prefix hinzufügen, z.B. "plugins:" für Nachrichten des Pluginsloaders und "prpl-telegram:" für Nachrichten dieses Plugins.
Wenn man nur Ausgaben des Plugin-Loaders und von telegram-purple haben möchte kann man unnötige Nachrichten mit **grep** herausfiltern.
make run | grep -i 'prpl-telegram:\|plugins:'
# Deinstallieren
Mit folgendem Befehl werden alle installierten Dateien wieder aus den Plugin-Ordnern gelöscht:
sudo make uninstall
# Coding-Guidelines
## Coding Style
Wir wollen wenn möglichen den typischen Linux-C-Coding-Style verwenden. Bei Funktionen werden die Klammern auf der nächsten Zeile geschrieben, bei allem anderen auf der gleichen Zeile. Bei Funktionsargumenten zwischen Komma und dem nächsten Argument und nach Bedingungen von if/else-Blöcken immer ein Leerzeichen lassen.
unsigned int some_function(int a, int b)
{
if (true) {
// ...
} else {
// ...
}
}
## Logging
Wenn irgendeine Ausgabe gemacht wird, sollte das ausschließlich über die Libpurple Debugging-Funktionen passieren (Siehe die Anleitung zum Debuggen im [Libpurple-Howto](https://developer.pidgin.im/wiki/CHowTo/DebugAPIHowTo "Libpurple-HowTo")).
#include "debug.h"
#define PLUGIN_ID "prpl-telegram"
// ...
purple_debug_info(PLUGIN_ID, "Debugnachricht");
## GIT
git pull -> Stand aktualisieren
git add -A -> Files hinzufügen
git push -> Stand hochladen
git commit -> Commiten
## Troubleshooting
Zum löschen der angelegten Accounts
rm /home/USER/.purple/accounts.xml
Die lib muss eventuell nach /usr/lib/purple-2/telegram-purple.so kopiert werden
=======
telegram-purple
===============
# Installieren
1. Sicherstellen dass Pidgin installiert ist.
2. Dieses Git-Repository klonen.
git clone https://bitbucket.org/telegrampurple/telegram-purple
3. Im Ordner von **telegram-purple** make ausführen:
cd telgram-purple
./configure --disable-liblua --disable-libconfig
make install
Das Protokoll Telegram sollte dann beim nächsten Start in der Accountverwaltung von Pidgin automatisch auftauchen.
# Testen und Debuggen
Um **telegram-purple** während der Entwicklung zu testen, ist es sinnvoll vorher die Berechtigungen des Plugin-Ordners zu ändern, damit beim Kopieren nicht jedes Mal Root-Rechte benötigt werden:
sudo chmod 777 -R `pkg-config --variable=plugindir purple`
sudo chmod 777 -R `pkg-config --variable=datarootdir purple`pixmaps/pidgin/protocol
## Testen
Zum Compilen, Testen und Ausgeben aller Debugnachrichten folgenden Befehl ausführen:
make run
Falls die Lognachrichten nach kurzer Zeit nicht mehr angezeigt werden, und die Meldung "Wird geschlossen, da bereits ein andere libpurple-Client läuft" erscheint, die laufende Instanz von Pidgin mit folgendem Befehl beenden:
sudo killall pidgin
# Deinstallieren
Mit folgendem Befehl werden alle installierten Dateien wieder aus den Plugin-Ordnern gelöscht:
sudo make uninstall
# Coding-Guidelines
## Speicherverwaltung
Glib verwendet eigene Datentypen und eigene Funktionen zu Speicherverwaltung. Wenn diese mit den regulären Funktionen von c vermischt werden, z.B. malloc und g\_free auf dem selben Pointer, kann die Anwendung abstürzen.
char *str = malloc(10);
g_free(str); // APPLICATION ERROR
Beim Purple-Plugin müssen wir die Typen und Verwaltungsfunktionen von glib verwenden, deshalb werden im Unterordner ./purple-plugin ausschließlich g\_alloc g\_new und g\_free zum allozieren und löschen von Objekten verwendet. Siehe ([https://developer.gnome.org/glib/2.30/glib-Memory-Allocation.html])
In Telegram-Cli werden keine glib-Funktionen verwendet, deshalb müssen wie hier ausschließlich die regulären C-Funktionen malloc und free verwenden.
### Aufrufe von Telegram-CLI
Wir rufen Telegram-CLI vom Purple-Plugin aus auf. Um die verschiedenen Sorten der Speicherverwaltung nicht zu vermischen, muss Telegram-CLI seinen gesamten Speicher selbst verwalten. Wenn strings oder Structs vom Plugin aus an die Bibliothek übergeben werden müssen die Objekte deshalb kopiert werden.
void *telegram_do_something(Telegram tg, const char* string)
{
char *dup = malloc(strlen(login) * sizeof(char));
dup = memcpy(dup, string);
global->login = dup;
}
Jede Komponente der Anwendung muss deshalb den Speicher den sie alloziert auch selbst verwalten, da andere Komponenten diese niemals löschen werden. Wenn der String im Plugin mit einer allozierenden Funktion wie g\_strdup erstellt wurde, muss diese deshalb auch wieder mit g\_free gelöscht werden, da sonst ein Memory Leak entsteht.
gchar *str = g_strdup(string);
// ...
telegram_do_something(telegram, str);
// ...
g\_gree(str);
## Coding Style
Wir wollen wenn möglichen den typischen Linux-C-Coding-Style verwenden. Bei Funktionen werden die Klammern auf der nächsten Zeile geschrieben, bei allem anderen auf der gleichen Zeile. Bei Funktionsargumenten zwischen Komma und dem nächsten Argument und nach Bedingungen von if/else-Blöcken immer ein Leerzeichen lassen.
unsigned int some_function(int a, int b)
{
if (true) {
// ...
} else {
// ...
}
}
## Logging
Wenn irgendeine Ausgabe gemacht wird, sollte das ausschließlich über die Libpurple Debugging-Funktionen passieren (Siehe die Anleitung zum Debuggen im [Libpurple-Howto](https://developer.pidgin.im/wiki/CHowTo/DebugAPIHowTo "Libpurple-HowTo")).
#include "debug.h"
#define PLUGIN_ID "prpl-telegram"
// ...
purple_debug_info(PLUGIN_ID, "Debugnachricht");
## GIT
git pull -> Stand aktualisieren
git add -A -> Files hinzufügen
git push -> Stand hochladen
git commit -> Commiten
## Troubleshooting
Zum löschen der angelegten Accounts
rm /home/USER/.purple/accounts.xml
Die lib muss eventuell nach /usr/lib/purple-2/telegram-purple.so kopiert werden
When encountering a crash, please report it to us, preferably together with a backtrace [https://developer.pidgin.im/wiki/GetABacktrace]