Kategori Sprachen

SimpleHTTPServer mit PHP

Dienstag, August 4th, 2015

Heute wollte ich mir mal eben schnell Vorschaubilder auf einem Server anzeigen lassen. Der PHP Code war schnell geschrieben:

read())) {
   echo " ".chr(10);
}

$d->close();
?>

Dann die Frage wie man ohne Webserever an die Daten harren kommt. Einfachste weg ist der in Python integrere Webserver:
python -m SimpleHTTPServer 8000

Diese kann aber kein PHP. Da php5-cli in der Version >= 5.4 installiert war funktionierte folgende spannende Lösung:
php -S 127.0.0.1:8000 -t .

Quelle: docs.python.org simplehttpserver, php.net commandline.webserver

PHP7 ein Test wert…

Samstag, Juli 18th, 2015

Aktuell ist die Beta1 von PHP7 veröffentlicht. Da Sie zum php5.2 abwärts kompatible ist funktioniert auch das meiste. Auf unterschiedlichen Seiten kann man sich jetzt schon Statistiken über den Speicher und CPU verbrauch anschauen, welche tatsächlich beeindruckend sind.
Wo es natürlich knallt ist die Kompatibilität zu php4 so sind mir folgende beiden Problem bereits untergekommen:

$var =& new $ojeckt()
Geht nicht da kann man das & einfach streichen. Dies war für php4 zwingen erforderlich und war schon im 5 nur noch abwärts kompatible.

split muss nun durch explode ersetzt werden. Dies gilt seit PHP 5.3.0 als DEPRECATED.

Weitere Tests folgen…

observe – Tier und Pflanzen beobachten mit dem Raspberry Pi

Montag, Juni 1st, 2015

Für den Einstieg in Zeitrafferaufnahmen mit dem Raspberry Pi, habe ich mit Hilfe von dialog und bash ein nettes „graphisches“ Tool geschrieben, mit dem man Langzeitbeobachtungen einfach konfigurieren und abschließen zu einem Video rendern kann.

observe

Um auf dem Raspberry nicht so viel tippen zu müssen habe ich eine schnell Installations-Skript geschrieben:

wget -O - istoph.de/observe|sudo bash

Hierbei wird mein Repository inklusive Key installiert anschließend das Paket observe aus meinen Quellen. Nach der Installation kann man das Programm observe über die Kommentarzeilen aufrufen.

[Update 30.08.15]
Der Sourcecode steht jetzt auch auf github: github.com/istoph/observe

ssllabs overall rating zabbix check

Dienstag, Februar 3rd, 2015

Aktuell kann man fast jede Woche auf ssllabs.com nachschauen, ob das „rating“ einer Webseite mal wieder gefallen ist, einer der Server falsch konfiguriert ist oder einfach nur vergessen wurde Dienste neu zu starten. Um dies zu automatisieren hat ssllabs endlich eine api im development Modus freigeschaltet.

zabbix-check-ssllabs
Schade das in der api kein Feld ohne das trusted flag hinterlegt ist, so bekomme ich mit meinem CACert leider immer nur ein T.

Ich habe das mal für den Zabbix gescriptet. Alles was man braucht ist folgende ausführbare Datei im Ordner /etc/zabbix/externalscripts/zabbix-check-ssllabs.sh

#!/bin/bash
domain=$1
if [ "$domain" = "" ]; then
	exit 1
fi

tmp=$(mktemp)
#TODO: trap
wget -q -O $tmp "https://api.dev.ssllabs.com/api/fa78d5a4/analyze?host=$domain&publish=On&clearCache=On&all=done"
sed 's/,/\n/g' $tmp | grep grade | awk -F '"' '{print $4}'
rm $tmp

Und natürlich ein Schema das man im Zabbix importieren muss:
(mehr …)

dns sshfp record für alle Algorithmen gleichzeitig erstellen

Freitag, Januar 9th, 2015

Wie ich schon vor einigen Jahren geschrieben habe, kann man die SSH fingerprints im DNS hinterlegen, um SSH Verbindungen zu validieren.

# dig -t sshfp blog.chr.istoph.de
;; ANSWER SECTION:
blog.chr.istoph.de. 7199 IN SSHFP 1 1 D931B1124CC5DA23DB2131C62BA9D286081E3EA7
...

Dafür hinterlegt man die Secure Hash Algorithm (SHA) Summen im DNS:
ssh-keygen -r blog.chr -f /etc/ssh/ssh_host_rsa_key.pub
blog IN SSHFP 1 1 d931b1124cc5da23db2131c62ba9d286081e3ea7
blog IN SSHFP 1 2 0fe30bacf0833a9051a74cec431af450ceeca4171b3da5bf0550ada55adadbfa

Jetzt gibt es aber neue Algorithmen die in SSH Einzug erhalten haben.
1: RSA
2: DSA
3: ECDSA
4: ED25519

Da man mit ssh-keygen immer nur einen Key haschen kann und die neue Kurve ED25519 noch nicht von Ubuntu 14.04. unterstützt wird siehe Beispiel:
ssh-keygen -r blog.chr -f /etc/ssh/ssh_host_ed25519_key.pub
export_dns_rr: unsupported algorithm and/or digest_type

So habe ich mir ein Skript geschrieben, das mir alle Fingerprints auf einmal erstellt.

#!/bin/bash

domain="$1"

if [ "$domain" = "" ]; then
	echo $0 domain
	exit 0
fi

function sshfp() {
	a=$1 #algorithmus
	f=$2 #file
	echo $domain IN SSHFP $a 1 $(awk '{print $2}' $f|base64 -d|sha1sum|awk '{print $1}')
	echo $domain IN SSHFP $a 2 $(awk '{print $2}' $f|base64 -d|sha256sum|awk '{print $1}')
}

for f in /etc/ssh/ssh_host_*_key.pub; do
	case "$(echo $f|awk -F '_' '{print $3}')"
	in
	  rsa)
		sshfp 1 $f
		;;
	  dsa)
		sshfp 2 $f
		;;
	  ecdsa)
		sshfp 3 $f
		;;
	  ed25519)		
		sshfp 4 $f
		;;
	esac
done | sort

Die Ausgabe sieht dann folgendermaßen aus:
(mehr …)