]> jfr.im git - z_archive/kelsier.git/blobdiff - Bot.cs
Adding auth
[z_archive/kelsier.git] / Bot.cs
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));