All posts by Florian Wiessner

EBICS Client ( ebics_client.class.php)

[update 27.01.2016]

Nun also doch kommerzielle Version – Infos etc. findet Ihr hier: PHP EBICS Client

[/update]

endlich hab ich es fertiggebracht.. nach 11 langen Tagen coding, debugging und studieren der überaus umfangreichen und noch dazu auch fehlerhaften EBICS Dokumentation konnte ich nun endlich einen EBICS Client in php fertigstellen, der zumindest mit meiner Sparkasse einwandfrei funktioniert 😉 Im Moment kann der Client die folgenden Auftragsarten: INI, HIA, HPB, HKD, HTD, CDD (Sepa Lastschrift), CCT (Sepa Überweisung), CDB (Sepa B2B Lastschrift), IZL, IZV, STA, PTK. Eine Klasse zum Erzeugen der SEPA PAIN Nachrichten habe ich auch schon gebaut.

Aktuell bin ich noch am überlegen, ob ich den Client unter der GPL veröffentlichen soll oder nicht… Da es kommerzielle Anbieter gibt, die relativ simple EBICS Tools (z.b. nur für Upload, nur für Signatur) für enormes Geld anbieten (EBICS Tool für Upload und Signatur für 7.000 €!!!) muss ich da jetzt erst mal ein paar Nächte drüber schlafen…

Debian wheezy isc-dhcp-server with mysql support / dbi support für debian Squeeze howto

Hier http://blog.alex.org.uk/2011/02/25/adding-sql-support-to-dhcpd-part-3/ gibt es einen Patch für ISC DHCP Server 4.2 welcher auch für den isc dhcp server in debian wheezy (4.2.2) funktioniert. Um dieses als .deb Paket für debian squeeze zu bauen braucht es folgendes:

1. /etc/apt/sources.list Zeile hinzufügen:

deb-src http://ftp2.de.debian.org/debian/ wheezy main

apt-get update

cd /usr/src

apt-get source -t wheezy isc-dhcp

wget http://blog.alex.org.uk/wp-uploads/dhcpd-dbi-20110202-01.patch

cd isc-dhcp-4.2.2.dfsg.1/

patch -p1 <../dhcpd-dbi-20110202-01.patch

in debian/rules

“–with-dbi” hinzufügen in Zeile 49 und 77

dpkg-buildpackage

cd ..

dpkg -i isc-dhcp-common_4.2.2.dfsg.1-5+deb70u2_amd64.deb

dpkg -i isc-dhcp-server_4.2.2.dfsg.1-5+deb70u2_amd64.deb

 

SEPA PAIN! – Ich weiss jetzt warum die Nachrichten PAIN genannt wurden! ;)

 

Ich bin gerade dabei für meine Firma SEPA Lastschrift zu implementieren. Die nur 498 Seiten umfassende SEPA Dokumentation ist schon ein dicker Brocken, aber wenn man dann dabei ist SEPA XML PAIN Nachrichten zu schreiben, merkt man warum es Pain verursacht. Zum einen hat eine Definition in pain.008.002.02 für eine Lastschrift “nur” ca schlappe 130 Zeilen, damit nicht genug, das was mir am meisten Kopfzerbrechen bereitet sind die meiner Meinung nach absolut kranken Tagnamen:

	<CstmrDrctDbtInitn>
		<GrpHdr>
			<MsgId>MSG509d885febf476.43480101</MsgId>
			<CreDtTm>2012-11-09T23:49:03+01:00</CreDtTm>
			<NbOfTxs>1</NbOfTxs>
			<InitgPty>
				<Nm>Smart Weblications GmbH</Nm>
			</InitgPty>
		</GrpHdr>
		<PmtInf>
			<PmtInfId>Payment-ID</PmtInfId>
			<PmtMtd>DD</PmtMtd>
			<NbOfTxs/>
			<CtrlSum>10</CtrlSum>
			<PmtTpInf>
				<SvcLvl>
					<Cd>SEPA</Cd>....

 

Wenn man schon einen Standard erstellt und Tags frei wählen kann, warum nennt man die Tags dann nicht einfach so wie sie heissen? Ist CstmrDrctDbtInitn wirklich “kürzer” oder effizienter als CustomerDirectDebitInitiation? Wenn man das XML nur lesen muss mag das egal sein, wenn man es aber schreiben muss, aua! Sich die kryptischen Variablennamen merken zu müssen – es könnte so einfach sein, wenn diese einfach ausgeschrieben wären!

– So, das wars, Frust abgebaut, weiter gehts 😉

 

Ein Freemail Anbieter der per E-Mail nicht zu erreichen ist…

Eigentlich sollte man meinen, dass gerade ein Anbieter für kostenlose E-Mail Accounts seinen Usern eine einfache Möglichkeit bieten könnte, via E-Mail erreichbar zu sein. Das ist aber leider fernab der Realität wie ich kürzlich schmerzhaft feststellen musste. Ein in .de tätiger Freemail Anbieter schafft es wirklich auf höchst kreative Art und Weise sich so von der Aussenwelt abzuschotten, dass wohl nicht einmal Ray Tomlinson, der Erfinder der E-Mail, eine Chance hätte, sich bei diesem rießigen Freemail Anbieter elektronisch Gehör zu verschaffen.

Das Problem bei diesem Freemail Anbieter mit drei Buchstaben war, dass es der verwendete Amavis bzw. Spamassassin wohl etwas zu sehr genau mit Mails von unseren Mailservern nahm, und deshalb prompt jede E-Mail von unseren Mailserver als Spam markierte. Kurz – es lag ein Konfigurationsproblem vor oder aber wir wurden geblacklisted. Ich habe daher versucht, irgendwo auf der Webseite Informationen für Postmaster zu finden, was nun zu tun sei. Das Kontaktformular versteckt sich hinter der FAQ für Anwender ganz am Ende der Seite – ich habe es nicht selbst gefunden (ich würde ein Kontaktformular auch nicht verlinkt in der FAQ erwarten, es ist mir unklar warum nicht direkt auf der Seite in der Navigation ein Link zum Kontaktformular existiert). Ich habe stattdessen die 0900er Hotline angerufen. Das erste mal nach ca 2 Minuten – einfach Gespräch weg, das zweite mal nach ähnlicher Zeit, wieder Gespräch weg – das dritte mal habe ich dann auf einer 0180er Nummer angerufen. Das Voice System dort hat mir wieder eine 0900er Nummer genannt – diesmal aber eine andere. Ich habe auch dort angerufen, die Ansage sagte 0,14 EUR / Minute (wahrscheinlich ein Fehler, mir scheint dass deren Asterisk genauso kaputt ist wie deren Spamassassin), nach ca. 10 Minuten Warteschleife (ich dachte diese muss seit neuestem in .de kostenfrei sein?) habe ich dann endlich jemanden am Telefon.

Ich erkläre dass ich keine Endkunde bin, sondern ein anderer ISP, dessen User einfach nur an die User des Freemail Anbieters E-Mails zustellen wollen. Nach Rückfrage mit dem Teamleiter erklärte man mir, ich müsse in das FAQ auf der Webseite unter “Anwender FAQ” ein Kontaktformular finden – Glückwunsch, das Alles hat insgesamt nur knapp eine halbe Stunde gedauert!

Was ich dennoch überhaupt nicht nachvollziehen kann – warum gibt es nicht einfach eine ganz normale E-Mail Adresse support@? Das sollte doch für einen Freemailanbieter eine Kleinigkeit sein, den Kunden wenigstens halbwegs unkompliziert Support zu bieten. Echt erbärmlich, ein Armutszeugnis, oder aber Beweis für die Servicewüste Deutschland.

Network controller: Device 1ae7:0520 – X-Tensions XC-520 PCI ISDN Adapter unter Linux mit dahdi

Bei Amazon gibt es aktuell für 5,90 € die X-Tensions XC-520 ISDN Karte (PCI 32 Bit, 3.3 Volt geeignet). Diese ISDN Karte ist mit HFC-PCI Chip ausgestattet und ist daher für Asterisk eigentlich geeignet. Das Problem ist jedoch, dass im Linux Kernel für diese Karte keine PCI-Device IDs hinterlegt sind. Auch die aktuellen dahdi-hfcs Treiber haben für diese Karte keine PCI Device IDs hinterlegt. Folglich kann man zwar den Treiber laden, aber die Karten werden nicht initialisiert.

Folgender Patch für dahdi-hfcs schafft hier Abhilfe:

— hfcs/base.c~        2012-07-21 19:13:41.000000000 +0200
+++ hfcs/base.c 2012-07-21 19:15:03.000000000 +0200
@@ -122,6 +122,9 @@
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{PCI_VENDOR_ID_DIGI, PCI_DEVICE_ID_DIGI_DF_M_A,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+       {PCI_VENDOR_ID_DIGI, PCI_DEVICE_ID_DIGI_DF_M_A,
+               0x1ae7, 0x0520, 0, 0, 0},
+
{PCI_VENDOR_ID_SITECOM, PCI_DEVICE_ID_SITECOM_3069,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{0,}

Danach lässt sich dahdi_hfcs ganz normal mit den ISDN Karten verwenden.

 

KVM VServer Vergleich – Profitbricks vs. Xirra vs. Smart Weblications KVM

Da ich gerade Zugriff auf mehere Virtuelle Server (KVM virtualisiert) habe, habe ich mal fix ein paar Tests gemacht um die Performance der Systeme zu vergleichen.

Die technischen Daten:

profitbricks: 1 Core, 1GB RAM, 25GB HDD 33,40 € / Monat
xirra: 1 Core, 512MB RAM, 40GB HDD 4,90 € / Monat
Smart Weblications: 1/4 Core, 256MB RAM, 10GB HDD – 4,90 € / Monat

Betriebssystem jeweils Debian 6.0 64bit.

Ich habe einfach den aktuellsten Linux Kernel (3.5.1) geholt, und gemessen wie lange jede KVM zum Entpacken sowie zum Compilen braucht, hier die Ergebnisse:

Bei Profitbricks sind die Systeme zweifach redundant aufgebaut. Ich habe in meiner Testphase dennoch einen Ausfall von ca einer Stunde gehabt. Die KVMs liefen zwar, aber Disk-IO war nicht möglich, das Disk-Subsystem war wohl abgestürzt. Smart Weblications setzt ceph als Storage Backend ein welches mehrfach redundant aufgebaut ist. Bei Smart Weblications können die KVMs im Fehlerfall live auf einen alternativen Host migrieren – der User merkt hiervon nichts. Sollte doch ein kompletter Host ausfallen, z.B. durch Hardwaredefekt, dann werden die KVMs bei Smart Weblications sofort auf einem anderen Host neu gestartet. Da die Systeme sehr schnell booten (default Install 120Sek, Reboot/Boot ca. 15 Sek) ist die Downtime sehr gering. Xirra bietet kein HA an.

Auf der Webseite von Profitbricks steht zwar, dass man sich anmelden und kostenlos testen kann, in Echtzeit wie bei Smart Weblications geht dies jedoch nicht. Xirra bietet keine Testlaufzeit an. Von den Preisen her sind xirra.net sowie smart-weblications relativ ähnlich, xirra.nets günstigster VServer hat etwas mehr RAM und Plattenplatz, ist aber von der CPU her etwas langsamer als Smart Weblications. Profitbricks ist mit über 30 € / Monat und der langsamen CPU sehr teuer.

Ergebnisse:
xirra
time tar -xvjf linux-3.5.1.tar.bz2
real    0m50.216s
user    0m15.369s
sys     0m2.196s
root@130-185-104-xx:/usr/src#

time apt-get -y install build-essential 
real    0m30.203s
user    0m0.992s
sys     0m0.772s
root@130-185-104-xx:/usr/src/linux-3.5.1#

time make
real    56m45.931s
user    47m27.670s
sys     4m42.290s
root@130-185-104-xx:/usr/src/linux-3.5.1#

time make modules_install
real    2m10.658s
user    0m3.052s
sys     0m2.148s
root@130-185-104-xx:/usr/src/linux-3.5.1#
profitbricks
time tar -xvjf linux-3.5.1.tar.bz2

real    0m39.253s
user    0m30.580s
sys     0m4.120s
root@profitbricks:/usr/src#

time apt-get -y install build-essential 
real    0m29.856s
user    0m4.760s
sys     0m3.260s
root@profitbricks:/usr/src/linux-3.5.1#

time make
real    106m13.465s
user    88m54.050s
sys     8m45.620s
root@profitbricks:/usr/src/linux-3.5.1# 

smartweb
time tar -xvjf linux-3.5.1.tar.bz2
real    0m29.412s
user    0m13.813s
sys     0m1.744s
root@kvm00000000542:/usr/src#

time apt-get -y install build-essential 
real    0m27.875s
user    0m3.184s
sys     0m1.232s
root@kvm00000000542:/usr/src/linux-3.5.1#

time make
real    53m16.430s
user    44m26.715s
sys     4m5.187s
root@kvm00000000542:/usr/src/linux-3.5.1#

time make modules_install
real    2m38.441s
user    0m5.756s
sys     0m2.932s
root@kvm00000000542:/usr/src/linux-3.5.1#

E-Mail Encoder – mailto Links vor Spam-Crawlern schützen

Weil es doch öfter mal vorkommt, dass man in Webseiten mailto Links einbauen möchte und man meist
vermeiden will, dass die E-Mail Adressen von Spam-Crawlern erfasst werden gibt es hier mehrere Möglichkeiten dem entgegenzuwirken.

Weit verbreitet scheint das verschlüsseln der Mail-Adresse mittels Java-Script. Dies hat jedoch den Nachteil, dass der Browser Java-Script aktiviert haben muss. Gutes Webdesign sollte Java-Script nicht vorraussetzen. Man kann auch die E-Mail Adresse im mailto-Link durch dezimale HTML Entitäten darstellen, so dass diese im Browser ganz normal angezeigt werden und der mailto Link auch vom User benutzt werden kann, der E-Mail Harvester sieht jedoch nur HTML und kann daher die Adresse nicht parsen.

Den Encoder kann man hier testen.

Hier die zugehörige PHP-Funktion:


function spamschutz($email,$href = true) {
$returnemail=preg_replace( "/(.)/se", " '&#' . ord( '\\1' ) . ';' ", $email );
if ($href) {
return "$returnemail";
} else {
return $returnemail;
}

}