Uncategorized

SVN Hooks

Hi there, within a big php project you make typos. here is a small prehook script for svn that will actually prevent commits with several common and annoying mistakes:

  • Spaces in filenames
  • Spaces prior to the first <?php tag
  • PHP Short Tags
  • windows line endings

[bash]#!/bin/bash

# configuration
DO_DOS_FILE_CHECK=1
DO_SPACE_FILE_CHECK=1
DO_PHP_SHORT_TAG_CHECK=1
DO_SPACE_BEFOR_PHP_CHECK=1

REPOS=”$1″
TXN=”$2″

SVNLOOK=/usr/bin/svnlook
TMPFILE_ORIG=/tmp/svnhook_$TXN
TMPFILE_UNIX=/tmp/svnhook_unix_$TXN

FILES=`$SVNLOOK changed “$REPOS” -t “$TXN” | sed -r ‘s/^[D].*$//;s/^[AU]{1,2}s+//’`
DOS_FILES=””
SPACE_FILES=””
PHP_SHORT_TAG_FILES=””
SPACE_BEFOR_PHP_FILES=””

IFS=$’n’

for FILE in $FILES
do
LAST=${FILE#${FILE%?}}

# echo “FILE = ‘$FILE'” >&2

if [ “$LAST” = “/” ]; then
continue
else
if [ -n $DO_SPACE_FILE_CHECK ]; then
# space in filename check
SPACE_VIOLATIONS=`echo “$FILE” | grep -l ” “`

if [ -n “$SPACE_VIOLATIONS” ]; then
SPACE_FILES=”$SPACE_FILESn$FILE”
continue
fi
fi

$SVNLOOK cat “$REPOS” -t “$TXN” “$FILE” > $TMPFILE_ORIG || continue

if [ -n $DO_DOS_FILE_CHECK ]; then
# check windows line endings
VIOLATIONS=`grep -cIls $’r$’ $TMPFILE_ORIG` >&2

if [ -n “$VIOLATIONS” ]; then
DOS_FILES=”$DOS_FILESn$FILE”
fi
fi

if [ -n $DO_PHP_SHORT_TAG_CHECK ]; then
# check php short tags
VIOLATIONS=`grep -rn ‘&2
if [ -n “$VIOLATIONS” ]; then
PHP_SHORT_TAG_FILES=”$PHP_SHORT_TAG_FILESn$FILE: $VIOLATIONS”
fi
fi

if [ -n $DO_SPACE_BEFOR_PHP_CHECK ]; then
# check for space prior to php tag
VIOLATIONS=`head -n 1 $TMPFILE_ORIG | grep ‘^s&2
if [ -n “$VIOLATIONS” ]; then
SPACE_BEFOR_PHP_FILES=”$SPACE_BEFOR_PHP_FILESn$FILE”
fi
fi
fi
done

rm -f $TMPFILE_ORIG
rm -f $TMPFILE_UNIX

if [ “$DOS_FILES” != “” ] || [ “$SPACE_FILES” != “” ] || [ “$SPACE_BEFOR_PHP_FILES” != “” ] || [ “$PHP_SHORT_TAG_FILES” != “” ]; then
echo -e “n” >&2
if [ “$DOS_FILES” != “” ]; then
echo “ONLY UNIX LINEENDINGS ALLOWED!!!” >&2
echo “the following file contains Windows / Mac Lineendings:” >&2
echo -e $DOS_FILES >&2
echo -e “n” >&2
fi

if [ “$SPACE_FILES” != “” ]; then
echo “SPACES ARE NOT ALLOWED IN FILE / FOLDER NAMES!!!” >&2
echo “the following file contain spaces:” >&2
echo -e $SPACE_FILES >&2
echo -e “n” >&2
fi

if [ “$SPACE_BEFOR_PHP_FILES” != “” ]; then
echo “SPACES ARE NOT ALLOWED BEFOR THE PHP TAG IN THE FIRST LINE!!!” >&2
echo “the following file contain spaces:” >&2
echo -e $SPACE_BEFOR_PHP_FILES >&2
echo -e “n” >&2
fi

if [ “$PHP_SHORT_TAG_FILES” != “” ]; then
echo “SHORT PHP TAGS ARE NOT ALLOWED!!!” >&2
echo “the following file contain short tags” >&2
echo -e $PHP_SHORT_TAG_FILES >&2
echo -e “n” >&2
fi

exit 2
fi

# All checks passed, so allow the commit.
exit 0
[/bash]

Uncategorized

Kubuntu 11.04 Upgrade “no init found. try passing init= bootarg”

Hi there,

yesterday I did a small dist upgrade that actually bricked my system. The only thing I was able to reach was busybox which told me after invoking “sh init”

mount none failed for /dev, device busy
mount none failed for /sys, device busy

Booting from a Live CD showed that I was indeed able to mount the partitions without any trouble. Invoking update-grub or update-initramfs did’t improve the situation.

What finally worked was to disable the raid autodetect in grub:

raid=noautodetect

Thanks to that my system boots and I can finally work again on some real stuff ­čÖé

Uncategorized

Encvfs on (K|X|…)Ubuntu

Today I thought – hey, I really hate it that i have to mount my truecrypt partition prior to work with eclipse.

I was using truecrypt because the encypted folder of ubuntu disabled me of using apache (running as www-data) in those folders. Truecrypt worked find for doing just that, but as the weeks pass by I’m getting really annoyed of having to mount it seperate.

Another drawback by using truecrypt or any other full partition encryption is the inability to do incremental backups. By using an encryption that uses the normal file system as a storage backend this shortcomming doesn’t exist :).

Now I’ve switched to encfs (http://www.arg0.net/encfs) and pam_encfs to mount it on login.

Here’s how its done:

  1. Install the needed packages:

    sudo apt-get install encfs libpam-encfs

  2. Enable pam_encfs in pam.d:

    open the file: /etc/pam.d/common-auth
    add “auth sufficient pam_encfs.so” befor the line with pam_unix.so
    append “use_first_pass” to the line pam_unix.so

  3. Setup encrypted directory:

    encfs /path/to/encrypted/data /path/where/you/want/to/mount/it
    this will create the encrypted files. Also set the rights on your data:
    chmod 775 /path/where/you/want/to/mount/it -R

  4. Setup the pam_encfs config:

    open the file: /etc/security/pam_encfs.conf
    change the line with fuse_default to “fuse_default nonempty
    comment the line with drop_permissions
    and at the end of the file add the line:
    YOURUSERNAME /path/to/encrypted/data /path/where/you/want/to/mount/it -v,–public allow_other,gid=33
    where 33 is the group of www-data (you have to give numeric id’s here)

and now, well that’s it. Your new encrypted folder shoud be up and running on every login!

For this method to work, the user and the Volume must have the same Password!!!

Be aware that by logging in any user on the system can access your folder!
If you do not want that just remove the “–public” and uncomment the “drop_permissions”

EDIT: to append use_first_pass use a space as separator!

Hope you like it.

Uncategorized

Drobo

Nachdem ich nun Kubuntu 9.10 wieder installier habe geht alles. Bei 10.04 ist was schief gegangen und ich konnte KDE nicht mehr verwenden (├Âffnen eines Terminal Fensters f├╝hrte zu einem Segfault in X…)

Seit ├╝ber einer Woche habe ich nun eine Drobo, f├╝r alle denen dies nichts sagt: http://www.drobo.com/products/drobo.php

Leider wird Linux nicht offiziell unterst├╝tzt, auch ext3 hat noch manche makken. Zum Gl├╝ck gibt es hier jedoch Bem├╝hungen das Dashboard auch f├╝r Linux verf├╝gbar zu machen (http://drobo-utils.sourceforge.net/). In der Theorie kann die Drobo LUN Gr├Â├čen von 1 bis 16 Tb annehmen, empfohlen wird mit ext3 2Tb. Ich habe nat├╝rlich 8Tb versucht – erstellen des FS hat ├╝ber 4h gedauert, danach lies sich das Volume auch beschreiben, jedoch nicht mehr mounten :(. Danach die LUN Gr├Â├če auf 2 Tb gestellt und seither damit verwendet.

Anfangs habe ich eine 1.5 Tb Platte verwendet, diese bis 700Mb gef├╝ll – dann hat Drobo zu Mekkern begonnen (Rote Lampe auf der Vorderseite wo sie eine neue Platte wollte + Blauer F├╝llzeiger am Rand). Als zweite Platte ist nun eine 1Tb Platte drinnen, damit ist das Gesamtvolumen auf 1Tb (zum Nachrechnen: http://www.drobo.com/resources/drobocalculator.php). Derzeit schiebe ich den Inhalt einer weiteren Platte hin und her um diese auch noch in die Drobo schieben zu k├Ânnen (1.5Tb), damit w├Ąre der Verf├╝gbare und “gesicherte” Platz bei 2.3 Tb.

Beim hinzuf├╝gen von Platten braucht die Drobo immer eine Weile (erstes Relayout hat bei mir etwas ├╝ber 24h gedauert). Auch sollte man nicht vergessen das die Platte formatiert wird sobald man diese hinzuf├╝gt!

Bis jetzt habe ich nur Daten auf die Drobo geschrieben, ├╝ber USB geht dies wunderbar (FireWire800 ist auch vorhanden). Tempo ist bei ca 20-30Mb/s schreiben, sowie der “gelbe” Bereich erreicht ist bel├Ąuft es sich auf 1-2Mb/s um auf den mangelnden Speicherplatz hinzuweisen. Um dann eine weiter Platte hinzuzuf├╝gen muss man diese nur in die Drobo schieben, keine Unterbrechung der Verwendung bzw bestehender Kopiervorg├Ąnge! ­čÖé

Alles in allem bin ich mit meiner Drobo bis jetzt zufrieden. Es st├Ârt zwar keine LUN’s mit mehr als 2 TB anlegen zu k├Ânnen aber es ist angenehm das hier 2Tb = 2024Gb verwendet wird! Beim Auspacken bekommt man das gef├╝hl etwas besonderes zu sein – Fotos sind unten. ├ťber die DroboShare kann ich derzeit leider nichts schreiben da ich diese noch nicht verwende (im Studentenheimnetzwerk eh irgendwie sinnlos)

Uncategorized

Update to the limit

Vorgestern habe ich auf Ubuntu 10.04 geupdated. Mit dem Befehl do_release_update -d geht es leider noch nicht, daf├╝r ist Ubuntu Lucid in einem zu fr├╝hem Stadium. So gehts aber trotzdem:

sudo sed -i ‘s/karmic/lucid/g’ /etc/apt/sources.list

sudo aptitude update

sudo aptitude dist-upgrade

Von den angek├╝ndigten ├änderungen (OpenOffice 3.2, schnelleres Booten) merkt man noch nicht viel, allerdings l├Ąuft KDE 4.3.3 bereits auf QT 4.6 – freue mich schon wenn all diese Neuerungen tats├Ąchlich umgesetzt sind.

Bei Cyanogenmod 4.2.5 gabs nicht viel neues – bestes Feature ist derzeit das USB Tethering. Einfach am PC anstecken uns “lossurfen”.

Seit gestern habe ich nun auch Google Navigation auf meinem Android laufen. Geht wunderbar und macht echt Spass ­čÖé

Uncategorized

SSD am Morgen vertreibt alle Sorgen

Letzte Woche entschied ich mich meinen Laptop (Sony VAIO VGN-FE31M) mit einer SSD Platte auszustatten. Die Wahl fiel dabei auf die Crosair S128 SSD mit 128Gb. Diese Woche Donnerstag war sie da. Bei dieser Gelegenheit installierte ich auch Kubuntu neu, gleich mit der 9.10 Alpha3.

Der Einbau ging wunderbar, die neue SSD ist etwas d├╝nner als die “alte” Platte die drinnen war (Futjitsu mit 5400rpm) und vor allem leiser!

Die Installation von Kubuntu verlief einwandfrei. Die SSD habe ich folgenderma├čen partitioniert: 512Mb Boot, 15Gb Windows, 15Gb Root, Rest Home.

Die Installation ging flott, und das Starten war ein Wahnsinn :D. Ein/Aus Schalter bis Login Screen 19Sek wobei hier die Wartezeit von Grub2 dabei ist.

In Kubuntu selbst sind die Zeiten f├╝r ein apt-get install super. Bei Zugriffen auf meine Verschl├╝sselten Partitionen ist nun nicht mehr die Festplatte sondern der Prozessor der Flaschenhals.

Wie sich mein Umstieg auf den “Privaten” Ordner bei Kubuntu auswirken wird wei├č ich noch nicht. Wird wohl aber schneller als Truecrypt sein! (Kopieren von einem Truecrypt Volume in einen Privaten Ordner dauert wirklich lange…)

Uncategorized

Ubuntu Boottime

Gestern habe ich einen netten Tip bekommen wie ich mein Ubuntu schneller starten lasse. Folgendes muss umgestellt werden:

Datei: /etc/init.d/rc

CONCURRENCY=none

auf

CONCURRENCY=shell

umstellen.

Die ├änderungen habe ich mit bootchart beobachtet – dieses zeigt den Bootvorgang an.