/// <summary> /// Initalizes the RCON server /// </summary> public void Initalize() { if (!config.Enabled || listener != null || server != null) { return; } if (string.IsNullOrEmpty(config.Password)) { Interface.Oxide.LogWarning("[Rcon] Remote console password is not set, disabling"); return; } try { server = new WebSocketServer(config.Port); server.WaitTime = TimeSpan.FromSeconds(5.0); server.ReuseAddress = true; server.AddWebSocketService($"/{config.Password}", () => listener = new RconListener(this)); server.Start(); Interface.Oxide.LogInfo($"[Rcon] Server started successfully on port {server.Port}"); } catch (Exception ex) { Interface.Oxide.LogException($"[Rcon] Failed to start server on port {server.Port}", ex); RemoteLogger.Exception($"Failed to start RCON server on port {server.Port}", ex); } }
/// <summary> /// Shuts down the RCON server /// </summary> public void Shutdown(string reason = "Server shutting down", CloseStatusCode code = CloseStatusCode.Normal) { if (server != null) { server.Stop(code, reason); server = null; listener = null; Interface.Oxide.LogInfo($"[Rcon] Service has stopped: {reason} ({code})"); } }