[SIP Beyond VoIP] media_ip darcs patches

Adrian Georgescu ag at ag-projects.com
Sun Nov 2 13:40:15 CET 2014


Thanks Juha,

We will do this after some holidays.

Adrian

On 02 Nov 2014, at 10:10, Juha Heinanen <jh at tutpro.com> wrote:

> enclosed find 'darcs diff' patches of the media_ip feature for easy
> merging to latest darcs versions of python-sipsimple and sylkserver.
> 
> for some reason, i was not able to create a new tracker issue on this. i
> logged in, but didn't find a 'new issue' button.
> 
> i would appreciate if these could be merged to darcs archives.
> 
> -- juha
> 
> diff -rN -u old-python-sipsimple/sipsimple/account/__init__.py new-python-sipsimple/sipsimple/account/__init__.py
> --- old-python-sipsimple/sipsimple/account/__init__.py	2014-11-02 13:52:38.276370538 +0200
> +++ new-python-sipsimple/sipsimple/account/__init__.py	2014-11-02 13:52:39.512376672 +0200
> @@ -29,7 +29,7 @@
> from sipsimple.account.xcap import XCAPManager
> from sipsimple.core import Credentials, SIPURI, ContactURIFactory
> from sipsimple.configuration import ConfigurationManager, Setting, SettingsGroup, SettingsObject, SettingsObjectID
> -from sipsimple.configuration.datatypes import AudioCodecList, MSRPConnectionModel, MSRPRelayAddress, MSRPTransport, NonNegativeInteger, Path, SIPAddress, SIPProxyAddress, SRTPEncryption, STUNServerAddressList, VideoCodecList, XCAPRoot
> +from sipsimple.configuration.datatypes import AudioCodecList, MSRPConnectionModel, MSRPRelayAddress, MSRPTransport, NonNegativeInteger, Path, SIPAddress, SIPProxyAddress, SRTPEncryption, STUNServerAddressList, VideoCodecList, XCAPRoot, IPAddress
> from sipsimple.configuration.settings import SIPSimpleSettings
> from sipsimple.payloads import ParserError
> from sipsimple.payloads.messagesummary import MessageSummary
> @@ -61,6 +61,7 @@
>     video_codec_list = Setting(type=VideoCodecList, default=None, nillable=True)
>     srtp_encryption = Setting(type=SRTPEncryption, default='disabled')
>     use_srtp_without_tls = Setting(type=bool, default=False)
> +    media_ip = Setting(type=IPAddress, default=None, nillable=True)
> 
> 
> class NATTraversalSettings(SettingsGroup):
> diff -rN -u old-python-sipsimple/sipsimple/application.py new-python-sipsimple/sipsimple/application.py
> --- old-python-sipsimple/sipsimple/application.py	2014-11-02 13:52:38.320370757 +0200
> +++ new-python-sipsimple/sipsimple/application.py	2014-11-02 13:52:39.504376628 +0200
> @@ -154,6 +154,7 @@
>                        tls_privkey_file=None,
>                        # rtp
>                        rtp_port_range=(settings.rtp.port_range.start, settings.rtp.port_range.end),
> +                       media_ip = settings.rtp.media_ip,
>                        # audio
>                        codecs=list(settings.rtp.audio_codec_list),
>                        # video
> diff -rN -u old-python-sipsimple/sipsimple/session.py new-python-sipsimple/sipsimple/session.py
> --- old-python-sipsimple/sipsimple/session.py	2014-11-02 13:52:38.516371728 +0200
> +++ new-python-sipsimple/sipsimple/session.py	2014-11-02 13:52:39.508376647 +0200
> @@ -1008,9 +1008,11 @@
>                     wait_count -= 1
>             try:
>                 contact_uri = self.account.contact[PublicGRUUIfAvailable, self.route]
> -                local_ip = host.outgoing_ip_for(self.route.address)
> -                if local_ip is None:
> +                if settings.rtp.media_ip is None:
> +                    local_ip = host.outgoing_ip_for(self.route.address)
>                     raise ValueError("could not get outgoing IP address")
> +                else:
> +                    local_ip = str(settings.rtp.media_ip)
>             except (KeyError, ValueError), e:
>                 for stream in self.proposed_streams:
>                     notification_center.remove_observer(self, sender=stream)
> @@ -1276,7 +1278,10 @@
> 
>             remote_sdp = self._invitation.sdp.proposed_remote
>             sdp_connection = remote_sdp.connection or (media.connection for media in remote_sdp.media if media.connection is not None).next()
> -            local_ip = host.outgoing_ip_for(sdp_connection.address) if sdp_connection.address != '0.0.0.0' else sdp_connection.address
> +            if settings.rtp.media_ip is None:
> +                local_ip = host.outgoing_ip_for(sdp_connection.address) if sdp_connection.address != '0.0.0.0' else sdp_connection.address
> +            else:
> +                local_ip = str(settings.rtp.media_ip)
>             if local_ip is None:
>                 for stream in self.proposed_streams:
>                     notification_center.remove_observer(self, sender=stream)
> diff -rN -u old-sylkserver/sylk/configuration/__init__.py new-sylkserver/sylk/configuration/__init__.py
> --- old-sylkserver/sylk/configuration/__init__.py	2014-11-02 14:03:30.611605295 +0200
> +++ new-sylkserver/sylk/configuration/__init__.py	2014-11-02 14:03:59.743749755 +0200
> @@ -59,6 +59,7 @@
>     srtp_encryption = ConfigSetting(type=SRTPEncryption, value='optional')
>     timeout = ConfigSetting(type=NonNegativeInteger, value=30)
>     sample_rate = ConfigSetting(type=SampleRate, value=32000)
> +    media_ip = ConfigSetting(type=IPAddress, value=None)
> 
> 
> class ThorNodeConfig(ConfigSection):
> diff -rN -u old-sylkserver/sylk/configuration/settings.py new-sylkserver/sylk/configuration/settings.py
> --- old-sylkserver/sylk/configuration/settings.py	2014-11-02 14:03:30.615605311 +0200
> +++ new-sylkserver/sylk/configuration/settings.py	2014-11-02 14:03:59.743749755 +0200
> @@ -15,7 +15,7 @@
> 
> from sylk import __version__ as server_version
> from sylk.configuration import ServerConfig, SIPConfig, MSRPConfig, RTPConfig
> -from sylk.configuration.datatypes import AudioCodecs, NillablePath, Path, Port, SIPProxyAddress
> +from sylk.configuration.datatypes import AudioCodecs, NillablePath, Path, Port, SIPProxyAddress, IPAddress
> 
> 
> # Account settings extensions
> @@ -34,6 +34,7 @@
>     audio_codec_list = Setting(type=AudioCodecs, default=None, nillable=True)
>     srtp_encryption = Setting(type=SRTPEncryption, default=RTPConfig.srtp_encryption)
>     use_srtp_without_tls = Setting(type=bool, default=True)
> +    media_ip = Setting(type=IPAddress, default=RTPConfig.media_ip, nillable=True)
> 
> 
> class AccountSIPSettingsExtension(AccountSIPSettings):
> @@ -85,6 +86,7 @@
>     audio_codec_list = Setting(type=AudioCodecs, default=RTPConfig.audio_codecs)
>     port_range = Setting(type=PortRange, default=PortRange(RTPConfig.port_range.start, RTPConfig.port_range.end))
>     timeout = Setting(type=NonNegativeInteger, default=RTPConfig.timeout)
> +    media_ip = Setting(type=IPAddress, default=RTPConfig.media_ip, nillable=True)
> 
> 
> def sip_port_validator(port, sibling_port):
> diff -rN -u old-sylkserver/sylk/server.py new-sylkserver/sylk/server.py
> --- old-sylkserver/sylk/server.py	2014-11-02 14:03:30.623605360 +0200
> +++ new-sylkserver/sylk/server.py	2014-11-02 14:03:59.679749442 +0200
> @@ -25,7 +25,7 @@
> import sylk.extensions
> 
> from sylk.applications import IncomingRequestHandler
> -from sylk.configuration import ServerConfig, SIPConfig, ThorNodeConfig
> +from sylk.configuration import ServerConfig, SIPConfig, RTPConfig, ThorNodeConfig
> from sylk.configuration.settings import AccountExtension, BonjourAccountExtension, SylkServerSettingsExtension
> from sylk.log import Logger
> from sylk.session import SessionManager
> @@ -112,6 +112,7 @@
>                        tls_privkey_file=None,
>                        # rtp
>                        rtp_port_range=(settings.rtp.port_range.start, settings.rtp.port_range.end),
> +                       media_ip=settings.rtp.media_ip,
>                        # audio
>                        codecs=list(settings.rtp.audio_codec_list),
>                        # logging
> @@ -226,12 +227,14 @@
>     def _NH_SIPApplicationDidStart(self, notification):
>         settings = SIPSimpleSettings()
>         local_ip = SIPConfig.local_ip
> +        media_ip = RTPConfig.media_ip
>         log.msg("SylkServer started, listening on:")
>         for transport in settings.sip.transport_list:
>             try:
>                 log.msg("%s:%d (%s)" % (local_ip, getattr(self.engine, '%s_port' % transport), transport.upper()))
>             except TypeError:
>                 pass
> +        log.msg("Media IP: %s" % media_ip)
> 
>     def _NH_SIPApplicationWillEnd(self, notification):
>         log.msg('SIP application will end: %s' % self.end_reason)
> _______________________________________________
> SIPBeyondVoIP mailing list
> SIPBeyondVoIP at lists.ag-projects.com
> http://lists.ag-projects.com/mailman/listinfo/sipbeyondvoip

--
Adrian



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ag-projects.com/pipermail/sipbeyondvoip/attachments/20141102/d28bf0a6/attachment-0001.html>


More information about the SIPBeyondVoIP mailing list