Archive for the 'Netzwerk' Category

Apache Logs

SSH
  1. root@iBitLive:~# find /var/www/ -maxdepth 4 -type f -name access.log -or -name error.log | xargs du -hc | tail -n1
  2. 6,7G insgesamt

Einige Wochen später, nach Konfiguration von logrotate.

SSH
  1. root@iBitLive:~# find /var/www/ -maxdepth 4 -type f -name access.log* -or -name error.log* | xargs du -hc | tail -n1
  2. 664M insgesamt

IPv6 ready

Die letzten Tage habe ich mich mal wieder mit IPv6 beschäftigt. Wenn man ein wenig die Internet Nachrichten verfolgt, hat man eventuell schon mitbekommen, dass sich unsere guten alten IPv4s langsam aber sicher dem Ende neigen. Folglich wird die neue Technik IPv6 also immer wichtiger für uns. Grund genug, sich damit intensiver auseinander zu setzen.

Bisher ist IPv6 leider kaum nutzbar. Ein Firefox-Plugin, genannt CheckIP zeigt mit mittlerweile seit einigen Wochen die IP des verbundenen HTTP-Servers an. So sieht man schnell, welche Webseiten über IPv6 erreichbar sind – und welche nicht. Das Ergebnis ist wirklich ernüchternd. Nicht mal Wikipedia bietet eine IPv6-Anbindung, Google nur über eine gesonderte Domain und meine favorisierten Webseiten haben alle keine IPv6. Gründe dafür sind fehlerhafte IPv6-Netze beim Enduser, mangelnde Kompetenz der Hosters (auch Strato bietet kein IPv6 für meinen V-Server) oder fehlende Lust und Zeit sich in die Materie einzuarbeiten.

Da nun aber der Server auf dem www.valentinvoigt.info und all meine anderen Projekte laufen ein ganzes IPv6 Subnet hat, sah ich mich quasi genötigt dieses mal in Betrieb zu nehmen. Mit Hilfe des wirklich tollen Service von sixxs.net habe ich mir ein eigenes IPv6-Subnet für zu Hause besorgt (via IPv4-Tunnel) und mit dem Programm radvd mein gesamtes Heimnetzwerk mit v6-Adressen versorgt. Ein einfacher ifconfig Befehl und einige simple Konfigurationen der Firewall taten es auch auf dem Web-Server von valentinvoigt.info. Ergebnis: Es ändert sich nix, aber man fühlt sich viel besser und tat dem Internet einen Gefallen. ;-)

Okay, Spaß bei Seite. Ähnlich wie bei DHCP ist die Konfiguration solcher Netze im Grunde ganz einfach.  Ein Blick in die Thematik lohnt sich auf jeden Fall mal. Es macht echt Spaß und bereitet einen riesiges Gefühl des Stolzes, wenn unter Remote-Address beim Apache eine v6-IP zu sehen ist. ;-) Jeder muss seinen Teil dazu beitragen, das Internet nach und nach v6-proof zu machen. Die Internet-Knoten haben schon begonnen, denn Routing ist meiner Erfahrung nach Problemlos möglich. Also fehlen noch die Provider und die Webservices selbst. Wie lange diese noch brauchen um ein vernünftiges IPv6-Internet auf die Beine zu stellen, steht wohl noch in den Sternen. Ich habe jedenfalls mein Bestes getan. *g*

Bind: Zone Delegation & Forwarding

Wahnsinn, wie sehr einem eine doch recht überschaubare Technik wie DNS in den Wahnsinn treiben kann. Schon seit einigen Wochen versuche ich immer und immer wieder, auf meinem DNS-Server eine Zone Delegation einzurichten. Die auf dem Server gehostete, eigene “lan”-TLD sollte eine Subdomain bekommen, die von einigen VMs gemanaged werden soll. Folgende Zeilen sollten dafür ja überall im Internet zu finden sein.

Ausschnitt aus einer Bind-Zone
  1. subdomain        NS    ns1.subdomain
  2. ns1.subdomain    A     10.3.0.1

Doch was wenn das nicht funktioniert und auch stundenlange Suche und ewiges Debugging nichts helfen? Nun, dann wäre es empfehlenswert, die forwarders-Direktive aus der named.conf zu entfernen. Schon geht alles einfacher… Ich hoffe jemand damit vom Wahnsinn abzuhalten. Ich jedenfalls werde mich jetzt die nächste Tage von DNS-Daemons fern halten. :-?

IMAP und der IDLE Befehl

Nachdem ich letzten den Nameserver einer Meiner Domains ändern musste, bin ich mal wieder auf den MX-Eintrag meiner Domain valentinvoigt.info aufmerksam geworden. Dieser zeigt via CNAME auf die DynDNS-Adresse meines Homeservers. Dort widerrum befindet sich ein Postfix Server, der … naja, eigentlich nichts zu tun hat.

Da ich mich schon länger nicht mehr mit dem Thema Mailserver beschäftigt habe, habe ich mir diesen Postfix-Server mal angeschaut. Dort habe ich bereits valentinvoigt.info als gültige Domain eingetragen. Komisch eigentlich, ich kann mich gar nicht daran erinnern, jemals diese Domain als einer meiner E-Mail-Adressen benutzt zu haben. Also habe ich mal schnell sendmail rausgeholt und mir selbst eine E-Mail an diese Domain geschickt. Und stellt euch vor – die kam an. Mit ca. 45 Sekunden Verzögerung, die mein Mail-Client zum Pollen der E-Mails benötigte.

45 Sekunden? “Da geht doch noch mehr”, dachte ich mir und schaute mir einige Tools an, die in der Lage sind Mailboxen zu überwachen. Schnell stieß ich auf das Programm mailnotify. Dort fand ich ein Feature, dass Gebrauch von der so genannten IDLE-Extension von IMAP macht. IDLE, zu Deutsch “nichts tun” klingt nicht besonders spannend, hat aber etwas ziemlich cooles an sich. Denn IDLE ist ähnlich wie “Pushmail” für mobile Clienten in der Lage, den Mail-Client in Echtzeit über den Empfang neuer E-Mails zu beachrichtigen. Nur leider funktionierte das auf Anhieb nicht…

Nach ein wenig Recherche fand ich aber schnell raus, wie ich IDLE zu meinem Vorteil nutzen könnte. Der Clue liegt in der Konfigurations-Datei des Courier-IMAP-Dienstes. In der Datei namens imapd gibt es eine Einstellung “IMAP_ENHANCEIDLE”. Diese muss auf 1 gesetzt werden, damit Courier die E-Mails in Echtzeit ausliefern kann. Courier benutzt dann den File Alteration Monitor, genannt FAM, der auf Kernel-Ebene Dateien und Verzeichnisse auf Änderungen überwacht. Dies ist in vielen Szenarien sinnvoll um ein Polling (d.h. regelmäßiges Prüfen auf Änderungen) zu vermeiden. Dies tut dann auch Courier nicht mehr, der Änderungen in der Mailbox nun in Echtzeit von FAM geliefert bekommt.

Mit dieser Technik habe ich nun eine Echtzeitbenachrichtigung über neue E-Mails. Zumindest an jene, die an valentinvoigt.info gesendet werden. E-Mails über meine GMX-Adresse müssen leider nach wie vor gepollt werden. Dort habe ich im Schlimmstfall noch eine Verzögerung von 5 Minuten. Okay, zugegeben. Brauch mal wieder keiner. Aber dennoch ist eine Echtzeitbenachrichtigung in manchen Fällen (Server- oder Software Ausfälle) schon sinnvoll. Nun kann man sich auf seine E-Mails konzetrieren und keine Jabber-Benachrichtigungen friemeln. :-)

arpwatch gegen ARP-Spoofing

Schon vor einiger Zeit berichtete ich über die Möglichkeiten, die ARP-Spoofing so mit sich bringt. Da dies nun auch in meiner Schule immer populärer wird, habe ich mich nun dazu entschlossen zusammen mit den Informatik Lehrern meiner Schule dagegen vorzugehen. Letzte Woche hielt ich einen zweistündigen Vortrag vor einigen interessierten Lehrer und Angestellten der Schule. Dabei zeigte ich die unterschiedlichen Möglichkeiten, die man zusammen mit arpspoof, dnsspoof, Wireshark uvm. so hat. Fazit: Das muss geändert werden. Meine Schule bietet ein kostenlos für jeden Schüler im gesamten Has verfügbares WLAN-Netzwerk an, mit dem man mit den Schul-Laptops (oder so wie ich mit eigenen Laptops) das Webangebot der Schule nutzen kann. Im bisher noch komplett geswitchten Netzwerk kann man so nach Lust und Laune sniffen.

Also habe ich mich mal auf die Suche nach sinnvollen Gegenmaßnahmen gemacht. Dabei sind wir zum Entschluss gekommen, dass primär erstmal die Netzwerk Infrastruktur geändert werden muss. VLANs für verschiedene LAN Bereiche der Schule und für jeden Access Point verhindern schonmal ein ARP-Spoofing im gesamten Netz.

Eine weitere Maßnahme wird der experimentelle Einsatz  von “arpwatch“. Arpwatch überwacht den ARP Traffic im Netzwerk und ist in der Lage Änderungen im ARP-Cache zu erfassen. Sollte ein mutmaßlicher Angriff erfasst worden sein, so kann arpwatch den Administrator mit Hilfe einer E-Mail benachrichtigen. Dieses System habe ich in meinem heimischen Netzwerk bereits mit Erfolg getestet.

Allerdings ergeben sich trotzdem noch Haken. Leider bin ich bisher mangels Hardware bzw. Zugang nicht dazu gekommen auch nur irgendwas mit VLANs machen zu können. Sofern mich mein Verständis eines VLANs aber nicht täuscht, dürfte es nicht möglich sein, ARP-Anfragen über das VLAN hinweg zu senden. Folglich kann arpwatch nur Attacken in einem bestimmten VLAN auffassen – was natürich keinen Sinn mehr macht. Ein anderes Problem ist, dass wir noch nich genau wissen, ob und wie man solche Attacken nicht nur automatisch erfassen sondern auch direkt unterbinden kann. Ideal wäre es, einen böswilligen Teilnehmer direkt vom Access Point aus zu sperren, sodass dieser keine Verbindung mehr zum WLAN hat. Allerdings widerspricht das doch etwas dem ursprünglichen Sinn des gesamten Netzwerkes; nämlich den Schülern auch während des Unterrichts Internet zu Verfügung zu stellen. Andererseits ist Unterricht auch nicht für ARP-Spoofing gedacht.

Ich werde auf jeden fall noch einige Gedanken an diesem Problem verschwenden. Die Sache mal von der anderen Seite, d.h. aus Sicht des Netzwerkadministrators zu betrachten bringt ganz neue Probleme aber auch Vorteile mit sich. Ich hoffe weiterhin auf Unterstützung seitens der Lehrer, ohne deren Zustimmung ich wohl vorerst keine Möglichkeit haben werde, mit derartig großen Netzwerken Erfahrung zu sammeln.

IMAP, fetchmail und mehr

Nachdem ich nun schon lange nichts mehr geschrieben habe, berichte ich mal wieder über meinen stetig wachsenden Homeserver, der langsam anfängt echt nützliche Dinge für mich zu erledigen. ;-)

Seit einigen Wochen nun habe ich ein neues System, meine E-Mails abzurufen. Auf dem Server läuft nun das Programm fetchmail. Fetchmail ist ein Perl-Script, welches in regelmäßigen Abständen die Mails einer Mailbox abfragt und entsprechend weiterleitet. In meinem Fall checkt fetchmail alle fünf Minuten die Mails auf meinem GMX E-Mail Account und sendet sie an die lokal laufende Postfix Instanz. Wer es nicht weiß, Postfix ist ein Mailserver. ;-)

Postfix hat seit kurzer Zeit jetzt auch einen Spamfilter, genauer gesagt SpamAssassin. Dieser Spamfilter kann zwar auch Spam aussortieren, ich habe mich aber dazu entschieden, meinen Spam vorerst nur mit einer Änderung des Betreffs zu markieren. Damit möchte ich jetzt erst einmal testen, wie zuverlässig SpamAssassin Spam von nicht-Spam unterscheidet. Später dann kann ich Spam auch direkt löschen lassen. Bei meiner bisherigen Menge hingegen lohnt sich das noch nicht.

Um jetzt meine E-Mails von Postfix auf meine E-Mail-Clients zu bekommen, habe ich außerdem noch einen IMAP-Server installiert, genannt Courier. Courier erlaubt es mir, meine Ordnerstruktur für E-Mails und die E-Mails selbst direkt auf dem Server zu behalten und erleichtert mir somit die Synchronisierung der Mail-Clients enorm. Die gespeicherten Mails liegen außerdem noch in einer RAID1-Partition, was damit also auch die Sicherheit der Daten erhöht.

Neben Courier habe ich außerdem schon seit längerem noch einen Webserver laufen. Auf diesem Webserver befindet sich jetzt seit wenigen Tagen auch eine SquirrelMail-Installation. Mittels SquirrelMail ist die Mobilität meines E-Mail Accounts jetzt komplett. SquirrelMail ist ein Webinterface für IMAP-Accounts. Damit kann ich nun von jedem beliebigen Ort der Welt (Internetanbindung vorausgesetzt) meine E-Mails samt Ordnerstruktur abrufen. :-)

Vor lauter Langeweile habe ich heute außerdem noch einen kleinen Python-Bot hinzugefügt. Okay, zugegeben, eigentlich braucht man das nicht. Aber es ist auf jeden Fall mal wieder eine neue Erfahrung. Dieser Bot ist dauerhaft in meinen Jabber-Account eingeloggt und wartet mit Hilfe von FAM auf eine Änderung der Mailserver-Logs. Sollte er eine Änderung feststellen, werden die neuen Zeilen ausgelesen und auf ein Regular Expression überprüft. Konnte der RegEx angewendet werden, so werde ich via Jabber sofort über den Erhalt neuer Mails informiert. Das Ganze kann bei GMX-Mails natürlich bis zu fünf Minuten dauern, da fetchmail leider auf Polling zurückgreifen muss. Bei lokalen Mails hingegen bekomme ich fast eine Realtime-Benachrichtigung. Dinge, die die Welt nicht braucht, nicht wahr? ;-)

Schulnetzwerk die Zweite

Letzten Donnerstag – ich hatte mal wieder 8 Stunden Unterricht – haben wir die letzten zwei Unterrichtsstunden komplett im neuen Medienraum verbracht. Für nicht-Eingeweihte: Unser Medienraum ist nichts anderes als der vorherige Informatik-Saal, klingt nur toller. *g* In diesem Saal haben wir 30 neue Dell-Laptops. Die kompletten zwei Stunden hat unser Lehrer damit verbracht, uns die Laptops und das neue System näher zu bringen. Auch wenn es wahrscheinlich 70% der Schüler überhaupt nicht interessiert, konnte man zumindest erkennen, wie stolz unser Lehrer war.

Auf allen Laptops läuft jetzt ein Programm, welches sich DriveKeeper nennt. Mit Hilfe dieses Programms ist es den Lehrern möglich, die Laptops gnadenlos zu überwachen. USB ausschalten, CD-Laufwerk deaktivieren, Internet sperren, Bildschirm sperren, … Das ist wohl das, was sich der Lehrer von Heute wünscht. ;-) Das Programm zu umgehen ist keine besonders große Herausforderung, zumindest nicht für mich, aber für die meisten Schüler reicht es.

Die Laptops sind zur Hälfte mit einer WLAN-Verbindung ausgestattet. Damit soll es später möglich sein (oder ist es auch jetzt schon), die Laptops mobil in der gesamten Schule zu verwenden. Die andere Hälfte soll via am Tisch befestigtem Lan-Kabel angeschlossen werden. Fragt sich nur, wozu man dann nicht einfach normale Desktops kauft… ;-)

Außerdem – und das ist der Kernpunkt dieses Posts – wurde uns ein Netzwerk-Diagramm gezeigt und es wurde uns erläutert, was später einmal noch alles möglich sein soll. Ich muss schon sagen, ich bin erstaunt, wie umfangreich zumindest die Planung ist. Von eigenen Accounts (Speicher inbegriffen) im Active Directory über Schul-weites WLAN mit RADIUS (Login über eigenen Account) soll alles drin sein. Ich bin gespannt, ob das alles wirklich umgesetzt wird – und wenn ja, wie lange das wohl dauern mag. Wer weiß, vielleicht ändert sich meine Meinung ja doch noch. *g*

Meinung zum Schulnetzwerk

Ich muss mir jetzt mal die Meinung vom Leib schreiben. Bitte beachten, dass alles was hier gesagt wird meine Meinung ist und nichts weiter damit zutun haben muss, wie es wirklich ist.

Heute im Religions-Unterricht hat unser Religions-Lehrer einmal rumgefragt, wo wir denn alle Praktikum machen. Ich glaube, ich habe es noch nicht gesagt, aber ich mache bei 1&1 in Zweibrücken. ;-) Mein Lehrer weiß, dass ich mich recht gut mit dem “Thema Computer” auskenne. Da “wir” “momentan” auf ein Windows-Netzwerk in der Schule umstellen, hat er mich auch nach dem Unterricht angesprochen, ob ich denn da nicht irgendwo helfen kann. Klar kann ich das, ich habe sogar schon selbst (von mir ausgehend) meine Hilfe angeboten. Er begründete das auch damit, dass bei der Umstellung momentan die Hilfe gebraucht wird, da die dafür Zuständigen damit “überfordert” sind. (Ich glaube das hat er wörtlich gesagt) Aber irgendwie kommt mir das alles so komisch vor.

Wie gesagt, bin ich äußerst gerne dazu bereit, dabei zu helfen. Und das sollte mittlerweile jeder wissen. Aber es passiert nichts. Keiner kommt und fragt, ob ich mal was machen kann. Nein, ganz im Gegenteil: Ich war noch vor einiger Zeit Administrator im Linux-Netzwerk. Das Root-Passwort gibt es nicht mehr, das neue Administrator-Passwort ist anders. Und mir wurde nichts davon gesagt – raus, ohne Worte. Damit will ich nichtmal Ansprüche stellen, die ich nicht habe. Aber dennoch sollte es jedem einleuchten, dass das nicht die feine englische Art ist.

Dass Hilfe gebraucht wird kann man auch selbst merken. Ich will nochmal sagen, dass das meine eigene Meinung ist. Ich will niemanden was unterstellen oder etwas schlecht reden. Ich will es nur sagen. Die Rechner, die es momentan in der Schule gibt sind schlimmer als in jedem Kiosk. Erstmal wurden aus jedem Rechner die CD-Laufwerke heraus genommen. Das waren extra Brenner, um als Schüler oder Lehrer auch CDs brennen zu können, was ja durchaus mal von Nützen sein kann. Warum? Das wüsste ich auch gerne. Ich finde es Schwachsinnig. Dann wurde wohl time-by-time alles verboten, was machen auf Computern so machen kann. Das Startmenü wurde derartig kastriert, dass es schon kaum mehr nach Windows aussieht. Der Ausführen-Dialog ist weg und der cmd.exe wurden die Ausführrechte entnommen. Ist ja auch unglaublich, was man damit alles machen kann. Sie bietet ja sogar die Möglichkeit andere Rechner anzupingen, was ja bekanntlich tödlich für jeden Kernel ist. Begründet wird das natürlich alles mit der Allround-Ausrede “Sicherheit”. Frei nach dem Motto “unusability by misunderstanding of security” (danke, Marcel) wurde auch gleich mal Google-Chrome installiert – damals noch Beta, heute aber auch kaum besser.

Außerdem ist es momentan noch so, dass jeder Schüler sich über den gleichen Account einloggen muss, da der Login-Server noch nicht funktioniert. Das ist ja noch nicht weiter schlimm, man kann ja auch nicht alles auf einmal machen. Was daran so lange dauert weiß ich zwar nicht, aber es wird schon Gründe geben. Viel schlimmer finde ich, dass besonders Hardware-technischen doch alles gegeben ist. Drei Windows-Server laufen im Dauerbetrieb; in der gesamten Schule sind Access-Points verteilt, die eigentlich mal per WLAN jedem Schüler Internet über den eigenen Account geben sollten; überall liegen hoch qualitative Kabel und Switches, von denen ich nur träumen könnte. Aber ich habe einfach den Eindruck, dass Software-technisch das alles nicht so genutzt wird, wie man es hätte nutzen können. Klar hat eben nicht jeder Ahnung von Linux, was ja durchaus ein Argument für die Umstellung auf Windows ist. Aber ist Windows wirklich einfacherer? Besser ist es mit Sicherheit nicht. Gerade _weil_ eben nicht jeder Ahnung von Linux hat, hielt sich die Sicherheit in diesem Bereich immer sehr gut. Aber nein, eine Umstellung muss her, “weil sich keiner damit richtig auskennt”. Bin ich keiner? Ich verstehe dieses Vorgehen einfach nicht. Es ist genug Geld da, um eine Windows-2003-Server-Lizenz für 3 Server und Windows-XP-Lizenzen für ca. 30 Rechner zu kaufen. Dass Schüler nicht genug sind mag ja vielleicht noch einigermaßen verständlich sein. Aber für wesentlich weniger Geld hätte man auch eine Teilzeitkraft für das Linux Netzwerk bekommen – oder eben einen Schüler. Achja: Aber 10EUR Papiergeld von jedem Schüler einsammeln, weil Papier (besonders in der Massenbestellung für Schulen) so teuer ist.

Nun; ich kann daran nichts ändern. Ich bin nur ein Schüler, vielleicht einer, der sich etwas mehr darum kümmern würde als andere, aber letztlich doch nur Schüler. Ich fand es unglaublich spannend, wie vorbildlich das Netzwerk früher einmal war. Es war für mich einfach nur das Vorzeige-Netzwerk. Der Grund, warum Schüler in unsere Schule kommen sollten. Ich nutze das Netzwerk mittlerweile kaum mehr. Nicht nur, weil es einfach keinen Spaß mehr macht, sondern auch, weil ich es nicht mehr unbedingt brauche. Trotzdem ist für mich der Reiz da, allen anderen Schülern auch diesen Luxus zu geben, wie ich ihn vor ein paar Jahren noch genossen habe. Der Grundstein ist noch da, ändern kann man immer noch einiges. Ob es soweit kommt steht noch in den Sternen. Meine Meinung wisst ihr jetzt – und ich bin froh mal darüber “reden” gekonnt zu haben. :-)

Collectd und rrdtool

Endlich habe ich mal ein schönes Programm zum Überwachen der Performance eines Computers gefunden. Das Programm nennt sich collectd. Der Collectd selbst, speichert nur die Daten in regelmäßigen Abständen (Ich glabe es sind 15 Sekunden per default) in mehrere Dateien. Diese Dateien sind im so genannten Round Robin Database-Format. Mit Hilfe des Prorgamms rrdtool kannn man dann relativ einfach eine graphische Darstellung dieser Daten erstellen. Das rrdtool in Aktion kann man hier sehen. Dazu mal ein kleiner Beispiel-Code, der mir einen Graphen über den Verlauf des Load-Averages der letzten 24 Stunden erstellt.

Graph eines Load-Average der letzten 24h
  1. rrdtool graph "/var/www/user/de/dev/htdocs/dev/rrd/load.png" –start -24h –en
  2.   –title "load average – last 24h" \
  3.   DEF:shortterm=/var/lib/collectd/load.rrd:shortterm:AVERAGE \
  4.   DEF:midterm=/var/lib/collectd/load.rrd:midterm:AVERAGE \
  5.   DEF:longterm=/var/lib/collectd/load.rrd:longterm:AVERAGE \
  6.   LINE1:shortterm#00CC00:"last minute" \
  7.   LINE1:midterm#FF0000:"last five minutes" \
  8.   LINE1:longterm#0000FF:"last fifteen minutes"

Man kann jetzt damit also recht detailiert seine Graphen erstellen lassen. Ich habe mir dazu gleich ein ganzes Shell-Script geschrieben, dem ich einen Parameter mitgebe, der angibt, von welchem Zeitpunkt an bis jetzt der Graph erstellt werden soll. Das Script könnt ihr euch (mit einer PHP-Datei zur Anzeige auf einem Webserver) nach Bedarf gerne einmal runterladen.

zip Collectd And Rrdtool (1.54 KB, zip)

Runde Ecken – wie Microsoft es tun würde

Ich bin eben beim google’n auf einen sehr interessanten Artikel von Microsoft gestoßen. Microsoft beschreibt darin, welche verschiedenen Möglichkeiten es gibt, in einer HTML-CSS-Seite sogenannte runde Ecken so gestalten.  Runde Ecken -  wer sich darunter nichts vorstellen kann, für den habe ich hier mal noch schnell ein Bild erstellt.

Der Artikel nochmal kurz und übersetzt zusammengefasst. Microsoft nennt als eine mögliche Methode zur Erstellen von runden Ecken, der Verwendung von 4 verschiedenen DIV-Containern. Diese Container stellen jeweils eine Ecke der Box dar. Folgendes hat bestimmt schon jeder mal gemacht.

Runde Ecken kompliziert gestalten
  1. <div class="box">
  2.   <div class="boxTL">
  3.     <div class="boxTR">
  4.       <div class="boxBL">
  5.         <div class="boxBR">
  6.           Mein Inhalt
  7.         </div>
  8.       </div>
  9.     </div>
  10.   </div>
  11. </div>

Ein erfahrender Entwickler erkennt sofort: Das ist scheiße. Ok, ich habe auch etwas übertrieben gearbeitet; so ist der äußerste DIV-Container eigentlich gar nicht nötig. Dennoch stehen dort mindestens 4 DIV, alle mit einem class-Attribut.

Leider ist es ziemlich schwer, eine wirkliche gute Lösung dafür zu finden. Die Mozilla Produkte haben zwar eine CSS-Eigenschaft -moz-border-radius, aber diese ist eben nicht in Microsoft Produkten anzutreffen. Eine schönere Möglichkeit ist nun die erweiterte Anwendung von CSS. CSS bietet ja auch die Möglichkeit, Elemente nach ihrer Verschachtelung zu formatieren. Das macht sich Microsoft zu nutze, was den Vorteil mit sich bringt, dass es ab sofort nicht mehr nötig ist, 4 Class-Attribute zu definieren, sondern nur noch eins. Obiger Code kann somit also auch so geschrieben werden:

Runde Ecken, schön gemacht
  1. <div class="box"><div><div><div>
  2.   Mein Inhalt
  3. </div></div></div></div>

Um meine Meinung besser teilen zu können, habe ich bei dem Code etwas geschummelt. So habe ich im ersten Code die eigentlich richtige (konsequente) Einrückung benutzt und hier mit der Einrückung etwas gespart. Ich bin von dieser Möglichkeit allerdings sehr angetan und werde sie in meiner nächsten Entwicklung wahrscheinlich auch verwenden. Achja, ich schreibe euch noch den CSS-Code dazu, falls Microsoft den Artikel verschieben, löschen oder ändern sollte.

CSS-Code um runde Ecken zu gestalten
  1. div.roundcorner2 {
  2.   width: 200px;
  3.   background: #FFFFFF url(TROuterBlue.gif) no-repeat top right;
  4. }
  5. div.roundcorner2 div {
  6.   background: transparent url(TLOuterBlue.gif) no-repeat top left;
  7. }
  8. div.roundcorner2 div div {
  9.   background: transparent url(BROuterBlue.gif) no-repeat bottom right;
  10. }
  11. div.roundcorner2 div div div {
  12.   background: transparent url(BLOuterBlue.gif) no-repeat bottom left;
  13.   padding: 15px;
  14. }

Next Page »