Dienstag, 29. Januar 2008Ein Opentracker Ebuild
Erdgeist vom CCC hat einen freien BitTorrent-Tracker in C implementiert: Opentracker
Dieser ist sehr klein und stark auf Performance optimiert, so dass er mittlerweile von ThePirateBay genutzt wird, über deren Server wohl der Großteil des weltweiten Trackertraffic für BitTorrent abgewickelt wird.
Das Programm benötigt außer der libowfat keine weiteren Abhängigkeiten.
Ich hab mir erlaubt, dafür mal ein ebuild für Gentoo zu popeln. Es baut direkt aus dem Code aus dem CVS.
Paketname wäre dann net-p2p/opentracker:
[UPDATE]:
Man benötigt mindestens libowfat 0.27, sonst lässt sich der Quelltext nicht übersetzen.
[UPDATE #2]:
Hab das Ebuild mal erneuert.
Geschrieben von pegro
um
00:50
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 02.11.2008 18:39
Samstag, 26. Januar 2008Debian und IPv6 mit 6to4
Endlich hab ich mal Zeit gefunden, mir die 6to4-Konfiguration in Debian anzusehen. Für Gentoo hatte ich schon mal was geschrieben.
Eine Beispielkonfiguration:
# cat /etc/network/interfaces # Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or # /usr/share/doc/ifupdown/examples for more information. auto lo iface lo inet loopback auto eth0 iface eth0 inet static address aa.bb.cc.dd netmask 255.255.255.255 auto tun6to4 iface tun6to4 inet6 v4tunnel address 2002:wwxx:yyzz::1 netmask 48 local aa.bb.cc.dd endpoint any gateway ::192.88.99.1Man sollte für das Tunneldevice sowas wie tun6to4 statt sit0 verwenden, da ifdown das Standard sit0 device nicht löschen kann, was beim restart das Netzwerk kaputt machen kann. Um seine 6to4-Adresse zu berechnen, kann man den kurzen Shellbefehl nutzen: printf "2002:%02x%02x:%02x%02x::1" $(echo $MYIP | tr . ' ')wobei $MYIP dann die lokale IP von z.B. eth0 darstellen sollte. Die IP 192.88.99.1 ist eine Anycastadresse für das nächste 6to4-Gateway. Quellen: http://www.melb.apana.org.au/wiki/IPv6ConfigurationForDebian http://people.debian.org/~csmall/ipv6/setup624.html http://www.feyrer.de/IPv6/ueberreuter-6to4.html
Geschrieben von pegro
um
18:42
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 26.01.2008 19:22
Ich bin eine Shell, holt mich hier raus
Ich hab heute nochmal mit dem IPv6 auf meinem Rootserver rumgespielt. Gemietet habe ich den bei Strato, womit auch insgesamt sehr zufrieden bin.
In weiser Vorahnung, dass nicht alles auf Anhieb klappt, hab ich mich zusätzlich über die Remoteconsole eingeloggt, die über die serielle Schnittstelle mit dem Rechner verbunden ist.
Um am Ende die Session zu beenden, gibt man z.B. logout ein, jedoch bleibt man zum Server verbunden. Um sich komplett von der seriellen Konsole zu trennen, muss man dann
~.eingeben.
Geschrieben von pegro
um
17:57
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 26.01.2008 18:10
Dienstag, 22. Januar 2008One day I will find this peer guy and then I'll reset his connection
Wie ich schon beschrieben habe, lässt sich SSHFS in Kombination mit Autofs prima für Backups nutzen.
Einmal aufgesetzt und geht. Für neue Server kopiert man einfach die Konfigurationsdatei, passt die Optionen an und verlinkt es in der auto.master-Datei. Dann sollte es nach einem Neustart von autofs auch funktionieren.
Jedoch stand beim Versuch, in das gemountete Verzeichnis zu wechseln, im Logfile immer nur
automount[25442]: >> read: Connection reset by peer automount[25442]: mount(generic): failed to mount sshfs#backup@testserver.de:/home/testuser/backup (type fuse) on /home/testserver/sshfs/autobackup automount[25442]: failed to mount /home/testserver/sshfs/autobackupNach einer Weile Debuggen war mir dann klar woran es hing: Die Host Key Verifikation. Denn wenn man eine Verbindung zu einem Server zum ersten mal aufbaut, wird man gefragt, ob der Fingerprint des Host Keys korrekt sei und ob dem Server vertraut wird: The authenticity of host '[testserver.de] ([aa.bb.cc.dd])' can't be established. RSA key fingerprint is ... Are you sure you want to continue connecting (yes/no)?Wenn man dort mit 'yes' antwortet, wird der Hostkey in die Datei ~/.ssh/known_hosts eingetragen. Dann funktioniert die Host Key Verifikation auch ohne Zutun des Nutzers und somit auch bei automatischem Mounten mit SSHFS und Autofs. Darauf muss man erstmal kommen...
Geschrieben von pegro
um
16:56
| Kommentare (2)
| Trackbacks (0)
Zuletzt bearbeitet am 22.01.2008 17:23
Sonntag, 20. Januar 2008Starte sich, wer kann
Grade für wichtige Dienste, wie Mailserver, ist essentiell, wenn diese immer erreichbar sind. Und da eine Software selten ganz fehlerfrei funktioniert, kommt es vor, das sie im schlimmsten Fall abstürzt. Bis man das bemerkt, sind einem möglicherweise schon viele Mails entgangen. Also braucht man ein Hilfsmittel, was den Dienst neustartet, sobald er verschwunden ist.
Dazu findet man im Internet grade in der Kombination mit Qmail die Daemontools sehr häufig. Der dazu gestartete Prozess supervise startet einen konfigurierten Dienst und prüft regelmäßig, ob dieser noch läuft. Ist das nicht der Fall, startet er den Dienst neu.
Wie man einen Dienst konfiguriert, wird hier beschrieben.
Um Supervise zu benutzen, muss man in das Verzeichnis mit den konfigurierten Diensten wechseln und kann sie mit
svc -u service-namestarten. Gestoppt wird mit svc -d service-nameNeustarts werden über ein aufeinander folgendes "Stoppen" und "Starten" realisiert. Wer es einfach mag, kann sich dazu auch ein Startskript für /etc/init.d bauen. Dazu kann man das Shellscript svinitd aus dem svtools-Paket für Debian benutzen. Dort reicht ein #!/bin/bash svinitd service-name $1um alle Befehle wie start,stop,reload,restart,force-reload,enable und disable auszuführen.
Geschrieben von pegro
um
23:53
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 21.01.2008 01:02
Dienstag, 15. Januar 2008Apache2, SSL vhosting mit SNI
Mehrere Domains auf einer IP mit SSL sichern, ist ja nicht ganz so einfach.
Ich habe grade etwas von SNI (Server Name Indication) gelesen, einer TLS extension, mit der man auch mehrere Zertifikate pro IP verwenden kann. Angeblich unterstützen das die meisten Browser bereits.
OpenSSL 0.98 kann es noch nicht, in Version 0.99 ist es vorgesehen. Auf jeden Fall muss ich mir das bei Gelegenheit mal ansehen.
Quelle:
http://www.g-loaded.eu/2007/08/10/ssl-enabled-name-based-apache-virtual-hosts-with-mod_gnutls
Geschrieben von pegro
um
12:17
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 26.01.2008 19:23
Die Welt in einem Verzeichnis
Beim Stöbern in den langen Listen der FUSE-Module bin ich auf etwas originelles gestoßen:
Mit WikipediaFS kann man sich die Wikipedia mounten und alle Artikel als Dateien behandeln und mit dem Lieblingseditor bearbeiten.
Es gibt Dinge, die gibt's gar nicht...
Quelle:
http://wikipediafs.sourceforge.net
Geschrieben von pegro
um
11:55
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 15.01.2008 11:59
Drum prüfe, wer sich bindet.
Das Programm mount kümmert sich um das Einhängen ins Dateisystem, irgendwo unterhalb /.
Mit Hilfe dieses Programms und einigen Treibern kann man fast alles "mouten". Seit Kernelversion 2.6.14 ist ein neues Kernelmodul verfügbar: FUSE (File System In Userspace) mit dem es möglich ist, Dateisysteme zu mounten, ohne dass die dafür nötigen Treiber im Kernel laufen müssen, sondern, wie der Name schon suggieriert, im Userspace.
So kann man auch mit einem monolithischen Kernel die exotischsten Dateisysteme verwenden, ohne Bauchschmerzen zu bekommen. Auch sind die Kernelmaintainer entlastet, die sehr selten genutzte oder neue Dateisystemtreiber nicht im Kernel pflegen müssen.
Da man mit mount so gut wie alles mounten kann, kann man damit auch Dateien und Ordner bereits eingehängter Dateisysteme noch einmal an anderer Stelle einhängen. So lassen sich z.B. ISO-Dateien einfach als ein Ordner einhängen, Laufwerksbuchstaben gibt es hier ja nicht. Die Option lautet mount -o loop.
Ordner lassen sich ebenfalls mehrmals einhängen. Dazu verwendet man mount -o bind /path/to/directory /path/to/the/other/directory. Der Ordner behältet dort Eigentümer und Dateirechte. Das kann aber manchmal nicht gewünscht sein.
Beispiel: Man will einem User Zugriff auf ein fremdes Verzeichnis geben, was ihm nicht gehört, indem man es z.B. in sein Userverzeichnis mountet. Schreibrechte erteilen ohne die Eigentumsrechte verändern zu müssen, klappt nur mit einem Schreibrecht auf "other", was der Sicherheit von Webservern beispielsweise nicht zuträglich ist. Außerdem gehören neu erstellte Dateien dann dem Nutzer, nicht dem Eigentümer des Ordners. Für Webserver also nicht wirklich geeignet.
Daher gibt es für FUSE ein Modul mit dem Namen bindfs. Damit kann man einen Ordner per bind so mounten, das alle Dateien, auch neu erstellte, voreingestellte Rechte erhalten, und das ganze transparant zum ursprünglichen Eigentümer.
Also ein "mount --bind in userspace, with extras".
Quelle:
http://www.cs.helsinki.fi/u/partel/bindfs/
Geschrieben von pegro
um
11:13
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 15.01.2008 11:54
PostgreSQL: Konvertieren von Timestamps
PostgreSQL hat einen Datentyp namens timestamp um einen Zeitpunkt zu speichern. Wenn man ein einfaches SELECT auf eine Spalte dieses Typs macht, kriegt man eine Repräsentation des Zeitstempels im Format YYYY-MM-DD HH:II:SS.
Wenn man in seiner Applikation aber gerne mit UNIX timestamps rechnen will, kann man sich den String entweder umwandeln, in PHP z.B. mit strtotime().
Oder man lässt das PostgreSQL für einen machen:
SELECT id, EXTRACT(EPOCH FROM posttime) AS posttime FROM tbl_posts WHERE posttime > to_timestamp(:oldtime)Die hier verwendete Funktion to_timestamp() macht genau das Gegenteil: Eine Eingabe im UNIX-Timestampformat in einen PostgreSQL-Timestamp konvertieren. Quellen: http://www.postgresql.org/docs/8.2/interactive/functions-formatting.html http://www.postgresql.org/docs/8.2/interactive/functions-datetime.html
Geschrieben von pegro
um
11:08
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 15.01.2008 11:12
Samstag, 12. Januar 2008LOC zählen
Ich wollte mal wissen, wieviel Zeilen Quelltext (lines of code) ich so zusammengecodet habe.
Für eine erste Näherung reicht ein Shellbefehl:
find . -type f -name *.java | xargs cat | egrep -v '^[^a-zA-Z0-9_/*;,.:#<>(){}=+-]*$' | wc -lDas geht natürlich auch mit anderen Programmiersprachen, aber nur mal um die Grundidee festzuhalten und damit ich einfach C&P machen kann, steht das hier. Verbesserungsvorschläge gerne willkommen.
Geschrieben von pegro
um
02:29
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 15.01.2008 11:08
(Seite 1 von 1, insgesamt 10 Einträge)
|
SucheArchivKategorien |