Full changelog

Version 5.0.0

October 5th, 2018

  • * [webrtcgateway] Removed bogus attributes
  • * [webrtcgateway] Fixed exception handling for validating json model
  • * [webrtcgateway] Cleanup accounts when the client connection is lost
  • Removed data duplication and inconsistent attributes
  • Fixed argument types
  • Moved DNS lookup log message to debug level
  • Simplified building the result of the DNS lookup
  • Simplified and fixed DNS lookup when no outbound proxy is involved
  • Generalized sylkrtc json model mapping
  • Removed unnecessary default value
  • Avoid duplicate indexing when getting the data
  • Use python3 compatible form for except statements
  • Avoid unnecessary attach/detach in janus if DNS lookup fails
  • Added debug_level setting to ServerConfig
  • Added ability to toggle between configured log level and debug at runtime
  • Removed unused import and order imports alphabetically
  • Set videoroom bitrate to overwrite janus' low default of 256Kb/s
  • Added API call to allow a client to update session parameters on the fly
  • Register atexit handler to dump memory debug info
  • Simplified and enhanced application loading/accessing code
  • Fixed spurious SIPApplicationWillStart post and handling early stop
  • The __init__ method should not return any value
  • Made policy matching logic consistent and simplified code
  • Refactored logging
  • - Implemented trace loggers based on notifications to separate and
  • Added bitrate and video_codec configuration options for video rooms
  • Fully cleanup the connection handler resources when client disconnects
  • Simplified getting the session with the handle_id
  • When sessions were removed from the container, there was no guarantee
  • that there was no other reference to them somewhere else in the code,
  • which would cause dangling id-to-session mappings to be kept around
  • Renamed VideoRoomSessionContainer to SessionContainer
  • Fixed order of operations during ConnectionHandler cleanup
  • Added PublisherFeedContainer class for holding videoroom publisher feeds
  • Use SessionContainer to hold SIP sessions instead of using 2 mappings
  • Provide more context in log messages to identify where they're generated
  • Changed default max_bitrate value from 4Mb/s to 2Mb/s
  • Automatically adjust participant bitrate based on number of participants
  • Do not warn about missing session (it might've been destroyed elsewhere)
  • Do session cleanup after all processing
  • Separated session hangup event handler
  • Simplified handling hangup events as they do not have an associated code
  • Eliminated delays when deleting sessions and video rooms
  • Avoid an unnecessary base session lookup
  • Verify that the detached feed belongs to the requester
  • Use dict constructors instead of dict literals for readability
  • Fixed race condition when deleting SIP session
  • Fixed exception while deleting subscriber sessions during hangup events
  • Use discard as session might not be yet added to the video room
  • Handle JanusError exceptions and relay errors back to client
  • Properly release resources when getting JanusError exceptions
  • Do not treat DNS lookup errors as API errors
  • Fixed invite to conference to not include oneself
  • Simplified finding the invited accounts
  • Made method for handling conference invites public
  • Made VideoRoomContainer consistent by not relying on weak references
  • Moved video room access validation from ConnectionHandler to VideoRoom
  • Simplified building request data for SIP calls and registrations
  • Removed unnecessary room attribute
  • Simplified code and increased readability
  • Unified handling of exceptions for the video room join operation
  • Send back error responses for videoroom-ctl requests with missing fields
  • Use modern syntax for catching exceptions
  • Improved PEP-8 compliance
  • Removed copyright notice from script
  • Updated license
  • Use the actual config type and file to find out which files are read
  • Improved some log messages
  • Do not log traceback twice
  • Removed duplication of startup error handling
  • Added run method on SylkServer
  • Refactored startup script and configuration handling
  • - Removed command line option to specify the pid
  • - Removed command line option to specify the main configuration file
  • - Added a command line option to specify the configuration directory
  • - Added a command line option to specify the runtime directory
  • - All configuration files are now treated consistently
  • - Properly read both local and system wide configurations
  • - Do not initialize the runtime directory when not forking
  • Added requirement on the jsonmodels python package
  • Do not split statements over multiple lines when not needed
  • Improve validator efficiency by using objects with a validate method
  • Do not use slow regular expression for validating SIP URIs
  • Fixed finding resources when forking and started with a relative path
  • Log the resources directory on startup
  • Better names for some of the json model classes
  • Added LimitedChoiceField for json models
  • Replaced emdash HTML code with the actual character
  • Updated authors and sponsors
  • Split videoroom-ctl handler into subhandlers per option
  • Simplified getting static web resources for webrtcgateway
  • Make the web resource available as a property
  • Fixed handling ack messages
  • Simplified getting the result from janus messages
  • Added support for setting the active participants in a room
  • Log unhandled exception details
  • Only update active participants if different
  • Added UniqueStringListField JSON model field type
  • Moved normalization of the active participant list to the JSON model
  • Use the UniqueStringListField type for the invited participants
  • Split operation handlers into request and event handlers
  • Moved boilerplate code out of the request handlers
  • Moved general exception handling into operation handlers
  • Wait for the connection to be ready once before processing operations
  • Added generic sylkrtc request to model mapper
  • Simplified instantiating sylkrtc models from requests
  • Removed code that was never reached
  • Restructured code to avoid unnecessary extra return statements
  • Removed unnecessary additional private method
  • Fixed race condition when a connection handler is stopped while starting
  • Fixed race condition when cleaning up a connection handler while stopping
  • Removed unnecessary partial function
  • Simplified keepalive callback
  • Simplified webrtcgateway package structure
  • Removed unnecessary references to the janus backend everywhere
  • Renamed attribute to better reflect its function
  • Renamed some arguments and variables for clarity
  • Refactored sending keepalives to be internal to the protocol
  • Simplified stopping the keepalive timer
  • Grouped public/private API methods together
  • Explicitly added protocol methods to JanusBackend
  • Removed redundant namespace prefix
  • Optimized code to only send keepalive messages when necessary
  • Simplified code sending janus requests
  • Do not allow request arguments to overwrite core attributes
  • Do not attempt to send messages after the connection was closed
  • Fixed return value from deferred callback
  • Fixed error with cancelling already called timer
  • Replaced dependency on python-jsonmodels with internal module
  • The jsonobjects module was written to replace the functionality
  • provided by jsonmodels while offering the following advantages:
  • - More than 10 times faster
  • - Much lower memory footprint
  • - No need for manual validation
  • - Objects are validated on creation and every time they are modified
  • - Guaranteed data consistency throughout the lifetime of the objects
  • - JSON arrays are first class objects allowing them to be used standalone
  • - JSON arrays can be embedded alowing for multi-dimensional arrays
  • - JSON arrays can define both item and array level validators
  • - Better semantics for optional properties and default values
  • Renamed VideoRoom to Videoroom in class names
  • Refactored client API to simplify it and make it consistent
  • Simplified AbstractProperty getter
  • Improved data extraction speed by a factor of 2
  • Have the 'in' operator to check if a property is defined in a JSONObject
  • Fixed code formatting warnings
  • Removed unnecessary class
  • Optimized returned value
  • Allow LimitedChoiceProperty to be optional and have a default value
  • Keep all internal SIP URIs as AORs for consistency
  • Added DisplayNameValidator that removes optional quotes
  • Added type hinting for sylkrtc models
  • Fixed DisplayNameValidator to work with empty names
  • Use JSON models to encode/decode messages to/from Janus
  • - Encapsulated Janus session and plugin handle functionality to classes
  • - Simplified generating Janus requests and processing Janus replies
  • - Correctly handle Janus errors sent as error events in success replies
  • - Split Janus event handlers to improve readability and maintability
  • - Moved data validation to the JSON model validators
  • The local timezone of sylkserver is both irrelevant for the client that
  • receives the push notification and it's also 20 times slower to generate
  • a server local timestamp than a UTC timestamp (115us vs 6us)
  • Use JSON models for Firebase push notifications
  • Added method to send conference invite push notifications
  • Renamed push notification methods from xyz_session to xyz_call
  • Simplified signature for the push notification functions
  • Fixed race condition with cleaning subscriber sessions in conferences
  • Split debian dependencies one per line
  • Removed dependency on dummy package
  • Removed unnecessary version dependencies
  • Updated debian package description
  • Improve performance for push notifications by reusing the request
  • Log push notifications at DEBUG level
  • Avoid composing log message unless needed
  • Updated python-application version dependency
  • Updated dependency list in the INSTALL file
  • Use default sound for push notifications
  • Send push notifications for conference invite events
  • Use relative imports for webrtcgateway
  • Adjusted the WebRTC gateway URL in the sample configuration
  • Fixed URL class to not mangle template variable
  • Adjusted conference welcome message
  • Fixed sending ACK to the wrong address by SofiaSIP
  • Ignore the Janus SIP plugin ringing event for now
  • Ignore the Janus SIP plugin progress event for now
  • Fixed matching empty file:// origins with the latest autobahn
  • Moved debian dependency to the proper package
  • Removed deprecated pycompat/pyversions files
  • Removed code that prevented sylkserver from restarting on upgrades
  • Do not install janus configuration files with sylkserver-webrtc-gateway
  • Removed defaults file
  • Allow sylkserver to leave a core file when run by systemd
  • Removed build dependency on obsolete package
  • Increased debian compatibility to 11
  • Fixed corrupted sound file names in the deb if name contains spaces

Version 4.1.0

January 20th, 2017

  • Mention implemented standards for WebRTC video conferencing
  • Improve logging of WebRTC gateway and video conference applications
  • Added per video room access control and recording options
  • Fix settings the recording folder for video conference recordings
  • Fixed chatroom capabilities
  • Changed codec order
  • Changed sample rate to favor opus
  • Adjusted sample config with latest default values
  • webrtcgw: improved logging of incoming connections
  • webrtcgw: initial implementation of push notifications framework
  • webrtcgw: fix sample configuration file
  • webrtcgw: reorganized package
  • webrtcgw: fix for AutoBahn API change
  • webrtcgw: simplify ICE state flags
  • webrtcgw: uncomment log lines
  • webrtcgw: set content_available to True for FCM notifications
  • Capture validation errors when building requests
  • The new_token field is not required for the account-devicetoken request
  • Added extra logging to help debug device token handling
  • Increased debian compatibility level to 9
  • Increased debian standards version
  • Updated debian package maintainer
  • Added debian dependency on lsb-base
  • Adjusted debian package's descriptions
  • Updated boring file

Version 4.0.0

October 12th, 2016

  • webrtc: add multi-party video conferencing capability
  • webrtc: separate Janus event handlers per plugin
  • webrtc: refactor JanusSessionInfo
  • webrtc: reorganize API module
  • webrtc: update builtin HTML description page
  • core: add support for TLS certificate chains for the builtin web server
  • echo: refactor application
  • conference: advertise call-by-uri WebRTC URIs
  • conference: don't advertise XMPP support by default
  • conference: advertise other means to join a room also when in bonjour mode

Version 3.3.0

June 14th, 2016

  • webrtcgateway: refactor API message handling
  • webrtcgateway: reorganize models
  • webrtcgateway: add support for setting account display name
  • webrtcgateway: remove obsolete sylkrtc test application
  • webrtcgateway: add ability to customize User Agent
  • Raised Janus version dependency
  • Update Janus configuration

Version 3.2.0

March 8th, 2016

  • Fix per-room pstn_access_numbers setting
  • Fixup leftover old streams API usage
  • webrtcgateway: skip 'detached' event
  • Update references, some of the drafts are now RFCs
  • Fix overriding local_uri for MSRP streams
  • Fix sending XMPP messages after API changes
  • Fix method name
  • webrtcgateway: enable WebSocket pinging
  • Un-vendor Klein
  • Disable i/o buffering when running with systemd
  • Fix access to MediaStreamRegistry after SDK upgrade
  • Make the Jingle MediaStreamRegistry analogous to the SIP one
  • Catch exceptions when accepting incoming subscriptions
  • Don't set GnuTLS compression parameters
  • Adapt to API changes in SIPThor
  • Several code style improvements
  • Log errors when setting up streams in new_from_sdp
  • Remove mismatched HTML closing tag
  • Handle parsing errors for is-composing payload
  • Reject incoming sessions with a Replaces header
  • webrtcgateway: enable optional SRTP-SDES for outgoing calls
  • Update INSTALL
  • Simplified logic for starting server
  • Added command line option for memory debugging
  • Adapt to transpoert API change in Jingle streams
  • Use new notification to listen for Engine failures
  • Forcefully exit if we fail to start TLS
  • Join the Engine thread just for 5 seconds
  • xmppgateway: fix unicode error when sending MSRP chunks

Version 3.1.0

December 4th, 2015

  • Fixed default web port in sample config file
  • Terminate connections if backend goes down
  • webrtc: fix navbar rounded corners in test app
  • webrtc: show remote party in test app
  • Improve error messages for API call errors
  • Exit with a a non-zero exit code if engine failed
  • Update README with WebRTC related information
  • Added 'missed_session' event
  • Added webrtc_gateway_url settings for conference rooms
  • Adapt to changes in SIP SIMPLE SDK
  • Raised python-sipsimple dependency
  • Updated Janus config to match new version
  • Raised Janus version dependency
  • webrtc: add display name support for incoming and missed calls

Version 3.0.1

September 4th, 2015

  • webrtc: mute local video in test application
  • Adjust web port in configuration example
  • Fix installing default certificates also in /usr/share/

Version 3.0.0

August 28th, 2015

  • Added WebRTC gateway application
  • Switch to using listenSSL
  • Make main web server logging less verbose
  • Fix initializing Path datatype
  • Rework how services are published in SIPThor
  • Install all sample configuration files
  • xmppgateway: make factories not noisy
  • Add systemd unit file
  • Improved Debian package creation
  • Added build dependency on dh-python

Version 2.9.1

April 29th, 2015

  • Add spool_dir setting
  • Simplify SylkServer's stream subclasses
  • Stop the session manager first when shutting down
  • Adapt to API changes in MSRPlib
  • Refactor file transfers to match API changes in SIP SIMPLE SDK

Version 2.9.0

March 17th, 2015

  • Added ZRTP and opportunistic encryption support
  • Adapt to changes in SIP SIMPLE SDK
  • Add python-lxml as a direct dependency
  • * Relax XMPP - SIP URI marching
  • Accept any content type in echo application
  • Support inlined images in the conference application
  • Add setting for toggling presence activity logging (xmppgateway)
  • Refactored path handling and TLS certificate location
  • Simplify default paths for resources in /var
  • Add ability to skip the isfocus parameter when publishing a Bonjour
  • service
  • Publish echo application on Bonjour if enabled
  • Publish playback application on Bonjour if enabled
  • Change default directory for conference file transfers
  • Tag all messages sent by the room as status messages
  • Publish every Bonjour service with a different id

Version 2.8.0

December 5th, 2014

  • Add a custom Session class
  • Added setting for toggling ICE support
  • Add advertised_ip setting
  • Use the specified IP address both for signaling and media
  • Enhance playback application
  • Adapt to latest SDK API changes
  • Don't advertise the default conference on Bonjour if it's not the default
  • application
  • Add ability to find applications by name to ApplicationRegistry
  • Log default application on start
  • Refactor managing the single account SylkServer currently uses
  • Refactored WelcomeHandler in conference application
  • Use the specified IP address both for signaling and media
  • Allow user-part only matching on playback application
  • Don't manually create the Contact header when not needed
  • Fix JingleSession and adapt audio streams to API changes
  • Strip HTML in IRCconference application
  • Fix handling XMPP stanzas sent to a bare JID when the session was bound

Version 2.7.2

August 12th, 2014

  • Fix setting local IP address
  • Null doesn't need to be instantiated

Version 2.7.1

July 18th, 2014

  • Fix variable name

Version 2.7.0

July 9th, 2014

  • Added setting to set the hostname for conference room screen sharing URL
  • Fix race condition when initializing TLS transport
  • Fixed streams API usage after changes in SIPSIMPLE SDK
  • Fix handling cancelled proposals
  • Added display_name attribute to conference rooms
  • Simplify loading room configuration
  • Cleanup old room files on startup
  • Added logrotate file
  • Raised python-sipsimple version dependency

Version 2.6.2

June 12th, 2014

  • Fixed resource leak in playback application
  • Refactored welcome prompt playback for ircconference application

Version 2.6.1

May 21st, 2014

  • Adjust Session to changes in SIP SIMPLE SDK
  • Adapted server startup to changes in SIP SIMPLE SDK
  • Send REPORT chunks automatically for keep-alive chunks
  • Log SIP SIMPLE SDK version
  • Raised python-sipsimple version dependency

Version 2.6.0

February 19th, 2014

  • Fixed issues when shutting down the Engine
  • Fixed generating is-composing payload when refresh is not set
  • Accept multiple PSTN numbers for a given conference room
  • Use better API for building is-composing payload
  • Avoid unnecessary processing when dealing with CPIMIdentity objects
  • Simplified history storage in conference app
  • Simplified code for handling proposal failures
  • Simplified code for starting/stopping SylkServer
  • Renamed incoming_sip_message to incoming_message
  • Use the new NetworkConditionsDidChange notification
  • Bumped Debian Standards-Version
  • Raised python-sipsimple version dependency

Version 2.5.1

December 16th, 2013

  • Adapted to API changes in SIP SIMPLE SDK
  • Added option to dump core in case of a crash
  • Fixed dispatching messages when in bonjour mode
  • Limit session in echo application to 10 minutes
  • Skip broadcasting OTR messages
  • Reworked server stop mechanism
  • Removed obsolete sound files and fixed co_there_is prompt
  • Fixed removing observer if notification is processed too late

Version 2.5.0

August 9th, 2013

  • Adapted to changes in latest SIP SIMPLE SDK
  • Added playback application
  • Enabled Opus codec by default
  • Added setting for sample rate, defaults to 32 kHz
  • Advertise PSTN and XMPP access in conference rooms
  • Replaced prompts with higher quality ones
  • Fixed initializing PJSIP's internal resolver
  • Always disable echo canceller
  • Improved logging
  • Ignore audio device change notifications
  • Removed dependency on python-backports

Version 2.4.0

March 22nd, 2013

  • Added VoIP translation for SIP/XMPP gateway (Jingle)
  • Added Presence to Bonjour conference rooms (XEP-0174)
  • Added support for XMPP software version (XEP-0092)
  • Added support for XMPP ping (XEP-0199)
  • Reply with service-unavailable to unsupported XMPP IQ stanzas
  • Improved XMPP service discovery support (XEP-0115)
  • Fixed a race condition related to SIP subscriptions
  • Improved description of XMPP related settings

Version 2.3.0

January 30th, 2013

  • Added SIP/XMPP gateway ability to invite participants to a multiparty chat
  • Added RTP audio and MSRP chat 'echo' application
  • Added support for XEP-0030 (service discovery)
  • Added ability to load extra applications from an external directory
  • Added timestamp to generated PIDF documents
  • Simplified mechanism required for adding new applications
  • Refactored per-application logger
  • Improved logging in XMPP gateway and conference applications
  • Removed extended-away state handling as it no longer exists in the SDK
  • Made several improvements to XMPP stanza parsing
  • Fixed detecting MSRP Nickname collision
  • Fixed handling presence stanzas without a resource part in the from
  • Fixed translating resource IDs for presence
  • Fixed leaking session objects if session fails while joining a conference
  • Fixed mapping room URI for received REFER requests

Version 2.2.1

November 9th, 2012

  • Fixed stream creation after API changes in SDK
  • Fixed accessing session objects after API changes in SDK
  • Renamed ServerSession to Session

Version 2.1.1

October 9th, 2012

  • Fixed file transfers when using Bonjour mode
  • Fixed normalizing IPAddress datatype
  • Disables private messages support when using Bonjour mode

Version 2.1.0

September 17th, 2012

  • Added ability to disable applications
  • Added ability to configure the directory for resource files
  • Added ability to listen on all interfaces
  • Refactored Bonjour support
  • Fixed starting music on hold playback
  • Fixed setting extended status for XMPP dnd state
  • Fixed API calls due to changes in SIP SIMPLE SDK
  • Delay conference database initialization until application is started
  • Don't encode and quote DeviceInfo description

Version 2.0.0

September 6th, 2012

  • Added XMPP gateway application
  • Added Bonjour support
  • Added support for MSRP NICKNAME
  • Added ability to map applications by RURI, domain or username
  • Added ability to select desired application with X-Sylk-App header
  • Added ApplicationLogger, in order to prefix each application's log lines
  • Added start/stop methods to applications
  • Added ability to specify more attributes when sending MSRP messages
  • Allow applications to handle the 'presence' event on incoming
  • subscriptions
  • Modified ChatStream to send MSRP REPORT chunks manually
  • Use received reason when notifyig about REFER request progress

Version 1.3.0

December 22nd, 2011

  • Added multiparty comference screen sharing capability
  • by accepting jpeg images over an established MSRP chat stream
  • Added web-server to serve shared screens
  • Made configuration file optional by using defaults settings
  • Initialize applications after loading them
  • Fixed parsing Refer-To URI
  • Pass-through additional headers when dispatching chat
  • messages
  • Adjusted to the latest changes in XML payloads from
  • sipsimple
  • Reject incoming call transfer requests to conference
  • rooms

Version 1.2.3

September 20th, 2011

  • Adapted to API changes in SIPSIMPLE SDK

Version 1.2.2

July 20th, 2011

  • Enabled TLS by default
  • Fixed regression when sending private messages
  • Fixed renaming file when it already exists
  • Listen by default on port 5061 for SIP TLS transport
  • Fixed exception when proposal is rejected but no timer was added
  • Adapted to accounts handling changes in the middleware

Version 1.1.0

March 18th, 2011

  • Added incoming REFER support
  • Added outgoing INVITE support
  • Added SIP outbound proxy support
  • Added Trusted Peers based on source IP address
  • Added Access Control Lists support to conference application
  • Added basic multi-application support
  • Added IRC conference application
  • Added SIPThor integration
  • Fixed initialization of TLS settings
  • Made session connect method receive the contact header
  • Catch exception if outgoing NOTIFY could not be sent
  • Fixed exception when sending private message to a participant without chat
  • Refactored exception handling when sending chat messages
  • Refactored application finding mechanism
  • Reject incoming requests with 404 if application is not found
  • Removed SIP MESSAGE support in conference application

Version 1.0.1

February 17th, 2011

  • Added unicode support
  • Fixed building CPIMIdentity object
  • Use request URI to match rooms instead of the To header

Version 1.0.0

January 27th, 2011

  • Initial release