public ServerControl(IButtplugServerFactory bpFactory) { InitializeComponent(); _logManager = new ButtplugLogManager(); _log = _logManager.GetLogger(GetType()); _ws = new ButtplugWebsocketServer(); _bpFactory = bpFactory; _config = new ButtplugConfig("B******g"); _connUrls = new ConnUrlList(); _port = 12345; // Usually, if we throw errors then connect, it's not actually an error. If we don't // connect after a second of throwing an exception, pop the toaster, but not before then. _toastTimer = new Timer { Interval = 1000, AutoReset = false, Enabled = false, }; _toastTimer.Elapsed += PopToaster; if (uint.TryParse(_config.GetValue("b******g.server.port", "12345"), out uint pres)) { _port = pres; } _secure = true; if (bool.TryParse(_config.GetValue("b******g.server.secure", "true"), out bool sres)) { _secure = sres; } _loopback = true; if (bool.TryParse(_config.GetValue("b******g.server.loopbackOnly", "true"), out bool lres)) { _loopback = lres; } _hostname = _config.GetValue("b******g.server.hostname", "localhost"); PortTextBox.Text = _port.ToString(); SecureCheckBox.IsChecked = _secure; LoopbackCheckBox.IsChecked = _loopback; ConnectionUrl.ItemsSource = _connUrls; _ws.OnException += WebSocketExceptionHandler; _ws.ConnectionAccepted += WebSocketConnectionAccepted; _ws.ConnectionUpdated += WebSocketConnectionAccepted; _ws.ConnectionClosed += WebSocketConnectionClosed; _log.OnLogException += ExceptionLogged; }
public void StartServer([NotNull] IButtplugServerFactory aFactory, int aPort = 12345, bool aLoopBack = true, bool aSecure = false, string aHostname = "localhost") { _cancellation = new CancellationTokenSource(); _factory = aFactory; _logManager = new ButtplugLogManager(); _logger = _logManager.GetLogger(this.GetType()); var endpoint = new IPEndPoint(aLoopBack ? IPAddress.Loopback : IPAddress.Any, aPort); _server = new WebSocketListener(endpoint); var rfc6455 = new vtortola.WebSockets.Rfc6455.WebSocketFactoryRfc6455(_server); _server.Standards.RegisterStandard(rfc6455); if (aSecure) { var cert = CertUtils.GetCert("B******g", aHostname); _server.ConnectionExtensions.RegisterExtension(new WebSocketSecureConnectionExtension(cert)); } _server.Start(); Task.Run(() => AcceptWebSocketClientsAsync(_server, _cancellation.Token)); }