\documentclass[a4paper,10pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage{ngerman} 
\usepackage[pdftex,bookmarks=true,colorlinks,linkcolor=blue,urlcolor=blue,citecolor=blue]{hyperref}

\sloppy

%opening
\title{JonDoDaemon Handbuch}
\author{JonDos GmbH}
\date{\today}

\begin{document}
\maketitle
\tableofcontents
\section{JonDoDaemon für Debian, Ubuntu und LMDE}
JonDoConsole / JonDoDaemon ist ein JonDonym Proxy Client ohne grafisches Interface. Es kann auf der Kommandozeile bedient oder als Daemon via Telnet Interface ferngesteuert werden. Wie JonDo (GUI) leitet er als Proxy den Datenverkehr ihrer Internetanwendungen verschlüsselt durch die Mixkaskaden und versteckt ihre IP-Adresse.\\

Das Paket enthält 3 Wrapper-Scripte für den Start der Java-Applikation \textit{JonDoConsole.jar}:
\begin{itemize}
 \item \textbf{jondoconsole} startet das Java Programm mit einer passenden JRE (OpenJDK oder Sun) und kümmert sich um die Rotation der Logdateien sowie den Cache der Infoservice-Daten.
 \item \textbf{jondodaemon} dient der Steuerung eines im Hintergrung laufenden Daemons: starten, stoppen, Passwort setzen und Fernsteuerung.
 \item Das Sys-V-Init Script \textbf{/etc/init.d/jondodaemon} kann den Daemon beim Booten oder beim Herstellen einer Netzwerkverbindung automatisch starten und stoppen.
\end{itemize}

\section{Installation}
Für Debian und Ubuntu steht das Paket \textit{jondodaemon} im \href{https://anonymous-proxy-servers.net/en/help/firststeps2.html}{Software Repostitory der JonDos GmbH} zur Installation bereit oder kann von der \href{https:://www.anonym-surfen.de/jondodaemon.html}{Downloadseite} herunter geladen und per Hand installiert werden.\\

Folgende Abhängigkeiten zu anderen Softwarepakten bestehen:
\begin{itemize}
 \item Ein Java Runtime Environment wird benötigt. Sie können das Paket \textit{openjdk-6-jre-headless} oder \textit{sun-java6-jre} (non-free) installieren.
 \item Die Toolsammlung \textit{java-wrappers} wird benötigt.
 \item Die Wrapper-Applikation \textit{rlwrap} wird benötigt.
\end{itemize}

Wenn Sie das DEB per Hand installieren wollen, sind die Abhängigkeiten zuvor mit dem bevorzugten Paketmanager Ihrer Wahl auf die Platte zu spülen. Danach können Sie das Paket mit folgendem Kommando installieren:
\begin{verbatim}
   > sudo dpkg -i jondodaemon_all.deb
\end{verbatim} 

Hinweis: Aufgrund eines Fehlers in der 64-Bit Version von OpenJDK arbeit das Programm mit dieser JRE nicht stabil. Für 64-Bit Maschinen muss die JRE von Oracle genutzt werden. Installieren Sie bitte das Paket \textit{sun-java6-jre} aus dem non-free Zweig Ihrer Distribution. Diese JRE muss nicht als Standard-JRE gesetzt werden, Sie können OpenJDK weiterhin für alle anderen Programme nutzen. JonDoDaemon verwendet \textit{sun-java6}, wenn es installiert ist, unabhängig von Ihren Preferenzen.

\section{JonDoConsole verwenden}
Wer keinen Daemon sondern nur einen JonDo Client ohne GUI auf der Kommandzeile vermöchte, kann \textit{jondoconsole} nutzen. 
\begin{verbatim}
  $ jondoconsole
  JonDoConsole> help
  ...
  JonDoConsole> quit
  $
\end{verbatim} 


\subsubsection*{Einige Kommandos kurz erklärt}

\textbf{help} liefert eine Übersicht der zur Verfügung stehenden Kommandos. Mit \textbf{help command} erhalten sie eine detailliertere Beschreibung einzelner Kommandos.
 \begin{verbatim}
 JonDoConsole> help
 
 Type 'help <command>' for more information about a specific command,
 'status', 'info', 'choose', 'start', 'stop', 'switch', 'autoswitch', 
 'blacklist', 'http' for controlling services,
 'coupon', 'import', 'export', 'delete', 'change', 'password', 
 'requestMonthlyBytes', 'pi' for managing your premium accounts,
 'reload', 'reloadPay', 'autoReload', 'autoReloadPay', 'paymentProxy', 
 'infoserviceProxy' for updating service information,
 'loglevel', 'logdetail', 'logtype' for altering debug settings, 
 'exit' or 'quit' to leave or 'shutdown' to stop the daemon.
 JonDoConsole>
\end{verbatim} 

\textbf{status} zeigt die Informationen zur aktuellen Kaskade, Premium-Guthaben und aktivierten Funktionen
 \begin{verbatim}
 JonDoConsole> status
 
 State:CONNECTED, AutoSwitch:OFF, HTTPFilter:ON,
 autoInfoServiceUpdate:ON, autoAccountUpdate:ON, Balance: 126.2 MByte
 Current service: 'Koala-SpeedPartner-Titan'
 Speed: >= 800 kbit/s Delay: <= 750 ms
 Current users: 50 Security: 6,1/6,6 [Mix1: ch, Mix2: de, Mix3: nl] PREMIUM SOCKS
 Operator1(at): Zeitwort, Operator2(de): SpeedPartner, Operator3(gb): Delta-Protect
 JonDoConsole>
 \end{verbatim}

\textbf{switch} wechselt die Kaskade und wählt zufällig eine neue Kaskade aus.\\

\textbf{choose} und \textbf{info} listen die verfügbaren Kaskaden auf und ermöglichen eine gezielte Auswahl. Die aktuell gewählte Kaskade ist mit einem * gekennzeichnet.
\begin{verbatim}
    JonDoConsole> choose
 
    1. Fondue-Montesquieu-Saturn      [S] (nl->de,  nl->de,  bg->gb)
    * 2. Koala-SpeedPartner-Titan     [S] (ch->at,  de,  nl->gb)
    3. Opossum-Berwald-Merkur         [S] (ch->at,  cz->gb,  bg->gb)
    4. Neptun-Wombat-Shamrock         [S] (nl->gb,  ch->at,  fr->us)
    5. Hermes-Grolsch-Transformer     [S] (ua->de,  nl->de,  gb->bg)
    Please enter a mix service index or type <ENTER> to skip.
    JonDoConsole:choose> 
\end{verbatim}

\textbf{exit} oder \textbf{quit} beenden das Programm.

\subsubsection*{Premium Dienste nutzen}
Die volle Leistungsfähigkeit entfaltet JonDonym erst mit einem kostenpflichtigen Premium-Account. Um Premium-Kaskaden und weitere zusätzliche Features zu nutzen, können Sie im \href{https://shop.anonymous-proxy-servers.net/bin/payment}{Webshop der JonDos GmbH} einen Gutschein-Code kaufen und diesen Code für die Erstellung eines Premium-Accounts mit dem Kommando \textbf{coupon} verwenden: 
\begin{verbatim}
   JonDoConsole> coupon
   Please enter a coupon code or type <ENTER> to skip.
   JonDoConsole:code> C72FA880A38E992A
\end{verbatim}

Alternativ können Sie mit dem JonDo (GUI) einen Premium Account erstellen und diesen Account aus der Konfiguration \textit{jap.conf} importieren oder ein Backup aus einer ACC-Datei importieren (Kommando \textbf{import}).
\begin{verbatim}
   JonDoConsole> import
   A JAP/JonDo configuration file was found at '/home/xxxxx/.jap.conf'.
   Would you like to import from this config file (c) or do you want to
   manually (m) specify a path for importing accounts? Type <ENTER> to skip.
   JonDoConsole:choose (c) or (m)> m
   JonDoConsole:file> 
\end{verbatim}

Wenn sie einen Premium-Account erstellt haben, verbindet sich der Daemon bevorzugt mit den Premium-Kaskaden von JonDonym. Kostenfreie Kaskaden werden nicht für den zufällige Wechsel mit dem Kommando \textit{switch} genutzt und werden bei \textit{choose} nicht angezeigt. Nutzen Sie das Kommando \textit{info}, wenn sie sich unbedingt mit einer kostenfreie Kaskade verbinden möchten.


\section{JonDoDaemon als User verwenden}
JonDoConsole kann als Daemon gestartet werden. Das Programm läuft dann im Hintergrund. Starten, stoppen oder den akuellen Status abfragen (running or not running) erfolgt mit den üblichen Kommandos:
 \begin{verbatim}
    $ jondodaemon start | stop | status
 \end{verbatim}

\subsubsection*{Remote Control Port aktivieren}
Der Daemon im Hintergrund kann via Remote Control Port (Telnet Interface) ferngesteurt werden. Als erstes ist das Passwort für den Remote Control Port festzulegen. Dafür ist der Daemon zu stoppen.
 \begin{verbatim}
 $ jondodaemon passwd
 Please enter a password to protect the daemon or 'break' to cancel.
 Use at least 10 characters: letters, numbers, upper and lower case.
 JonDoConsole#password>
 Please type your daemon password a second time.
 JonDoConsole#password>
 Exiting...
\end{verbatim}

Anschließend ist die Konfigurationsdatei \textit{/etc/jondo/jondodaemon.conf} oder \textit{\$HOME/.jondoconsole/jondodaemon.conf} mit einem Texteditor zu bearbeiten und der Remote Control Port ist zu aktivieren:
 \begin{verbatim}
    ENABLE_CONTROL_PORT="yes"
    CONTROL_LISTEN_ADDRESS=localhost
    CONTROL_LISTEN_PORT=4004
 \end{verbatim}
Danach können sie den JonDoDaemon wieder starten und ihn via Control Port fernsteuern (siehe unten).

\section{JonDoDaemon automatisch starten}
Sie können JonDoDaemon beim Booten automatisch starten oder wenn eine Netzwerkverbindung hergestellt wird. In diesen Fällen werden nur die Konfigurationsdateien \textit{/etc/jondo/jondodaemon.conf} und \textit{/etc/jondo/jondoconsole.conf} genutzt.

\subsubsection*{Beim Booten automatisch starten}
Um JonDoDaemon beim Booten zu starten, ist das Init-Script zu nutzen.
  \begin{verbatim}
    $ sudo insserv jondodaemon
  \end{verbatim}

Soll JonDoDaemon nicht mehr beim Booten starten, ist das Init-Script wieder aus allen Runleveln zu entfernen:
  \begin{verbatim}
    $ sudo insserv -r jondodaemon
  \end{verbatim}


\subsubsection*{Nur bei vorhandener Netzwerkverbindungen starten}
Für Laptops oder Netbooks ohne ständige Netzverbindung ist es besser, den Daemon nur zu starten, wenn eine Netzwerkverbindung besteht. Startet man den Daemon beim Booten ohne Netzwerkverbindung, versucht er ständig eine Verbindung zu den Mixkaskaden herzustellen und reduziert die Akkulaufzeit.\\

Um nach dem Herstellen einer Netzwerkverbindung JonDoDaemon zu starten, ist ein Script \textit{jondodaemon} im Verzeichnis \textit{/etc/network/if-up.d/} zu erstellen mit folgendem Inhalt:
\begin{verbatim}
    #!/bin/sh
    set -e
    [ "$IFACE" != "lo" ] || exit 0
    /etc/init.d/jondodaemon start
\end{verbatim}

Vor dem Beenden der Netzwerkverbindung sollte JonDoDaemon herunter gefahren werden. Dafür ist ein Script \textit{jondodaemon} im Verzeichnis \textit{/etc/network/if-down.d/} zu erstellen mit folgendem Inhalt:
\begin{verbatim}
    #!/bin/sh
    set -e
    /etc/init.d/jondodaemon stop
\end{verbatim}

Für beide Scripte ist das Attribut \textit{ausführbar} zu setzen:
\begin{verbatim}
    $ sudo chmod +x /etc/network/if-up.d/jondodaemon
    $ sudo chmod +x /etc/network/if-down.d/jondodaemon
 \end{verbatim}

\subsubsection*{Premium Accounts verwenden}
Ein automatisch beim Booten gestarteter Daemon hat keinen Zugriff auf die Konfigurationen der normaler User und kann die dort gespeicherten Premium-Accounts nicht nutzen. Wenn Sie mit einem automatisch gestarteten Daemon die Premium-Kaskaden verwenden möchten, gibt es zwei Möglichkeiten:
\begin{enumerate}
 \item Wenn Sie \textit{jondoconsole} für die Erstellung des Premium Accounts mit root-Rechten starten, wird Ihr Premium-Account im Verzeichnis \textit{/etc/jondo} gespeichert. Nutzen sie die Kommandos \textbf{coupon} oder \textbf{import}.
 \begin{verbatim}
      $ sudo invoke-rc.d jondodaemon stop
      $ sudo jondoconsole
      JonDoConsole> import
      ...
      JonDoConsole> quit
      $ sudo invoke-rc.d jondodaemon start
\end{verbatim} 
 \item Sie können sich via Remote Control Port mit dem Daemon verbinden und mit dem Kommandos \textbf{coupon} eine Premium Account erstellen oder mit \textbf{import}  aus einer Backup Datei importieren. 

\end{enumerate}


\subsubsection*{Remote Control Port aktivieren}
Um den automatisch gestarteten JonDoDaemon per Remote-Controller fernzusteuern, ist ein Passwort zu setzen und der Control-Port in der Konfiguration zu aktivieren. Die Vorgehensweise unterscheidet sich etwas von der oben beschriebenen, da die Aktionen mit root-Rechten ausgeführt werden  müssen. Es wird ein starkes Passwort mit mindestens 10 Zeichen und Zahlen gefordert.\\

Vor dem Setzen des Passworts ist \textit{jondodaemon} zu beenden, falls er läuft.
 \begin{verbatim}
 $ sudo invoke-rc.d jondodaemon stop  (falls er läuft)
 $ sudo invoke-rc.d jondodaemon passwd
 Please enter a password to protect the daemon or 'break' to cancel.
 Use at least 10 characters: letters, numbers, upper and lower case.
 JonDoConsole#password>
 Please type your daemon password a second time.
 JonDoConsole#password
 \end{verbatim}

Anschließend ist die Konfigurationsdatei \textit{/etc/jondo/jondodaemon.conf} mit einem Texteditor zu bearbeiten und der Remote Control Port ist zu aktivieren:
 \begin{verbatim}
    ENABLE_CONTROL_PORT="yes"
    CONTROL_LISTEN_ADDRESS=localhost
    CONTROL_LISTEN_PORT=4004
 \end{verbatim}

Danach können sie den JonDoDaemon wieder starten. 
 \begin{verbatim}
    $ sudo invoke-rc.d jondodaemon start
 \end{verbatim}


\section{JonDoDaemon fernsteuern}
Um sich mit einem laufenden Daemon via Remote Control Port zu verbinden und ihn fernzusteuern, startet man folgendes Kommando im Terminal:
 \begin{verbatim}
    $ jondodaemon control
    Please enter the daemon password or type 'break' to cancel.
    JonDoConsole#password> *******
    You are logged in...
    JonDoConsole>
 \end{verbatim}

Der Remote Control Port ist ein einfaches Telnet Interface. Man kann auch einen beliebigen anderen Telnet Client nutzen, um sich mit dem laufenden Daemon zu verbinden. Verwendet man ein einfaches \textit{telnet} als Controler, dann erscheint ihr Passwort als Text (nicht mit **** verdeckt). Die Session könnte wie folgt aussehen:
 \begin{verbatim}
 $ telnet localhost 4004
 Connected to localhost.
 Escape character is '^]'.
 Type 'login' to log into JonDoConsole.
 
 JonDoConsole> login
 Received login request! Please wait for the authentication request...
 Please enter the daemon password or type 'break' to cancel.
 JonDoConsole#password> <passwort>
 You are logged in...
 
 JonDoConsole> status
 State:CONNECTED, AutoSwitch:ON, ServiceFilter:'Default Filter', HTTPFilter:ON
 ...
 JonDoConsole> quit 
 \end{verbatim}

\section{Weitere Features}
In der Konfigurationsdatei \textit{\$HOME/.jondoconsole/jondodaemon.conf} oder \textit{/etc/jondo/jondodaemon.conf} können weitere Features aktiviert werden.

\subsubsection*{Anti-Censorship-Forwarder aktivieren}
China und andere Länder bauen die Zensur im Internet systematisch aus. Auch die Mix-Kaskaden und Infoservices von JonDonym werden immer öfter als unerwünschte Dienste gesperrt. Der Anti-Censorship-Forwarder kann Surfern in diesen Ländern helfen, die JonDonym Kaskaden zu erreichen, wenn der Dienst blockiert wird.\\

Um den Anti-Censorship-Forder bereit zu stellen, muss der eigene Rechner auf einem Port aus dem Internet erreichbar sein. Evtl. ist der eigene Router zu konfigurieren. Den Anti-Censorship-Forwarder aktiviert man in der Konfigurationsdatei mit:
 \begin{verbatim}
    ENABLE_FORWARDER="yes"
    FORWARDER_LISTEN_PORT=4005
 \end{verbatim}

Soll der Daemon aussschließlich als Anti-Censorship-Forwarder arbeiten, kann man den lokalen Proxy in der Konfigurationsdatei deaktivieren.
 \begin{verbatim}
    ENABLE_JONDONYM="no"</code>
 \end{verbatim}

\subsubsection*{Proxy für ausgehenden Traffic nutzen}
Wenn es notwendig sein sollte, einen Proxy für ausgehenden Traffic zu nutzen, kann man den Proxy ebenfalls in der Konfigurationsdatei aktieren:
\begin{verbatim}
    USE_PROXY="yes"
    PROXY_HOST=server.tld
    PROXY_PORT=8080                                                                                                                                                                                                                                                                    
\end{verbatim}

Authentifizierung gegenüber dem Proxy wird ebenfalls unterstützt:
\begin{verbatim}
    USE_PROXY_AUTH="yes"
    PROXY_USER="username"
    PROXY_PASS="password"
\end{verbatim}

\end{document}
