Kategorie: Snippets

12.10.08

Clean URLs with lighttpd

To get clean URLs (e.g. for permalinks) in Lighttpd, you have to use the magnet module (lighttpd-mod-magnet in Ubuntu/Debian), and a Lua script.

I've created a file /etc/lighttpd/rewrite-to-docroot.lua:

if (not lighty.stat(lighty.env["physical.path"])) then
    lighty.env["physical.path"] = lighty.env["physical.doc-root"] .. "index.php"
end

And enabled it using:

magnet.attract-physical-path-to = ("/etc/lighttpd/rewrite-to-docroot.lua")

This simulates the following mod_rewrite snippet known from Apache:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Previously I was using a tricky method, which would use the 404 handler ("server.error-handler-404 = /index.php"), but this caused missing GET params (as documented in the Lighttpd FAQ).
As a result, paged browsing of categories and tags wasn't possible.

16.02.08

Launch a webserver in the current directory

Use case: you want to start a webserver in a given directory, to serve some files from there temporarily.

How many lines of code do you need (including editing config files) to start a webserver in the current directory?

The best answer is probably "one":
python2 -m SimpleHTTPServer

For Python 3:
python3 -m http.server 8000

(via comment in "15 Line HTTP server").

Python (with batteries, like web server interfaces, included) is just awesome :)

By Daniel in development, Snippets2008-02-16 English (EU) Email

20.12.07

Binäres Debian-Paket manipulieren

Ich hatte gerade den Fall, wo die Abhängigkeiten/Meta-Informationen zu einem Debian-Paket nicht wirklich passten (aufgrund eines Bugs).

Eine Möglichkeit, dies zu beheben wäre gewesen, sich das Quellpaket für das Paket zu holen, die Anpassungen vorzunehmen und es neu zu bauen.

Unglücklicherweise handelt es sich aber um ein ziemlich grosses Quellpaket (linux-restricted-modules-2.6.24, etwa 100MB) und es würden beim Bauen auch alle anderen binären Pakete gebaut (nicht nur nvidia-glx-new).

Also hab ich stattdessen das binäre Paket direkt editiert. Und das ging so:

dpkg-deb -x foo.deb foo-new
dpkg-deb -e foo.deb foo-new/DEBIAN
[...edit...]
dpkg-deb -b foo-new

Zuerst wird foo.deb (bzw nvidia-glx-new_100.14.19+2.6.24.2-2.7_i386.deb) ins Verzeichnis foo-new entpackt. Dann die Steuer-Informationsdateien dazu ("dpkg-deb -e"), ins Unterverzeichnis DEBIAN.
Nun habe ich foo-new/DEBIAN/control angepasst und dann ein neues Debianpaket mittels "dpkg-deb -b foo-new" erstellt und dann mittels "dpkg-deb -i foo-new.deb" installiert.

Ging insgesamt (inklusive Bloggen^WDokumentation) weitaus schneller, als alle Pakete in linux-restricted-modules neu zu bauen und dann nur das gefixte zu installieren.

Von Daniel in Ubuntu, Debian, Snippets20.12.07 German (DE) E-Mail
Schlagworte: , ,

05.11.07

Einmalige Eingabe der SSH-Passphrase bei Verwendung

Vor einiger Zeit habe ich ein gutes Alias für "ssh" gefunden, welches es erlaubt, eine SSH-Key-Passphrase nur einmal einzugeben - und zwar genau dann, wenn sie benötigt wird (und nicht bei jedem Login).

Setup (z.B. in ~/.bash_profile):

alias ssh='if ! ssh-add -l >/dev/null 2>&1; then ssh-add; fi; ssh'
keychain
. ~/.keychain/$HOSTNAME-sh
. ~/.keychain/$HOSTNAME-sh-gpg

keychain ist in jeder guten Distribution enthalten. Stattdessen kann man aber natürlich auch direkt ssh-agent/gpg-agent verwenden/laden.

Von Daniel in Security, Debian, Snippets05.11.07 German (DE) E-Mail
Schlagworte: , ,
Seitenleiste