UniFi on a Banana Pi

The following article works:
http://erikvanpaassen.tweakblogs.net/blog/10024/turning-a-raspberry-pi-into-a-unifi-controller-appliance.html

But I had to change JAVA_HOME to “JAVA_HOME=/usr/lib/jvm/java-7-openjdk-armhf/” in the sysv-init service file (/etc/init.d/unifi) provided by erikvanpaassen.tweakblogs.net because I used OpenJDK-7-jre instead of the Oracle Java runtime environment.

In addition to that I had to install the jsvc package.

#!/bin/bash
#
# /etc/init.d/UniFi -- startup script for Ubiquiti UniFi
#
#
### BEGIN INIT INFO
# Provides:          unifi
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Ubiquiti UniFi
# Description:       Ubiquiti UniFi Controller
### END INIT INFO

NAME="unifi"
DESC="Ubiquiti UniFi Controller"

BASEDIR="/opt/UniFi"
MAINCLASS="com.ubnt.ace.Launcher"

PIDFILE="/var/run/${NAME}/${NAME}.pid"
PATH=/bin:/usr/bin:/sbin:/usr/sbin

#JAVA_HOME=/usr/lib/jvm/jdk-7-oracle-armhf
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-armhf/
# JSVC - for running java apps as services
JSVC=`which jsvc`
#JSVC_OPTS="-debug"
JSVC_OPTS="${JSVC_OPTS}\
 -home ${JAVA_HOME} \
 -cp /usr/share/java/commons-daemon.jar:${BASEDIR}/lib/ace.jar \
 -pidfile ${PIDFILE} \
 -procname ${NAME} \
 -outfile SYSLOG \
 -errfile SYSLOG \
 -Djava.awt.headless=true -Xmx384M"

[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions

[ -d /var/run/${NAME} ] || mkdir -p /var/run/${NAME}
cd ${BASEDIR}

is_not_running() {
        start-stop-daemon --test --start --pidfile "${PIDFILE}" \
                --startas "${JAVA_HOME}/bin/java" >/dev/null
        RC=$?
        return ${RC}
}

case "$1" in
        start)
                log_daemon_msg "Starting ${DESC}" "${NAME}"
                if is_not_running; then
                        ${JSVC} ${JSVC_OPTS} ${MAINCLASS} start
                        sleep 1
                        if is_not_running; then
                                log_end_msg 1
                        else
                                log_end_msg 0
                        fi
                else
                        log_progress_msg "(already running)"
                        log_end_msg 1
                fi
        ;;
        stop)
                log_daemon_msg "Stopping ${DESC}" "${NAME}"
                if is_not_running; then
                        log_progress_msg "(not running)"
                else
                        ${JSVC} ${JSVC_OPTS} -stop ${MAINCLASS} stop
                fi
                log_end_msg 0
        ;;
        status)
                status_of_proc -p ${PIDFILE} unifi unifi && exit 0 || exit $?
        ;;
        restart|reload|force-reload)
                if ! is_not_running ; then
                        if which invoke-rc.d >/dev/null 2>&1; then
                                invoke-rc.d ${NAME} stop
                        else
                                /etc/init.d/${NAME} stop
                        fi
                fi
                if which invoke-rc.d >/dev/null 2>&1; then
                        invoke-rc.d ${NAME} start
                else
                        /etc/init.d/${NAME} start
                fi
        ;;
        *)
                log_success_msg "Usage: $0 {start|stop|restart|reload|force-reload}"
                exit 1
        ;;
esac

exit 0

8192 bit ssl Zertifikate unter OS X

Apple hat angst vor DoS Attacken und limitiert die Schlüssellänge recht extrem. Wird allerdings zum Problem wenn man auf eine Webseite mit 8192 bit langem Zertifikat besuchen möchte.

Hier der Fix den man einfach in den Terminal Emulator des Vertrauens werfen kann. Danach einfach den Browser neu starten.

Quelle: http://blog.shiz.me/post/67305143330/8192-bit-rsa-keys-in-os-x

If you’re on Mountain Lion or lower:
sudo defaults write /Library/Preferences/com.apple.crypto RSAMaxKeySize -int 32768

If you’re on Mavericks or higher:
sudo defaults write /Library/Preferences/com.apple.security RSAMaxKeySize -int 32768

CPAN:SQLite – weniger RAM für CPAN :-)

Moin,

die Benutzung von CPAN kann mit wenig Arbeitsspeicher und/oder keinem Swap unmöglich sein.

Abhilfe schafft eine SQLite Datenbank für CPAN.

su 
# root Passwort eingeben 
cpan CPAN::SQLite 
cpan
o conf use_sqlite 1
o conf commit
quit

In Zukunft wird CPAN hoffentlich weniger Arbeitsspeicher verbrauchen.

Sollte immer noch zu wenig Arbeitsspeicher übrig sein und z.B. ‘cpan upgrade’ weiterhin scheitern empfiehlt sich an ‘App::cpanoutdated’ zu installieren.

cpan
install App::cpanoutdated
quit
cpan-outdated | xargs cpan -i

:-)

Quellen:

chmod trivial

Definition:

  • u = Benutzer (User)
  • g = Gruppe (Group)
  • o = andere Benutzer (others)
  • a = alle (all)
  • r = lesen (read)
  • w = schreiben (write)
  • x = ausführen (execute)
  • + fügt die Rechte zu bestehenden hinzu
  • – entfernt die Rechte
  • = setzt alle rechte

Beispiele:

  • chmod o+x Ordner/Datei sorgt dafür, dass andere in den Ordner hineinsehen oder die Datei ausführen können.
  • chmod g-w Ordner/Datei sorgt dafür, dass die Gruppe zu der der Ordner oder die Datei gehört Ordner bzw. die Datei nicht verändern können.
  • chmod a=rw Datei sorgt dafür, dass jeder die Datei lesen und verändern kann.

Alternativ ist es auch möglich die Rechte auch anders anzugeben[1]. Aber so ist es denk ich mal für Einsteiger am einfachsten.

man chmod ftw! :D


[1] http://en.wikipedia.org/wiki/Chmod#Usage

iptables

Bis jetzt hatte ich iptables[1] nur über shorewall[2] angefasst. Da ich aber eigentlich nur vino-server[3] (der VNC Server der in Gnome integriert ist) auf meinem Desktop Rechner dazu bringen wollte nur von localhost erreichbar zu sein schien mir shorewall dann doch etwas übertrieben.

Nach kurzer Recherche über Googol konnte ich mir ein kleines Bash Skript zusammenschustern in das man einfach die iptables/ip6tables eintippt und das ganze dann immer wenn man neue Regeln für Netfilter hat ausführt. Über ‘/etc/network/if-up.d/’ stelle ich (hoffentlich) sicher, dass die Regeln auch immer nach jedem Neustart in den Kernel gelangen.

Bei mir unter Debian Linux Wheezy (Testing) funktioniert das ganze bis jetzt einwandfrei. Allerdings freue ich mich immer über Korrekturen. :-)

Download: firewall-create-rules.sh


[1] http://de.wikipedia.org/wiki/Iptables
[2] http://de.wikipedia.org/wiki/Shorewall
[3] https://live.gnome.org/Vino

Canon EOS 600D

Super Kamera. Ich muss gestehen, dass ich im Moment leider noch zu wenig Ahnung vom Fotografieren habe als das ich die Kamera voll ausnutzen könnte. Werde deshalb sobald ich dazu komme den ein oder anderen Kurs belegen, das Handbuch durchlesen und ein paar Photos machen. :-)

Orchidee

Leider ist die Unterstützung für Linux von Canon nicht wirklich existent. Das sollte natürlich auch kein Problem darstellen. Leider kann man die Speicherkarte nicht so ohne weiteres ins System einhängen, wenn man die Kamera mit dem mitgelieferten USB Kabel anschließt.

Die Software von Canon kann man zwar mit wine installieren, allerdings ist das ganze dann nicht wirklich funktional.

aptitude install gphoto2

  • Schließt die Kamera an.
  • Lasst gphoto2 für euch die Kamera erkennen

gphoto2 --auto-detect

  • Wenn eure Arbeitsumgebung (Gnome, XFCE, Unity, LXDE, TWM, KDE, …) die Kamera erkennt und ins System einhängt einfach wieder aushängen. Da wurden bei mir zumindest keine Daten angezeigt.
  • Danach in der Terminal Emulator eurer Wahl (Gnome Terminal, Terminator, Konsole, …) folgendes eingeben:

gphoto2 --get-all-files --camera "Canon EOS 600D"

  • Natürlich das Modell der Kamera von der vorigen Ausgabe von –auto-detect übernehmen.
  • Warten bis alle Dateien auf der Festplatte sind. :-)

Die graphische Oberfläche von gphoto2 namens gtkam hat bei mir leider noch nicht funktioniert.

Sobald ich meine Klausur am 30.8. geschrieben habe werde ich mich da mit mehr Elan reinstürzen. ^_^

Ente

Nachtrag 20.08.2012: gtcam funktioniert. Allerdings hatte ich vergessen genauso wie bei gphoto2 vorzugehen.

  1. Kamera anschließen und anschalten.
  2. Warten bis die Kamera erkannt und automatisch ins System eingehängt wird.
  3. gtcam starten und die Kamera hinzufügen / automatisch erkennen.
  4. Bevor man bei “Kamera hinzufügen” auf “OK” klickt muss man die Kamera bzw. den angezeigten Speicher aus dem System aushängen.
  5. “OK” klicken und nutzen.

Rsync und SCP zusammen nutzen

Folgendes finde ich sehr praktisch: :-)

rsync -P --bwlimit=45 --rsh=ssh username@host:/tmp/test.tst .
[…]
Das Ganze funktioniert folgendermaßen:

  • der lokale rsync client baut eine ssh Verbindung zum remote server auf und startet dort selbständig einen rsync deamon, der jedoch nur Verbindungen von localhost annimmt
  • per ssh-tunnel verbindet sich der lokale rsync client dann zum rsync deamon auf dem remote server
  • -P ist gleichbedeutend mit –partial –progress – was nichts anderes heißt als das teilweise übertragene Dateien erhalten bleiben und der Fortschritt der Übertragung angezeigt wird
  • –bwlimit KBYTE/S ermöglicht die Drosselung der Übertragungsgeschwindigkeit, Angabe in kByte/s

Quelle: http://geek-blog.de/

Wenn der SSH Daemon auf einem anderen Port hört kann man das einfach wie folgt angeben.
--rsh='ssh -p42'