blog.bartlweb - a technologist's external brain

Alle Artikel

Hilfsfunktionen der TYPO3-Klasse t3lib_div

Die TYPO3 Klasse t3lib_div bietet viele für die Extension-Entwicklung hilfreiche Funktionen. Die Interessantesten daraus sind unten kurz vorgestellt.

Post und Get

t3lib_div::_GP($var)

Gibt den Wert der GET oder POST Variable zurück.

t3lib_div::_GET($var)

Gibt den Wert der GET Variable zurück. Ohne Übergabeparameter wird ein Array aller Variablen zurückgegeben.

t3lib_div::_POST($var)

Gibt den Wert der POST Variable zurück. Ohne Übergabeparameter wird ein Array aller Variablen zurückgegeben.

XML

t3lib_div::array2xml($array)

Konvertiert ein PHP-Array in eine XML-Struktur.

t3lib_div::xml2array($xml)

Konvertiert eine XML-Struktur in ein PHP-Array.

Dateien

t3lib_div::getURL($file)

Liefert den Inhalt einer als absoluter Pfad oder als URL angegebenen Datei zurück.

PHP-Konstanten in TYPO3

Die folgenden Konstanten stehen in PHP für die Entwicklung von TYPO3-Extensions zu Verfügung.

TYPO3_MODE - liefert FE für Frontend bzw. BE für Backend zurück
PATH_site - absoluter Pfad zum Hauptverzeichnis der TYPO3-Installation
PATH_typo3 - absoluter Pfad zum Verzeichnis typo3
PATH_t3lib - absoluter Pfad zum Verzeichnis t3lib
PATH_typo3conf - absoluter Pfad zum Verzeichnis typo3conf
TYPO3_db - Name der verwendeten TYPO3-Datenbank
TYPO3_db_host - Host der verwendeten TYPO3-Datenbank
TYPO3_db_username - Benutzername zur TYPO3-Datenbank
TYPO3_db_password - Passwort zur TYPO3-Datenbank

Erreichbarkeit von Servern mittels Perl-Skript überwachen

Das folgende Perl-Skript überwacht die Erreichbarkeit von Servern mittels ping oder SSH-Login. Im Fehlerfall wird ein Administrator über die nicht Erreichbarkeit per E-Mail informiert. Um die Überprüfung per SSH zu ermöglichen, muss der Login auf dem Entfernten Server mittels Public-Key, d.h ohne Passwort möglich sein.

Perl-Skript für die Überwachung des freien Fesplattenspeicherplatzes

Das folgende Perl-Skript überwacht unter Linux den freien Speicherplatz der verbauten Festplatten (bzw. gemounteten Partitionen). Dabei lässt sich das Benachrichtigungs-E-Mail und der Schwellenwert für den freien Speicherplatz konfigurieren.

#!/usr/bin/perl
 
#
# settings
#
 
$threshold = 90;
$excludeRegex = "^\/dev\/disk2";
 
$mailfrom = "server\@domain.com";
$mailto = "admin\@domain.com";
$subject = "Server: Low Disk Space!";
 
#
# script
#
 
use FileHandle;
 
@check=`df -h`;
 
@warn = grep { m/(\d+\%)/ and $1 >= $threshold } @check;
 
$counter = 0;
$content = "";
foreach (@warn) {
   if($excludeRegex ne "") {
      if($_ !~ m/$excludeRegex/) {
         $content = $content . $_ . "\n";
         $counter++;
      }
   } else {
      $content = $content . $_ . "\n";
      $counter++;
   }
}
 
if($counter != 0){
   $mail = new FileHandle;
   $mail->open("| /usr/sbin/sendmail -t") || die "Cannot open: $!";
 
   $mail->print("From: $mailfrom\n");
   $mail->print("To: $mailto\n");
   $mail->print("Subject: $subject\n\n");
   $mail->print($content);
 
   $mail->close();
}

Perl-Skript für überwachte Backups mit Hilfe von rsync

Das folgende Perl-Skript holt sich Verzeichnisse via rsync über SSH von einen entfernten Linux-Rechner und sichert diese lokal. Konfigurieren lässt sich dabei der Remote-Host und die zu sichernden Verzeichnisse sowie die Benachrichtigung via E-Maill. Das Skript lässt sich per Cronjob aufrufen und sendet nur im Falle eines Fehlers ein E-Mail.

IP-Adresse via Shell-Skript ermitteln

Das folgende Shell-Skript für Linux ermittelt mit Hilfe des Webservice DynDNS die aktuelle öffentliche IP-Adresse ihrers Internetanschlusses und speichert diese in eine Textdatei.

wget http://checkip.dyndns.org/ -O /dev/stdout 2>/dev/null | sed "s/.*Current IP Address: \([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*/\1/" > /tmp/ip.txt

Datei-Download mittels PHP erzwingen

Das folgende PHP-Skript zwingt den Browser dazu den Download-Dialog auch für unterstützte Dateiformate anzuzeigen und ist somit eine Möglichkeit den Download von Dateien zu erzwingen. Des weiteren bietet es die Möglichkeit den ursprünglichen Speicherort von Dateien zu verschleiern.

GET-Parameter

  • action -> ruft die Funktion auf, sobal der Wert download zugewiesen wird
  • file -> der Dateiname ohne Pfad
  • secure -> MD5-Wert aus der Kombination Dateiname und Salt
  • name (optional) -> alternativer Dateiname für den Download, wird dieser nicht angegeben wird der Dateinamen der Originaldatei verwendet

SMTP Relay Host mit Authentifizierung in Postfix konfigurieren

In den seltesten Fällen ist der eigene Server in der Lage direkt E-Mails an öffentliche Mailserver zu senden ohne unter SPAM-Verdacht zu geraten. In den meisten Fällen bedient man sich daher einem Relay Host. Im folgenden wird die Konfiguration des eigenen Postfix zur Verwendung eines Relay Hosts mit Authentifizierung beschrieben.

Passwort lokal speichern

Der einzige Haken bei dieser Methode ist, dass in den lokalen Konfigurationsdateien das Passwort des Mailservers im Klartext gespeichert wird.

echo [mailrelay.domain.com] [username]:[password] > /etc/postfix/relay_password
postmap hash:/etc/postfix/relay_password

Postfix konfigurieren

Um die Konfiguration anzupassen fügen Sie am besten die folgenden Zeilen ans Ende der Datei /etc/postfix/main.cf ein. Zuvor getätigte Konfigurationen für die unten genannten Punkte werden dabei automatisch überschrieben.

Alfresco Benutzernamen immer ohne . (Punkt) im Namen

Legt man unter Alfresco (alle Versionen) einen Benutzer mit einem . (Punkt) im Nutzernamen an verhält sich die Oberfläche von Alfresco Share nicht mehr korrekt und produziert unerklärliche Fehler.

Einer dieser Fehler tritt zum Beispiel, dann auf, wenn man versucht einzelne Sites zu löschen:

23:23:01,095  ERROR [extensions.webscripts.AbstractRuntime] Exception from executeScript - redirecting to status template error: 01100010 Wrapped Exception (with status template): 01100021 Failed to execute script 'classpath*:alfresco/templates/webscripts/org/alfresco/repository/site/site.delete.js': 01100020 Zugriff verweigert.  Sie verf?gen nicht ?ber die Berechtigungen, um diesen Vorgang durchzuf?hren.
org.springframework.extensions.webscripts.WebScriptException: 01100010 Wrapped Exception (with status template): 01100021 Failed to execute script 'classpath*:alfresco/templates/webscripts/org/alfresco/repository/site/site.delete.js': 01100020 Zugriff verweigert.  Sie verf?gen nicht ?ber die Berechtigungen, um diesen Vorgang durchzuf?hren.

Grund dafür dürfte die Erkennung der Nutzerrechte im Zusammenhang mit dem Benutzernamen sein: Sie verfügen nicht über die Berechtigungen, um diesen Vorgang durchzuführen.