Entries filed under Linux

XMPP/Jabber, VoIP(jingle), Webcam und Remote Desktop auf Dockstar

Posted on 30. April 2011 Comments

Wenn man sich die anderen Beiträge hier anguckt, merkt man, dass ich mich in letzter Zeit ziemlich viel mit XMPP/Jabber, Verschlüsselung und VoIP beschäftige. Leider gab es lange Zeit keine gute Alternative zu Skype aber nach ein paar Stunden testen, meine ich tatsächlich eine Lösung gefunden zu haben: jitsi. Wer das schon länger verfolgt, kennt das Programm vielleicht noch unter dem Namen SIP-Communicator. Inzwischen ist es ein vollwertiger Instant Messenger, der auch ICQ, Windows Live(MSN) und weitere Messenger unterstützt. Mit der Implementierung von jingle gehen jetzt auch Voice Calls und Webcam, grade unter Windows 7 zu Windows XP und Ubuntu 10.04 getestet.

Nun ist man natürlich immer noch abhängig vom Anbieter des XMPP-Servers, allerdings nicht mehr von Red5, welches in Java geschrieben ist und somit wohl eher nicht auf z.B. der Dockstar (->Openfire) läuft. Mit der ebenfalls Webcam und Audio möglich war, s. jabber-server.de/red5 über Spark(Client) und Openfire (Server). Hier also mal eine kleine Auflistung von öffentlichen Jabber-Servern:

Für optimale Privacy kann man natürlich auch einen eigenen Jabber-Server, z.B. ejabberd aufsetzen. Das funktioniert auch mit einer 1GHz ARMEL CPU auf der Dockstar (!)

Ein sehr geiles Feature, nach dem ich überhaupt nicht überhaupt gesucht hatte, ist die Remote-Desktop Funkionlität. Sonst habe ich das immer über das proprietäre logmein.com/hamachi gemacht, aber das gefällt mir natürlich besser:) OTR für’s chatten ist eingebaut und funktioniert auch out-of-the-box mit Pidgin auf der Gegenseite( und damit wohl auch Adium)

update: Die Gespräche sind über ZRTP verschlüsselt

Internet Verbindung ueber WLAN teilen mit Xubuntu 10.04

Posted on 8. Februar 2011 Comments

Ganz einfach eigentlich, man muss nur im XFCE4 Network Manager Neues Funknetzwerk erstellen… anklicken, einen Netzwerknamen(SSID, <=32 bytes) eingeben und eine Verschlüsselung eingeben, möglichst nicht WEP, weil das bekanntlich leicht knackbar ist, dann ein Passwort. Er verbindet sich dann selbst zu dem Netzwerk und teilt somit die Internet Verbindung die per Kabel oder 2ter W-LAN Karte kommt. Mit der selben W-LAN Karte die Verbindung teilen geht nicht.

Hier nochmal in Bildern(click to enlarge):

Neues Netzwerk erstellen
Neues Netzwerk erstellen

SSID, Verschlüsselung und Passwort eingeben
SSID, Verschlüsselung und Passwort eingeben

Einstellen nachschauen:

Rechtsklick auf Network Manager, Verbindung bearbeiten...
Rechtsklick auf Network Manager, Verbindung bearbeiten…

Entsprechendes Netzwerk auswählen und bearbeiten klicken
Entsprechendes Netzwerk auswählen und bearbeiten klicken

Verbindungstyp sollte AdHoc sein
Verbindungstyp sollte AdHoc sein

Methode sollte Gemeinsam mit anderen Rechnern sein.
Methode sollte Gemeinsam mit anderen Rechnern sein.

Beim nächsten Mal ist die Verbindung schon gespeichert
Beim nächsten Mal ist die Verbindung schon gespeichert:)

A few sed and awk scripts

Posted on 15. Januar 2011 Comments

Entfernt die erste Zeile und schreibt das Ergebnis in files.2.csv

sed '1,1d' file.csv >files.2.csv

Entfernt das Wort foobar aus der ganzen Datei und ersetzt es durch ein Leerzeichen.

sed 's/foobar/ /g'

Entfernt alle “ aus der Datei. Problem dabei ist, dass Anführungszeichen normalerweise interpretiert werden. Mit einem Backslash wird sed gesagt, dass es sich um das Zeichen “ handelt.

sed 's/\"/ /g'

-F, teilt awk mit, dass das Komma(,) das Trennzeichen ist und nicht z.B. ; oder :. Ähnlich wie bei C kann die Ausgabe formiert werden. Mit %Zahl wird die Breite für die Ausgabe festgelegt. Das s dahinter deutet einen String an. Das Minus der letzten Zahl bedeutet nicht etwa Invertierung sondern linksbündig, da standardmässig alles rechtsbündig ist. \n ist natürlich ein Absatz. Die $Zahl im hinteren Teil ist die Spalte aus der Datei file.csv

awk -F, '{ printf("%23s%10s\t%7s\t%10s\t %10s%10s%4s%-30s\n", $2, $8, $9, $10, $11, $14, $16, $22 )}' file.csv

Informationen findet man auf os4.org und Wikipedia zu sed bzw. awk

IPv6 Privacy extensions Ubuntu 10.04

Posted on 15. Januar 2011 Comments

If not already happened, add the following to /etc/udev/rules.d/70-persistent-net.rules:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*",
RUN+="sysctl net.ipv6.conf.%k.use_tempaddr=2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*",
RUN+="sysctl net.ipv6.conf.%k.use_tempaddr=2"

Usually this happens when installing miredo or similar IPv6 tunneling software, but you might want to double-check it. Also, check if the eth* and wlan* fit your ethernet/wifi devices.

btw, unfortunately Android and I-Phone Devices don’t have this, which causes quite a bit privacy concerns, see heise.de on IPv6 on Smartphones for more information (German)

Skype Alternative: XMPP/jabber mit jingle

Posted on 20. November 2010 Comments

Es wird nicht gerade wenig Energie darauf verwendet, Skye nicht reverse engineerbar zu gestalten. Niemand weiß also, was da eigentlich passiert.

Zum Glück gibt es (schon seit einiger Zeit) eine freie Alternative zu Instant Messaging Programmen: Jabber bzw. das Protokoll XMPP. Das wird übrigens auch von Google Talk, Facebook Chat, einigen Android Anwendungen und vielen mehr verwendet. Um Sprache zu übertragen braucht der Jabber Client zusätzlich noch die sog. jingle – Erweiterung.

gajim, jabbin und empathy unter Linux haben beide diese Funktionalität und es klappt auch wunderbar, das habe ich grade mit meinem eigenen dockstar jabber server ausprobiert, allerdings stürzte empathy noch ab, gajim funktionierte einwandfrei. Jetzt muss man nur noch seine Freunde davon überzeugen, sich einen Jabber Account zuzulegen, z.B. bei jabber.org oder jabber.ccc.de

Apache2, mod_security, mod_chroot und OpenID

Posted on 5. November 2010 Comments

So, das war eine lange Nacht…

Ein Debian Server mit OpenID auf der Dockstar sollte es werden, garnicht so einfach. Ich hatte mich für phpmyopenid, einer Installation des populären phpmyid entschieden, das Ganze läuft über apache2.

Den hatte ich hier schonmal so sporadisch am laufen, aber ich hatte mir nie wirklich Gedanken um Sicherheit gemacht, da ich den immer nur kurz an und dann gleich wieder ausgestellt hatte. Hier also ein paar Tricks zum Sichern eines Apaches(keine Garantie für irgendwelche Schäden bzw. Entschädigung für Hacks etc!)

Diese nette Anleitung von petefreitag.com: 20 ways to Secure your Apache Configuration

Das Modul mod_security, dafür gibt es folgendes Debian Paket: libapache-mod-security und mod-security-common

Das Modul mod_chroot, dafür gibt es ebenfalls ein Debian Paket: libapache2-mod-chroot und mod-chroot-common

Die müssen erstmal installiert werden. Am besten mal Google danach fragen, da muss man sich einfach reinlesen, und zwar nicht grade wenig;)

Dann kann man eigl dieser Anleitung auf howtoforge folgen.

Ich hab mich für 3.2 entschieden, da eh nur eine Instanz bei mir läuft. Den Link zu dem PID File brauchts aber trotzdem. einfach in /etc/apache2/sites-available/default von /var/www zu / tauschen.

Nun müssen die richtige Rechte gesetzt werden, da bin ich mir nicht ganz sicher. Damit phpmyopenid läuft muss, natürlich, php5 installiert sein.

Im Jail geht das nun aber eigl nicht, also hab ich mal den Ordner in /var/www kopiert, erstmal alle Rechte gegeben und dann so eingestellt, dass nur Eigentümer und Gruppe drauf zugreifen können. Apache läuft bei mir nicht mehr unter der Standartgruppe und der User hat auch keine shell sondern /dev/null.

#cp -r /var/lib/php5 /var/www/var/lib
#chmod -R 777 /var/www/var
#chmod -R o-rwx /var/www/var

Das müsste ja insofern sicher sein, als dass das Ding ja eh in ner Art Sandbox läuft oder? Vll kann das ja mal jmd kommentieren oder mir ’ne Mail schicken. Selbst wenn jetzt der OpenID Server komprimitiert wird, ist der Server an sich ja sicher.

Damit man die Fehlermeldung noch umgeht hab ich in /etc/httpd.conf (wird von apache2.conf eingebunden) noch

ServerName alice.bob.org

geschrieben mit alice.bob.org als meinem dyndns Namen.

phpmyopenid war nicht wirklich schwierig:

  • mit wget runterladen
  • mit unzip entpacken
  • ordner nach /var/www verschieben
  • aus dem Versionsordner so entpacken: http://bob.alice.org/phpmyopenid
  • http://bob.alice.org/phpmyopenid/install.php
  • #rm /var/www/phpmyopenid/install.php

So das war’s hoffentlich, auf Rückmeldung bin ich immer gespannt:)

Anmeldungen sind natürlich witzlos ohne Verschlüsselung, deswegen wird das nächste Projekt wohl SSL sein, natürlich ein eigenes Zertifikat(s. Alternativlos Folge 5)

update:

Tipp: damit der Workload nicht so gross wird, einfach in der /etc/apache2/httpd.conf die Paramter StartServers und die folgenden ein bisschen runtersetzen, ausser man betreibt tatsächlich eine Homepage.

Jabber Server mit Debian Dockstar

Posted on 3. November 2010 Comments

Nach einigem Nachdenken, was ich nun(neben FTP/HTTP) mit dem Teil eigl anstellen will, kam mir die Idee eines eigenen Jabber Servers.
Im Ubuntu Wiki findet sich eine ziemlich gute Anleitung zu „ejabberd“, einem sowohl populären als auch einfachen Jabber-Server.

# apt-get install ejabberd
# dpkg-reconfigure ejabberd

Als Hostname habe ich da meinen schon vorhandenen DynDNS Namen genommen. Dann wurde ein Admin erstellt, Ports gemappt und es klapppt eigentlich auch schon. Evtl. bzw. je nach Wunsch kann/sollte man dann noch die Registrierung für neue User ausstellen.

Blöd nur, dass die DynDNS Adresse ja vom LAN aus nicht erreichbar ist. Ich habe da folgende Workarounds gefunden.

1. Kann man in den Einstellungen in den meisten Clienten den Server eingeben, bei dem man sich einloggen möchte, hier hab ich die lokale IP eingeben und bei Hostname trotzdem den DynDNS Namen(Screenshot)

2. Kann man in der Datei /etc/hosts einfach mit

IP DynDNS

also z.B.

192.168.1.3 homeserver.dyndns.org

eingeben und man wird automatisch weitergeleitet, das führt auch zu keinen Schwierigkeiten beim Zertifikat, Pidgin zumindest hat nochmal nachgefragt.

Vorteil an 1. Variante ist, dass man sich 2 Accounts erstellt, jenachdem wo man ist(nützlich bei Laptop) nimmt man eben einen anderen Account. Bei Desktop PCs ist es dann ziemlich egal was man nimmt, da geht 2. genauso gut, ich wollte nur beides erwähnen, weil mir die /etc/hosts als erstes einfiel.

Was natürlich auch noch geht, ist Proxys bzw. TOR nutzen und sich dann über fremde Server wieder zuhause einwählen um dann wieder in die weite Welt hinauszutelefonieren. Quark also;)

Vielleicht kommt ja in nächster Zeit noch was, meine nächste Idee wäre OpenID…mal sehen ob das klappt….z.B. für identi.ca

update:

Hab’s geschafft: OpenID auf meiner Dockstar

Diaspora on Dockstar with Debian Lenny

Posted on 13. Oktober 2010 Comments

I’ll write this in English because more people might want to read it;)

Diaspora, programmed by 4 young hackers in NYC, is „The privacy aware, personally controlled, do-it-all, open source social network“(joindiaspora.com). Some say it’s gonna be a facebook killer, some say it’s gonna fail for various reasons. Basically, the idea is to create your own server – seed – which „speaks“ to other servers on the diaspora network, so a decentralized network instead a central server(farm) like facebook or several others. The main reason to do this is that your data stays in your own hands. Therefore everybody would have to install their own servers, which 99,9% of all internet users wouldn’t, simply because they wouldn’t know how.

Unfortunately they decided to write the whole thing in ruby(on rails), which I don’t know and most of the paid-hosters don’t support by default(unlike http/php/mysql/perl). As the database system they chose MongoDB, unusual as well.

My idea would have been, to install Diaspora on a mini server like the Sheeva Plug or Dockstar(3-5 Watt), with a debian/gentoo system on a USB Stick. It’s not to hard, there are a lot of tutorials on the internet. All the packages, like ruby/rake are supported. But would have? Yes, because obviously MongoDB doesn’t support ARM(Debian Lenny on a Dockstar with all dependencies installed):

In file included from db/../bson/bsoninlines.h:21,
from db/jsobj.h:43,
from db/jsobj.cpp:21:
db/../bson/util/atomic_int.h:96:4: error: #error "unsupported compiler or platform"
scons: *** [db/jsobj.o] Error 1
scons: building terminated because of errors.

So unless you want to keep your HomePC running 24/7(effect on environment? energy cost?), there’s no chance to host your own Diaspora seed at home. Therefore you have to pay a hoster to do so, and nearly nobodie’s gonna do that, because facebook is for free. I don’t think Diaspora will change their database system, so this goes out to all MongoDB developers: Please add support for ARM! According to this post on in a google group it can’t be too hard, but I really can’t tell:/ As I found out while googling I obviously wasn’t the only person who thought this might be a good idea:)

I’ll try to keep you uptodate, if anybody finds a solution, please post a comment:)

update: I just tried to use the same code for ARM as for i386 and – of course – got an error:

/tmp/ccEB7sgz.s: Assembler messages:
/tmp/ccEB7sgz.s:7236: Error: bad instruction `lock'
/tmp/ccEB7sgz.s:7237: Error: bad instruction `xadd r3,[r2,#0]'

Unfortunately I don’t know any ARM ASM, but maybe someone can translate?

update: In the code(/bson/util/atomic_int.h) it said

#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
// this is in GCC >= 4.1

So I just added || defined(__arm__) because my dockstars gcc said:

# gcc -v
Using built-in specs.
Target: arm-linux-gnueabi
Configured with: ../src/configure -v --with-pkgversion='Debian 4.3.2-1.1'
 --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,
objc,obj-c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib
 --without-included-gettext --enable-threads=posix --enable-nls
 --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu
 --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --disable-libssp --disable-sjlj-exceptions
 --enable-checking=release --build=arm-linux-gnueabi --host=arm-linux-gnueabi --target=arm-linux-gnueabi
Thread model: posix
gcc version 4.3.2 (Debian 4.3.2-1.1) 

I thought this might work. Then it compiled for about 3 hours and I got this error:

db/jsobj.o: In function `mongo::AtomicUInt::operator++(int)':
/root/mongo/db/../bson/util/atomic_int.h:60: undefined reference to `__sync_fetch_and_add_4'
util/message.o: In function `mongo::AtomicUInt::operator++(int)':
/root/mongo/util/../util/../db/../bson/util/atomic_int.h:60: undefined reference to `__sync_fetch_and_add_4'
db/stats/counters.o: In function `mongo::AtomicUInt::operator++(int)':
/root/mongo/db/stats/../../bson/util/atomic_int.h:60: undefined reference to `__sync_fetch_and_add_4'
/root/mongo/db/stats/../../bson/util/atomic_int.h:29: undefined reference to `__sync_fetch_and_add_4'
/root/mongo/db/stats/../../bson/util/atomic_int.h:29: undefined reference to `__sync_fetch_and_add_4'
db/stats/counters.o:/root/mongo/db/stats/../../bson/util/atomic_int.h:29: more undefined references to `__sync_fetch_and_add_4' follow
s/chunk.o: In function `mongo::AtomicUInt::operator++()':
/root/mongo/s/../client/../util/../util/../db/../bson/util/atomic_int.h:57: undefined reference to `__sync_add_and_fetch_4'
/root/mongo/s/../client/../util/../util/../db/../bson/util/atomic_int.h:57: undefined reference to `__sync_add_and_fetch_4'
/root/mongo/s/../client/../util/../util/../db/../bson/util/atomic_int.h:57: undefined reference to `__sync_add_and_fetch_4'
collect2: ld returned 1 exit status
scons: *** [mongodump] Error 1
scons: building terminated because of errors.

Any ideas? Seems like gcc has to be >= 4.4.0. Might be a good idea to install squeeze instead of lenny but it’s nearly 5am and I can’t be bothered now;)

Update: at the MongoDB Bugtracker the user Eliot Horowitz stated:

„Unfortunately compiling is only a small portion of the issue.
The bigger problem is endianness – which is fixable, just a fair amount of work.“

I guess we’ll just have to wait-.-

Update: Great news! Looks like somebody finally did it:

Although they did not really write a tutorial… I can’t seem to find that many differences in the code but it’s definitly right, that ARM is bi-endian(didn’t know that until my professor told me this semester). Might work with the newser gcc version. Anyway, if I find some free time, I’ll test it.

 

Related:

 

E-Technik Linux – gSchem Hintergrund ändern

Posted on 8. Juni 2010 Comments

Ich studiere ja E-Technik und habe mich mal nach einigen Tools unter Linux umgesehen. Ein simples aber super Projekt/Programm finde ich ist gEDA bzw. gschem, mit dem lassen sich einfach Schaltungen erstellen und als Bild exportieren. Mehr hab ich damit bis jetzt noch nicht gemacht.

Jetzt zu dem eigentlichen Grund für diesen Beitrag: Die Hintergrundfarbe schwarz ist zwar nicht unüblich bei solchen Programmen, nervt jedoch, wenn man das Bild in sein (natürlich weißes) LaTeX-Protokoll importieren will. Bei den neueren Versionen lässt sich das mit v+l bzw. v+d umschalten, bzw. unter Ansicht. Für alle anderen ist das Ganze ist ja Open Source und gut dokumentiert, man sucht also ein bisschen und stößt auf: http://www.thelinuxdaily.com/2008/11/how-to-change-the-background-color-in-geda-tutorial/

sudo nano /etc/gEDA/system-gschemrc

Einfach die Zeile mit dem ; dark background auskommentieren und die mit ; light background ersetzen.

Dann kann man in der/etc/gEDA/gschem-lightbg noch grey34 durch white ersetzen und schon kann man die Bilder wunderbar überall einfügen:)

update: Ab Ubuntu 10.04 heisst die Datei /etc/gEDA/gschem-colormap-lightbg, dort die Zeile

'((background         "#f0f0f0")

mit einem ; auskommentieren, und in die gleiche Zeile für weiß schreiben:

; '((background         "#f0f0f0")
'((background           "#ffffff")

mapstraceroute – graphical traceroute with google maps

Posted on 17. Mai 2010 Comments

German/Deutsch

Wird mal wieder Zeit für ein neues Projekt von mir. Ich hatte ja schonmal irgendwann über Gtrace/Geotrace/xtraceroute etc geschrieben, aber diese Programme sind alle schon knapp 10 Jahre alt. Teilweise funktionieren sie noch aber in Zeiten von google maps und APIs kam mir die Idee ein neues Programm zu schreiben, in Python. Ich hab wirklich einfach mal drauf losgeschrieben, ohne einen Plan. Der Code sieht nicht besonders schön aus(grade nicht für python), das weiss ich.

Das Programm bekommt also vom Programm traceroute die IP-Adressen, holt sich dann von hostip.info die entsprechenden Koordinaten und mithilfe des python wrappers für die google maps API pymaps wird dann eine HTML-Seite erstellt. Diese wird direkt im Anschluss über das python modul python-gtkmozembed angezeigt. Sie enthält allerdings bis jetzt nur Punkte. Demnächst werd ich mich nochmal damit beschäftigen, dass zwischen den Punkten dann in der richtigen Reihenfolge auch Linien gezogen werden. So sieht das Ganze bis jetzt aus.

English

Time for another one of my projects. I blogged about GTrace/Geotrace/xtraceroute a while ago, but these applications are nearly 10 years old. They partly work but in times of google maps and APIs my idea was to write a new app, this time in python. I really didn’t have any plans how to do it, I just started writing. It’s not very code(especially for python), I know.

My application gets the IP adresses from the (system) traceroute command, then receives the coordinates from hostip.info and with the python wrapper for the google maps API – pymaps – a HTML page is genereated. This HTML page if opened by the python module python-gtkmozembed. Until now there are only points, but if I’ve got some free time in the next couple of months, I’m trying to draw lines too. This is what it looks like until now.

Requirements:

How-To:

  1. Download
  2. unpack and cd in the folder
  3. run install.sh as root or with sudo
  4. try it out: mapstraceroute <host>

There’s heaps of things to do though(Thats why it’s only o.1a;)):

  • rewrite the code a bit more elegant and python-like;)
  • draw lines between the points
  • include own traceroute in python(?)