コード例 #1
0
 public int AddAccountAndGetId(AccountConfig accCfg, bool isDefault)
 {
     int id = NativeConstants.PJSUA_INVALID_ID;
     var cfg = new pjsua_acc_config();
     PJSUA_DLL.Accounts.pjsua_acc_config_default(cfg);
     cfg = _mapper.Map(accCfg, cfg);
     Helper.GuardError(PJSUA_DLL.Accounts.pjsua_acc_add(cfg, Convert.ToInt32(isDefault), ref id));
     return id;
 }
コード例 #2
0
        public void Configure(IConfigurationContext context)
        {
            try
            {
                var config = context.Config;
                var mediaConfig = context.MediaConfig;
                var loggingConfig = context.LoggingConfig;
                var cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                _section = (SipUserAgentSettingsSection) cfg.Sections["sipua"];
                if (_section != null)
                {
                    context.RegisterTransport(
                        new Core.Utils.Tuple<TransportType, TransportConfig>(
                            (TransportType) Enum.Parse(typeof (TransportType), _section.Transport.TransportType, true),
                            new TransportConfig(){Port = (uint) _section.Transport.Port,
                                BoundAddress = _section.Transport.BoundAddress,
                                PublicAddress = _section.Transport.PublicAddress
                            }));

                    config.UseSrtp = _section.SecureMedia;
                    config.SecureSignalling = _section.SecureSignaling;

                    if (_section.NetworkSettings != null)
                    {
                        config.NatInSdp = _section.NetworkSettings.NatInSdp;
                        config.ForceLooseRoute = _section.NetworkSettings.ForceLooseRoute;

                        if (_section.NetworkSettings.DnsServers != null)
                            for (int i = 0; i < _section.NetworkSettings.DnsServers.Count; i++)
                                if (!string.IsNullOrEmpty(_section.NetworkSettings.DnsServers[i].Address))
                                    config.DnsServers.Add(_section.NetworkSettings.DnsServers[i].Address);

                        if (_section.NetworkSettings.Proxies != null)
                            for (int i = 0; i < _section.NetworkSettings.Proxies.Count; i++)
                                if (!string.IsNullOrEmpty(_section.NetworkSettings.Proxies[i].Address))
                                    config.OutboundProxies.Add(_section.NetworkSettings.Proxies[i].Address);

                        if (_section.NetworkSettings.StunServers != null)
                            for (int i = 0; i < _section.NetworkSettings.StunServers.Count; i++)
                                if (!string.IsNullOrEmpty(_section.NetworkSettings.StunServers[i].Address))
                                    config.StunServers.Add(_section.NetworkSettings.StunServers[i].Address);

                        if (_section.NetworkSettings.Stun != null)
                        {
                            config.StunHost = _section.NetworkSettings.Stun.Address;
                        }

                        if (_section.NetworkSettings.Turn != null &&
                            _section.NetworkSettings.Turn.Enabled)
                        {
                            mediaConfig.EnableTurn = true;
                            mediaConfig.TurnServer = _section.NetworkSettings.Turn.Server;
                            TransportType tpType = TransportType.Udp;
                            switch (_section.NetworkSettings.Turn.TransportType)
                            {
                                case "udp":
                                    tpType = TransportType.Udp;
                                    break;
                                case "tcp":
                                    tpType = TransportType.Tcp;
                                    break;
                                case "tls":
                                    tpType = TransportType.Tls;
                                    break;
                            }
                            mediaConfig.TurnConnectionType = tpType;
                            mediaConfig.TurnAuthentication = new NetworkCredential
                                                                 {
                                                                     UserName = _section.NetworkSettings.Turn.UserName,
                                                                     Password = _section.NetworkSettings.Turn.Password,
                                                                     Domain = _section.NetworkSettings.Turn.Realm
                                                                 };
                        }

                        if (_section.NetworkSettings.ICE != null)
                        {
                            mediaConfig.EnableICE = _section.NetworkSettings.ICE.Enabled;
                            //mediaConfig.ICENoHostCandidates = _section.NetworkSettings.ICE.NoHostCandidates;
                            mediaConfig.ICENoRtcp = _section.NetworkSettings.ICE.NoRtcp;
                        }
                    }

                    mediaConfig.IsVadEnabled = _section.MediaConfig.IsVadEnabled;

                    config.AutoAnswer = _section.AutoAnswer;
                    config.AutoRecord = _section.AutoRecording;
                    config.AutoConference = _section.AutoConference;
                    config.MaxCalls = (uint) _section.MaxCalls;

                    loggingConfig.LogMessages = _section.LogMessages;
                    loggingConfig.LogLevel = (uint) _section.LogLevel;
                    loggingConfig.TraceAndDebug = _section.TraceAndDebug;

                    mediaConfig.CaptureDeviceId = _section.MediaConfig.CaptureDeviceId;
                    mediaConfig.PlaybackDeviceId = _section.MediaConfig.PlaybackDeviceId;

                    context.RegisterAccounts(
                        _section.Accounts.Cast<AccountElement>()
                            .Select(ae =>
                                        {
                                            var accCfg = new AccountConfig()
                                                             {
                                                                 Id = ae.AccountId,
                                                                 RegUri = ae.RegistrarUri,
                                                                 IsPublishEnabled = ae.PublishPresence,
                                                                 IsDefault = ae.IsDefault
                                                             };
                                            accCfg.Credentials.Add(new NetworkCredential(ae.UserName, ae.Password,
                                                                                         ae.Realm));
                                            return accCfg;
                                        }));
                }
            }
            catch (ConfigurationErrorsException) //error in config using default settings
            {
            }
        }
コード例 #3
0
 public int AddAccountAndGetId(AccountConfig accCfg, bool isDefault)
 {
     return 0;
 }
コード例 #4
0
 public AccountConfig Map(pjsua_acc_config cfg, AccountConfig config)
 {
     return _engine.Map(cfg, config);
 }
コード例 #5
0
 public pjsua_acc_config Map(AccountConfig config, pjsua_acc_config cfg)
 {
     return _engine.Map(config, cfg);
 }