- released 3.3.3

- rewritten rewrite_invite_request
- more debug output in RTP proxy
This commit is contained in:
Thomas Ries 2003-07-06 16:54:00 +00:00
parent bb1e4b63f0
commit de208ab818
7 changed files with 88 additions and 778 deletions

View File

@ -1,5 +1,8 @@
0.3.3
=====
05-Jul-2003: - released 0.3.3
10-May-2003: - rewritten code in proxy_rewrite_invitation_body
should now work (better) with multiple media streams
23-Apr-2003: - FAQ updates: RTP internals
- more debug and error testing (MOREDEBUG)
6-Apr-2003: - build options for FLI4L builds (libc5 & uClibc)

15
README
View File

@ -78,10 +78,15 @@ The easiest way to do this:
3) reproduce the error
4) include the debug.log in your error report.
If siproxd crashes (core dump), a stack backtrace usually is helpful to me:
1) reproduce the crash -> core file
2) use gdb to print the stack backtrace:
$ gdb ./src/siproxd core
If siproxd crashes, a stack backtrace usually is helpful to me:
1) start siproxd in the debugger (daemonize set to 0):
$ gdb ./src/siproxd
(gdb) set args -c /path/to/siproxd.conf
(gdb) run
2) reproduce the crash
3) use gdb to print the stack backtrace:
(gdb) info thread
...
(gdb) bt
#0 0x400ec9ee in __select ()
#1 0xbffff6f8 in ?? ()
@ -91,7 +96,7 @@ If siproxd crashes (core dump), a stack backtrace usually is helpful to me:
rtld_fini=0x4000a350 <_dl_fini>, stack_end=0xbffffc4c)
at ../sysdeps/generic/libc-start.c:78
(gdb)
4) copy-paste all the output and include it in your problem report.
WHAT SIPROXD DOES

660
RELNOTES
View File

@ -1,4 +1,4 @@
Release Notes for siproxd-0.3.1
Release Notes for siproxd-0.3.3
===============================
- Fli4l OPT_SIP (still experimental) available, check
@ -32,149 +32,6 @@ Requirements:
- builds with libosip>0.8.8 / libosip2
- prebuild binaries (RPMs) require libosip2 to be installed
Currently tested on:
- Redhat 6.0 (Kernel 2.2.x, Glibc)
- Redhat 7.2 (Kernel 2.4.x, Glibc)
- SUSE 5.3 (kernel 2.0.x, libc5)
- Redhat 7.2 build against uClibc (Fli4l use)
- should run on others Linux distributions as well.
- FreeBSD 4.7-STABLE (compilation)
Reported to build on:
- OpenBSD 2.9
Reported interoperability (tested with softphones):
- Linphone (local and remote UA) (http://www.linphone.org)
- Kphone (local and remote UA) (http://www.wirlab.net/kphone/)
- MSN messenger 4.6 (remote and local UA)
Known bugs:
- with kphone 3.1 & libosip-0.*, authentication does NOT work at
all (due to 'parse error' in libosip) - use libosip2, this works fine
-----
md5sum for siproxd-0.3.1.tar.gz:
md5sum for siproxd-0.3.1-1rh60.i386.rpm:
md5sum for siproxd-0.3.1-1rh72.i386.rpm:
md5sum for siproxd-0.3.1-1.src.rpm:
GnuPG signature for siproxd-0.3.0.tar.gz archive:
Release Notes for siproxd-0.3.0
===============================
- Fli4l OPT_SIP (still experimental) available, check
http://home.arcor.de/jsffm/fli4l/
- supports Linux and FreeBSD (other BSD derivates not yet tested)
- SIP (RFC3261) Proxy for SIP based softphones hidden behind a
masquerading firewall
- Includes an RTP data stream proxy for *incoming* audio data
(outgoing RTP data should be handled by IP masquerading by the firewall)
- Port range to be used for incoming RTP traffic is configurable
(-> easy to set up apropriate firewall rules for incoming traffic)
- RTP proxy can handle multiple RTP streams (eg. audio + video)
within a single SIP session.
- Multiple local users/hosts can be masqueraded simultaneously
- Supports running in a chroot jail (configurable)
- Supports changing user-ID after startup (if started as root)
- All configuration done via one simple ascii configuration file
- Proxy Authentication for registration of local clients (User Agents)
with individual passwords for each user
- Logging to syslog in daemon mode
- Access control (IP based) for incoming traffic
- RPM support (release includes SRC rpm and binary RPMS for Redhat 6.0, 7.2)
- works with "dial-up" conenctions (dynamic IP addresses)
- The host part of UA registration entries can be masqueraded
(mask_host, masked_host config items) Siemens SIP phones seem to
need this 'feature'.
Requirements:
- pthreads
- glibc2 / libc5 / uClibc
- builds with libosip>0.8.8 / libosip2
- prebuild binaries (RPMs) require libosip2 to be installed
Currently tested on:
- Redhat 6.0 (Kernel 2.2.x, Glibc)
- Redhat 7.2 (Kernel 2.4.x, Glibc)
- SUSE 5.3 (kernel 2.0.x, libc5)
- Redhat 7.2 build against uClibc (Fli4l use)
- should run on others Linux distributions as well.
- FreeBSD 4.7-STABLE (compilation)
Reported to build on:
- OpenBSD 2.9
Reported interoperability (tested with softphones):
- Linphone (local and remote UA) (http://www.linphone.org)
- Kphone (local and remote UA) (http://www.wirlab.net/kphone/)
- MSN messenger 4.6 (remote and local UA)
Known bugs:
- with kphone 3.1 & libosip-0.*, authentication does NOT work at
all (due to 'parse error' in libosip) - use libosip2, this works fine
-----
md5sum for siproxd-0.3.0.tar.gz: 3a69d2a3a62c47e04f36dab2e5262fac
md5sum for siproxd-0.3.0-1rh60.i386.rpm:d42b3a9ee72ff1a94f3243e01f3debb8
md5sum for siproxd-0.3.0-1rh72.i386.rpm:fb44e9922d56e7f62a982fe9100fca9d
md5sum for siproxd-0.3.0-1.src.rpm: 8f39f69b8d736816ce44b00c08c17ce7
GnuPG signature for siproxd-0.3.0.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj6FibIACgkQPOYHDi42pIqAZQCeNzjNS4g885bGsjtbQF0MI5AY
tGkAoMYgF+RBbVDgXO/9dc8Yf8iidvP+
=0/eL
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.2.8
===============================
Note: using libosip-0.9.3, the proxy authentication does *NOT* work.
Yet is is unclear to me if this is a bug in libosip or siproxd.
libosip-0.8.8 works.
- Fli4l OPT_SIP currently under development
- supports Linux and FreeBSD (other BSD derivates not tested)
- SIP (RFC3261) Proxy for SIP based softphones hidden behind a
masquerading firewall
- Includes an RTP data stream proxy for *incoming* audio data
(outgoing RTP data should be handled by IP masquerading by the firewall)
- Port range to be used for incoming RTP traffic is configurable
(-> easy to set up apropriate firewall rules for incoming traffic)
- RTP proxy can handle multiple RTP streams (eg. audio + video)
within a single SIP session.
- Multiple local users/hosts can be masqueraded simultaneously
- Supports running in a chroot jail (configurable)
- Supports changing user-ID after startup (if started as root)
- All configuration done via one simple ascii configuration file
- Proxy Authentication for registration of local clients (User Agents)
with individual passwords for each user
- Logging to syslog in daemon mode
- Access control (IP based) for incoming traffic
- RPM support (release includes SRC rpm and binary RPMS for Redhat 6.0, 7.2)
- works with "dial-up" conenctions (dynamic IP addresses)
- (experimental) The host part of UA registration entries
can be masqueraded (mask_host, masked_host config items)
Siemens SIP phones seem to need this 'feature'.
Requirements:
- pthreads
- glibc2 / libc5 / uClibc
- libosip 0.8.8 (using libosip 0.9.6, proxy authentication does *not*
work. Unclear if this is a bug in libosip or not)
Currently tested on:
- Redhat 6.0 (Kernel 2.2.x, Glibc)
- Redhat 7.2 (Kernel 2.4.x, Glibc)
@ -188,515 +45,32 @@ Reported to build on:
Reported interoperability (tested with softphones):
- Linphone (local UA) (http://www.linphone.org)
- Kphone (local UA) (http://www.wirlab.net/kphone/)
- MSN messenger 4.6 (remote UA)
- Linphone (local and remote UA) (http://www.linphone.org)
- Kphone (local and remote UA) (http://www.wirlab.net/kphone/)
- MSN messenger 4.6 (remote and local UA)
Known bugs:
- with kphone 3.1 & libosip-0.*, authentication does NOT work at
all (due to 'parse error' in libosip) - use libosip2, this works fine
-----
md5sum for siproxd-0.2.8.tar.gz: d12feec20adb9b451550d95c68f49eca
md5sum for siproxd-0.2.8-1rh60.i386.rpm:66c4d9acca31a9366011e7c2f67b2fb7
md5sum for siproxd-0.2.8-1rh72.i386.rpm:d0f87ecd7c11f374148a406e5fe18b21
md5sum for siproxd-0.2.8-1.src.rpm: ceda9699c3e401f9676327463df865aa
md5sum for siproxd-0.3.3.tar.gz: 110651cb3a7ad9b2cabc598d83a7bc4d
md5sum for siproxd-0.3.3-1rh60.i386.rpm:ba1cf809e14241b4e3b979b2c7173e10
md5sum for siproxd-0.3.3-1rh72.i386.rpm:
md5sum for siproxd-0.3.3-1.src.rpm: 5b7275c714ca51f14b9df26c4d123dab
GnuPG signature for siproxd-0.2.8.tar.gz archive:
GnuPG signature for siproxd-0.3.3.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
Version: GnuPG v1.2.1 (GNU/Linux)
iEYEABECAAYFAj5+AaQACgkQPOYHDi42pIqKAACeNFI42rCBvyOaqHrWo8fk6Qm7
hR8AnjeFTROytpI+YsZIpfwFYfsbSXEr
=QGGx
iD8DBQA/BwNECfzBioe83JQRAto5AJ9RDVpGHO3exzFz99/TAEuAS54H9gCguaU+
8AzD82Zpj2szGh2dWp+LOCk=
=WGag
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.2.7
===============================
Note: using libosip-0.9.3, the proxy authentication does *NOT* work.
Yet is is unclear to me if this is a bug in libosip or siproxd.
libosip-0.8.8 works.
- supports Linux and FreeBSD (other BSD derivates not tested)
- SIP (RFC3261) Proxy for SIP based softphones hidden behind a
masquerading firewall
- Includes an RTP data stream proxy for *incoming* audio data
(outgoing RTP data should be handled by IP masquerading by the firewall)
- Port range to be used for incoming RTP traffic is configurable
(-> easy to set up apropriate firewall rules for incoming traffic)
- RTP proxy can handle multiple RTP streams (eg. audio + video)
within a single SIP session.
- Multiple local users/hosts can be masqueraded simultaneously
- Supports running in a chroot jail (configurable)
- Supports changing user-ID after startup (if started as root)
- All configuration done via one simple ascii configuration file
- Proxy Authentication for registration of local clients (User Agents)
with individual passwords for each user
- Logging to syslog in daemon mode
- Access control (IP based) for incoming traffic
- RPM support (release includes SRC rpm and binary RPMS for Redhat 6.0, 7.2)
- works with "dial-up" conenctions (dynamic IP addresses)
- (experimental) The host part of UA registration entries
can be masqueraded (mask_host, masked_host config items)
Siemens SIP phones seem to need this 'feature'.
Requirements:
- pthreads
- libosip 0.8.8 (using libosip 0.9.6, proxy authentication does *not*
work. Unclear if this is a bug in libosip or not)
Currently tested on:
- Linux 2.2.x (Redhat 6.0) and 2.4.x (Redhat 7.2), should run
on others Linux distributions as well.
- FreeBSD 4.7-STABLE (compilation)
Reported to build on:
- OpenBSD 2.9
Reported interoperability (tested with softphones):
- Linphone (local UA) (http://www.linphone.org)
- Kphone (local UA) (http://www.wirlab.net/kphone/)
- MSN messenger 4.6 (remote UA)
-----
md5sum for siproxd-0.2.7.tar.gz: 0c5dcaedb2d94d71748e9595aab29c8d
md5sum for siproxd-0.2.7-1rh60.i386.rpm:1ab308e12942bdd6f63c94895f4eb2dd
md5sum for siproxd-0.2.7-1rh72.i386.rpm:3469d290d053b05dc9ab5c34fd75e7da
md5sum for siproxd-0.2.7-1.src.rpm: a915a1bca19a08c65621cf90e0372232
GnuPG signature for siproxd-0.2.7.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj5zcJUACgkQPOYHDi42pIpZUQCfaWX14zRcB6gdOpXEO1sygZDx
0kkAn2MRecmOho0oJgxt8axtuJ37Cng7
=OFU1
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.2.6
===============================
This release introduces RTP proxying capabilities for simultaneous
audio and video RTP streams and fixes a crash when using
MSN Messenger as UA.
See the ChangeLog for details.
Note: using libosip-0.9.3, the proxy authentication does *NOT* work.
Yet is is unclear to me if this is a bug in libosip or siproxd.
libosip-0.8.8 works.
- supports Linux and FreeBSD (other BSD derivates not tested)
- SIP (RFC3261) Proxy for SIP based softphones hidden behind a
masquerading firewall
- Includes an RTP data stream proxy for *incoming* audio data
(outgoing RTP data should be handled by IP masquerading by the firewall)
- Port range to be used for incoming RTP traffic is configurable
(-> easy to set up apropriate firewall rules for incoming traffic)
- RTP proxy can handle multiple RTP streams (eg. audio + video)
within a single SIP session.
- Multiple local users/hosts can be masqueraded simultaneously
- Supports running in a chroot jail (configurable)
- Supports changing user-ID after startup (if started as root)
- All configuration done via one simple ascii configuration file
- Proxy Authentication for registration of local clients (User Agents)
with individual passwords for each user
- Logging to syslog in daemon mode
- Access control (IP based) for incoming traffic
- RPM support (release includes SRC rpm and binary RPMS for Redhat 6.0, 7.2)
- works with "dial-up" conenctions (dynamic IP addresses)
Requirements:
- pthreads
- libosip 0.8.8 (using libosip 0.9.6, proxy authentication does *not*
work. Unclear if this is a bug in libosip or not)
Currently tested on:
- Linux 2.2.x (Redhat 6.0) and 2.4.x (Redhat 7.2), should run
on others Linux distributions as well.
- FreeBSD 4.7-STABLE (compilation)
Reported to build on:
- OpenBSD 2.9
Reported interoperability (tested with softphones):
- Linphone (local UA) (http://www.linphone.org)
- Kphone (local UA) (http://www.wirlab.net/kphone/)
- MSN messenger 4.6 (remote UA)
-----
md5sum for siproxd-0.2.6.tar.gz: e74fce87438b118d09072baf25cccc7f
md5sum for siproxd-0.2.6-1rh60.i386.rpm:36e5030697148d509b31f47a05201937
md5sum for siproxd-0.2.6-1rh72.i386.rpm:b4ef2b66d15a33cbe2eebf20b89c5ba4
md5sum for siproxd-0.2.6-1.src.rpm: 43c84ea8823794daa6d536d800792a38
GnuPG signature for siproxd-0.2.6.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj424UQACgkQPOYHDi42pIqmoACgziteXrb94ZP59R3FwKb+a2am
K88AoMfuE3iIM2Eg0GXBUmEyy+vM6Ac+
=fiZA
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.2.5
===============================
This release mainly fixes some annoying (and stupid) bugs.
See the ChangeLog for details.
- supports Linux and FreeBSD (other BSD derivates not tested)
- SIP Proxy for SIP based softphones hidden behind a masquerading firewall
- Includes an RTP data stream proxy for *incoming* audio data
(outgoing RTP data should be handled by IP masquerading by the firewall)
- Port range to be used for incoming RTP traffic is configurable
(-> easy to set up apropriate firewall rules for incoming traffic)
- Multiple local users/hosts can be masqueraded simultaneously
- Supports running in a chroot jail (configurable)
- Supports changing user-ID after startup (if started as root)
- All configuration done via one simple ascii configuration file
- Proxy Authentication for registration of local clients (User Agents)
with individual passwords for each user
- Logging to syslog in Daemon mode
- Access control (IP based) for incoming traffic
- RPM support (release includes SRC rpm and binary RPMS for Redhat 6.0, 7.2)
- should now works with "dial-up" conenctions (changing IP addresses)
Requirements:
- pthreads
- libosip 0.8.8
Currently tested on:
- Linux 2.2.x (Redhat 6.0) and 2.4.x (Redhat 7.2), should run
on others Linux distributions as well.
- FreeBSD 4.7-STABLE (compilation)
Reported to build on:
- OpenBSD 2.9
Reported interoperability (tested with softphones):
- Linphone (http://www.linphone.org)
- Kphone (http://www.wirlab.net/kphone/)
- MSN messenger 4.6
-----
md5sum for siproxd-0.2.5.tar.gz: 042986602efeaaa77a14bb0b1a416083
md5sum for siproxd-0.2.5-1rh60.i386.rpm:
md5sum for siproxd-0.2.5-1rh72.i386.rpm:
md5sum for siproxd-0.2.5-1.src.rpm:
GnuPG signature for siproxd-0.2.5.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj3v6zkACgkQPOYHDi42pIppDACfc0Bw3vcNFE5+qSHIzMacdHow
kGgAn11c69ibc9bLd+la9j0otqxhAWIK
=OZ6c
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.2.4
===============================
- supports Linux and FreeBSD (other BSD derivates not tested)
- SIP Proxy for SIP based softphones hidden behind a masquerading firewall
- Includes an RTP data stream proxy for *incoming* audio data
(outgoing RTP data should be handled by IP masquerading by the firewall)
- Port range to be used for incoming RTP traffic is configurable
(-> easy to set up apropriate firewall rules for incoming traffic)
- Multiple local users/hosts can be masqueraded simultaneously
- Supports running in a chroot jail (configurable)
- Supports changing user-ID after startup (if started as root)
- All configuration done via one simple ascii configuration file
- Proxy Authentication for registration of local clients (User Agents)
with individual passwords for each user
- Logging to syslog in Daemon mode
- Access control (IP based) for incoming traffic
- RPM support (release includes SRC rpm and binary RPMS for Redhat 6.0, 7.2)
- should now works with "dial-up" conenctions (changing IP addresses)
Requirements:
- pthreads
- libosip 0.8.8
Currently tested on:
- Linux 2.2.x (Redhat 6.0) and 2.4.x (Redhat 7.2), should run
on others Linux distributions as well.
- FreeBSD 4.7-STABLE (compilation only)
Interoperability (tested with softphones):
- Linphone (http://www.linphone.org)
- Kphone (http://www.wirlab.net/kphone/)
-----
md5sum for siproxd-0.2.4.tar.gz: 1f9bd5fb0031870cf8cc25fb1098d687
md5sum for siproxd-0.2.4-1rh60.i386.rpm:1862342b8b006632aec0eb6619a53ae9
md5sum for siproxd-0.2.4-1rh72.i386.rpm:35896373a8a091a4edfcec26418f6b76
md5sum for siproxd-0.2.4-1.src.rpm: 757b63b6365d19b62ae6e5f98489f913
GnuPG signature for siproxd-0.2.4.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj3fwmAACgkQPOYHDi42pIqQtwCdGBsqWmqMsw0ADwH63VBP4r9K
rMwAn3VjqrmeBZ9s9mHyCtmvTaZPNsPX
=w2Ce
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.2.3
===============================
- SIP Proxy for SIP based softphones hidden behind a masquerading firewall
- Includes an RTP data stream proxy for *incoming* audio data
(outgoing RTP data should be handled by IP masquerading by the firewall)
- Port range to be used for incoming RTP traffic is configurable
(-> easy to set up apropriate firewall rules for incoming traffic)
- Multiple local users/hosts can be masqueraded simultaneously
- Supports running in a chroot jail (configurable)
- Supports changing user-ID after startup (if started as root)
- All configuration done via one simple ascii configuration file
- Proxy Authentication for registration of local clients (User Agents)
with individual passwords for each user
- Logging to syslog in Daemon mode
- Access control (IP based) for incoming traffic
- RPM support (release includes SRC rpm and binary RPMS for Redhat 6.0, 7.2)
Requirements:
- pthreads
- libosip 0.8.8
Currently tested on Linux 2.2.x (Redhat 6.0) and 2.4.x (Redhat 7.2),
should run on others Linux distributions as well.
Interoperability (tested with softphones):
- Linphone (http://www.linphone.org)
- Kphone (http://www.wirlab.net/kphone/)
-----
md5sum for siproxd-0.2.3.tar.gz: 91feadda140bdd5beba58de66d97b168
md5sum for siproxd-0.2.3-1rh60.i386.rpm:bde445eff2af345f2d04f02c7049ef5c
md5sum for siproxd-0.2.3-1rh72.i386.rpm:a24887563d10083d5762e819d85c5b79
md5sum for siproxd-0.2.3-1.src.rpm: 18bca360d8021a98ec4b6d0f03af4c93
GnuPG signature for siproxd-0.2.3.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj3OX5QACgkQPOYHDi42pIpR0wCgooTOhk6mpV6cNi9q/WPLITbN
z28AoONvmvpy+uS7khruF18SPfb6znvl
=loxH
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.2.2
===============================
- SIP Proxy for SIP based softphones hidden behind a masquerading firewall
- Includes an RTP data stream proxy for *incoming* audio data
(outgoing RTP data should be handled by IP masquerading by the firewall)
- Port range to be used for incoming RTP traffic is configurable
(-> easy to set up apropriate firewall rules for incoming traffic)
- Multiple local users/hosts can be masqueraded simultaneously
- Supports running in a chroot jail (configurable)
- Supports changing user-ID after startup (if started as root)
- All configuration done via one simple ascii configuration file
- Proxy Authentication for registration of local clients (User Agents)
now supports per user passwords
- Logging to syslog in Daemon mode
- Access control (IP based) for incoming traffic
- RPM support (spec file)
Requirements:
- pthreads
- libosip 0.8.8
Currently tested on Linux 2.2.x (Redhat 6.0) and 2.4.x (Redhat 7.2),
should run on others Linux distributions as well.
Interoperability (tested with softphones):
- Linphone (http://www.linphone.org)
- Kphone (http://www.wirlab.net/kphone/)
-----
md5sum for siproxd-0.2.2.tar.gz: eaeb7277277cf9c113a23d77c6e024ba
GnuPG signature for siproxd-0.2.2.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj2oURQACgkQPOYHDi42pIpWUQCfdNtmP/l010HtzCHPMKjbBZo/
MNUAn2dOBHIfOJLy3CaqM1AUt8PC8iN6
=AIbl
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.2.1
===============================
- SIP Proxy for SIP based softphones hidden behind a masquerading firewall
- Includes an RTP data stream proxy for *incoming* audio data
(outgoing RTP data should be handled by IP masquerading by the firewall)
- Port range to be used for incoming RTP traffic is configurable
(-> easy to set up apropriate firewall rules for incoming traffic)
- Multiple local users/hosts can be masqueraded simultaneously
- Supports running in a chroot jail (configurable)
- Supports changing user-ID after startup (if started as root)
- All configuration done via one simple ascii configuration file
- Proxy Authentication for registration of local clients (User Agents)
- Logging to syslog in Daemon mode
- Access control (IP based) for incoming traffic
- RPM support (spec file)
Requirements:
- pthreads
- libosip 0.8.8
Currently tested on Linux 2.2.x (Redhat 6.0) and 2.4.x (Redhat 7.2),
should run on others Linux distributions as well.
Interoperability (tested with softphones):
- Linphone (http://www.linphone.org)
- Kphone (http://www.wirlab.net/kphone/)
-----
md5sum for siproxd-0.2.1.tar.gz: 3d0a46587494dd8c308c85f16d6f5555
GnuPG signature for siproxd-0.2.1.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj2U6d4ACgkQPOYHDi42pIq5ygCg3oavz9FHFTXNZT/R4YNECzEX
IX4AnAtYcNxJJhLXEKcj2ziKKvkectL9
=A3tF
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.2.0
===============================
- SIP Proxy for SIP based softphones hidden behind a masquerading firewall
- Includes an RTP data stream proxy for incoming audio data
- Supports running in a chroot jail (configurable)
- Supports changing user ID after startup (if started as root)
- All configuration done via config file
Requirements:
- pthreads
- libosip 0.8.8
- currently tested on Linux 2.2.x (Redhat 6.0) and 2.4.x (Redhat 7.2)
however, should run on any other
-----
md5sum for siproxd-0.2.0.tar.gz: fe22245be675015a296e9b19327c4941
GnuPG signature for siproxd-0.2.0.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj2HXe0ACgkQPOYHDi42pIo/FACg2AiHoo6BMy93PDmW/3uFl19+
0NoAoIpD7jROQlLtUYrB8n8elBODR1dA
=8fno
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.1.3
===============================
- Bugfixes in the SIP proxy part
- Performance imporvement in RTP proxy part
- some documentation updates
- include ./scripts subdirectory in the distribution,
was an error in the autoconf/automake setup
-----
md5sum for siproxd-0.1.3.tar.gz: 82405c104267ad48c2d3421580625972
GnuPG signature for siproxd-0.1.3.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj1/eUwACgkQPOYHDi42pIq0agCgn46GkmeoOpTWnVJoQSl+5oTl
b1cAn331fJVdvaVyRJz0AVjUnD7v+fx6
=Sm6d
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.1.2
===============================
- New: experimental proxying incoming RTP data streams
(please send me feedback if you try it out)
- optimizations in DNS resolving
- fix in client registration concept (Contact Header)
-----
md5sum for siproxd-0.1.2.tar.gz: 622762081dfb8e6b4b521b4e4e9ae568
GnuPG signature for siproxd-0.1.2.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
iEYEABECAAYFAj16c+gACgkQPOYHDi42pIrgwwCfe66NjapoeyG6By8/cvRlMjiJ
YAoAoLsJBZTimXDISVqMsxK4NmjdKevF
=Yc5X
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.1.1
===============================
- configurable using a config file
- can run as daemon in background
-----
md5sum for siproxd-0.1.1.tar.gz: d0b7b691801f4138c271a8ebae5b7a24
GnuPG signature for siproxd-0.1.1.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
iEYEABECAAYFAj1pUuMACgkQPOYHDi42pIpkwgCeOheMIeE9EmmPONsXpKMNshMc
0YAAnic4Tzj709IuYEtTdwIcPildot6g
=Wa6O
-----END PGP SIGNATURE-----
Release Notes for siproxd-0.1.0
===============================
- This is the first published release.
Be warned, this (and all the other) documentantation is far from
complete. This is just a *very* preliminary pre-alpha release. Don't
expect anything!
-----
md5sum for siproxd-0.1.0.tar.gz: 53288af6ec8c0a92e52226df1a89fc98
GnuPG signature for siproxd-0.1.0.tar.gz archive:
-----BEGIN PGP SIGNATURE-----
iEYEABECAAYFAj1nzOsACgkQPOYHDi42pIpruACffBef8M3EkvIOIzu+Ds8bxGCs
S5gAoMWLl9GVFmGzPTG2X0BK850eIfWc
=OGXj
-----END PGP SIGNATURE-----
GnuPG Public Key is available on wwwkeys.pgp.net
pub 1024D/87BCDC94 2000-03-19 Thomas Ries (tries@gmx.net)
Key fingerprint = 13D1 19F5 77D0 4CEC 8D3F A24E 09FC C18A 87BC DC94

2
TODO
View File

@ -17,7 +17,7 @@ TODOs, in random order:
- Documentation (yeah, yeah...)
- support for proxy chaining - UPNP support?
- support for proxy chaining - "next-hop"
- general security issues
- security tests for received SIP messages (function securitycheck)

View File

@ -469,36 +469,44 @@ int proxy_rewrite_invitation_body(sip_t *mymsg){
sdp_t *sdp;
struct in_addr outb_addr, lcl_clnt_addr;
int sts;
char *oldbody;
char newbody[BODY_MESSAGE_MAX_SIZE];
char *bodybuff;
char clen[8]; /* content length: probably never more than 7 digits !*/
int outb_rtp_port, inb_clnt_port;
int media_stream_no;
sdp_connection_t *sdp_conn;
sdp_media_t *sdp_med;
/*
* get SDP structure
*/
sts = msg_getbody(mymsg, 0, &body);
if (sts != 0) {
ERROR("rewrite_invitation_body: no body found in message");
return STS_FAILURE;
}
sts = body_2char(body, &oldbody);
sts = body_2char(body, &bodybuff);
sts = sdp_init(&sdp);
sts = sdp_parse (sdp, oldbody);
sts = sdp_parse (sdp, bodybuff);
free(bodybuff);
if (sts != 0) {
ERROR("rewrite_invitation_body: unable to sdp_parse body");
return STS_FAILURE;
}
if (configuration.debuglevel)
{ /* just dump the buffer */
char *tmp2;
char *tmp, *tmp2;
sts = msg_getbody(mymsg, 0, &body);
sts = body_2char(body, &tmp);
content_length_2char(mymsg->contentlength, &tmp2);
DEBUG("Body before rewrite (clen=%s, strlen=%i):\n%s\n----",
tmp2, strlen(oldbody), oldbody);
tmp2, strlen(tmp), tmp);
free(tmp);
free(tmp2);
}
/*
* RTP proxy: get ready and start forwarding
* start forwarding for each media stream ('m=' item in SIP message)
@ -517,6 +525,22 @@ int proxy_rewrite_invitation_body(sip_t *mymsg){
return STS_FAILURE;
}
/*
* rewrite c= address
*/
sdp_conn = sdp_connection_get (sdp, -1, 0);
if (sdp_conn && sdp_conn->c_addr) {
free(sdp_conn->c_addr);
sdp_conn->c_addr=malloc(HOSTNAME_SIZE);
sprintf(sdp_conn->c_addr, "%s", inet_ntoa(outb_addr));
} else {
ERROR("got NULL c= address record - can't rewrite");
}
/*
* loop through all m= descritions,
* start RTP proxy and rewrite them
*/
for (media_stream_no=0;;media_stream_no++) {
/* check if n'th media stream is present */
if (sdp_m_port_get(sdp, media_stream_no) == NULL) break;
@ -527,146 +551,50 @@ int proxy_rewrite_invitation_body(sip_t *mymsg){
rtp_start_fwd(msg_getcall_id(mymsg), media_stream_no,
outb_addr, &outb_rtp_port,
lcl_clnt_addr, inb_clnt_port);
/* and rewrite the port */
sdp_med=list_get(sdp->m_medias, media_stream_no);
if (sdp_med && sdp_med->m_port) {
free(sdp_med->m_port);
sdp_med->m_port=malloc(8);
sprintf(sdp_med->m_port, "%i", outb_rtp_port);
DEBUGC(DBCLASS_PROXY, "proxy_rewrite_invitation_body: "
"m= rewrote port to [%i]",outb_rtp_port);
} else {
ERROR("rewriting port in m= failed sdp_med=%p, "
"m_number_of_port=%p", sdp_med, sdp_med->m_port);
}
} else {
/* no port defined - skip entry */
WARN("no port defined in m=(media) stream_no=&i", media_stream_no);
continue;
}
}
/*
* yup, I know - here are some HARDCODED strings that we
* search for in the connect information and media description
* in the SDP part of the INVITE packet
*
* TODO: redo the rewriting section below,
* using the nice sdp_ routines of libosip!
*
* Up to now, also only ONE incoming media port per session
* is supported! I guess, there may be more allowed.
*/
{
char *data_c=NULL; /* connection information 'c=' line*/
char *data_m=NULL; /* media description 'm=' line*/
char *data2_c=NULL; /* end of IP address on 'c=' line */
char *data2_m=NULL; /* end of port number on 'm=' line */
char *ptr=NULL;
memset(newbody, 0, sizeof(newbody));
/*
* find where to patch connection information (IP address)
*/
data_c = strstr (oldbody, "\nc=");
if (data_c == NULL) data_c = strstr (oldbody, "\rc=");
if (data_c == NULL) {
ERROR("did not find a c= line in the body");
return STS_FAILURE;
}
data_c += 3;
/* can only rewrite IPV4 addresses by now */
if (strncmp(data_c,"IN IP4 ",7)!=0) {
ERROR("c= does not contain an IN IP4 address");
return STS_FAILURE;
}
data_c += 7; /* PTR to start of IP address */
/* find the end of the IP address -> end of line */
data2_c = strstr (data_c, "\n");
if (data2_c == NULL) data2_c = strstr (oldbody, "\r");
if (data2_c == NULL) {
ERROR("did not find a CR/LF after c= line");
return STS_FAILURE;
}
/*
* find where to patch media description (port number)
*/
data_m = strstr (oldbody, "\nm=");
if (data_m == NULL) data_m = strstr (oldbody, "\rm=");
if (data_m == NULL) {
ERROR("did not find a m= line in the body");
return STS_FAILURE;
}
data_m += 3;
/* check for audio media */
if (strncmp(data_m,"audio ",6)!=0) {
ERROR("m= does not contain audio");
return STS_FAILURE;
}
data_m += 6; /* PTR to start of port number */
/* find the end of the IP address -> end of line */
data2_m = strstr (data_m, " RTP/");
if (data2_m == NULL) {
ERROR("did not find RTP/ on m= line");
return STS_FAILURE;
}
/*
* what is first? c= or m= ?
* (Im sure this can be made nicer)
*/
if (data_c < data_m) {
DEBUGC(DBCLASS_PROXY,"c= before m=");
/*
* c= line first, replace IP address, then port
*/
/* copy up to the to-be-masqueraded address */
memcpy(newbody, oldbody, data_c-oldbody);
/* insert proxy outbound address */
ptr=newbody+(data_c-oldbody);
sprintf(ptr, "%s", inet_ntoa(outb_addr));
ptr += strlen(ptr);
/* copy up to the m= line */
memcpy (ptr, data2_c, data_m-data2_c);
ptr += strlen(ptr);
/* substitute port number */
sprintf(ptr, "%i", outb_rtp_port);
ptr += strlen(ptr);
/* copy the rest */
memcpy (ptr, data2_m, strlen(data2_m));
} else {
DEBUGC(DBCLASS_PROXY,"m= before c=");
/*
* m= line first, replace port, then IP address
*/
/* copy up to the to-be-masqueraded port */
memcpy(newbody, oldbody, data_m-oldbody);
ptr=newbody+(data_m-oldbody);
/* substitute port number */
sprintf(ptr, "%i", outb_rtp_port);
ptr += strlen(ptr);
/* copy up to the c= line */
memcpy (ptr, data2_m, data_c-data2_m);
ptr += strlen(ptr);
/* insert proxy outbound address */
sprintf(ptr, "%s", inet_ntoa(outb_addr));
ptr += strlen(ptr);
/* copy the rest */
memcpy (ptr, data2_c, strlen(data2_c));
}
}
/* remove old body */
sts = list_remove(mymsg->bodies, 0);
body_free(body);
free(body);
/* dump new body */
sdp_2char(sdp, &bodybuff);
/* free sdp structure */
sdp_free(sdp);
free(sdp);
/* include new body */
msg_setbody(mymsg, newbody);
msg_setbody(mymsg, bodybuff);
free(bodybuff);
/* free content length resource and include new one*/
content_length_free(mymsg->contentlength);
free(mymsg->contentlength);
mymsg->contentlength=NULL;
sprintf(clen,"%i",strlen(newbody));
sprintf(clen,"%i",strlen(bodybuff));
sts = msg_setcontent_length(mymsg, clen);
if (configuration.debuglevel)
{ /* just dump the buffer */
char *tmp, *tmp2;
sts = msg_getbody(mymsg, 0, &body);
@ -677,7 +605,6 @@ int proxy_rewrite_invitation_body(sip_t *mymsg){
free(tmp);
free(tmp2);
}
free(oldbody);
return STS_SUCCESS;
}

View File

@ -141,6 +141,7 @@ void *rtpproxy_main(void *arg) {
tv.tv_usec = 0;
num_fd=select(fd_max+1, &fdset, NULL, NULL, &tv);
if ((num_fd<0) && (errno==EINTR)) continue;
#ifdef MOREDEBUG /*&&&&*/
if (num_fd<0) {WARN("select() returned error [%s]",strerror(errno));}
#endif

View File

@ -182,4 +182,4 @@ struct siproxd_config {
This issue is fixed in linphone-0.9.1pre1
*/
//#define MOREDEBUG
#define MOREDEBUG