|
reSIProcate
SIP stack, Dialog Usage Manager and related libraries
|
This class extends the resip UserProfile to include Conversation Manager specific settings. More...
#include <ConversationProfile.hxx>
Public Types | |
| enum | MediaEndpointMode { Base , WebRTC } |
| enum | NatTraversalMode { NoNatTraversal , StunBindDiscovery , TurnUdpAllocation , TurnTcpAllocation , TurnTlsAllocation } |
| enum | SecureMediaMode { NoSecureMedia , Srtp , SrtpReq , SrtpDtls , SrtpDtlsReq } |
| enum | SecureMediaCryptoSuite { SRTP_AES_CM_128_HMAC_SHA1_32 , SRTP_AES_CM_128_HMAC_SHA1_80 } |
Public Types inherited from resip::Profile | |
| enum | SessionTimerMode { PreferLocalRefreshes , PreferRemoteRefreshes , PreferCallerRefreshes , PreferCalleeRefreshes } |
| Only used if timer option tag is set in MasterProfile. More... | |
Public Member Functions | |
| ConversationProfile () | |
| ConversationProfile (std::shared_ptr< resip::Profile > baseProfile) | |
| Constructor. | |
| virtual ConversationProfileHandle | getHandle () |
| Get the conversation profile handle. | |
| virtual resip::SdpContents & | sessionCaps () |
| Get/Set the session capabilities. | |
| virtual const resip::SdpContents | sessionCaps () const |
| virtual bool & | allowAutoAnswer () |
| Get/Set wether auto answers are allowed, if an autoanswer indication is found in a new inbound call request. | |
| virtual const bool | allowAutoAnswer () const |
| virtual bool & | allowPriorityAutoAnswer () |
| Get/Set wether priority auto answers are allowed, if a priority autoanswer indication is found in a new inbound call request. | |
| virtual const bool | allowPriorityAutoAnswer () const |
| virtual bool | shouldAutoAnswer (const resip::SipMessage &inviteRequest, bool *required=0) |
| Checks an Invite message for auto-answer headers against the current allow settings. | |
| virtual bool & | challengeAutoAnswerRequests () |
| Get/Set wether auto answer requests should be digest challenged or not. | |
| virtual const bool | challengeAutoAnswerRequests () const |
| virtual bool & | challengeOODReferRequests () |
| Get/Set wether out of dialog REFER requests should be digest challenged or not. | |
| virtual const bool | challengeOODReferRequests () const |
| virtual bool & | delayedMediaOutboundMode () |
| Get/set whether to use delayed media mode (INVITE without SDP offer) when making an outgoing call. | |
| virtual const bool | delayedMediaOutboundMode () const |
| virtual MediaEndpointMode & | mediaEndpointMode () |
| Get/Set the type of Media endpoint. | |
| virtual const MediaEndpointMode | mediaEndpointMode () const |
| virtual SecureMediaMode & | secureMediaMode () |
| Get/Set the secure media mode that will be used for sending/receiving media packets. | |
| virtual const SecureMediaMode | secureMediaMode () const |
| virtual bool & | secureMediaRequired () |
| Get/Set the wether Secure Media is required (default is false). | |
| virtual const bool | secureMediaRequired () const |
| virtual SecureMediaCryptoSuite & | secureMediaDefaultCryptoSuite () |
| Get/Set the secure media default crypto suite. | |
| virtual const SecureMediaCryptoSuite | secureMediaDefaultCryptoSuite () const |
| virtual NatTraversalMode & | natTraversalMode () |
| Get/Set the NAT traversal mode that will be used for sending/receiving media packets. | |
| virtual const NatTraversalMode | natTraversalMode () const |
| virtual bool & | forceCOMedia () |
| virtual const bool | forceCOMedia () const |
| virtual resip::Data & | natTraversalServerHostname () |
| Get/Set the NAT traversal server hostname that will be used for if natTranversalMode is anything other than NoNatTraversal. | |
| virtual const resip::Data | natTraversalServerHostname () const |
| virtual unsigned short & | natTraversalServerPort () |
| Get/Set the NAT traversal server port that will be used for if natTranversalMode is anything other than NoNatTraversal. | |
| virtual const unsigned short | natTraversalServerPort () const |
| virtual resip::Data & | stunUsername () |
| Get/Set the STUN username that will be used for if natTranversalMode is anything other than NoNatTraversal. | |
| virtual const resip::Data | stunUsername () const |
| virtual resip::Data & | stunPassword () |
| Get/Set the STUN password that will be used for if natTranversalMode is anything other than NoNatTraversal. | |
| virtual const resip::Data | stunPassword () const |
| virtual unsigned int & | maximumVideoBandwidth () |
| Get/Set the maximum video bandwidth to be indicated in SDP. | |
| virtual const unsigned int | maximumVideoBandwidth () const |
Public Member Functions inherited from resip::UserProfile | |
| UserProfile () | |
| UserProfile (std::shared_ptr< Profile > baseProfile) | |
| virtual | ~UserProfile () |
| virtual void | setDefaultFrom (const NameAddr &from) |
| virtual NameAddr & | getDefaultFrom () noexcept |
| virtual void | setServiceRoute (const NameAddrs &sRoute) |
| virtual NameAddrs & | getServiceRoute () noexcept |
| virtual void | setImsAuthUser (const Data &userName, const Data &host) |
| virtual Data & | getImsAuthUserName () noexcept |
| virtual Data & | getImsAuthHost () noexcept |
| virtual std::shared_ptr< UserProfile > | getAnonymousUserProfile () const |
| bool | isAnonymous () const |
| virtual void | addGruu (const Data &aor, const NameAddr &contact) |
| virtual bool | hasGruu (const Data &aor) const |
| virtual bool | hasGruu (const Data &aor, const Data &instance) const |
| virtual NameAddr & | getGruu (const Data &aor) |
| virtual NameAddr & | getGruu (const Data &aor, const NameAddr &contact) |
| virtual bool & | gruuEnabled () noexcept |
| virtual bool | gruuEnabled () const noexcept |
| virtual bool | hasPublicGruu () const |
| virtual const Uri & | getPublicGruu () const noexcept |
| virtual void | setPublicGruu (const Uri &gruu) |
| virtual bool | hasTempGruu () const |
| virtual const Uri & | getTempGruu () const noexcept |
| virtual void | setTempGruu (const Uri &gruu) |
| virtual void | clearDigestCredentials () noexcept |
| The following functions deal with clearing, setting and getting of digest credentals. | |
| virtual void | setDigestCredential (const Data &realm, const Data &user, const Data &password, bool isPasswordA1Hash=false) |
| For the password you may either provide the plain text password (isPasswordA1Hash = false) or the Digest A1 MD5 Hash (isPasswordA1Hash = true). | |
| virtual const DigestCredential & | getDigestCredential (const Data &realm) |
| virtual void | setDigestCacheUseLimit (unsigned long digestCacheUseLimit) noexcept |
| virtual unsigned long | getDigestCacheUseLimit () const noexcept |
| virtual bool & | clientOutboundEnabled () noexcept |
| virtual bool | clientOutboundEnabled () const noexcept |
| virtual bool | hasInstanceId () |
| virtual void | setInstanceId (const Data &id) |
| virtual const Data & | getInstanceId () const noexcept |
| virtual void | setRegId (int regId) noexcept |
| virtual int | getRegId () noexcept |
| const Tuple & | getClientOutboundFlowTuple () const noexcept |
| void | clearClientOutboundFlowTuple () |
| void | setClientOutboundFlowTuple (const Tuple &outboundFlowTuple) |
Public Member Functions inherited from resip::Profile | |
| Profile () | |
| Profile (std::shared_ptr< Profile > baseProfile) | |
| Profile (const Profile &)=default | |
| Profile (Profile &&)=default | |
| virtual | ~Profile ()=default |
| Profile & | operator= (const Profile &)=default |
| Profile & | operator= (Profile &&)=default |
| virtual void | reset () |
| Reset this profile to it's initial state - (same as calling unsetXXX for each setting) If no fall through (base) profile was provided as creation time. | |
| virtual void | setDefaultRegistrationTime (uint32_t secs) noexcept |
| Note: setXXXX methods will set this setting internally in this object. | |
| virtual uint32_t | getDefaultRegistrationTime () const noexcept |
| virtual void | unsetDefaultRegistrationTime () noexcept |
| virtual void | setDefaultMaxRegistrationTime (uint32_t secs) noexcept |
| If a registration gets rejected with a 423, then we ensure the MinExpires value is less than this before re-registering Set to 0 to disable this check and accept any time suggested by the server. | |
| virtual uint32_t | getDefaultMaxRegistrationTime () const noexcept |
| virtual void | unsetDefaultMaxRegistrationTime () noexcept |
| virtual void | setDefaultRegistrationRetryTime (int secs) noexcept |
| The time to retry registrations on error responses (if Retry-After header is not present in error) Set to 0 to never retry on errors. | |
| virtual int | getDefaultRegistrationRetryTime () const noexcept |
| virtual void | unsetDefaultRegistrationRetryTime () noexcept |
| virtual void | setDefaultSubscriptionTime (uint32_t secs) noexcept |
| This default is used if no value is passed in when creating a subscription. | |
| virtual uint32_t | getDefaultSubscriptionTime () const noexcept |
| virtual void | unsetDefaultSubscriptionTime () noexcept |
| virtual void | setDefaultPublicationTime (uint32_t secs) noexcept |
| This default is used if no value is passed in when creating a publication. | |
| virtual uint32_t | getDefaultPublicationTime () const noexcept |
| virtual void | unsetDefaultPublicationTime () noexcept |
| virtual void | setDefaultStaleCallTime (int secs) noexcept |
| Call is stale if UAC gets no final response within the stale call timeout (default 3 minutes) | |
| virtual int | getDefaultStaleCallTime () const noexcept |
| virtual void | unsetDefaultStaleCallTime () noexcept |
| virtual void | setDefaultStaleReInviteTime (int secs) noexcept |
| ReInvite is stale if UAC gets no final response within the stale reinvite timeout (default 40 seconds) | |
| virtual int | getDefaultStaleReInviteTime () const noexcept |
| virtual void | unsetDefaultStaleReInviteTime () noexcept |
| virtual void | setDefaultSessionTime (uint32_t secs) noexcept |
| Only used if timer option tag is set in MasterProfile. | |
| virtual uint32_t | getDefaultSessionTime () const noexcept |
| virtual void | unsetDefaultSessionTime () noexcept |
| virtual void | setDefaultSessionTimerMode (Profile::SessionTimerMode mode) noexcept |
| virtual Profile::SessionTimerMode | getDefaultSessionTimerMode () const noexcept |
| virtual void | unsetDefaultSessionTimerMode () noexcept |
| virtual void | set1xxRetransmissionTime (int secs) noexcept |
| The amount of time that can pass before dum will resubmit an unreliable provisional response. | |
| virtual int | get1xxRetransmissionTime () const noexcept |
| virtual void | unset1xxRetransmissionTime () noexcept |
| virtual void | set1xxRelResubmitTime (int secs) noexcept |
| The amount of time that can pass before dum will resubmit a reliable provisional response. | |
| virtual int | get1xxRelResubmitTime () const noexcept |
| virtual void | unset1xxRelResubmitTime () noexcept |
| virtual void | setOverrideHostAndPort (const Uri &hostPort) |
| overrides the value used to populate the contact ?dcm? – also change via entries? Also, dum currently uses(as a uas) the request uri of the dialog constructing request for the local contact within that dialog. | |
| virtual bool | hasOverrideHostAndPort () const noexcept |
| virtual const Uri & | getOverrideHostAndPort () const |
| virtual void | unsetOverrideHostAndPort () noexcept |
| virtual void | addAdvertisedCapability (Headers::Type header) |
| enable/disable sending of Allow/Supported/Accept-Language/Accept-Encoding headers on initial outbound requests (ie. | |
| virtual bool | isAdvertisedCapability (Headers::Type header) const |
| virtual void | clearAdvertisedCapabilities () noexcept |
| virtual void | unsetAdvertisedCapabilities () |
| virtual void | setOutboundProxy (const Uri &uri) |
| Use to route all outbound requests through a particular proxy. | |
| virtual const NameAddr & | getOutboundProxy () const |
| virtual bool | hasOutboundProxy () const noexcept |
| virtual void | unsetOutboundProxy () noexcept |
| virtual void | setForceOutboundProxyOnAllRequestsEnabled (bool enabled) noexcept |
| If enabled, forces use of outbound proxy on all requests, including mid-dialog requests. | |
| virtual bool | getForceOutboundProxyOnAllRequestsEnabled () const noexcept |
| virtual void | unsetForceOutboundProxyOnAllRequestsEnabled () noexcept |
| virtual void | setExpressOutboundAsRouteSetEnabled (bool enabled) noexcept |
| If enabled, add a route header for the outbound proxy. | |
| virtual bool | getExpressOutboundAsRouteSetEnabled () const noexcept |
| virtual void | unsetExpressOutboundAsRouteSetEnabled () noexcept |
| virtual void | setRportEnabled (bool enabled) noexcept |
| enable/disable rport for requests. rport is enabled by default | |
| virtual bool | getRportEnabled () const noexcept |
| virtual void | unsetRportEnabled () noexcept |
| virtual void | setUserAgent (const Data &userAgent) |
| if set then UserAgent header is added to outbound messages | |
| virtual const Data & | getUserAgent () const |
| virtual bool | hasUserAgent () const noexcept |
| virtual void | unsetUserAgent () noexcept |
| virtual void | setProxyRequires (const Tokens &proxyRequires) |
| if set then ProxyRequires header is added to outbound messages | |
| virtual const Tokens & | getProxyRequires () const |
| virtual bool | hasProxyRequires () const noexcept |
| virtual void | unsetProxyRequires () noexcept |
| virtual void | setKeepAliveTimeForDatagram (int keepAliveTime) noexcept |
| time between CR/LF keepalive messages in seconds. | |
| virtual int | getKeepAliveTimeForDatagram () const noexcept |
| virtual void | unsetKeepAliveTimeForDatagram () noexcept |
| virtual void | setKeepAliveTimeForStream (int keepAliveTime) noexcept |
| virtual int | getKeepAliveTimeForStream () const noexcept |
| virtual void | unsetKeepAliveTimeForStream () noexcept |
| virtual void | setFixedTransportPort (int fixedTransportPort) noexcept |
| If set dum will provide a port in the via for requests sent down to the stack. | |
| virtual int | getFixedTransportPort () const noexcept |
| virtual void | unsetFixedTransportPort () noexcept |
| virtual void | setFixedTransportInterface (const Data &fixedTransportInterface) |
| If set dum will provide a interface in the via for requests sent down to the stack. | |
| virtual const Data & | getFixedTransportInterface () const |
| virtual void | unsetFixedTransportInterface () |
| virtual void | setRinstanceEnabled (bool enabled) noexcept |
| If enabled then rinstance parameter is added to contacts. | |
| virtual bool | getRinstanceEnabled () const noexcept |
| virtual void | unsetRinstanceEnabled () noexcept |
| virtual void | setOutboundDecorator (std::shared_ptr< MessageDecorator > outboundDecorator) noexcept |
| virtual std::shared_ptr< MessageDecorator > | getOutboundDecorator () noexcept |
| virtual void | unsetOutboundDecorator () noexcept |
| virtual void | setMethodsParamEnabled (bool enabled) noexcept |
| If enabled then methods parameter is added to contacts. | |
| virtual bool | getMethodsParamEnabled () const noexcept |
| virtual void | unsetMethodsParamEnabled () noexcept |
| virtual void | setUserAgentCapabilities (const NameAddr &capabilities) |
| If set, the parameters on the provided NameAddr are used in the contact header Example: include <resip/stack/ExtensionParameter.hxx> static const resip::ExtensionParameter p_automaton("automaton"); static const resip::ExtensionParameter p_byeless("+sip.byeless"); static const resip::ExtensionParameter p_rendering("+sip.rendering"); ... NameAddr capabilities; capabilities.param(p_automaton); capabilities.param(p_byeless); capabilities.param(p_rendering) = "\"no\""; profile->setUserAgentCapabilities(capabilities);. | |
| virtual bool | hasUserAgentCapabilities () const noexcept |
| virtual const NameAddr & | getUserAgentCapabilities () const |
| virtual void | unsetUserAgentCapabilities () noexcept |
| virtual void | setExtraHeadersInReferNotifySipFragEnabled (bool enabled) noexcept |
| If enabled then dialog identifying headers are added to SipFrag bodies that are generated in an InviteSession. | |
| virtual bool | getExtraHeadersInReferNotifySipFragEnabled () const noexcept |
| virtual void | unsetExtraHeadersInReferNotifySipFragEnabled () noexcept |
| virtual void | setHandleInviteSession491AsGeneralFailureEnabled (bool enabled) |
| virtual bool | getHandleInviteSession491AsGeneralFailureEnabled () const |
| virtual void | unsetHandleInviteSession491AsGeneralFailureEnabled () |
Friends | |
| class | UserAgent |
Additional Inherited Members | |
Protected Member Functions inherited from resip::UserProfile | |
| virtual UserProfile * | clone () const |
This class extends the resip UserProfile to include Conversation Manager specific settings.
Author: Scott Godin (sgodin AT SipSpectrum DOT com)
Definition at line 23 of file ConversationProfile.hxx.
| Enumerator | |
|---|---|
| Base | |
| WebRTC | |
Definition at line 29 of file ConversationProfile.hxx.
| Enumerator | |
|---|---|
| NoNatTraversal | |
| StunBindDiscovery | |
| TurnUdpAllocation | |
| TurnTcpAllocation | |
| TurnTlsAllocation | |
Definition at line 35 of file ConversationProfile.hxx.
| Enumerator | |
|---|---|
| SRTP_AES_CM_128_HMAC_SHA1_32 | |
| SRTP_AES_CM_128_HMAC_SHA1_80 | |
Definition at line 53 of file ConversationProfile.hxx.
| Enumerator | |
|---|---|
| NoSecureMedia | |
| Srtp | |
| SrtpReq | |
| SrtpDtls | |
| SrtpDtlsReq | |
Definition at line 44 of file ConversationProfile.hxx.
| ConversationProfile::ConversationProfile | ( | ) |
Definition at line 19 of file ConversationProfile.cxx.
| ConversationProfile::ConversationProfile | ( | std::shared_ptr< resip::Profile > | baseProfile | ) |
Constructor.
| baseProfile | if any UserProfile settings are not set on this class, then the setting will "fall through" to the base profile |
Definition at line 36 of file ConversationProfile.cxx.
Get/Set wether auto answers are allowed, if an autoanswer indication is found in a new inbound call request.
Definition at line 94 of file ConversationProfile.hxx.
Definition at line 95 of file ConversationProfile.hxx.
Get/Set wether priority auto answers are allowed, if a priority autoanswer indication is found in a new inbound call request.
Definition at line 106 of file ConversationProfile.hxx.
Definition at line 107 of file ConversationProfile.hxx.
Get/Set wether auto answer requests should be digest challenged or not.
Definition at line 127 of file ConversationProfile.hxx.
Definition at line 128 of file ConversationProfile.hxx.
Get/Set wether out of dialog REFER requests should be digest challenged or not.
Definition at line 139 of file ConversationProfile.hxx.
Definition at line 140 of file ConversationProfile.hxx.
Get/set whether to use delayed media mode (INVITE without SDP offer) when making an outgoing call.
Definition at line 148 of file ConversationProfile.hxx.
Definition at line 149 of file ConversationProfile.hxx.
Definition at line 220 of file ConversationProfile.hxx.
Definition at line 221 of file ConversationProfile.hxx.
|
virtual |
Get the conversation profile handle.
Returns 0 if called before adding the profile to the ConversationManager.
Definition at line 55 of file ConversationProfile.cxx.
Get/Set the maximum video bandwidth to be indicated in SDP.
Definition at line 267 of file ConversationProfile.hxx.
|
inlinevirtual |
Definition at line 268 of file ConversationProfile.hxx.
|
inlinevirtual |
Get/Set the type of Media endpoint.
Base - traditional RTP endpoint, relies on other settings in this profile WebRTC - WebRTC endpoint, ignores many of the profile settings
Definition at line 156 of file ConversationProfile.hxx.
|
inlinevirtual |
Definition at line 157 of file ConversationProfile.hxx.
|
inlinevirtual |
Get/Set the NAT traversal mode that will be used for sending/receiving media packets.
NoNatTraversal - don't use any NAT traversal strategies - local address and port are used in SDP negotiations StunBindDiscovery - use Binding discovery on a STUN server, to discover and use "public" address and port in SDP negotiations TurnUdpAllocation - Use a TURN server as a media relay. Communicate to the TURN server over UDP and Allocate a UDP relay address and port to use in SDP negotiations TurnTcpAllocation - Use a TURN server as a media relay. Communicate to the TURN server over TCP and Allocate a UDP relay address and port to use in SDP negotiations TurnTlsAllocation - Use a TURN server as a media relay. Communicate to the TURN server over TLS and Allocate a UDP relay address and port to use in SDP negotiations
Definition at line 217 of file ConversationProfile.hxx.
|
inlinevirtual |
Definition at line 218 of file ConversationProfile.hxx.
|
inlinevirtual |
Get/Set the NAT traversal server hostname that will be used for if natTranversalMode is anything other than NoNatTraversal.
The server can be specified as an IP address or a A-Records DNS resolvable hostname. SRV resolution is not yet supported.
Definition at line 230 of file ConversationProfile.hxx.
|
inlinevirtual |
Definition at line 231 of file ConversationProfile.hxx.
Get/Set the NAT traversal server port that will be used for if natTranversalMode is anything other than NoNatTraversal.
Definition at line 239 of file ConversationProfile.hxx.
|
inlinevirtual |
Definition at line 240 of file ConversationProfile.hxx.
|
inlinevirtual |
Get/Set the secure media default crypto suite.
The default crypto suite is used when forming SDP offers (SDES only - does not apply to DTLS-SRTP). SRTP_AES_CM_128_HMAC_SHA1_32 - Counter Mode AES 128 bit encryption with 32bit authenication code SRTP_AES_CM_128_HMAC_SHA1_80 - Counter Mode AES 128 bit encryption with 80bit authenication code (default)
Definition at line 196 of file ConversationProfile.hxx.
|
inlinevirtual |
Definition at line 197 of file ConversationProfile.hxx.
|
inlinevirtual |
Get/Set the secure media mode that will be used for sending/receiving media packets.
NoSecureMedia - don't use any secure media strategies - RTP packets are sent unencrypted via the specified transport. Srtp - use SRTP with keying outside of media stream - ie. SDES key negotiation via SDP (default) SrtpDtls - use SRTP with DTLS key negotiation
Definition at line 171 of file ConversationProfile.hxx.
|
inlinevirtual |
Definition at line 172 of file ConversationProfile.hxx.
Get/Set the wether Secure Media is required (default is false).
Definition at line 182 of file ConversationProfile.hxx.
Definition at line 183 of file ConversationProfile.hxx.
|
virtual |
Get/Set the session capabilities.
Session capabilites are expressed as a SessionDesriptionProtocol body. Typically this is populated as you would expect an SDP offer to look like that is generated by this application.
This is used to generate SDP offers and form valid SDP answers.
Definition at line 68 of file ConversationProfile.cxx.
|
virtual |
Definition at line 74 of file ConversationProfile.cxx.
|
virtual |
Checks an Invite message for auto-answer headers against the current allow settings.
| inviteRequest | SIP Invite message to check |
| required | Will return true if the auto-answer is "required" |
Definition at line 80 of file ConversationProfile.cxx.
|
inlinevirtual |
Get/Set the STUN password that will be used for if natTranversalMode is anything other than NoNatTraversal.
The stun username/password is used for both STUN and TURN server authentication.
Definition at line 259 of file ConversationProfile.hxx.
|
inlinevirtual |
Definition at line 260 of file ConversationProfile.hxx.
|
inlinevirtual |
Get/Set the STUN username that will be used for if natTranversalMode is anything other than NoNatTraversal.
The stun username/password is used for both STUN and TURN server authentication.
Definition at line 249 of file ConversationProfile.hxx.
|
inlinevirtual |
Definition at line 250 of file ConversationProfile.hxx.
Definition at line 271 of file ConversationProfile.hxx.