void LoadSettings() { var s = settings.Get <PeerCastStationSettings>(); try { if (s.Logger != null) { Logger.Level = s.Logger.Level; Logger.LogFileName = s.Logger.LogFileName; Logger.OutputTarget = s.Logger.OutputTarget; } if (s.AccessController != null) { peerCast.AccessController.MaxPlays = s.AccessController.MaxDirects; peerCast.AccessController.MaxRelays = s.AccessController.MaxRelays; peerCast.AccessController.MaxPlaysPerBroadcastChannel = s.AccessController.MaxDirectsPerBroadcastChannel; peerCast.AccessController.MaxPlaysPerRelayChannel = s.AccessController.MaxDirectsPerChannel; peerCast.AccessController.MaxRelaysPerBroadcastChannel = s.AccessController.MaxRelaysPerBroadcastChannel; peerCast.AccessController.MaxRelaysPerRelayChannel = s.AccessController.MaxRelaysPerChannel; peerCast.AccessController.MaxUpstreamRate = s.AccessController.MaxUpstreamRate; peerCast.AccessController.MaxUpstreamRateIPv6 = s.AccessController.MaxUpstreamRateIPv6; peerCast.AccessController.MaxUpstreamRatePerBroadcastChannel = s.AccessController.MaxUpstreamRatePerBroadcastChannel; peerCast.AccessController.MaxUpstreamRatePerRelayChannel = s.AccessController.MaxUpstreamRatePerChannel; } if (s.BroadcastID != Guid.Empty && (AtomCollectionExtensions.IDToByteArray(s.BroadcastID)[0] & 0x01) == 0) { peerCast.BroadcastID = s.BroadcastID; } if (s.Listeners != null) { foreach (var listener in s.Listeners) { try { var ol = peerCast.StartListen(listener.EndPoint, listener.LocalAccepts, listener.GlobalAccepts); ol.GlobalAuthorizationRequired = listener.GlobalAuthRequired; ol.LocalAuthorizationRequired = listener.LocalAuthRequired; ol.AuthenticationKey = new AuthenticationKey(listener.AuthId, listener.AuthPassword); } catch (System.Net.Sockets.SocketException e) { logger.Error(e); } } } if (peerCast.OutputListeners.Count == 0) { var endpoint = new System.Net.IPEndPoint( AppSettingsReader.GetIPAddress("DefaultListenAddress", System.Net.IPAddress.Any), AppSettingsReader.GetInt("DefaultListenPort", 7144) ); try { peerCast.StartListen( endpoint, OutputStreamType.All, OutputStreamType.Metadata | OutputStreamType.Relay); } catch (System.Net.Sockets.SocketException e) { logger.Error(e); try { peerCast.StartListen( new System.Net.IPEndPoint(endpoint.Address, 0), OutputStreamType.All, OutputStreamType.None); } catch (System.Net.Sockets.SocketException e2) { logger.Error(e2); } } } if (s.YellowPages != null) { foreach (var yellowpage in s.YellowPages) { try { peerCast.AddYellowPage(yellowpage.Protocol, yellowpage.Name, yellowpage.Uri, yellowpage.ChannelsUri); } catch (ArgumentException e) { logger.Error(e); } } } } catch (FormatException) { } ChannelCleaner.Mode = settings.Get <ChannelCleanerSettings>().Mode; ChannelCleaner.InactiveLimit = settings.Get <ChannelCleanerSettings>().InactiveLimit; }