break
Okt 30

Vor kurzem stand ich vor dem Problem per PHP hochgeladene Dateien auf ihren Dateityp hin überprüfen zu müssen. Man möchte ja nicht unbedingt fremde Scripts oder Programme auf seinen Webspace geladen bekommen.
Prinzipiell kein Problem, dachte ich mir. Man muss ja lediglich die

$_FILES["file"]["type"]

Variable überprüfen.
Doch genau hier hatte ich das Problem, dass ich einige Zeit nach den falschen Begriffen suchte und erst nach geraumer Zeit auf die wunderschöne Tabelle bei SELFHTML stieß.

All jenen welchen es auch so geht sei der obige Link ans Herz gelegt.
Zusätzlich hier noch die wichtigsten Dateitypen mit den zugehörigen MIME-Bezeichnungen von SELFHTML:

MIME-Typ Dateiendung(en) Bedeutung
application/acad *.dwg AutoCAD-Dateien (nach NCSA)
application/msexcel *.xls *.xla Microsoft Excel Dateien
application/msword *.doc *.dot Microsoft Word Dateien
application/octet-stream *.bin *.exe *.com *.dll *.class Ausführbare Dateien
application/pdf *.pdf Adobe PDF-Dateien
application/x-httpd-php *.php *.phtml PHP-Dateien
application/zip *.zip ZIP-Archivdateien
audio/x-wav *.wav WAV-Dateien
image/gif *.gif GIF-Dateien
image/jpeg *.jpeg *.jpg *.jpe JPEG-Dateien
image/png *.png PNG-Dateien
image/tiff *.tiff *.tif TIFF-Dateien
text/comma-separated-values *.csv kommaseparierte Datendateien
text/css *.css CSS Stylesheet-Dateien
text/html *.htm *.html *.shtml HTML-Dateien
text/javascript *.js JavaScript-Dateien
text/plain *.txt reine Textdateien
text/xml *.xml XML-Dateien
video/mpeg *.mpeg *.mpg *.mpe MPEG-Dateien
video/quicktime *.qt *.mov Quicktime-Dateien
video/x-msvideo *.avi Microsoft AVI-Dateien
Okt 24

Da ich mich derzeit mit dem konfigurieren eines Debian Servers für meinen derzeitigen Job beschäftige, hier mal eine kleine Anleitung im zusammenhang mit OpenVPN. Es geht hier speziell um gebridgetes VPN. Mit dem folgenden Script wird bei jedem Start automatisch ein virtuelles TAP Device für OpenVPN erstellt und zur Ethernet Bridge hinzugefügt.

openvpn-logo

Folgende Pakete müssen installiert sein:

  • openvpn
  • bridge-utils

In /etc/network/interfaces wird die Bridge br0 eingetragen und konfiguriert:

# The primary network interface
auto br0
iface br0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.254
dns-nameservers 192.168.0.1
bridge_ports all

Unter bridge_ports sind alle Interfaces einzutragen die bei Systemstart zur Bridge hinzugefügt werden sollen. Da es in meinem Fall nur ein physikalisches Interface gibt habe ich all eingetragen. Alternativ wären die einzelnen Interfaces eth0, eth1, etc. anzugeben.
ACHTUNG: Die Interfaces die zur Bridge hinzugefügt werden sollen dürfen nicht in der Datei eingetragen und somit konfiguriert sein.

debian-logo

Nun zum eigentlichen Startscript für das tap Interface. Das Script stammt ursprünglich von hier und war für OpenWRT vorgesehen.
In /etc/init.d/ sollte nun folgendes Script erstellt werden:

#!/bin/sh

# Creates TAP devices for use by OpenVPN and adds them to Bridge

# Define Bridge Interface
br="br0"
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"

case "$1" in
        start)
                # Make sure module is loaded
                insmod tun
                # Build tap devices
                for t in $tap; do
                    openvpn --mktun --dev $t
                done
                # Add TAP interfaces to bridge
                for t in $tap; do
                    brctl addif $br $t
                done
                #Configure bridged interfaces
                for t in $tap; do
                    ifconfig $t 0.0.0.0 promisc up
                done
        ;;
        stop)
                for t in $tap; do
                    ifconfig $t 0.0.0.0 down
                done
                for t in $tap; do
                    brctl delif $br $t
                done
                for t in $tap; do
                    openvpn --rmtun --dev $t
                done
                rmmod tun
        ;;
         *)
                echo "$0 {start|stop}"
        ;;
esac

Ich nenne die Datei Beispielsweise tap-interfaces.

Diese Datei muss nun mit

chmod +x tap-interfaces

ausführbar gemacht werden und abschließend mit

update-rc.d /etc/init.d/tap-interfaces defaults

zu den Scripten die SysVinit bei Systemstart lädt hinzugefügt werden.