AdoDBRecord updated to version 0.4

This update of AdoDBRecord adds many functions like STI, testing framework, compatibility to both PHP4 and PHP5, inflectotion framework and inflectors, and some more.

Read more in the wiki…

Advertisements

SecurePoint Appliances: Paßwort zurücksetzen

Aktuelle SecurePoint-Appliances bringen nicht mehr die Standard-Linux-Umgebung mit Befehlen wie „passwd“ und ähnlich mit sich. Hier das Paßwort zurückzusetzen gestaltet sich als schwierig; hinzukommt, daß die kleineren Appliances keinen Monitor- und Tastaturanschluß besitzen und zudem von CompactFlash booten. Der serielle Anschluß gibt zwar die Linux-Konsole aus, jedoch erst, wenn der Kernel läuft. Um die Paßwörter der Datenbank ändern zu können, muß man jedoch die Appliance im Restore-Mode booten – außer man möchte seine Konfiguration verlieren. In letzterem Fall kann man natürlich per Rescue-Image neu installieren.

Das wollte ich allerdings nicht (war relativ aufwändig und gewachsen). Der Trick war, die CF-Karte auszubauen und in einen USB-Kartenleser einzubauen. Als nächstes benötigt man VirtualBox. Man richtet nun in VirtualBox ein virtuelles Festplatten-Image mit Verweis auf ein echtes Device ein. Das geht allerdings nicht über die GUI. Deshalb wechselt man ins Verzeichnis ~/.VirtualBox/VDI und gibt nun dort folgenden Befehl ein:

VBoxManage internalcommands createrawvmdk -filename "SecurePointDisk1.vmdk" -rawdisk /dev/sdc -register

„/dev/sdc“ ist hier durch das Device der eingelegten CF-Karte zu ersetzen. Da dies in der Regel nur als „root“ zugreifbar ist, muß man entweder VirtualBox als root starten (würde ich nicht machen) oder den Eigentümer des Devices mittels „chown“ auf den eigenen User umbiegen (würde ich empfehlen). Wichtig ist: Keinesfalls die CF-Karte irgendwie mounten!

Nun legen wir eine virtuelle Maschine über die VirtualBox-GUI an. Dort verbinden wir den „Primary Master“ mit der eben angelegten „SecurePointDisk1“. Weiter dürfen keine IDE-Geräte verbunden werden – auch keine CD. Das Image booten wir nun. Nun geht es größtenteils nach Leitfaden von SecurePoint weiter:

Im Grub-Menü muß der zweite Menüpunkt („change configuration“) gewählt werden. Aber bitte noch nicht starten, sondern erst mit Tastendruck auf „e“ editieren. Am Ende der Kernelzeile müssen wir den Primary Master auf den Secondary Master umbiegen, da sich dieser nicht in VirtualBox verbinden läßt, SecurePoint hier aber die CF-Karte erwartet. Dazu ergänzen wir folgendes:

„ide0=0x1e8,0x3ee,14“ (brauchen wir gleich noch einmal)

Nun eine Leerzeile am Ende der Liste anfügen und in dieser Ctrl+X drücken. Das Image bootet nun. Der Name der zu bootenden Konfiguration ist „none“. Den Namen der anderen Konfiguration bitte notieren – wir brauchen ihn gleich. Wahrscheinlich heißt sie „wizard“. Nun die Konfiguration „none“ booten. Die Appliance ändert die Boot-Parameter und startet neu. Diesmal den ersten Grub-Menüpunkt booten – nicht vergessen, wieder den Parameter „ide0=…“ zu ergänzen.

Am Ende des Boot-Vorgangs dauert es ggf. ein paar Sekunden, bis die Netzwerk-Geräte konfiguriert sind – kurz warten also, es stört sonst die Eingabe. Jetzt mit User „admin“ und Paßwort „insecure“ anmelden. Man befindet sich nun auf der CLI.

Hier kann mit dem Befehl „config load“ die richtige Konfiguration geladen werden, das Paßwort nach Anleitung von SecurePoint mit „change user“ geändert werden (für „admin“) und die Konfiguration anschließend gespeichert („config save“) und als aktiv gesetzt („config set“) werden.

Jetzt kann die Appliance mit „reboot“ neu gebootet werden und wir lassen sie zum Test einmal komplett in VirtualBox hochfahren (bitte wieder „ide0=…“ ergänzen) und versuchen uns einzuloggen. Alles sollte nun wieder klappen und wir können VirtualBox beenden und die Karte wieder im Gerät einbauen.

AdoDBRecord updated to version 0.3

This update to AdoDBRecord incorporates a convenience method update_attributes() which updates and saves the record comfortably in one pass and returns the result of save() back to the caller.

Read more in the wiki…

Ehemaligenfest an der CvO

Am 2. Oktober 2008 findet um 19 Uhr am Bremerhavener Oberstufengymnasium „Carl von Ossietzky“ das dritte Ehemaligenfest statt. Noch bin ich mir nicht schlüssig, ob ich hingehe. Aber ehemalige Schuldkameraden dürfen mich in der Kommentarfunktion gern davon überzeugen. 😉

Flyer-Download

Veröffentlicht in Feste, Freunde, Schule. Leave a Comment »

AdoDBRecord updated to version 0.2

AdoDBRecord has been updated to version 0.2. This update incorporates delete(), destroy() and create() methods and thus makes it more usable.

Read more in the wiki…

ActiveRecord look-alike written in PHP using AdoDB

Since I developed with Rails using the ultra-comfortable ActiveRecord I felt the need for a similar solution in PHP. Googling around I found some people saying this is impossible. That’s true: Ruby’s OOP implementation is in many ways superior to PHP’s.

But anyway I decided: Some of ActiveRecords comfort must be possible in PHP. I’ve decided to build on AdoDB for PHP since it already does the heavy lifting of database abstraction very good.

The interface is currently very limited and should be very self explanatory. For all interested hackers I’ve set up a git repository at GitHub and would be very interested on your feedback.

This project grew out of the need to ease up database development in an already existing legacy application. It’s not meant as an exact ActiveRecord replacement in PHP – just similar in convenience.

Just follow this link: http://github.com/kakra/adodbrecord/

Ruby-Scripte mittels FCGI unter Lighttpd ausführen

Im Netz habe ich nach einer längeren Google-Recherche endlich einen universellen FCGI-Wrapper für Ruby-Scripte gefunden. Meistens stößt man nur auf Rails-Lösungen, aber das war einfach Overkill in diesem Fall. Ich wollte einfach nur ein kleines Script, daß Query-Parameter einem Kunden zuordnet und mittels ActiveRecord in eine Tabelle schreibt. Anschließend sollte ein ActionMailer noch eine Mail versenden. Gestoßen bin ich letztenendes auf folgende Seite:

FastCGI Ruby dispatcher:

There was always Ruby on Rails, but I didn’t want an application server, just applications. To that end, I created a very lightweight FastCGI server that executes Ruby scripts referenced by lighttpd directly in a binding context that only imports the CGI object for the request. (Derrick Pallas)

Also genau das, was ich haben wollte. Funktionierte auch auf Anhieb prima. Aber nur der erste Aufruf liefert die Parameter wirklich an mein Script aus. Beim zweiten Aufruf bleibt der Parameter-Hash leer. Das ist der Codeschnippsel bisher:

#!/usr/bin/env ruby

puts cgi.header

require 'yaml'
require 'rubygems'
require 'active_record'
require 'action_mailer'

[...]

ActiveRecord::Base.logger = Logger.new(STDERR)
ActiveRecord::Base.colorize_logging = false

config = YAML.load_file('.../database.yml')
ActiveRecord::Base.establish_connection(config['...'])

params = cgi.params.select { |q,| %w{system keyword udh smstext absender time client}.include? q }
params = Hash[*params.flatten]

[...]

Einige Dinge hab ich jetzt mal bewußt weggelassen und nur das grundsätzliche Gerüst übergelassen. Sobald ich den Bug – falls es einer ist – gelöst habe, erscheint hier nochmal Feedback. Außerdem stellt sich mir noch die Frage, ob der FCGI-Wrapper so in dieser Weise wirklich einen Performance-Gewinn darstellt. Immerhin läd er die FCGI-Klasse im Voraus und hält einmal geöffnete Scripte als MMap-Objekte bereit. Der eigentliche Boot-Vorgang des Scripts (ActiveRecord initialisieren) wird aber jedes Mal ausgeführt. Hier ist Rails dann eben doch spezialisierter.

Veröffentlicht in FastCGI, Lighttpd, Ruby. 1 Comment »