Esempio n. 1
0
 def incoming_session(self, session):
     log.msg('Incoming session %s from %s to %s' %
             (session.call_id, session.remote_identity.uri,
              session.local_identity.uri))
     config = get_config(
         '%s@%s' % (session.request_uri.user, session.request_uri.host))
     if config is None:
         config = get_config('%s' % session.request_uri.user)
         if config is None:
             log.msg(u'Session %s rejected: no configuration found for %s' %
                     (session.call_id, session.request_uri))
             session.reject(488)
             return
     stream_types = {'audio'}
     if config.enable_video:
         stream_types.add('video')
     streams = [
         stream for stream in session.proposed_streams
         if stream.type in stream_types
     ]
     if not streams:
         log.msg(
             u'Session %s rejected: invalid media, only RTP audio and video is supported'
             % session.call_id)
         session.reject(488)
         return
     handler = PlaybackHandler(config, session)
     handler.run()
Esempio n. 2
0
 def _play(self):
     config = get_config(
         '%s@%s' %
         (self.session.request_uri.user, self.session.request_uri.host))
     if config is None:
         config = get_config('%s' % self.session.request_uri.user)
     try:
         audio_stream = next(stream for stream in self.session.streams
                             if stream.type == 'audio')
     except StopIteration:
         self.proc = None
         return
     player = WavePlayer(audio_stream.mixer, config.file)
     audio_stream.bridge.add(player)
     log.info(u'Playing file %s for session %s' %
              (config.file, self.session.call_id))
     try:
         player.play().wait()
     except (ValueError, WavePlayerError) as e:
         log.warning(u'Error playing file %s: %s' % (config.file, e))
     except proc.ProcExit:
         pass
     finally:
         player.stop()
         self.proc = None
         audio_stream.bridge.remove(player)
         self.session.end()
         self.session = None
Esempio n. 3
0
 def _play(self):
     config = get_config('%s@%s' % (self.session.request_uri.user, self.session.request_uri.host))
     if config is None:
         config = get_config('%s' % self.session.request_uri.user)
     try:
         audio_stream = next(stream for stream in self.session.streams if stream.type=='audio')
     except StopIteration:
         self.proc = None
         return
     player = WavePlayer(audio_stream.mixer, config.file)
     audio_stream.bridge.add(player)
     log.msg(u"Playing file %s for session %s" % (config.file, self.session.call_id))
     try:
         player.play().wait()
     except (ValueError, WavePlayerError), e:
         log.warning(u"Error playing file %s: %s" % (config.file, e))
Esempio n. 4
0
 def incoming_session(self, session):
     log.msg('Incoming session %s from %s to %s' % (session.call_id, session.remote_identity.uri, session.local_identity.uri))
     config = get_config('%s@%s' % (session.request_uri.user, session.request_uri.host))
     if config is None:
         config = get_config('%s' % session.request_uri.user)
         if config is None:
             log.msg(u'Session %s rejected: no configuration found for %s' % (session.call_id, session.request_uri))
             session.reject(488)
             return
     stream_types = {'audio'}
     if config.enable_video:
         stream_types.add('video')
     streams = [stream for stream in session.proposed_streams if stream.type in stream_types]
     if not streams:
         log.msg(u'Session %s rejected: invalid media, only RTP audio and video is supported' % session.call_id)
         session.reject(488)
         return
     handler = PlaybackHandler(config, session)
     handler.run()
Esempio n. 5
0
 def _play(self):
     config = get_config(
         '%s@%s' %
         (self.session.request_uri.user, self.session.request_uri.host))
     if config is None:
         config = get_config('%s' % self.session.request_uri.user)
     try:
         audio_stream = next(stream for stream in self.session.streams
                             if stream.type == 'audio')
     except StopIteration:
         self.proc = None
         return
     player = WavePlayer(audio_stream.mixer, config.file)
     audio_stream.bridge.add(player)
     log.msg(u"Playing file %s for session %s" %
             (config.file, self.session.call_id))
     try:
         player.play().wait()
     except (ValueError, WavePlayerError), e:
         log.warning(u"Error playing file %s: %s" % (config.file, e))
Esempio n. 6
0
 def start(self):
     self.bonjour_services = []
     if ServerConfig.enable_bonjour:
         application_map = dict((item.split(':')) for item in ServerConfig.application_map)
         for uri, app in application_map.iteritems():
             if app == 'playback':
                 config = get_config('%s' % uri)
                 if config is None:
                     continue
                 if os.path.isfile(config.file) and os.access(config.file, os.R_OK):
                     service = BonjourService(service='sipuri', name='Playback Test', uri_user=uri, is_focus=False)
                     service.start()
                     service.presence_state = BonjourPresenceState('available', u'File: %s' % os.path.basename(config.file))
                     self.bonjour_services.append(service)
Esempio n. 7
0
 def start(self):
     self.bonjour_services = []
     if ServerConfig.enable_bonjour:
         application_map = dict(
             (item.split(':')) for item in ServerConfig.application_map)
         for uri, app in application_map.iteritems():
             if app == 'playback':
                 config = get_config('%s' % uri)
                 if config is None:
                     continue
                 if os.path.isfile(config.file) and os.access(
                         config.file, os.R_OK):
                     service = BonjourService(service='sipuri',
                                              name='Playback Test',
                                              uri_user=uri,
                                              is_focus=False)
                     service.start()
                     service.presence_state = BonjourPresenceState(
                         'available',
                         u'File: %s' % os.path.basename(config.file))
                     self.bonjour_services.append(service)