Exemple #1
0
 public Server(IPAddress ip, int port)
 {
     _listener         = new TcpListener(ip, port);
     _ircClients       = new List <IrcClient>();
     _controller       = new IrcController(_ircClients);
     _commandProcessor = new IrcCommandProcessor(_controller);
 }
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length < 3 || !args[1].StartsWith("#"))
            {
                return;
            }

            var command = args[0];
            var channel = args[1];
            var extra   = string.Join(" ", args.Skip(2).ToArray());

            var target = controller.Channels.ToList().Find(ch => ch.Name.Equals(channel.Remove(0, 1), StringComparison.InvariantCultureIgnoreCase));

            if (target == null)
            {
                var errorMessage = new NoSuchChannelError
                {
                    SenderAddress = Server.HostName,
                    ClientNick    = client.NickName,
                    ChannelName   = channel
                }.FormFullResponseString();

                client.SendMessage(errorMessage);
                return;
            }

            target.Connections.First(t => t.IrcClient == client).Connection.Send("say", $"/{command} {extra}");
        }
 public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
 {
     if (string.IsNullOrEmpty(client.NickName))
     {
         client.NickName = new string(Guid.NewGuid().ToString().Substring(3, 12).Where(char.IsLetterOrDigit).ToArray());
     }
 }
Exemple #4
0
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            new ChannelListBeginReply {
                SenderAddress = Server.HostName,
                ClientNick    = client.NickName
            }.SendMessageToClient(client);

            var rooms = client._client.Multiplayer.ListRooms("Everybodyedits" + client._client.BigDB.Load("config", "config")["version"], null, 0, 0).ToList();

            foreach (var room in rooms.OrderByDescending(ri => ri.OnlineUsers))
            {
                new ChannelListReply {
                    SenderAddress     = Server.HostName,
                    RecipientNickName = client.NickName,
                    ChannelName       = "#" + room.Id,
                    ChannelUserCount  = room.OnlineUsers,
                    ChannelTopic      = room.RoomData.ContainsKey("name") ? room.RoomData["name"] : "Untitled World"
                }.SendMessageToClient(client);
            }

            new ChannelListEndReply {
                SenderAddress = Server.HostName,
                ClientNick    = client.NickName
            }.SendMessageToClient(client);
        }
Exemple #5
0
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length == 0 || args[0].Trim() == string.Empty)
            {
                return;
            }

            if (controller.NickNameInUse(args[0]))
            {
                new NicknameInUseError
                {
                    SenderAddress     = Server.HostName,
                    SenderNickName    = client.NickName,
                    AttemptedNickName = args[0]
                }.SendMessageToClient(client);

                return;
            }

            client.NickName = args[0];

            // Attempt to activate the user
            client.AttemptUserActivation();
            client.SetUserMask();
        }
Exemple #6
0
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length == 0)
            {
                new NeedMoreParamsError
                {
                    Command = "JOIN",
                    SenderAddress = Server.HostName,
                    SenderNickName = client.NickName
                }.SendMessageToClient(client);
                return;
            }

            var name = args[0].Trim();
            if (!name.StartsWith("#"))
            {
                new NoSuchChannelError
                {
                    SenderAddress = Server.HostName,
                    ChannelName = name,
                    ClientNick = client.NickName
                }.SendMessageToClient(client);

                return;
            }

            if (name.StartsWith("#"))
                name = name.Substring(1);

            controller.JoinChannel(client, name);
        }
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length < 4)
            {
                var replyCommand = new NeedMoreParamsError
                {
                    Command       = "USER",
                    SenderAddress = Server.HostName
                };

                client.SendMessage(replyCommand.FormFullResponseString());
                return;
            }

            client.FullName = args[3];
            client.UserName = args[0];

            var connectUserId = Server.EEGuestClient.BigDB.Load("Usernames", client.UserName.ToLower()).GetString("owner", "");

            if (!connectUserId.StartsWith("simple"))
            {
                new WelcomeReply()
                {
                    Message = "Whoops! You are attempting to connect with a non-simple user, which is currently unsupported."
                }.SendMessageToClient(client);

                return;
            }

            client.UsernameOrEmail = connectUserId.Remove(0, "simple".Length);

            client.AttemptUserActivation();
            client.SetUserMask();
        }
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length == 0)
            {
                new NeedMoreParamsError
                {
                    Command        = "JOIN",
                    SenderAddress  = Server.HostName,
                    SenderNickName = client.NickName
                }.SendMessageToClient(client);
                return;
            }

            var name = args[0].Trim();

            if (!name.StartsWith("#"))
            {
                new NoSuchChannelError
                {
                    SenderAddress = Server.HostName,
                    ChannelName   = name,
                    ClientNick    = client.NickName
                }.SendMessageToClient(client);

                return;
            }

            if (name.StartsWith("#"))
            {
                name = name.Substring(1);
            }

            controller.JoinChannel(client, name);
        }
Exemple #9
0
        public IrcWindow(string username)
        {
            InitializeComponent();
            this.Controller = new IrcController("irc.CnCIRC.NET", username + "_Via_Launcher", "#renegadex");

            this.IrcChats.DataContext       = this.Controller;
            this.IrcConnections.DataContext = this.Controller;
            this.Controller.Connect();
        }
Exemple #10
0
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length < 1)
            {
                return;
            }

            client.Password = args[0];

            client.AttemptUserActivation();
        }
Exemple #11
0
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length == 0)
                return;

            if (!args[0].StartsWith("#") || args[0].Length < 2)
                return;

            var channel = args[0].Substring(1);
            controller.PartChannel(client, channel);
        }
Exemple #12
0
        public Server(IPAddress ip, int port, string hostname)
        {
            EEGuestClient = PlayerIO.QuickConnect.SimpleConnect("everybody-edits-su9rn58o40itdbnw69plyw", "guest", "guest", null);
            EEStaff       = EEGuestClient.BigDB.Load("config", "staff").Properties.Select(p => p.ToLower()).ToList();

            _listener         = new TcpListener(ip, port);
            _ircClients       = new List <IrcClient>();
            _controller       = new IrcController(_ircClients);
            _commandProcessor = new IrcCommandProcessor(_controller);

            HostName = hostname;
        }
Exemple #13
0
        private static void IrcIncomingMessage(IrcController controller, IrcMessage message)
        {
            ChannelMappingConfig channelMapping = _config.ChannelMappings.FirstOrDefault(mapping => mapping.IrcChannel.ToIrcLower() == message.Parameters[0].ToIrcLower());

            if (channelMapping != null)
            {
                DiscordChannel channel = _discord.GetChannelAsync(channelMapping.DiscordChannel).GetAwaiter().GetResult();

                if (channel != null)
                {
                    channel.SendMessageAsync($"**[IRC]** <*{message.SourceNick}*> {message.Parameters[1]}");
                }
            }
        }
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length < 2)
                return;

            // Detect if this is being sent to a user or a channel
            if (args[0].StartsWith("#"))
            {
                var channel = args[0].Substring(1);
                controller.SendMessageToChannel(client, channel, args[1]);
            }
            else
            {
                controller.SendPrivateMessageToUser(client, args[0], args[1]);
            }
        }
Exemple #15
0
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length == 0)
            {
                return;
            }

            if (!args[0].StartsWith("#") || args[0].Length < 2)
            {
                return;
            }

            var channel = args[0].Substring(1);

            controller.PartChannel(client, channel);
        }
Exemple #16
0
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length < 2)
            {
                return;
            }

            // Detect if this is being sent to a user or a channel
            if (args[0].StartsWith("#"))
            {
                var channel = args[0].Substring(1);
                controller.SendMessageToChannel(client, channel, args[1]);
            }
            else
            {
                controller.SendPrivateMessageToUser(client, args[0], args[1]);
            }
        }
Exemple #17
0
        public override void OnLoad(MainWindow window)
        {
            _window = window;

            _client = IrcController.Client;
            _client.OnConnecting      += client_OnConnecting;
            _client.OnConnected       += client_OnConnected;
            _client.OnConnectionError += client_OnConnectionError;
            _client.OnChannelMessage  += client_OnChannelMessage;
            _client.OnError           += client_OnError;
            _client.OnErrorMessage    += client_OnErrorMessage;
            _client.OnChannelNotice   += client_OnChannelNotice;
            _client.OnChannelAction   += client_OnChannelAction;
            _client.OnNames           += client_OnNames;

            _window.CreateRoom("#bots");

            IrcController.Connect();
        }
Exemple #18
0
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length < 4)
            {
                var replyCommand = new NeedMoreParamsError
                {
                    Command       = "USER",
                    SenderAddress = Server.HostName
                };

                client.SendMessage(replyCommand.FormFullResponseString());
                return;
            }

            client.FullName = args[3];
            client.UserName = args[0];

            // Attempt to activate the user
            client.AttemptUserActivation();
            client.SetUserMask();
        }
Exemple #19
0
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length < 4)
            {
                var replyCommand = new NeedMoreParamsError
                {
                    Command = "USER",
                    SenderAddress = Server.HostName
                };

                client.SendMessage(replyCommand.FormFullResponseString());
                return;
            }

            client.FullName = args[3];
            client.UserName = args[0];

            // Attempt to activate the user
            client.AttemptUserActivation();
            client.SetUserMask();
        }
Exemple #20
0
        public void ProcessCommand(string[] args, IrcClient client, IrcController controller)
        {
            if (args.Length == 0 || args[0].Trim() == string.Empty)
                return;

            if (controller.NickNameInUse(args[0]))
            {
                new NicknameInUseError
                {
                    SenderAddress = Server.HostName,
                    SenderNickName = client.NickName,
                    AttemptedNickName = args[0]
                }.SendMessageToClient(client);

                return;
            }

            client.NickName = args[0];

            // Attempt to activate the user
            client.AttemptUserActivation();
            client.SetUserMask();
        }
Exemple #21
0
        static void Main(string[] args)
        {
            _config = MainConfig.LoadFromJsonFile("./config.json");

            List <string> autoJoinChannels = new List <string>();

            foreach (ChannelMappingConfig channelMapping in _config.ChannelMappings)
            {
                if (autoJoinChannels.Any(ch => ch.ToIrcLower() == channelMapping.IrcChannel.ToIrcLower()))
                {
                    continue;
                }

                autoJoinChannels.Add(channelMapping.IrcChannel);
            }

            IrcConnector connector = new IrcConnector(new IrcConfig
            {
                ServerHostname   = _config.IrcHost,
                ServerPort       = _config.IrcPort,
                Nick             = _config.IrcNick,
                UserName         = _config.IrcUserName,
                RealName         = _config.IrcRealName,
                UseSsl           = _config.IrcSsl,
                AutoJoinChannels = autoJoinChannels
            });

            connector.MessageReceived    += IrcControlMessageReceived;
            connector.MessageTransmitted += IrcControlMessageTransmitted;

            _controller = new IrcController(connector);

            _controller.PrivMsg += IrcIncomingMessage;

            DiscordAsync(args).ConfigureAwait(false).GetAwaiter().GetResult();
        }
 public void RegisterController( IrcController controller )
 {
     _ircControllers.Add( controller );
 }