git clone git://git.tuebingen.mpg.de/osl
- - XREFERENCE(ftp://ftp.gnu.org/pub/gnu/gcc, gcc). The
- EMPH(gnu compiler collection) is usually shipped with the
- distro. gcc-3.3 or newer is required.
+ - XREFERENCE(ftp://ftp.gnu.org/pub/gnu/gcc, gcc) or
+ XREFERENCE(http://clang.llvm.org, clang). All gcc versions
+ >= 3.3 are currently supported. Clang version 1.1 or newer
+ should work as well.
- XREFERENCE(ftp://ftp.gnu.org/pub/gnu/make, gnu make) is
also shipped with the disto. On BSD systems the gnu make
scripts which run during compilation require the EMPH(Bourne
again shell). It is most likely already installed.
- - XREFERENCE(http://www.openssl.org/, openssl). The EMPH(Secure
- Sockets Layer) library is needed for cryptographic routines
- on both the server and the client side. It is usually shipped
- with the distro, but you might have to install the "development
- package" (called libssl-dev on debian systems) as well.
+ - XREFERENCE(http://www.openssl.org/, openssl) or
+ XREFERENCE(ftp://ftp.gnupg.org/gcrypt/libgcrypt/, libgcrypt).
+ At least one of these two libraries is needed as the backend
+ for cryptographic routines on both the server and the client
+ side. Both openssl and libgcrypt are usually shipped with the
+ distro, but you might have to install the development package
+ (libssl-dev or libgcrypt-dev on debian systems) as well.
- XREFERENCE(ftp://ftp.gnu.org/pub/gnu/help2man, help2man)
is used to create the man pages.
Linux, you'll need to have ALSA's development package
libasound2-dev installed.
+ - XREFERENCE(http://downloads.xiph.org/releases/ao/,
+ libao). Needed to build the ao writer (ESD, PulseAudio,...).
+ Debian package: libao-dev.
+
Installation
~~~~~~~~~~~~
user=bar
target=~/.paraslash/server.users
- key=~/.paraslash/key.pub.$user
+ key=~/.paraslash/id_rsa.pub.$user
perms=AFS_READ,AFS_WRITE,VSS_READ,VSS_WRITE
mkdir -p ~/.paraslash
echo "user $user $key $perms" >> $target
Next, change to the "bar" account on client_host and generate the
key pair with the commands
- key=~/.paraslash/key.$LOGNAME
- mkdir -p ~/.paraslash
- (umask 077 && openssl genrsa -out $key 2048)
+ ssh-keygen -t rsa -b 2048
+ # hit enter twice to create a key with no passphrase
-para_server only needs to know the public key of the key pair just
-created. It can be extracted with
+This generates the two files id_rsa and id_rsa.pub in ~/.ssh. Note
+that paraslash can also read keys generated by the "openssl genrsa"
+command. However, since keys created with ssh-keygen can also be used
+for ssh, this method is recommended.
- pubkey=~/.paraslash/key.pub.$LOGNAME
- openssl rsa -in $key -pubout -out $pubkey
+Note that para_server refuses to use a key if it is shorter than 2048
+bits. In particular, the RSA keys of paraslash 0.3.x will not work
+with version 0.4.x. Moreover, para_client refuses to use a (private)
+key which is world-readable.
-Copy the public key just created to server_host (you may skip this step
-for a single-user setup, i.e. if foo=bar and server_host=client_host):
+para_server only needs to know the public key of the key pair just
+created. Copy this public key to server_host:
- scp $pubkey foo@server_host:.paraslash/
+ src=~/.ssh/id_rsa.pub
+ dest=.paraslash/id_rsa.pub.$LOGNAME
+ scp $src foo@server_host:$dest
Finally, tell para_client to connect to server_host:
We will also have to tell para_audiod that it should receive the
-audio stream from server_host:
+audio stream from server_host via http:
- para_audiod -l info -r 'mp3:http -i server_host'
+ para_audiod -l info -r '.:http -i server_host'
You should now be able to listen to the audio stream once para_server
starts streaming. To activate streaming, execute
this point on the communication is encrypted using the RC4
stream cipher with the session key known to both peers.
-paraslash relies on the quality of openssl's cryptographically strong
-pseudo-random bytes, on the security of the implementation of the
-openssl RSA and RC4 crypto routines and on the infeasibility to invert
-the SHA1 function.
+paraslash relies on the quality of the pseudo-random bytes provided
+by the crypto library (openssl or libgcrypt), on the security of
+the implementation of the RSA and RC4 crypto routines and on the
+infeasibility to invert the SHA1 function.
Neither para_server or para_client create RSA keys on their own. This
has to be done once for each user as sketched in REFERENCE(Quick start,
contains in the third column the permissions needed to execute the
command.
-A new RSA key can be created with
-
- openssl genrsa -out <private_key> 2048
-
-and the public part may be extracted with
-
- openssl rsa -in <private_key> -pubout -out <public_key>
-
-Note that para_server refuses to use a key if it is shorter than 2048
-bits. In particular, the RSA keys of paraslash 0.3.x will not work
-with version 0.4.x. Moreover, para_client refuses to use a (private)
-key which is world-readable.
-
It is possible to make para_server reread the user_list file by
executing the paraslash "hup" command or by sending SIGHUP to the
PID of para_server.
-> Create a minimal config for para_audiod for HTTP streams:
c=$HOME/.paraslash/audiod.conf.min; s=server.foo.com
- formats="mp3 ogg aac wma" # remove what you do not have
- for f in $formats; do echo receiver \"$f:http -i $s\"; done > $c
+ echo receiver \".:http -i $s\" > $c
para_audiod --config $c
-------
para_filter -f 'mp3dec --ignore-crc' -f 'compress --damp 1'
For para_audiod, each audio format has its own set of filters. The
-name of the audio format for which the filter should be applied is
-used as the prefix for the filter option. Example:
+name of the audio format for which the filter should be applied can
+be used as the prefix for the filter option. Example:
para_audiod -f 'mp3:prebuffer --duration 300'
+The "mp3" prefix above is actually interpreted as a POSIX extended
+regular expression. Therefore
+
+ para_audiod -f '.:prebuffer --duration 300'
+
+activates the prebuffer filter for all supported audio formats (because
+"." matches all audio formats) while
+
+ para_audiod -f 'wma|ogg:prebuffer --duration 300'
+
+activates it only for wma and ogg streams.
+
Decoders
~~~~~~~~
it through a sound device. It is supported on all platforms and is
always compiled in.
+*AO*. _Libao_ is a cross-platform audio library which supports a wide
+variety of platforms including PulseAudio (gnome), ESD (Enlightened
+Sound Daemon), AIX, Solaris and IRIX. The ao writer plays audio
+through an output plugin of libao.
+
Examples
~~~~~~~~