malinux

malinux' lillablogg

bitlbee 3.2.2 på Debian Wheezy — Denne posten er skrevet av malinux —

bitlbee på Debian Wheezy


Vanskelighetsgrad
Rød

Hva er bitlbee? Bitlbee er en portal for lynemdeldingstjenster til irc, som blant annet facebook-chat, skype, twitter, xmpp/jabber, gtalk, aim, icq og en rekke andre tjenster, slik at du kan chatte på facebook-chat, skype, etc, etc, rett i din irc-klient. Hvor mye som støttes av de forskjellige tjeneste varierer, og jeg har ikke prøvd ut alle selv.

I Debian Wheezy er det en veldig gammel versjon av bitlbee, versjon 3.0.5. For å få støtte for den nye facebook-chatten (MQTT), som er avhengig av bitlbee >=3.2.2, i motsetningen til den gamle, som benytter seg av xmpp, må vi altså kompilere fra kildekoden.

Debian jessie, som ble lansert 26.04.2015, har bitlbee versjon 3.2.2, og kan installeres via apt-get uten å måtte kompilere fra kildekoden. Facebook-Chatten må fortsatt kompileres fra kildekoden.

For å kompilere med støtte for OTR (Off-the-Record Messaging), så trenger vi en nyere versjon av libotr, enn hva Debian wheezy tilbyr i sine pakkearkiv. Wheezy har libotr2-dev, men vi trenger libotr5-dev, som finnes i wheezy-backports.

Legge til wheezy-backports først:

# echo 'deb http://http.debian.net/debian wheezy-backports main' >> /etc/apt/sources.list.d/wheezy-backports.list

  • # - betyr at kommandoen kjøres som root
  • $ - betyr at kommandoen kan, og bør kjøres som bruker for å minimere risikoen for å gjøre noe ireversibelt.

Først trenger vi en del pakker, som er nødvendig for å bygge kildekoden, hente kildekoden fra github og for å lage deb-pakker. Dette tar litt plass om du ikke har alle eller noen av pakkene fra før, men kan være greie å ha senere om man skal bygge andre ting fra kilden.

apt-get install build-essential libglib2.0-dev libgnutls-dev libotr5-dev dpkg-dev libevent-dev po-debconf libpurple-dev debhelper asciidoc git  
$ mkdir -p ~/src/bitlbee
$ cd ~/src/bitlbee

$ git clone https://github.com/bitlbee/bitlbee.git
$ cd ~/src/bitlbee

$ ./configure --prefix=/usr --debug=1 --otr=1 --ssl=gnutls --etcdir=/etc/bitlbee
$ make
$ dpkg-buildpackage

$ cd ..
# dpkg -i bilbee_3.2.2-2_amd64.deb bitlbee-common_3.2.2-2_all.deb bitlbee-libpurple_3.2.2-2_amd64 bitlbee-plugin-otr_3.2.2-2_amd64.deb bitlbee-dev_3.2.2-2_all.deb

bitlbee-dev_3.2.2_all.deb måtte vi installere fordi vi trenger denne pakken for å kompilere facebook-chatten. Regner med at den nye facebook-chatten blir integrert i bitlbee, slik at man ikke trenger å kompilere for å installere den.

Facebook-chat

Den ene måten er å installere fra utviklerens programvarearkiv.

Opprett følgende fil:

$ <dinteksteditor> /etc/apt/sources.list.d/jgeboski.list

Åpne filen og legg til følgende linje:

deb http://download.opensuse.org/repositories/home:/jgeboski/Debian_7.0 ./

Lagre og avslutt tekstprogrammet.

Legg til programvarearkiv nøkkelen, som godkjenner kilden for maskinen:

$ wget -O- https://jgeboski.github.io/obs.key | sudo apt-key add -

Oppdater programvareindeksen:

# apt-get update

# apt-get install bitlbee-facebook

Den andre måten er å kompilere fra kilden:

For å kompilere og installere facebook-chat-støtte, må gjøres etter at vi installerte deb-pakkene vi laget over. Dette programtillegget bruker facebook sin mobil-api.

# apt-get install dh-autoreconf checkinstall

$ cd ~/src/bitlbee
$ git clone https://github.com/jgeboski/bitlbee-facebook
$ cd bitlbee-facebook
$ ./autogen.sh
$ make
# checkinstall

Grunnen til at jeg her velger å bruke checkinstall og ikke dpkg-buildpackage, som med kildekoden til bitlbee, er at kildekoden til dette programtillegget, ikke er Debanisert. Det vil si at det mangler en Debian-mappe med filer som forteller hvordan og hvilke deb-pakker som skal generes, samt hvilke avhegigheter en pakke trenger for å installere. Dette kan man sette opp selv, men dette er for omfattende til å forklare her, samt at jeg selv pr. i dag mangler kunnskap om hvordan dette gjøres. Senere vil nok dette programtillegget uansett bli integrert i bitlbee, så man slipper å installere den eksternt.

Jeg bruker å svare ja på spørsmålet om å generere et standardsett med dokumentasjons-filer her. Jeg tror ikke det er veldig farlig å svare nei her da, pakken kun skal brukes lokalt, og ikke i en repo:

bitlbee-facebook-plugin-1-1

Skriv inn en beskrivelse av hva programmet gjør. Jeg la inn beskrivelsen fra de to første linjene i README-fila. Denne linja kan godt være tom også. Når man har skrevet inn, eller kopiert inn en beskrivelse, så trykker man på enter, så enter en gang til på en tom linje, og vips, så går den videre

bitlbee-facebook-plugin-1-3

I menyen som kommer opp nå, så kan man endre på beskrivelse av diverse egenskaper, etc, for deb-pakken vi nå skal lage. Vi ser f.eks. at beskrivelsen vi skrev inn i forrige steg, allerede står der. For å endre på noe, skriv inn tallet bak det du vil endre.
Det første som bør gjøres, så det ikke blir kluss med bitlbee-pakken vi har laget tidligere, er å endre navnet fra bitlbee til bitlbee-plugin-facebook. Trykk på 3, skriv inn bitlbee-plugin-facebook. Dette vil bli navnet på deb-pakken.

Vi må endre versjon fra facebook til et tall, da det ikke går å generere deb-pakker uten tall som versjonsnummer. Da jeg ikke vet hvilken versjon dette er av programtillegget, så har jeg bare skrevet 1 der.
Trykk på 3 og trykk enter, så skriv inn 1 og trykk enter.

bitlbee-facebook-plugin-1-2

Når vi nå er ferdige med å sette opp de nødvendige parameterne, trykker vi bare enter igjen, for å gå videre i prosessen.

 

Konfiguere bitlbee

For at bitlbee skal fungere slik vi ønsker, så trenger vi å konfiguere litt konfigurasjonsfiler.

# <tekst-editor> /etc/bitlbee/bitlbee.conf

Der kan være vi/vim, nano, eller hva du liker. er din editor vi, blir det slik:

# vi /etc/bitlbee/bitlbee.conf

I denne konfigurasjonsfila er det følgende verdier som må endres:

RunMode = ForkDaemon
User = bitlbee
DaemonInterface = 0.0.0.0
DaemonPort = 6667
AuthMode = Open
AuthPassword = md5:SECRET_HASH
OperPassword = md5:SECRET_HASH
ConfigDir = /etc/bitlbee

  • RunMode - Definerer hvordan vi vil at bitlbee skal kjøre. Mulige valg: Inetd, Daemon, ForkDaemon. ForkDeamon bør brukes, da hver klient får sin egen prosess. F.eks. facebook i en, og gtalk i en annen prosess.
  • User - Bruker. Brukeren vi vil at bitlbee skal kjøre som. Det er ikke lurt å sette brukeren til root f.eks..
  • DaemonInterface - Hvilke addresser bitlbee skal lytte til. Dvs. Alle.
    DaemonPort - Hvilken port bitlbee skal lytte til. 6667 gir mening, da det er innenfor portområdet til irc.
  • AuthMode - Denne må stå på Open til du har fått registrert en brukerkonto på serveren. Etter det er gjort, settes den til Registered, da er det bare registrerte brukere som får koblet til. Om venner skal ha konto på serveren, så kan den settes til Open fram til de har registrert seg, og så sette den til Registered igjen f.eks.
  • AuthPassword - Trengs for å logge inn på lukkede systemer. For å generere en hashtag, skriv:

# bitlbee -x hash .

kopier og erstatt SECRET_HASH med hashtaggen du fikk fra kommandoen over

  • OperPassword - Denne åpner opp for operatørkommandoer. Bruk samme kommando som over, for å genere en ny hastag og erstatt SECRET_HASH med hashtaggen.
  • ConfigDir - peker til mappen der konfigurasjonsfila til bitlbee ligger.

Så må vi legge til systembrukeren bitlbee, siden denne brukeren skal kjøre bitlbee-serveren.

# add-user --system bitlbee
# chown -R bitlbee:bitlbee /etc/bitlbee

Rediger filen /etc/default/bitlbee slik at paramteren BITLBEE_OPTS="-F" endres til BITLBEE_OPTS="-F -c /etc/bitlbee/bitlbee.conf på den måten defineres det hvor bitlbee skal hente konfigurasjonsfilen fra.

 

Start bitlbee-serveren

# service bitlbee start

Koble til bitlbee med din irc-klient

Her vil framgangsmåten være avhengig av hvilken irc-klient du bruker. Jeg bruker weechat. Dermed er eksemplene her basert på weechat.

For å koble weechat til bitlbee:

/server add bitlbee localhost/6667 -autoconnect
/connect bitlbee

weechat kobler seg til en kontrollkanal, som heter &bitlbee.

Først må vi registrere oss mot bitlbee-serveren

register <passord>

der <passord-, er et passord du ønsker å bruke med bitlbee-brukeren din. Ønsker du  å bruke passordet hemmelig, vil det bli sånn her:

register hemmelig

Da irc i seg selv ikke er kryptert, ikke bruk ditt systemroot-passord her.

Neste gang du logger deg inn, må du skrive identify for å få tilgang til kontoen din.

For å legge til f.eks. facebook-chaten:

account add facebook <brukernavn> <passord>

  • brukernavn - e-postadressen du bruker å logge inn på facebook med
  • passord - passordet du bruker å logge inn på facebook med.

account facebook on

For å få en oversikt over hvilke kontoer du har lagt til, skriv

account list

bitlbee-facebook-plugin-1-8

Som vi ser, så kan man også skrive ac list, der ac er fortkortelse for account, men begge gir en lignende output i irc-klienten.
For å prate til noen, pass på at du er i &bitlbee kontrollkanalen, og skriv

/msg <navn på den du vil chatte med> <melding>

Navnet må skrives likt, slik det fremstår, når du skriver /names og får en oversikt over brukere som er pålogget

F.eks. vil jeg prate med en som heter Fornavn Etternavn, så gjør man dette for å prate med vedkommene 🙂

/msg FornavnEtternavn hei

Det vil komme flere bitlbeeguider fremmover, men jeg stopper altså her foreløpig, da denne posten er blitt alt for lang 🙂

I fremtidige blogginnlegg om bitlbee, vil det komme mer informasjon om hvordan man kan bruke bitlbee, som hvordan man legger til andre protokoller, gruppechat, kanaler, automatisk innlogging, legge til/fjerne kontakter. Da jeg ikke bruker alle protokoller bitlbee støtter, så får jeg dessverre ikke laget guider for alle protokoller

Når jeg prater med en bruker på facebook, så ser det sånn ut i weechat:

bitlbee-facebook-plugin-1-7

 

Kilder


Categorised as: bitlbee | Debian | wheezy


2 Comments

  1. Andreas says:

    Flott skrevet, men få faktaene dine på plass!

    Du vet at IRC er en egen protokoll? Man kan derav ikke si at det er en "irc til lynmeldingstjenester".

    Uvitenheten lenge leve.

    • malinux says:

      Takk for tilbakemeldingen. Jeg har nå rettet det opp. Jeg er fullt klar over at irc er en helt egen protokoll. Det er rett og slett jeg som har formulert meg dårlig 🙂 Si gjerne fra om du finner andre feil også. Jeg prøver å teste så godt jeg kan, men innser at jeg ikke kan forutse alle scenarioer som kan oppstå.

      Nå var det ikke uvitenhet i dette tilfellet, men så dårlig formulert at jeg det nettopp kunne se ut som jeg trodde at irc ikke var en egen protokoll 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.