public async void Apply() { if (!IsModified) { return; } IsModified = false; ChannelCleaner.Mode = channelCleanupMode; ChannelCleaner.InactiveLimit = channelCleanupInactiveLimit * 60000; peerCast.AccessController.MaxRelays = maxRelays; peerCast.AccessController.MaxRelaysPerChannel = maxRelaysPerChannel; peerCast.AccessController.MaxPlays = maxPlays; peerCast.AccessController.MaxPlaysPerChannel = maxPlaysPerChannel; peerCast.AccessController.MaxUpstreamRate = maxUpstreamRate; peerCast.AccessController.MaxUpstreamRatePerChannel = maxUpstreamRatePerChannel; pecaApp.Settings.Get <WPFSettings>().ShowWindowOnStartup = isShowWindowOnStartup; if (IsListenersModified) { foreach (var listener in peerCast.OutputListeners.ToArray()) { peerCast.StopListen(listener); } foreach (var listener in ports) { var newlistener = peerCast.StartListen(listener.EndPoint, listener.LocalAccepts, listener.GlobalAccepts); newlistener.GlobalAuthorizationRequired = listener.GlobalAuthRequired; newlistener.LocalAuthorizationRequired = listener.LocalAuthRequired; newlistener.AuthenticationKey = listener.AuthenticationKey; } isListenersModified = false; } if (IsYellowPagesModified) { foreach (var yp in peerCast.YellowPages.ToArray()) { peerCast.RemoveYellowPage(yp); } foreach (var yp in yellowPages) { if (String.IsNullOrEmpty(yp.Name) || yp.Uri == null) { continue; } peerCast.AddYellowPage(yp.Protocol.Protocol, yp.Name, new Uri(yp.Uri, UriKind.Absolute)); } isYellowPagesModified = false; } var port_mapper = pecaApp.Plugins.GetPlugin <PeerCastStation.UI.PortMapper>(); if (port_mapper != null) { port_mapper.Enabled = portMapperEnabled; } pecaApp.SaveSettings(); await System.Threading.Tasks.Task.Delay(200).ContinueWith(prev => { OnPropertyChanged("PortMapperExternalAddresses"); }); }
private void RemoveYellowPage(int yellowPageId) { var yp = PeerCast.YellowPages.FirstOrDefault(p => p.GetHashCode() == yellowPageId); if (yp != null) { PeerCast.RemoveYellowPage(yp); } }
public void Apply() { if (!IsModified) { return; } IsModified = false; ChannelCleaner.Mode = channelCleanupMode; ChannelCleaner.InactiveLimit = channelCleanupInactiveLimit * 60000; peerCast.AccessController.MaxRelays = maxRelays; peerCast.AccessController.MaxRelaysPerBroadcastChannel = maxRelaysPerBroadcastChannel; peerCast.AccessController.MaxRelaysPerRelayChannel = maxRelaysPerRelayChannel; peerCast.AccessController.MaxPlays = maxPlays; peerCast.AccessController.MaxPlaysPerBroadcastChannel = maxPlaysPerBroadcastChannel; peerCast.AccessController.MaxPlaysPerRelayChannel = maxPlaysPerRelayChannel; peerCast.AccessController.MaxUpstreamRate = maxUpstreamRate; peerCast.AccessController.MaxUpstreamRateIPv6 = maxUpstreamRateIPv6; peerCast.AccessController.MaxUpstreamRatePerBroadcastChannel = maxUpstreamRatePerBroadcastChannel; peerCast.AccessController.MaxUpstreamRatePerRelayChannel = maxUpstreamRatePerRelayChannel; pecaApp.Settings.Get <WPFSettings>().ShowWindowOnStartup = isShowWindowOnStartup; pecaApp.Settings.Get <WPFSettings>().ShowNotifications = isShowNotifications; pecaApp.Settings.Get <WPFSettings>().RemoteNodeName = remoteNodeName; if (IsListenersModified) { foreach (var listener in peerCast.OutputListeners.ToArray()) { peerCast.StopListen(listener); } foreach (var listener in ports) { var newlistener = peerCast.StartListen(listener.EndPoint, listener.LocalAccepts, listener.GlobalAccepts); newlistener.GlobalAuthorizationRequired = listener.GlobalAuthRequired; newlistener.LocalAuthorizationRequired = listener.LocalAuthRequired; newlistener.AuthenticationKey = listener.AuthenticationKey; } isListenersModified = false; } if (IsYellowPagesModified) { foreach (var yp in peerCast.YellowPages.ToArray()) { peerCast.RemoveYellowPage(yp); } foreach (var yp in yellowPages) { if (String.IsNullOrEmpty(yp.Name)) { continue; } if (String.IsNullOrEmpty(yp.AnnounceUri) && String.IsNullOrEmpty(yp.ChannelsUri)) { continue; } Uri announce_uri = String.IsNullOrEmpty(yp.AnnounceUri) ? null : new Uri(yp.AnnounceUri, UriKind.Absolute); Uri channels_uri = String.IsNullOrEmpty(yp.ChannelsUri) ? null : new Uri(yp.ChannelsUri, UriKind.Absolute); peerCast.AddYellowPage(yp.Protocol.Protocol, yp.Name, announce_uri, channels_uri); } isYellowPagesModified = false; } var port_mapper = pecaApp.Plugins.GetPlugin <PeerCastStation.UI.PortMapperPlugin>(); if (port_mapper != null) { port_mapper.Enabled = portMapperEnabled; port_mapper.DiscoverAsync() .ContinueWith(prev => OnPropertyChanged("PortMapperExternalAddresses")); } PortCheckStatus = PortCheckStatus.Checking; PortCheckV6Status = PortCheckStatus.Checking; CheckPortAsync().ContinueWith(prev => { if (prev.IsCanceled || prev.IsFaulted) { PortCheckStatus = PortCheckStatus.Failed; PortCheckV6Status = PortCheckStatus.Failed; } else { PortCheckStatus = prev.Result.ResultV4; PortCheckV6Status = prev.Result.ResultV6; peerCast.SetPortStatus(System.Net.Sockets.AddressFamily.InterNetwork, prev.Result.ResultV4 == PortCheckStatus.Opened ? PortStatus.Open : PortStatus.Firewalled); peerCast.SetPortStatus(System.Net.Sockets.AddressFamily.InterNetworkV6, prev.Result.ResultV6 == PortCheckStatus.Opened ? PortStatus.Open : PortStatus.Firewalled); } }); pecaApp.SaveSettings(); }