Joomla Pharmahack / Spambot

Ich hatte in den letzten Wochen öfters mal das Problem, das mein Server auf verschiedenen Email-Spam-Listen gelandet ist und die Mailzustellung entsprechend problematisch wurde.

Ein Check des Mailserver Log ergab jedoch keine Anomalien. Es wurde zumindest über den Mailserver keine hohe Anzahl Mails verschickt. Wie kann das also sein?

Auf die Spur kam ich der Sache als ich den SMTP Port überwachte:

1
sudo lsof -i | grep smtp

Das ein oder andere Mal erwischte ich damit einen Prozess, der unter einem Hosting-Account lief. Auf diesem Account war nur eine Joomla Installation untergebracht. Und diese war wohl verseucht. Es fanden sich mehrere seltsame Nutzeraccounts und kleine, seltsame benannte PHP-Scripte im Verzeichnis. Eine kurze Analyse der Scripte offenbarte, dass diese wohl nichts anderes tun als Kommandos von “Aussen” auszuführen. Also ein direktes eval() von POST-Content. Eine Analyse des Access-Log offenbarte, dass alle 1-2 Minuten so ein Kommando von einer unbekannten Quelle abgeschickt wurde.

Also hab ich mich mal dazwischen gehängt und das verschlüsselte Kommando abgefangen. Es war ein relativ langes Stück Programmcode welches im Prinzip einen Mail-Server emuliert. Das komplette Protokoll wurde als PHP-Script nachgebaut. Bingo!

Ein entfernen der Scripte, Updaten von Joomla und entfernen der Einfallstore schaffte Abhilfe, notfalls ein Diff über das aktuelle Verzeichnis machen. Es ist einfach ein Muss, eine CMS-Systeme auf dem aktuellen Stand zu halten. Nur wie schafft man es den Überblick zubehalten wenn man mehrere Installationen überwachen muss?

Layout overhaul

Yes, you’re eyes are not lying! After 7 years(!) the skyBlog gets a completely overhauled template. Yey!

MacBook Pro Early 2011’s are melting / graphic card problems

A few weeks ago, my MacBook Pro 2011 Early started to behave strangely. It started right after I had upgraded my system to Mavericks. I was testing the new iMovie as I was getting a black screen (of death). After a hard reset, the the grey boot screen (with the Apple logo) looked scrambled with strange line artefacts. And the machine refused to boot. I managed it to get the machine working a few last times (doing 100 reboots and trying out all boot options), but finally the machine was dead. It was clear, that the discrete graphic card has a problem. And so, the only solution was to replace the hole logic board.

So I went to the Apple Store. I had to wait 1.5 weeks to get my MacBook back and the price for it was 490€.

A quick look into the internet reveals: Apple has a problem. It looks like the number of melted MacBooks from 2011 is fast increasing:

https://discussions.apple.com/thread/4766577?start=1545&tstart=0

My flatmate, who also owns an Early 2011 MacBook, saw his MacBook fried this morning and is on his way to the Store now.

There is hope that Apple will announce an official replacement program in the future (and give a refund for the repair costs), but until then you have to pay the replacement yourself. But if you do, tell the Apple Staff that its a really common problem and their should do something about that now.

 

Install Windows/Bootcamp on MacBook Pro with Fusion Drive and no Optical Drive

Installing Windows on a Machine without a Optical Drive is a pain, because its no longer possible to boot from the Installation DVD. USB is no good workaround, because USB boot is also permitted somehow.

The case is getting more complicated when you have a FusionDrive setup as I have: I replaced my Optical Drive with a second harddisk (SSD) and formed one Volume out of it as a FusionDrive.

After Google’ing for many hours, i found a solution which actually worked on my setup.

http://huguesval.com/blog/2012/02/installing-windows-7-on-a-mac-without-superdrive-with-virtualbox/

Some Additions:

  • Even If you have an MacBook Pro 2011: Do Part 1 Step 3! I didn’t do it and after rebooting I got a blue screen
  • To trick the Boot-Camp Assistant creating the partition for you, it also works mounting the Windows Installation ISO with Toast or Daemon Tools
  • The correct installation order is: FIRST create your fusion drive, then let the BootCamp Assisstant build the Windows Partition
  • Don’t try the solution with replacing the MBR with the one created in the VM: It does not work on a FusionDrive setup
  • To avoid the complicated removal of the “system reserved” partition as stated in the manual, do this: When you install Windows  in the VM, format the drive. A message will popup informing you that it may create some more partitions blabla. Click ok and you will see it actually created 2 partitions. Now manually remove the small 100 MB Partition and install on the other one. It will work and boot correctly.
  • WinClone is no longer free available as some stupid company bought it and did some minor updates to it. But maybe you find it somewhere. If you use the latest version, it will ask you if it should delete the cache files while creating the image. I clicked yes. On restore, I had it replace the booting-information.

Finally it worked. When I boot my mac holding ALT the boot device selection menu shows up. It displays my Mac drive two times as well as the windows drive two times. Anyone know a solution out there how to fix that?

Paying attention to details

I am currently working on an overhaul of Episodes main interface. As a Mac developer, you need to pay attention to the small things. This is what a good App makes a great App.

In the last days, I’ve spent several hours in reworking the small view on the lower left which indicates that Episodes is doing some tasks in the background. This is how its looking in current version:

old

Its okay, but its not great. The expand/collapse animation was a bit buggy as well as the progress indication itself. To improve the visual appeal I decided to invest some hours to make it perfect. This is the result. My goal was to let it look like its “below” the surrounding  interface. I’ve also added an animation which “slides away” the concealing panel.

panel

In the next iteration of Episodes i’m going for a borderless interface, which leads to some problems.

blank

 

What happens if the list is getting longer or the user resizes the window? A scrollbar will become visible with its bottom end hanging loose in the air. It would look pretty bad. My solution is to slowly fade in a shadow to distinguish the list from the bottom menu.

light

This makes it a lot better. Apple uses the same approach e.G. in Apple Mail and its great, but its not yet in the framework so each developer has to implement it them self and most people are doing it only half-assed.

But thats only half the deal. What happens if the progress-panel slides in? The gradients and shadows have to match in this combination also.

full

 

These are the small things which need a lot of work to make them right. Most people won’t even notice any of then. But they would, if things would look bad. Its makes an App better, as the User feels better when he uses it.

Custom selection/highlighting colors in a view based SourceList using a NSOutlineView (badge)

I’ve tried to implement the “Bubble” badges that Apple uses in many applications using a view based NSOutlineView, e.G. Mail:

Bildschirmfoto 2013-03-21 um 12.50.16

There are many solutions out there (see PXSourceList), but I wanted to use a view based approach this time.

Its no big deal creating the view, but when you start implementing the Badge you will face several problems. You may use a NSButton with inline style here, but if you start binding its title to your data things starting to go wrong as its clearly the wrong control for this case. So I decided to use a custom NSTextField with custom drawing.

Bildschirmfoto 2013-03-21 um 12.53.45

The main problem was the different drawing if the row is selected. You need to change your font- and background color. As a NSTextField, you do not know if you are highlighted or not and so you can’t do that. After some digging in the documentation if found the solution:

The enclosing NSTableCellView gives its subviews a “hint” how it should draw itself. The method it uses is

1
- (void)setBackgroundStyle:(NSBackgroundStyle)<em>style</em>

The docu says:

The default implementation automatically forwards calls to all subviews that implement setBackgroundStyle: or are an NSControl, which have NSCell classes that respond to setBackgroundStyle:.

So what you have to do is to simply implement setBackgroundStyle in your custom NSTextField. For example, save the set value to an ivar:

1
2
3
- (void)setBackgroundStyle:(NSBackgroundStyle)style {
_backgroundStyle = style;
}

Finally, use this value in your drawing code and you’re done:

1
2
3
4
5
6
7
8
- (void)drawRect:(NSRect)dirtyRect
{
...
if (self.backgroundStyle == NSBackgroundStyleDark) {
backgroundColor = [NSColor darkGrayColor];
} else {
backgroundColor = [NSColor lightGrayColor];
}

Episodes Lite

Episodes, meine App zur Serienverwaltung, gibt es nun auch als Lite Version, also quasi als Demo.

 

Wer sich bisher unsicher war, ob die App für ihn einen Nutzen hat, der kann das nun ohne Risiko ausprobieren.

Die Lite Version hat jedoch die Einschränkung, dass nur eine einzelne Serie in der Bibliothek verwaltet werden kann.

Das ganze ist ein Test, mal schauen wie sich eine Lite Version auf die Download-Zahlen auswirkt. Eventuell gibts dazu auch eine weitere Veröffentlichung dazu.

Sindelfingen Apple Store Eröffnung und die Sache mit dem Anstehen

7:00 Uhr morgens, der Wecker klingelt. Der erste Griff zum Handy, die Twitter-App geöffnet, Suche nach: “Sindelfingen”. Bilder kommen. Bilder von Menschen. Von vielen Menschen.

Aber der Plan steht noch. Auf gehts nach Sindelfingen, zur Eröffnung des ersten Stuttgarter Apple Stores, passend zum Verkaufsstart des iPhone 5.

Eine halbe Stunde später, gegen 7:30 Uhr komme ich dann an. Ich betrete das Breuningerland durch den Haupteingang und werde meines beschwingten, morgendlichen Ganges bereits nach wenigen Metern beraubt. Denn da stehen sie schon.

Vorgenommen hatte ich mir nicht länger als zwei Stunden mit so einem Blödsinn zu verbringen. Doch was ich da erblickte schien diesen Plan bedrohlich zu gefährden. Naja, da stand ich also.

“Und warum bist du hier bei dem Quatsch”, fragte mein ca. 5 Meter großer Nebensteher. “Vorkasse”, sagte ich nur. “Achja, ich auch”. Denn Vorkasse bedeutet, wenn man bei Apple etwas bestellt, dass sie dich nicht ernst nehmen. Zumindest nicht, bis dein Geld bei Apple angekommen ist. Oder bis der Affe auf die Taste gedrückt hat. Der Affe raucht wohl viel, den das dauert schonmal 5 Tage, und wenn deine Bestellung erst dann aktiv geschaltet wird und so ein iPhone aber bereits nach 2 Stunden im Store restlos ausverkauft war, dann sorgt das durchaus dafür, dass du 4 Wochen warten müsstest. Und darum fährt man morgens mal nach Sindelfingen.

Die Schlange befand sich direkt im Eingangsbereich des Einkaufszentrums. Irgendwann flog ein Gerücht durch die Luft, um 07:45 Uhr würden vorne irgendwelche Türen aufgehen und dann gehts los. Und dann gings los. Die Menge setzte sich in Bewegung. Schnell. Und dann wars auch schon wieder vorbei. Schnell stellten alle fest, dass die Leute nur schubweise in den Store gepumpt werden. So verging dann eine Stunde. Und dann war ich vorne.

Während dem fröhlichen Warten wurden einige Leute nach vorne gelassen unter dem Vorwand, sie wollen den Store nur anschauen und kein iPhone kaufen. Schnell kam dann natürlich die Idee auf, “hm, das mach ich doch auch mal”. Gut jedoch, dass ich es gelassen habe, den Apple war, wer hätte es gedacht, ziemlich gut vorbereitet. Am vorderen Ende der Schlange erhält man nämlich eine wichtige, magische, blaue Karte:

Doch was soll man damit? Gleich sollte ich es erfahren. Und es schwante mir schon: Das hier war nur die erste Schlange. Nachdem ich da durch war sollten wir erstmal einem Apple-Menschen hinterher dackeln.

Zeit nochmal die Apple-Homepage bezüglich des Standortes des Stores zu zitieren:

Der Apple Store befindet sich im Einkaufszentrum Breuningerland Sindelfingen in der oberen Etage im Breuninger-Flügel.

Jedenfalls: Es ging dann in das Erdgeschoss runter. Und da war sie dann, die Echte, die Richtige, die iPhone5-Kaufen-Schlange. Und um da anstehen zu “dürfen”, ja, dazu brauchte man diese blaue Karte. Die Nummer da drauf könnt ihr gerne anrufen, den die Leute haben einen guten Job gemacht, das nur am Rande.

Allmählich verlor ich dann doch die Lust, aber ich stellte mich mal hin. Das Problem ist ja nunmal das Folgende: Die Gefahr, dass man hier jetzt ein paar Stunden steht und dann am Ende gar keine Geräte mehr übrig sind, die ist ja nunmal durchaus gegeben. Aber auch hier war Apple vorbereitet. Den kurz vor der ersten Kurve der Warteschlange steht dieser freundliche Herr:

Diesem teilt man mit, welches Gerät man den gerne kaufen würde. Dann erhält man eine weitere magische Karte (diesmal weiß), welche nun quasi als “Reservierung” gilt und einem das Abholen (bzw. Kaufen) des Gerätes ermöglicht. Allerdings gilt diese Karte nur an diesem einen Tag und auch nur dann, wenn man die iPhone5-Schlange hinter sich gebracht hat. Eigentlich.

Ich hatte dann die Schnauze voll. Der Plan war, Abends nochmals her zu fahren, wenn (hoffentlich) weniger los ist. Aber den Store anguggen wollte ich mir vorher doch mal, das ging ja scheinbar, hatten die Leute in der ersten Schlange ja auch gemacht. Das erklärte ich auch dem lustigen Anzugsmensch, der vor der “Nur-Guggen” Schlange stand und wedelte dabei mit meinem Abholschein rum, während ich ihn nach dem korrekten Weg fragte. Die “Nur-Guggen” Schlange war komplett leer. Vorne wurde ich von einer netten, blonden Dame begrüßt die mich irritiert ansprach, warum ich den mit meinem Abholschein rumwedeln würde und warum ich nun in dieser Schlange sei. “Schnautze voll”, erkärte ich ihr, was ich auch so meinte, und das ich mir den Store mal anguggen wollte und heute Abend nochmal komme. Und dann gings rein.

Begrüßt wurde ich von den Klatschäffchen am Eingang, bekannt aus Funk- und Fernsehen, welche sicherlich den bedauernswertesten Job an diesem Tag hatten. Aber ich klatschte mit. Primär um sie aufzuheitern, oder damit sie sich nicht mehr so furchtbar fühlen. Keine Ahnung.

Ein hübscher Store, sehr groß, es arbeiten gefühlt 101 Verkäufer dort. Bin ein bisschen im Kreis gelaufen und stellte fest, dass es keine gute Idee war, sich kurz vorm Eintritt noch mal einen kostenlosen Kaffee geben zu lassen, den mit einer Hand fotografiert es sich schlecht. Also folgte direkt der erste Praxistest des Apple-Genius: “Wie kann ich meinen Kaffee los werden?” – Mit einem überraschend freundlichen Lächeln bekam ich ein “mir geben” zurück und wurde tatsächlich des Getränkes befreit. Erster Test: Sehr gut.

Ich ließ mich anschließend zu den iPhone5 Testgeräten weißen und verbrachte die nächste halbe Stunde damit vom Tisch mit den weißen Geräten zum Tisch mit den schwarzen Geräten zu laufen und zurück. Das schwarze Model habe ich genauer unter die Lupe genommen, den das gute Scuff-Gate, von dem ihr alle in den nächsten Wochen noch viel hören werdet, scheint in der Tat ein echtes Problem zu sein. Kurz gesagt: Die schwarzen Modele verlieren wohl relativ leicht ihren “Lack” bzw. die eloxierte Beschichtung und dann schimmert das Aluminium durch. Daher field die Farbwahl schwerer als gedacht, aber das soll jetzt nicht Thema sein, den:

Irgendwann schaute ich mich mal um und suchte die “iPhone5-Kaufen” Schlange innerhalb des Stores. Und ich fand sie nicht. Die Leute aus der Schlange vor der Tür wurden einfach nur sehr stark verzögert in den Laden gelassen. Um ein iPhone zu kaufen brauchen diese dann ihren weißen Zauberzettel.

Und dann stand schon ein Genius neben mir und fragte mich, ob ich mittlerweile wüsste, welche Farbe es sein soll. Und dann wurde mir, mit zugegebenermaßen sehr hoher Verzögerung, langsam klar, dass es eigentlich derzeit gar keinen logischen Grund gibt, der mich davon abhalten könnte, hier und jetzt ein iPhone zu kaufen statt mich Abends nochmals in die Rotz-Schlange stellen zu müssen. Also fragte ich vorsichtig an, was ich den nun tun müsste wenn ich kaufen wollen würde. “Ja, da musst du dich draussen anstellen, du kriegst dann so einen Zettel mit dem du…” – “So einen?” – “Ja, genau. Ja dann kannst du direkt bei mir bezahlen und das Ding mitnehmen”.

Und so ging es dann auch. 2-3 Stunden anstehen gespart. Nun kennt ihr die Wahrheit.

Achja: Schwarz.

 

 

Nexus 7, PlayBook Herausforderung: Scrolle zu Seite 68

Ich mag wirklich nicht bashen. Aber bei manchen Sachen muss ich mir echt an den Kopf langen. Ich hab ja schon in meinem Bericht über das Nexus7 behauptet, die Google Leute würden das Gerät nicht selbst benutzen.

Das sieht man sehr gut an der eBook-Applikation “PlayBook”. Versucht da einfach mal zu einer bestimmten Seite (egal welche) zu blättern. Es ist nahezu unmöglich. Warum? Seht selbst:

(Am besten in HD anschauen)

Der eigene Finger ist immer im weg. Die Anzeige der aktuellen Seite wird einfach verdeckt. Sowas merkt man doch normalerweise als aufmerksamer Entwickler, oder hab ich da was verpasst?