]> jfr.im git - z_archive/kelsier.git/commitdiff
Adding auth master
authorJohn Runyon <redacted>
Wed, 17 Apr 2013 05:42:02 +0000 (00:42 -0500)
committerDimeCadmium <redacted>
Wed, 17 Apr 2013 05:42:40 +0000 (00:42 -0500)
Bot.cs
Channel.cs
Command.cs
User.cs
dbdump.sql

diff --git a/Bot.cs b/Bot.cs
index 3384faa6564e90b38c898f161b189cd1d868bcbd..3a3221720c31466342384e42b81791ec57e1c92e 100644 (file)
--- a/Bot.cs
+++ b/Bot.cs
@@ -65,9 +65,17 @@ public class Bot {
                 this.localip = rdr.GetString("bindip");
                 this.local = new IPEndPoint(IPAddress.Parse(this.localip), 0);
             }
-
             this.server = rdr.GetString("server");
             this.serverport = rdr.GetInt32("serverport");
+
+            rdr.Close();
+
+            // TODO move this part into a 001 hook.
+            MySqlDataReader rdr = Info.db.queryReader("SELECT authname, authpass FROM m_id_quakenet WHERE botid = @id", new object[] { "@id", id });
+            rdr.Read();
+            this.authname = rdr.GetString("authname");
+            this.authpass = rdr.GetString("authpass");
+            rdr.Close();
         }
 
         public string connect() {
@@ -76,8 +84,8 @@ public class Bot {
             s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
             s.Bind(local);
             s.Connect(server, serverport);
-                       
-                       register();
+            
+            register();
 
             Stator rcvstate = new Stator();
             s.BeginReceive(rcvstate.buffer, 0, 1, SocketFlags.None, new AsyncCallback(dataIn), rcvstate);
@@ -90,8 +98,8 @@ public class Bot {
             s.EndReceive(ar);
 
             if (rcvstate.buffer[0] == '\n') {
-                               string linein = rcvstate.buffersb.ToString();
-                               processData(linein);
+                string linein = rcvstate.buffersb.ToString();
+                processData(linein);
                 rcvstate = new Stator();
             } else if (rcvstate.buffer[0] != '\r') {
                 rcvstate.buffersb.Append(Encoding.ASCII.GetString(rcvstate.buffer, 0, 1));
@@ -106,55 +114,57 @@ public class Bot {
         private void processData(string data) {
             log.info("<<< " + data);
 
-                       string[] parts;
-                       string source = null;
-                       if (data.StartsWith(":")) {
-                               parts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
-                               source = parts[0].Substring(1);
-                               data = parts[1];
-                       }
-                       
-                       parts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
-                       if (parts[0] == "PRIVMSG") {
-                               processMsg(source, parts[1]);
-                       } else if (parts[0] == "376") {
-                               send("JOIN #jobbig.kelsier");
-                       } else if (parts[0] == "PING") {
-                               send("PONG "+parts[1]);
-                       }
+            string[] parts;
+            string source = null;
+            if (data.StartsWith(":")) {
+                parts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
+                source = parts[0].Substring(1);
+                data = parts[1];
+            }
+            
+            parts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
+            if (parts[0] == "PRIVMSG") {
+                processMsg(source, parts[1]);
+            } else if (parts[0] == "376") {
+                send("AUTH "+this.authname+" "+this.authpass); // TODO 001 hook
+                send("MODE "+this.nick+" +x-w");
+                send("JOIN #jobbig");
+            } else if (parts[0] == "PING") {
+                send("PONG "+parts[1]);
+            }
+        }
+        // processMsg("DimeCadmium!dime@jobbig.eu", "#mustis :hi");
+        private void processMsg(string source, string data) {
+            string[] dataparts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
+            
+            string nick = (source.Split(new char[] { '!' }))[0];
+            string target = dataparts[0];
+            string message = dataparts[1];
+            if (message.StartsWith(":"))
+                message = message.Substring(1);
+            string[] msgparts = message.Split((char[])null, StringSplitOptions.RemoveEmptyEntries);
+            
+            // TODO check msgparts[0] first char for trigger
+            string cmdstr = msgparts[0].Substring(1);
+            string[] args;
+            bool chanmsg;
+            Channel chan;
+            if (target.StartsWith("#")) {
+                chanmsg = true;
+                args = new string[msgparts.Length - 1];
+                Array.Copy(msgparts, 1, args, 0, msgparts.Length - 1);
+                chan = new Channel(target);
+            } else {
+                chanmsg = false;
+                args = new string[msgparts.Length - 2];
+                Array.Copy(msgparts, 2, args, 0, msgparts.Length - 2);
+                chan = new Channel(msgparts[1]);
+            }
+            
+            User user = new User(nick);
+            
+            Command cmd = new Command(this, cmdstr, args, user, chan, chanmsg);
         }
-               // processMsg("DimeCadmium!dime@jobbig.eu", "#mustis :hi");
-               private void processMsg(string source, string data) {
-                       string[] dataparts = data.Split((char[])null, 2, StringSplitOptions.RemoveEmptyEntries);
-                       
-                       string nick = (source.Split(new char[] { '!' }))[0];
-                       string target = dataparts[0];
-                       string message = dataparts[1];
-                       if (message.StartsWith(":"))
-                               message = message.Substring(1);
-                       string[] msgparts = message.Split((char[])null, StringSplitOptions.RemoveEmptyEntries);
-                       
-                       // TODO check msgparts[0] first char for trigger
-                       string cmdstr = msgparts[0].Substring(1);
-                       string[] args;
-                       bool chanmsg;
-                       Channel chan;
-                       if (target.StartsWith("#")) {
-                               chanmsg = true;
-                               args = new string[msgparts.Length - 1];
-                               Array.Copy(msgparts, 1, args, 0, msgparts.Length - 1);
-                               chan = new Channel(target);
-                       } else {
-                               chanmsg = false;
-                               args = new string[msgparts.Length - 2];
-                               Array.Copy(msgparts, 2, args, 0, msgparts.Length - 2);
-                               chan = new Channel(msgparts[1]);
-                       }
-                       
-                       User user = new User(nick);
-                       
-                       Command cmd = new Command(this, cmdstr, args, user, chan, chanmsg);
-               }
 
         private void register() {
             send(String.Format("NICK {0}", nick));
index 41ee5f2fa9d8c68446a489c0f886a93b3416e917..e15e1d4f8242470eaea64d55c474e051e0ac9e1c 100644 (file)
 
 using System;
 namespace Kelsier.Common {
-       public class Channel {
-               public string name { get; private set; }
-               public Channel(string name) {
-                       this.name = name;
-               }
-       }
+    public class Channel {
+        public string name { get; private set; }
+        public Channel(string name) {
+            this.name = name;
+        }
+    }
 }
 
index fb48995cfce77b372272e50edbc157789f2081b0..85b86038acfbd378cab667503b6510bdb9825ef9 100644 (file)
 
 using System;
 namespace Kelsier.Common {
-       public class Command {
+    public class Command {
         public Bot bot { get; private set; }
-               public string cmd { get; private set; }
-               public string[] args { get; private set; }
-               public User user { get; private set; }
-               public Channel chan { get; private set; }
-               public bool chanmsg { get; private set; }
-               public string replyTo { get; private set; }
-               
-               public Command(Bot bot, string cmd, string[] args, User user, Channel chan, bool chanmsg) {
+        public string cmd { get; private set; }
+        public string[] args { get; private set; }
+        public User user { get; private set; }
+        public Channel chan { get; private set; }
+        public bool chanmsg { get; private set; }
+        public string replyTo { get; private set; }
+        
+        public Command(Bot bot, string cmd, string[] args, User user, Channel chan, bool chanmsg) {
             this.bot = bot;
-                       this.cmd = cmd;
-                       this.args = args;
-                       this.user = user;
-                       this.chan = chan;
-                       this.chanmsg = chanmsg;
-                       if (chanmsg)
-                               this.replyTo = chan.name;
-                       else
-                               this.replyTo = user.nick;
-               }
-       }
+            this.cmd = cmd;
+            this.args = args;
+            this.user = user;
+            this.chan = chan;
+            this.chanmsg = chanmsg;
+            if (chanmsg)
+                this.replyTo = chan.name;
+            else
+                this.replyTo = user.nick;
+        }
+    }
 }
 
diff --git a/User.cs b/User.cs
index bb830196d7a0f710464f7533739aa1de120a9b08..f096ac6ebbf4e79ad12033e584cf586a32977350 100644 (file)
--- a/User.cs
+++ b/User.cs
 
 using System;
 namespace Kelsier.Common {
-       public class User {
-               public string nick { get; private set; }
-               public User(string nick) {
-                       this.nick = nick;
-               }
-       }
+    public class User {
+        public string nick { get; private set; }
+        public User(string nick) {
+            this.nick = nick;
+        }
+    }
 }
 
index e0b0c5c1c001525d75672413c4181439b562a409..1c9349c65ecbe681c7a6d69daf4cd6bcb3801708 100644 (file)
@@ -1,14 +1,25 @@
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
+DROP TABLE IF EXISTS `bots`;
 CREATE TABLE `bots` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `nick` varchar(40) NOT NULL,
+  `nick` varchar(30) NOT NULL,
   `ident` varchar(10) NOT NULL DEFAULT 'kelsier',
-  `realname` varchar(100) NOT NULL DEFAULT 'Kelsier IRC Bot',
+  `realname` varchar(100) NOT NULL DEFAULT 'Kelsier',
   `bindip` varchar(15) DEFAULT NULL,
   `server` varchar(100) NOT NULL DEFAULT 'irc.quakenet.org',
   `serverport` smallint(5) unsigned NOT NULL DEFAULT '6667',
-  PRIMARY KEY (`id`)
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `nick` (`nick`)
 ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
 INSERT INTO `bots` VALUES (1,'Kelsier','kelsier','Kelsier IRC Bot',NULL,'irc.quakenet.org',6667);
+
+DROP TABLE IF EXISTS `m_id_quakenet`;
+CREATE TABLE `m_id_quakenet` (
+  `botid` int(10) unsigned NOT NULL,
+  `authname` varchar(15) NOT NULL,
+  `authpass` varchar(10) NOT NULL,
+  PRIMARY KEY (`botid`),
+  CONSTRAINT `m_id_quakenet_ibfk_1` FOREIGN KEY (`botid`) REFERENCES `bots` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+
+-- mysqldump -ukelsier -p kelsier --compact --add-drop-table >dbdump.sql