Ejemplo n.º 1
0
        private void client_PrivateMessage(Client sender, PrivateMessage privateMessage)
        {
            if (Channel.IsChannel(privateMessage.Recipient))
            {
                Channel channel = Chats.SingleOrDefault(chat => chat.Name == privateMessage.Recipient) as Channel;
                if (channel == null)
                {
                    channel = new Channel(privateMessage.Recipient);
                    Chats.Add(channel);
                }

                channel.Messages.Add(privateMessage);

                User user = users.SingleOrDefault(usr => usr.Complete == privateMessage.User);
                if (user == null)
                {
                    user = new User(privateMessage.User, true);
                    users.Add(user);
                }

                if (user.IsNickServIdentified == null)
                {
                    user.RequestNickServAuthentication(client);
                }
            }
            else
            {
            }
        }
Ejemplo n.º 2
0
        public ClientBehaviour()
        {
            connection = new FakeConnection(line => clientLines.Enqueue(line));
            client = new Client(connection, new ClientConfig() { Nickname = nickname, Username = username, UserMode = usermode, Password = password });
            client.Message += (sender, message) => serverLines.Enqueue(message.Line);

            clientThread = new Thread((ParameterizedThreadStart)((object delay) => client.Run((Action)delay)));
            clientThread.IsBackground = true;
            clientThread.Start((Action)(() => Thread.Sleep(100)));
        }
Ejemplo n.º 3
0
 static bool check_auth(Client sender, string user)
 {
     foreach (string s in iSettings[sender].auth)
     {
         if (s == user)
         {
             return true;
         }
     }
     return false;
 }
Ejemplo n.º 4
0
        static void c_Message(Client sender, Iris.Irc.ServerMessages.Message message)
        {
            ircSettings i = iSettings[sender];

            if (i.log == true)
            {

            }
            Console.WriteLine(message.Line);
            Console.Write("> ");
        }
Ejemplo n.º 5
0
        public ClientStateTracker(Client client)
        {
            this.client = client;

            this.client.Message += client_Message;
            this.client.PrivateMessage += client_PrivateMessage;
            this.client.Notice += client_Notice;
            this.client.NickMessage += client_NickMessage;
            this.client.JoinMessage += client_JoinMessage;
            this.client.PartMessage += client_PartMessage;
            this.client.QuitMessage += client_QuitMessage;
        }
Ejemplo n.º 6
0
        static void client_PrivateMessage(Client sender, PrivateMessage privateMessage)
        {
            string user = privateMessage.User.Split('!')[0];
            string rcpt = privateMessage.Recipient;
            if (privateMessage.Recipient == sender.Config.Nickname)
            {
                rcpt = user;
            }

            if (privateMessage.Message.StartsWith("."))
            {

                string cmd = privateMessage.Message;
                string msg = "";

                if (privateMessage.Message.Contains(' '))
                {
                    cmd = privateMessage.Message.Substring(0, privateMessage.Message.IndexOf(' '));
                    msg = privateMessage.Message.Substring(cmd.Length + 1, privateMessage.Message.Length - cmd.Length - 1);
                }

                switch (cmd.ToUpper())
                {
                    case ".JOIN":
                        if (msg.Contains(' '))
                        {
                            msg = msg.Split(' ')[0];
                        }
                        sender.Join(msg);
                        break;
                    case ".PART":
                        if (msg.Contains(' '))
                        {
                            sender.Leave(msg.Split(' ')[0]);
                        }
                        else
                        {
                            if (rcpt.StartsWith("#"))
                            {
                                sender.Leave(rcpt);
                            }
                        }
                        break;
                    case ".WAVE":
                        sender.Send(rcpt, "o/");
                        break;

                    case ".SEEN":

                        break;
                }
            }
        }
Ejemplo n.º 7
0
        private static void Main(string[] args)
        {
            var ircConnection = new IrcConnection(new ServerDetails() { Port = 6667, Address = "irc.esper.net", Name = "Esper.net" });
            var client = new Client(ircConnection, new ClientConfig() { Nickname = "Iris", Password = "******", UserMode = 0, Username = "******" });
            client.Message += (sender, message) =>
                {
                    if (message is PrivateMessage)
                    {
                        var privmsg = (PrivateMessage)message;
                        Console.WriteLine(privmsg.User + ": " + privmsg.Message);
                    }
                    else
                        Console.WriteLine(message.Line.Remove(0, message.Line.IndexOf(':', 2) + 1));
                };

            var clientThread = new Thread((ParameterizedThreadStart)((object delay) => client.Run((Action)delay)))
            {
                Name = "Client - Esper.net",
                IsBackground = true
            };
            clientThread.Start((Action)(() => Thread.Sleep(100))); //Needs the delay action passed in because Portable Class Libraries don't support Threads ...

            Console.WriteLine("Write exit to ... well ... exit.");

            var readLine = "";
            while (true)
            {
                readLine = Console.ReadLine();

                if (readLine.ToLower() == "exit")
                    break;

                ircConnection.SendLine(readLine);
            }

            client.Stop();

            Console.WriteLine("Threads should be stopping.");
            Console.ReadLine();
        }
Ejemplo n.º 8
0
        private static void Main(string[] args)
        {
            IrcConnection ircConnection = new IrcConnection(new ServerDetails() { Port = 6667, Address = "irc.esper.net", Name = "Esper.net" });

            Client client = new Client(ircConnection, new ClientConfig() { Nickname = "Nish|Iris", Password = "", UserMode = 0, Username = "******" });
            client.Message += (sender, line) => Console.WriteLine(line);
            client.PrivateMessage += client_PrivateMessage;
            client.Connected += client_Connected;

            Thread clientThread = new Thread((ParameterizedThreadStart)((object delay) => client.Run((Action)delay)));
            clientThread.Name = "Client - Esper.net";
            clientThread.IsBackground = true;
            clientThread.Start((Action)(() => Thread.Sleep(100))); //Needs the delay action passed in because Portable Class Libraries don't support Threads ...

            Console.WriteLine("Press enter to stop threads.");
            Console.ReadLine();

            client.Stop();

            Console.WriteLine("Threads should be stopping.");
            Console.ReadLine();
        }
Ejemplo n.º 9
0
Archivo: User.cs Proyecto: Banane9/Iris
 /// <summary>
 /// Sends a authentication request for the current User to NickServ.
 /// </summary>
 /// <param name="client">The client used for sending the message.</param>
 public void RequestNickServAuthentication(Client client)
 {
     NickServIdentificationRequested = DateTime.Now;
     client.SendLine(Messages.Client.NamedMessageType.Private + " NickServ :ACC " + Nickname);
 }
Ejemplo n.º 10
0
        static void find_seen(Client sender, string user, string rcpt, string msg)
        {
            ircSettings i = iSettings[sender];

            string db = i.server.Split('.')[1] + ".db";

            if (File.Exists(db))
            {
                if (msg.Contains(' '))
                {
                    msg = msg.Split(' ')[0];
                }
                msg = msg.Replace("\'", "");
                SQLiteConnection sql = new SQLiteConnection("data source=" + db);
                sql.Open();
                using (SQLiteCommand com = new SQLiteCommand(sql))
                {
                    com.CommandText = "SELECT * FROM seen WHERE UPPER(sUSER)='" + msg.ToUpper() + "'";
                    using (SQLiteDataReader res = com.ExecuteReader())
                    {
                        if (res.HasRows)
                        {
                            while (res.Read())
                            {
                                string sUser = res["sUSER"].ToString();
                                string sChannel = res["sCHANNEL"].ToString();
                                string sMsg = res["sMSG"].ToString();
                                string sDate = res["sDATE"].ToString();
                                if (sChannel.StartsWith("#") == false)
                                {
                                    sChannel = "PRIVATE";
                                }
                                sMsg = sMsg.Replace("&apos;", "\'");
                                sender.Send(rcpt, "Last seen " + sUser + " in " + sChannel + " at " + sDate + " saying: '" + sMsg + "'");
                            }
                        }
                        else
                        {
                            sender.Send(rcpt, msg + " has not been seen :(");
                        }
                    }
                }
                sql.Close();
                sql.Dispose();
            }
            else
            {
                sender.Send(rcpt, msg + " has not been seen :(");
            }
        }
Ejemplo n.º 11
0
 private void client_PartMessage(Client sender, PartMessage partMessage)
 {
 }
Ejemplo n.º 12
0
 private void client_Notice(Client sender, Notice notice)
 {
 }
Ejemplo n.º 13
0
 private void client_NickMessage(Client sender, NickMessage nickMessage)
 {
 }
Ejemplo n.º 14
0
 private void client_Message(Client sender, Message message)
 {
 }
Ejemplo n.º 15
0
 private void client_JoinMessage(Client sender, JoinMessage joinMessage)
 {
 }
Ejemplo n.º 16
0
        static void processCommand(string msg)
        {
            if (msg.Length > 0)
            {
                switch (msg.Substring(0, 1).ToLower())
                {
                    case "a":
                        if (msg.Contains(' '))
                        {
                            string[] settings = msg.Split(' ');
                            if (settings.Length >= 3)
                            {
                                Client c = ircClient[settings[1]];
                                ircSettings i = iSettings[c];

                                i.auth.Add(settings[2]);
                                iSettings[c] = i;
                            }
                        }
                        break;
                    case "j":
                        if (msg.Contains(' '))
                        {
                            string[] settings = msg.Split(' ');
                            if (settings.Length >= 3)
                            {
                                Client c = ircClient[settings[1]];

                                c.Join(settings[2]);

                                Console.WriteLine("Joining channel " + settings[2] + " on " + settings[1]);
                            }
                            else
                            {
                                Console.WriteLine("Invalid parameters! eg: 'j client channel'");
                            }
                        }
                        break;

                    case "l":
                        if (msg.Contains(' '))
                        {
                            string[] settings = msg.Split(' ');
                            if (settings.Length >= 3)
                            {
                                Client c = ircClient[settings[1]];

                                c.Leave(settings[2]);

                                Console.WriteLine("Leaving channel " + settings[2] + " on " + settings[1]);
                            }
                            else
                            {
                                Console.WriteLine("Invalid parameters! eg: 'l client channel'");
                            }
                        }
                        break;
                    case "c":
                        if (msg.Contains(' '))
                        {
                            string server = msg.Split(' ')[1];
                            IrcConnection irc = new IrcConnection(new ServerDetails() { Port = 6667, Address = server, Name = server.Split('.')[1] });
                            Client c = new Client(irc, new ClientConfig() { Nickname = "Nish", Password = "", UserMode = 0, Username = "******" });
                            c.Message += c_Message;
                            c.PrivateMessage += c_PrivateMessage;
                            c.Connected += c_Connected;

                            ircSettings i = new ircSettings();
                            i.auth = new List<string>();
                            i.auth.Add("Nishtown");
                            i.server = irc.Server.Address;
                            i.log = false;
                            i.greet = false;

                            ircClient.Add(irc.Server.Name, c);
                            iSettings.Add(c, i);

                            Thread clientThread = new Thread((ParameterizedThreadStart)((object delay) => c.Run((Action)delay)));
                            clientThread.Name = irc.Server.Name;
                            clientThread.IsBackground = true;
                            clientThread.Start((Action)(() => Thread.Sleep(100)));
                        }
                        break;

                    case "d":
                        if (msg.Contains(' '))
                        {
                            string[] settings = msg.Split(' ');
                            Client c = ircClient[settings[1]];
                            c.Stop();
                        }
                        break;

                    default:
                        Console.WriteLine("Invalid chat command");
                        break;
                }
            }
        }
Ejemplo n.º 17
0
 private void client_QuitMessage(Client sender, QuitMessage quitMessage)
 {
 }
Ejemplo n.º 18
0
 private void client_PrivateMessage(Client sender, PrivateMessage privateMessage)
 {
 }
Ejemplo n.º 19
0
 static void client_Connected(Client sender)
 {
     Console.WriteLine("Connected!");
 }
Ejemplo n.º 20
0
        static void update_seen(Client sender, string user, string rcpt, string message)
        {
            ircSettings i = iSettings[sender];

            string db = i.server.Split('.')[1] + ".db";
            string tbl = @"CREATE TABLE IF NOT EXISTS seen (
                            sDATE TEXT  NULL,
                            sCHANNEL TEXT   NULL,
                            sUSER TEXT  NULL,
                            sMSG TEXT   NULL)";
            if (File.Exists(db))
            {
                SQLiteConnection sql = new SQLiteConnection("data source=" + db);

                sql.Open();
                using (SQLiteCommand com = new SQLiteCommand(sql))
                {

                    if (message.Contains('\''))
                    {
                        message = message.Replace("\'", "&apos;");
                    }
                    com.CommandText = tbl;
                    com.ExecuteNonQuery();
                    com.CommandText = "INSERT INTO seen (sDATE, sCHANNEL, sUSER, sMSG) SELECT '" + DateTime.Now.ToString() + "','" +
                        rcpt + "','" + user + "','" + message + "' WHERE NOT EXISTS(SELECT 1 FROM seen WHERE sUSER='******')";
                    com.ExecuteNonQuery();
                    com.CommandText = "UPDATE seen SET sDATE='" + DateTime.Now.ToString() + "',sCHANNEL='" + rcpt + "',sUSER='******',sMSG='" + message + "' WHERE sUSER='******'";
                    com.ExecuteNonQuery();
                }
                sql.Close();
                sql.Dispose();
            }
            else
            {
                SQLiteConnection.CreateFile(db);
                SQLiteConnection sql = new SQLiteConnection("data source=" + db);

                sql.Open();
                using (SQLiteCommand com = new SQLiteCommand(sql))
                {
                    com.CommandText = tbl;
                    com.ExecuteNonQuery();
                }
                sql.Close();
                sql.Dispose();
            }
        }
Ejemplo n.º 21
0
        static void c_PrivateMessage(Client sender, Iris.Irc.ServerMessages.PrivateMessage privateMessage)
        {
            ircSettings i = iSettings[sender];
            string user = privateMessage.User.Split('!')[0];
            string rcpt = privateMessage.Recipient;
            if (privateMessage.Recipient == sender.Config.Nickname)
            {
                rcpt = user;
            }

            update_seen(sender, user, rcpt, privateMessage.Message);

            if (privateMessage.Message.StartsWith("."))
            {

                string cmd = privateMessage.Message;
                string msg = "";

                if (privateMessage.Message.Contains(' '))
                {
                    cmd = privateMessage.Message.Substring(0, privateMessage.Message.IndexOf(' '));
                    msg = privateMessage.Message.Substring(cmd.Length + 1, privateMessage.Message.Length - cmd.Length - 1);
                }
                if (check_auth(sender, user))
                {
                    switch (cmd.ToUpper())
                    {
                        case ".JOIN":
                            if (msg.Contains(' '))
                            {
                                msg = msg.Split(' ')[0];
                            }
                            sender.Join(msg);
                            break;
                        case ".PART":
                            if (msg.Contains(' '))
                            {
                                sender.Leave(msg.Split(' ')[0]);
                            }
                            else
                            {
                                if (rcpt.StartsWith("#"))
                                {
                                    sender.Leave(rcpt);
                                }
                            }
                            break;
                        case ".GOOGLE":
                            sender.Send(rcpt, "https://www.google.com.au/search?q=" + msg.Replace(' ', '+'));
                            break;
                        case ".WAVE":
                            sender.Send(rcpt, "o/");
                            break;

                        case ".SEEN":
                            if (check_auth(sender, user))
                            {
                                find_seen(sender, user, rcpt, msg);
                            }
                            break;
                        case ".INFO":
                            sender.Send(rcpt, "An IRC BOT Written by Nishtown, Based off IRIS by Banane9");
                            break;

                        case ".ADDAUTH":
                            if (check_auth(sender, user))
                            {

                                if (msg.Contains(' '))
                                {
                                    msg = msg.Split(' ')[0];
                                }
                                i.auth.Add(msg);
                                iSettings[sender] = i;
                            }
                            break;

                    }
                }
            }
        }
Ejemplo n.º 22
0
 static void c_Connected(Client sender)
 {
     Console.WriteLine(iSettings[sender].server + " connected as '" + iSettings[sender].server.Split('.')[1] + "'!");
     Console.Write("> ");
 }