Autor: Wolfgang Klinger

TYPO3 CMS 7+ Login Provider API und ’sorting‘

Mit der neuen Login Provider API von TYPO3 7+ ist es relativ einfach ein neues Backend Login Service (z.B. SSO) einzuführen.

Der Login Provider wird über ext_localconf.php registriert:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['backend']['loginProviders'][] = array(
   'provider' => \Plan2net\ExampleAuth\LoginProvider\ExampleLoginProvider::class,
   'sorting' => 200,
   'icon-class' => 'fa-example',
   'label' => 'LLL:EXT:example_auth/…/locallang.xlf:login.link'
);

und hier kommt der Fallstrick auf den ich aufmerksam machen möchte:

sorting bezieht sich nicht auf die Sortierung, die ja allgemein bei 0 beginnen würde (als erster Eintrag), sondern ist eine Priorität. Es zählt hier also der höchste Wert, dann der zweithöchste, usw. Will man seinen eigenen Login Provider als Standard eingetragen haben (statt dem üblichen Benutzername und Passwort), setzt man sorting auf einen hohen Wert wie oben im Beispiel.

Kleines Shell Script zum Auffinden von Bildern mit gewisser Größe

Voraussetzungen:

  • Bash
  • find, awk
  • identify von ImageMagick oder GraphicsMagick
#!/bin/bash

MIN_WIDTH=240
MIN_HEIGHT=200

# internal field separator, https://bash.cyberciti.biz/guide/$IFS
# changed to make file names with spaces work
OIFS="$IFS"
IFS=$'\n'
# find all files with type image
for image in `find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}'`; do
# get image dimensions (width/height), ignore errors
       width_and_height=`identify -format '%w %h' "$image" 2>/dev/null`
       if test -n "$width_and_height"; then
               width=`echo "$width_and_height" | awk '{print $1}'`
               height=`echo "$width_and_height" | awk '{print $2}'`

               if [ "$width" -lt $MIN_WIDTH ] || [ "$height" -lt $MIN_HEIGHT ]; then
                       echo "wrong dimensions: $image $width x $height"
               fi
       else
               echo "unable to get image dimensions for $image"
       fi
done
IFS="$OIFS"

TYPO3 / fluidcontent_core / gridelements / Standard Content Elemente / anderes Layout

Praxisbeispiel mit fluidcontent_core und gridelements

Problemstellung

Ich hatte das Problem, dass ich in einem Setup mit fluidcontent_core und gridelements in einem fluid Template (z.B. für das Standard Content Element „Text“) gerne gewusst hätte, ob das Element in einem (bestimmten) gridelements Kontext gerendert wird.

Umgesetzte Lösung

a) gridelements Setup für das Layout mit dem Alias „special“:

tt_content.gridelements_pi1.20.10.setup {
  special < lib.gridelements.defaultGridSetup
  special {
    cObject = FLUIDTEMPLATE
    cObject {
      file = EXT:template/Resources/Path/To/Template/Special.html
    }
    columns.default.renderObj {
      10 = LOAD_REGISTER
      10.grid = 1
      30 = RESTORE_REGISTER
    }
  }
}

Hier setze ich einfach den Wert eines Registers „grid“ auf einen Wert 1.
columns.default.renderObj.20 ist eine Referenz auf tt_content (ein CASE Objekt, das auch ein stdWrap Property kennt).

Wie man ein git submodule wirklich loswird

Hier ein Beispiel wie man ein git submodule wirklich loswird (um danach z.B. im gleichen Pfad aus einem anderen Repository wieder ein neues anzulegen).

git submodule deinit typo3conf/ext/mysubmodule
git rm -rf typo3conf/ext/mysubmodule
rm -rf .git/modules/typo3conf/ext/mysubmodule
[1]
git commit -m "removed submodule mysubmodule"

[1] ohne diesem Schritt kann es zu folgender Fehlermeldung kommen, wenn man dann versucht wieder ein neues submodule im gleichen Pfad anzulegen:
A git directory for 'typo3conf/ext/mysubmodule' is found locally with remote(s):
origin https://github.com/old/mysubmodule.git
If you want to reuse this local git directory instead of cloning again from https://github.com/new/mysubmodule.git use the '--force' option. If the local git directory is not the correct repo or you are unsure what this means choose another name with the '--name' option.

Web Development with Node and Express

Web Development with Node and Express by Ethan Brown (O’Reilly). Copyright 2014 Ethan Brown,

ISBN 9781491949306
327 Seiten, broschiert
eBook-Format: PDF, EPUB, MOBI
Preis: € 20,99

Zielgruppe

Javascript erfahrene Programmierer, die sich einen Überblick über die Entwicklung von Web Anwendungen mit Node.js und dem Web Framework Express verschaffen möchten.

Das Buch ist sowohl als Druckausgabe, als auch als E-Book verfügbar. Es bietet einen Einstieg in alle relevanten Themen. Ergänzende Kapitel zu Test/QA, Scaling, Monitoring, Debugging, API, Wartung, Best Practices und Deployment runden das Ganze ab.

In der Praxis

Buch-Cover „Web Development with Node & Express“
Buch-Cover

Durch die vielen Codebeispiele ist alles leicht nachvollziehbar und selbst auszuprobieren.
Der gesamte Sourcecode ist online auf github verfügbar. Stolperfallen und spezielle Tipps sind durchgängig markiert.

TYPO3 CMS 6+: show only certain system categories (sys_category) in the wizard / zeige nur bestimmte Kategorien (sys_category) im System-Kategorien Wizard

Let’s say you want to use the new TYPO3 CMS 6.x+ system categories (sys_category) in your own extension.

As the name suggests these are system-wide categories, so the category tree can be very large and may show categories you don’t want to use/show for your special record type.

To limit the categories in the category wizard for your own records, take the following steps:

  • save your category records in different folders per type, e.g. in a folder with PID 135 (categories for type A) and another with PID 136 (categories for type B)
  • save your A records in a separate folder, e.g. in a folder with PID 142

404er bei woff Dateien

Webfonts sind fast schon Teil jedes Projekts, wenn sich dann allerdings Fehlermeldungen wie:

… File does not exist: /var/www/client/fileadmin/fonts/78cb2356-22e7-4eae-bbb7-f947f2384d4b.woff) format(„woff“) …

im Apache Error Log finden und die Datei aber wirklich existiert, muss man noch den richtigen Mime-Type konfigurieren, z.B. per .htaccess:

AddType application/x-font-woff .woff

CSV / zwei Spalten mit VIM austauschen

%s/\(".*"\),\(".*"\)/\2,\1/g

Über sendmail ausgehende E-Mails an lokale Adresse umleiten

Manchmal (auf Entwicklungsumgebungen wohl immer)  ist es ganz praktisch, wenn keine E-Mails unabsichtlich ins Internet entschwinden. Vor allem, wenn man mit den Daten echter Kunden „jongliert“.
Damit man nicht immer daran denken muss, kann man sendmail so konfigurieren, dass eine lokale E-Mail Adresse als Smarthost verwendet wird und somit alle E-Mails in der lokalen Mailbox landen.

Und das geht so (gegebenenfalls muss sudo zum Einsatz kommen):

  1. # vim /etc/mail/sendmail.mc
  2. define(`SMART_HOST',`local:wklinger') am Anfang der Datei einfügen
  3. Konfiguration erzeugen: # m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
  4. sendmail neu starten: # /etc/init.d/sendmail restart

OSSEC / Warnung bei bestimmter Anzahl ausgehender Mails

Wie kann ich mit OSSEC die Anzahl ausgehender Mails überwachen und bei Erreichen einer bestimmten Anzahl pro Zeiteinheit einen Alert versenden?

In unserem Fall hatten wir qmail als MTA installiert. Die folgende Anleitung lässt sich aber auch auf andere Programme umlegen.

Zuerst brauchen wir einen qmail Decoder. Die lokalen Decoder habe ich im etc/local_decoder.xml der OSSEC Installation (/var/ossec) abgelegt.

Der qmail Decoder sieht in dem Fall so aus:

<decoder name="qmail-delivery">
  <program_name>qmail</program_name>
  <regex>\S+ starting delivery \S+: msg \S+ to remote (\S+)</regex>
  <order>user</order>
</decoder>

Wir fragen also mit einem regulären Ausdruck nach einem String, der dem Log Eintrag „starting delivery“ entspricht. So eine Zeile könnte z.B. so aussehen:

Anfrage