コード例 #1
0
        /// <summary>
        /// Handles messages sent from the clients
        /// </summary>
        /// <param name="e"></param>
        /// <param name="connection"></param>
        private void OnMessage(MessageEventArgs e, WebSocketContext connection)
        {
            if (covalence == null)
            {
                Interface.Oxide.LogError("[Rcon] Failed to process command, Covalence is null");
                return;
            }

            RemoteMessage message = RemoteMessage.GetMessage(e.Data);

            if (message == null)
            {
                Interface.Oxide.LogError("[Rcon] Failed to process command, RemoteMessage is null");
                return;
            }

            if (string.IsNullOrEmpty(message.Message))
            {
                Interface.Oxide.LogError("[Rcon] Failed to process command, RemoteMessage.Text is not set");
                return;
            }

            string[] fullCommand = CommandLine.Split(message.Message);
            string   command     = fullCommand[0].ToLower();

            string[] args = fullCommand.Skip(1).ToArray();

            if (Interface.CallHook("OnRconCommand", connection.UserEndPoint, command, args) != null)
            {
                return;
            }

            covalence.Server.Command(command, args);
        }
コード例 #2
0
        private void OnMessage(MessageEventArgs e, WebSocketContext connection)
        {
            if (this.covalence == null)
            {
                Interface.Oxide.LogError("[Rcon] Failed to process command, Covalence is null", Array.Empty <object>());
                return;
            }
            RemoteMessage message = RemoteMessage.GetMessage(e.Data);

            if (message == null)
            {
                Interface.Oxide.LogError("[Rcon] Failed to process command, RemoteMessage is null", Array.Empty <object>());
                return;
            }
            if (string.IsNullOrEmpty(message.Message))
            {
                Interface.Oxide.LogError("[Rcon] Failed to process command, RemoteMessage.Text is not set", Array.Empty <object>());
                return;
            }
            string[] strArrays = CommandLine.Split(message.Message);
            string   lower     = strArrays[0].ToLower();

            string[] array = strArrays.Skip <string>(1).ToArray <string>();
            if (Interface.CallHook("OnRconCommand", connection.UserEndPoint, lower, array) != null)
            {
                return;
            }
            this.covalence.Server.Command(lower, array);
        }
コード例 #3
0
ファイル: RemoteConsole.cs プロジェクト: byome/Oxide
        /// <summary>
        /// Handles messages sent from the clients
        /// </summary>
        /// <param name="e"></param>
        private void OnMessage(MessageEventArgs e)
        {
            var message = RemoteMessage.GetMessage(e.Data);

            if (message == null || covalence == null)
            {
                return;                                       // TODO: Return/show why
            }
            switch (message.Type.ToLower())
            {
            case "command":
                var commands = message.Message.Split(' ');
                covalence.Server.Command(commands[0], commands.Length > 1 ? commands.Skip(1).ToArray() : null);
                break;

            case "chat":
                covalence.Server.Broadcast($"{config.ChatPrefix}: {message.Message}");
                break;

            case "players":
                var format = "ID: {0};NAME: {1};IP: {2};HP: {3}/{4};PING: {5};LANG: {6}";
                var list   = string.Empty;
                foreach (var player in covalence.Players.Connected)
                {
                    list += string.Format(format, player.Id, player.Name, player.Address, player.Health, player.MaxHealth, player.Ping, player.Language.TwoLetterISOLanguageName);
                }
                SendMessage(RemoteMessage.CreateMessage(list));
                break;

            default:
                SendMessage(RemoteMessage.CreateMessage("Unknown command"));
                break;
            }
        }
コード例 #4
0
ファイル: RemoteConsole.cs プロジェクト: Gutbuster/Oxide
        /// <summary>
        /// Handles messages sent from the clients
        /// </summary>
        /// <param name="e"></param>
        private void OnMessage(MessageEventArgs e)
        {
            var message = RemoteMessage.GetMessage(e.Data);

            if (message == null || covalence == null)
            {
                return;                                       // TODO: Return/show why
            }
            switch (message.Type.ToLower())
            {
            case "command":
                var commands = message.Message.Split(' ');
                try
                {
                    if (commands.Count() > 1)
                    {
                        covalence.Server.Command(commands[0]);
                    }
                    else
                    {
                        covalence.Server.Command(commands[0], commands.Skip(1).ToArray());
                    }
                }
                catch
                {
                    Interface.Oxide.LogError("[Rcon] Failed to run command {0} - Command might not exist", commands[0]);
                }
                break;

            case "chat":
                covalence.Server.Broadcast($"{config.ChatPrefix}: {message.Message}");
                break;

            case "players":
                SendMessage(RemoteMessage.CreateMessage(GetPlayerList(), 0, "players"));
                break;

            default:
                SendMessage(RemoteMessage.CreateMessage("Unknown command"));
                break;
            }
        }
コード例 #5
0
ファイル: RemoteConsole.cs プロジェクト: i-love-code/Oxide
        /// <summary>
        /// Handles messages sent from the clients
        /// </summary>
        /// <param name="e"></param>
        private void OnMessage(MessageEventArgs e)
        {
            var message = RemoteMessage.GetMessage(e.Data);

            if (message == null || covalence == null)
            {
                return;                                       // TODO: Return/show why
            }
            switch (message.Type.ToLower())
            {
            case "command":
                var commands = message.Message.Split(' ');
                covalence.Server.Command(commands[0], commands.Length > 1 ? commands.Skip(1).ToArray() : null);
                break;

            case "chat":
                covalence.Server.Broadcast($"{config.ChatPrefix}: {message.Message}");
                break;
            }
        }
コード例 #6
0
        /// <summary>
        /// Handles messages sent from the clients
        /// </summary>
        /// <param name="e"></param>
        private void OnMessage(MessageEventArgs e, WebSocketContext connection)
        {
            var message = RemoteMessage.GetMessage(e.Data);

            message.Message = message.Message.Replace("\"", string.Empty);

            if (message == null || covalence == null || string.IsNullOrEmpty(message.Message))
            {
                Interface.Oxide.LogError($"[Rcon] Failed to process command {(message == null ? "RemoteMessage" : "Covalence")} is null");
                return;
            }

            var msg  = message.Message.Split(' ');
            var cmd  = msg[0].ToLower();
            var args = msg.Skip(1).ToArray();

            if (Interface.CallHook("OnRconCommand", connection.UserEndPoint.Address, cmd, args) != null)
            {
                return;
            }

            covalence.Server.Command(cmd, args);
        }
コード例 #7
0
ファイル: RemoteConsole.cs プロジェクト: Kenterfie/Oxide
        /// <summary>
        /// Handles messages sent from the clients
        /// </summary>
        /// <param name="e"></param>
        private void OnMessage(MessageEventArgs e, WebSocketContext context = null)
        {
            var message = RemoteMessage.GetMessage(e.Data);

            message.Message = message.Message.Replace("\"", string.Empty);

            if (message == null || covalence == null || string.IsNullOrEmpty(message.Message))
            {
                Interface.Oxide.LogError($"[Rcon] Failed to process command {(message == null ? "RemoteMessage" : "Covalence")} is null");
                return;
            }

            var msg  = message.Message.Split(' ');
            var cmd  = msg[0];
            var args = msg.Skip(1).ToArray();

            switch (cmd.ToLower())
            {
            case "broadcast":
            case "chat.say":
            case "global.say":
            case "say":
                BroadcastMessage(cmd, args, message.Identifier, context);
                break;

            case "global.playerlist":
            case "playerlist":
                PlayerListCommand(cmd, args, message.Identifier, context);
                break;

            case "hostname":
            case "server.hostname":
                HostnameCommand(cmd, args, message.Identifier, context);
                break;

            case "global.kick":
            case "kick":
                KickCommand(cmd, args, message.Identifier, context);
                break;

            case "save":
            case "server.save":
                covalence.Server.Save();
                SendMessage(RemoteMessage.CreateMessage("Server Saved"));
                break;

            case "ban":
            case "banid":
            case "global.ban":
            case "global.banid":
                BanCommand(cmd, args, message.Identifier, context);
                break;

            case "global.unban":
            case "unban":
                UnbanCommand(cmd, args, message.Identifier, context);
                break;

            case "server.version":
            case "version":
                context?.WebSocket?.Send(RemoteMessage.CreateMessage($"{covalence.Game} {covalence.Server.Version} - Protocol {covalence.Server.Protocol} with Oxide v{OxideMod.Version}", message.Identifier).ToJSON());
                break;

            case "global.teleport":
            case "global.teleportpos":
            case "teleport":
            case "teleportpos":
                TeleportCommand(cmd, args, message.Identifier, context);
                break;

            default:
                covalence.Server.Command(cmd, args);
                break;
            }
        }