30. November 2005

Typo3 Form Mail Attachment Max Size

Eigentlich ist Typo3 ja unglaublich toll und man kann alles einstellen. Aber man entdeckt doch immer wieder Stellen, wo einer (in diesem Fall Kasper :-) faul war. Die maximale Grösse von Attachments von Form-generierten Emails ist im Code nicht einstellbar festgelegt.

Wenn man also ein Formular hat, dass eine Email schickt mit allen Eingabewerten und dabei ist ein HTML-File-Upload Feld (Element type: File upload), dann ist das in Typo3 3.8.x beschränkt auf ca. 250 KB. Grössere Files wirft er einfach weg, ohne etwas zu sagen, was nicht nett ist. Aber wenn es nicht gefällt, muss man es ja nicht benutzen oder selbst ändern. Ist ja Open Source. Also ändern wir selbst.

Änderungen der allgemeinen Typo3 Konfiguration (All Configuration) bringen nichts, da die [BE][maxFileSize] = 50000 etwas ganz anderes ist.

typo3_src-3.8.1/t3lib/class.t3lib_formmail.php
In Zeile 142:

if (filesize($theFile) < 250000) {

Ändern in:

if (filesize($theFile) < 1500000) {

für max 1,5 MB

_happy_coding()

28. November 2005

Kanzlerin Janeway



Gestern im Fernsehen 2 Frauen vor einer grossen Aufgabe. Beide müssen 2 Mannschaften zu einer schmieden. Die eine im Delta Quadranten, die andere in der Tagesschau.

Die eine: "We have no idea of the dangers we're going to face, but one thing is clear, both crews are going to have to work together if we're to survive. That's why Commander Chakotay and I have agreed that this should be one crew to seek out new worlds and to explore space."

Die andere: "Eine große Koalition, die wir jetzt schmieden wollen, bietet die Voraussetzung dafür, diese Aufgaben gemeinsam anzugehen. Und ich glaube, dass wir das vielleicht auch nur gemeinsam schaffen können."

21. November 2005

Social Software

Grade einige Artikel über sogenante "Social Software" gelesen. Der Begriff taucht im Moment ständig auf. Software, die so gelabelt wird ist schon deshal Hype-verdächtig. Der Gründer von Netscape hat einen Teil seines Kapitals in eine Firma gesteckt, die eine Plattform für Social Software herausbegracht hat. Toll. Wenn man dann genau hinschaut ist es eine Plattform mit der man eine Kombination von Flickr, OpenBC, Bookmark Sharing und Foren erstellen kann. Toll.

Social Software ist im Durchschnitt so social, wie Live-Cams live waren in der Frühzeit des Internets. Wir erinnern uns: alle 15 Minuten ein neues JPEG-Bild. Super Live. Dass wir bei der Internet Modellbahn eine echte Live Cam hatten, bei der Live auch live bedeutet, also live im Sinne von live, glaubte keiner. Alle hielten es für ein Movie.

Zurück zur "Social" Software und zwar zur Virtuellen Präsenz, zu Webmobs, oder wie auch immer man es nennen mag. Richtig "social" ist es doch nur mit echten Leuten. Social Web heisst für mich Leute im Web treffen und das geht: LLuna (http://www.lluna.de/). Leute als Avatare auf Webseiten. Leute chatten in Sprechblasen, Avatare bewegen sich. Grüppchen gruppieren sich. Gehen gemeinsam auf andere Seiten, usw. Socializing im Web eben.

LLuna, wenns mal wirklich social sein soll im Web.

Guten Abend.

12. November 2005

WoW Avatare im Web

3 Entwicklungen, die zusammenlaufen und plötzlich ein Gesamtbild ergeben:
1. Es gibt World of Warcraft Profile auf Community Sites, wie Allakhazam. Ein Profil wird immer automatisch zu Allakhazam geuploaded, wenn man aus WoW raus geht.
2. Es gibt einen WoW Model Viewer. Ein Stück Open Source Software mit dem man WoW Modelle aus den Game Files (MPQ) auslesen kann, um Figuren zu rendern.
3. LLuna hat eine Avatar Plugin Schnittstelle.

Deshalb haben wir beschlossen, dass wir jetzt ein Proof of Concept machen, um WoW Avatare mit dem WoW Model Viewer Code und Allakhazam Profilen in Luna auf die Webseiten zu bringen.

_happy_coding()

10. November 2005

Computer Game Design and Technology Conference

In Liverpool fand die GDTW 2005 statt. 200 Leute aus der Computer Games Industrie diskutieren über Technik und andere Themen im Spieleumfeld. Es gab eine sehr interessante Keynote zum Thema "Emotion" in Spielen von David Freeman, der sehr viel Wirbel macht um Emotioneering, sein Buch und den Kurs, den er anbietet. Aber trotzdem gut. Es gab einige andere hochkarätige Beiträge und ein wissenschaftliches Begleitprogramm in dem auch die Thematik LLuna / Virtuelle Präsenz vertreten war mit einem Vortrag und einem Paper. Titel: Crossing Borders: Game Avatars on the Web.

_happy_coding()

28. Oktober 2005

Protokoll bluehands Seminar 28.10.2005

Thema: Firefox XMLDoc braucht Content-Length

Auch wir machen natütlich AJAX. Wir machen das schon seit 4 Jahren, also schon lang bevor es einen berühmten Namen hatte. Klar, die Leserin hat nichts anderes von bluehands erwartet. AJAX heisst im Browser mit einem HTTP-Request im Hintergrund Daten vom Server zu erfragen, die dann in Javascript ausgewertet werden. Dazu verwende an das in moderne Browswr eingebaute XMLDocument Objekt. Das heisst natürlich verschieden bei IE und FF, aber der Code fängt typisherweise so an:

var oXmlDoc = null;
if (document.implementation)
oXmlDoc = document.implementation.createDocument("", "", null);
else
oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");


Dann setzt man einen Callback:

oXmlDoc.onload = OnLoaded;

und lädt eine Datai vom Server, die typischerweise dynamisch erzeugt wird:

oXmlDoc.load(sUri);

Soweit so gut, aber...

Manchmal geht es nicht bei FF. Das heisst er macht den Request, liesst die Daten, erkennt sogat das character encoding aus dem XML header, aber die Tags kommen nicht im DOM an. Bei manchen Anwendungen geht es.

Es stellt sich nach viel probieren heraus, dass es genau dann nicht geht, wenn der Server kein Content-Length HTTP-Headerfield schickt. Bei Servern, die Content-Length setzen, geht es. Das ist [seltsamwitziginteressant], weil es
1. dem IE nichts ausmacht
2. die HTTP-Spec sagt, dass Content-Length nicht notwendig ist, wenn die TCP Verbindung beednet. Dann ist die Content-Length nämlich genau die Daten, die bis zum Ender der verbindung kamen
3. Selbst wenn es dem FF unmöglich wäre die Content-Length herauszufinden,der XML Parser im FF aus dem Schliessen des auessersten XML-Tags erkennen könnte, dass das XML fertig ist. Danach darf sowieso nichts mehr kommen
4. PHP normalerweise keine Content-Length schickt, weil die noch nicht bekannt ist, wenn nach dem HTTP Header die ersten Daten geschickt werden und man.

Ergebnis: AJAX/PHP/Firefox geht nicht, denn das findet der normale PHP Programmierer nie heraus. Aber wenn er googelt und das hier findet sei ihm gesagt: Man muss alle Daten in einer Variable speichern und die Content-Length setzen mit:

header("Content-Length: " . strlen($data);

oder PHP output buffering einschalten, dann geht es möglicherweise auch (nicht getestet). Das hätte den Vorteil, dass der Code nicht umgeschrieben werden muss, um überall einzufügen:

$data .= DasWasVorherImEchoStand;

Das ganze hängt vermutlich nur an einem Detail. Ich nehme an, dass der TCPStream im FF beim XML Parser das "final" flag nicht setzt wenn die TCP Verbindung beendet und so dem Parser nicht signalisiert, dass die Daten fertig sind. Wahrscheinlich parst der Parser das XML korrekt (darauf deutet das character encoding hin), aber das DOM wird nicht fuer den externen Zugriff bereitgestellt, weil "final" fehlt.

Fazit: Noch ein Indiz, dass AJAX noch nicht erwachsen ist. Nicht das einzige. Aber dank des Überhypes darf man hoffen, dass sich Entwicklungsanstrengungen darauf konzentrieren und es das bald wird.

_happy_coding()

20. Oktober 2005

Mein erster eigener kleiner Firefox Security Bug

Javascript: Wenn eine Webseite auf Objekte oder Code in einer anderen Seite zugreift, dann heisst das Cross Site Scripting (XSS). Vor allem dann, wenn die Webseiten von verschiedenen Servern kommen. Dann ist das naemlich verboten. Was ein verschiedener Server ist ist Auslegungssache. IE meint, dass der Domainname gleich sein muss. Firefox zaehlt auch den Port dazu. Die Beschraenkung gilt auch fuer IFRAMEs. Aber es gibt einen Mechanismus, um die XSS Beschraenkung zu umgehen. Man darf die Security Domain des Dokuments aendern, aber nur verkuerzen. Wenn ein Dokument auf "spock.bluehands.de" liegt und ein anderes "kirk.bluehands.de", dann ...ist der Script-Zugriff verboten, aber man kann beiden Dokumenten sagen, dass sie auf "bluehands.de" liegen, also Domain Name verkuerzt.

OK, also die Browser haben einen Mechanismus, mit dem man Strings sinnvoll verkuerzen kann, bis nur noch ein Punkt drin ist. Damit kann Firma-A.de nicht auf Firma-B.de zugreifen, aber Host-1.Firma-A.de auf Host-2.Firma-A.de.

Und jetzt kommt der Witz: Das geht auch mit IP-Adressen. Man kann "212.86.216.75" verkuerzen auf "216.75" (1 Punkt muss bleiben). Nur: bei Domainnamen verkuerzt man dabei auf die Hauptdomain, aber IP-Adressen stehen andersherum. Da verkuerzt man auf die Spezialisierung. Und damit kann im Prinzip jeder in seinem eigenen Netz "102.168.216.75" verkuerzen auf "216.75" und die ganze XSS-Security-mit-Domain-Verkuerzung ad absurdum fuehren.

_happy_coding()