Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 26.46 KB | None | 0 0
  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using MySql.Data.MySqlClient;
  5. using System.Collections;
  6. using System.Linq;
  7. using System.Text;
  8.  
  9. /*
  10.             command =connection.CreateCommand();
  11.             command.CommandText = "INSERT INTO log(userid,message,date) VALUES(1,'Hello there',NOW());";
  12.             MySqlDataReader reader;
  13.             reader = command.ExecuteReader();
  14.             Console.WriteLine("Executed Query: " + reader);
  15.  */
  16. namespace Lightchat_server
  17. {
  18.     public class SQL
  19.     {
  20.         private MySqlConnection connection = new MySqlConnection();
  21.         private MySqlDataAdapter data = new MySqlDataAdapter();
  22.         private MySqlCommand command = new MySqlCommand();
  23.         MySqlDataReader reader;
  24.  
  25.  
  26.         public void connect(Boolean flag)
  27.         {
  28.             if (flag) { Console.WriteLine("Connecting to MySQL server @ localhost"); }
  29.             //Set connection string
  30.             connection.ConnectionString =
  31.                 "server=localhost;"
  32.                 + "database=lightmunnas;"
  33.                 + "uid=root;"
  34.                 + "password=redrun11;";
  35.             //Connect
  36.             connection.Open();
  37.             if (flag) { Console.WriteLine("    >Connected"); }
  38.         }
  39.  
  40.         public void disconnect()
  41.         {
  42.             try
  43.             {
  44.                 connection.Dispose();
  45.                 connection.Close();
  46.             }
  47.             catch
  48.             {
  49.  
  50.             }
  51.         }
  52.  
  53.         public void userLogin(String userName) // on client connection
  54.         {
  55.             command = connection.CreateCommand();
  56.             command.CommandText = "SELECT * FROM users WHERE (username = '" + userName + "');";
  57.             reader = command.ExecuteReader();
  58.  
  59.             if (reader.Read() != false)//Is the client name already in the database?
  60.             {
  61.                 reader.Close(); //close reader
  62.  
  63.                 command.CommandText = "UPDATE users SET lastlogin=NOW() WHERE username ='" + userName + "';";
  64.                 command.ExecuteNonQuery();
  65.             }
  66.             else //add username to the database
  67.             {
  68.                 reader.Close(); //close reader
  69.  
  70.                 Console.WriteLine("    >Clients first time connecting, adding to database");
  71.                 command.CommandText = "INSERT INTO users(username,lastlogin,sent) VALUES('" + userName + "',NOW(),0);";
  72.                 command.ExecuteNonQuery();
  73.             }
  74.         }
  75.  
  76.         public void createChannel(String name, String password)
  77.         {
  78.             reader.Close();
  79.             command = connection.CreateCommand();
  80.             command.CommandText = "INSERT INTO channels(channelname,channelpassword) VALUES('" + name + "','" + password + "');";
  81.             command.ExecuteNonQuery();
  82.         }
  83.  
  84.         public int[] getChannelsByUser(String userName)
  85.         {
  86.  
  87.             command = connection.CreateCommand();
  88.             //Get user id
  89.             command.CommandText = "SELECT id FROM users WHERE username='" + userName + "';";
  90.             reader = command.ExecuteReader();
  91.             reader.Read();
  92.             String id = reader.GetValue(0).ToString();
  93.             reader.Close();
  94.  
  95.             //get number of channels
  96.             command.CommandText = "SELECT count(*) FROM channeluser WHERE userid='" + id + "';";
  97.             reader = command.ExecuteReader();
  98.             reader.Read();
  99.             int count = (int)Convert.ToInt32(reader.GetValue(0));
  100.             reader.Close();
  101.  
  102.             //get channels by ID
  103.             command.CommandText = "SELECT channelid FROM channeluser WHERE userid='" + id + "';";
  104.             reader = command.ExecuteReader();
  105.             int[] channels = new int[count];
  106.  
  107.             int loopCount = 0;
  108.             while (reader.Read())
  109.             {
  110.                 channels[loopCount] = (int)reader["channelid"];
  111.                 loopCount++;
  112.             }
  113.             reader.Close();
  114.  
  115.             return (channels);
  116.         }
  117.  
  118.         public int joinChannel(String userName, String channelName, String channelPassword)
  119.         {
  120.             reader.Close();
  121.             command = connection.CreateCommand();
  122.  
  123.             //Get user id
  124.             command.CommandText = "SELECT id FROM users WHERE username='" + userName + "';";
  125.             reader = command.ExecuteReader();
  126.             reader.Read();
  127.             String id = reader.GetValue(0).ToString();
  128.             reader.Close();
  129.  
  130.             //Get channel id
  131.             command.CommandText = "SELECT id FROM channels WHERE channelname='" + channelName + "';";
  132.             reader = command.ExecuteReader();
  133.             //check if id exists
  134.             String channelid = "-1";
  135.             if (reader.Read())
  136.             {
  137.                 channelid = reader.GetValue(0).ToString();
  138.             }
  139.             reader.Close();
  140.  
  141.             //Get channel password
  142.             command.CommandText = "SELECT channelpassword FROM channels WHERE channelname='" + channelName + "';";
  143.             reader = command.ExecuteReader();
  144.             reader.Read();
  145.             String channelpass = "¤";
  146.             if (reader.Read())
  147.             {
  148.                 channelpass = reader.GetValue(0).ToString();
  149.             }
  150.             reader.Close();
  151.  
  152.             //check if user is already in the channel
  153.             command.CommandText = "SELECT * FROM channeluser WHERE (channelid='" + channelid + "') AND (userid='" + id + "');";
  154.             reader = command.ExecuteReader();
  155.             if (!reader.Read())
  156.             {
  157.                 reader.Close();
  158.                 if (channelpass == channelPassword)
  159.                 {
  160.                     //Get user id
  161.                     command.CommandText = "INSERT INTO channeluser(channelid,userid) VALUES(" + channelid + "," + id + ");";
  162.                     command.ExecuteNonQuery();
  163.                     return (0);
  164.                 }
  165.                 else
  166.                 {
  167.                     return (1);
  168.                 }
  169.             }
  170.             reader.Close();
  171.             return (2);
  172.         }
  173.  
  174.         public int leaveChannel(String userName, String channelIndex)
  175.         {
  176.             int result = 0;
  177.             reader.Close();
  178.             command = connection.CreateCommand();
  179.  
  180.             //Get user id
  181.             command.CommandText = "SELECT id FROM users WHERE username='" + userName + "';";
  182.             reader = command.ExecuteReader();
  183.             reader.Read();
  184.             String id = reader.GetValue(0).ToString();
  185.             reader.Close();
  186.  
  187.             try
  188.             {
  189.                 //leave channel
  190.                 command.CommandText = "DELETE FROM channeluser WHERE (channelid='" + channelIndex + "') AND (userid='" + id + "');";
  191.                 command.ExecuteNonQuery();
  192.                 result = 0;
  193.             }
  194.             catch
  195.             {
  196.                 result = 1;
  197.             }
  198.  
  199.             return result;
  200.         }
  201.  
  202.         public String[] getChannelList()
  203.         {
  204.             String[] channels;
  205.  
  206.             //get number of channels
  207.             command.CommandText = "SELECT count(*) FROM channels;";
  208.             reader = command.ExecuteReader();
  209.             reader.Read();
  210.             int count = (int)Convert.ToInt32(reader.GetValue(0));
  211.             reader.Close();
  212.  
  213.             channels = new String[count];
  214.  
  215.             int loopCount = 0;
  216.             command.CommandText = "SELECT channelname FROM channels;";
  217.             reader = command.ExecuteReader();
  218.             while (reader.Read())
  219.             {
  220.                 channels[loopCount] = (string)reader["channelname"];
  221.                 loopCount++;
  222.             }
  223.  
  224.             return channels;
  225.         }
  226.  
  227.         public String getUserFromID(String userid)
  228.         {
  229.             command = connection.CreateCommand();
  230.             command.CommandText = "SELECT username FROM users WHERE id='" + userid + "';";
  231.             reader = command.ExecuteReader();
  232.             reader.Read();
  233.             String name = reader.GetValue(0).ToString(); // get name
  234.             reader.Close();
  235.             return name;
  236.         }
  237.         public String getIDFromUser(String username)
  238.         {
  239.             command = connection.CreateCommand();
  240.             command.CommandText = "SELECT id FROM users WHERE username='" + username + "';";
  241.             reader = command.ExecuteReader();
  242.             reader.Read();
  243.             String id = reader.GetValue(0).ToString(); // get name
  244.             reader.Close();
  245.             return id;
  246.         }
  247.  
  248.         public void newMessage(String userName, String msg)
  249.         {
  250.             command = connection.CreateCommand();
  251.             command.CommandText = "SELECT id FROM users WHERE username='" + userName + "';";
  252.             reader = command.ExecuteReader();
  253.             reader.Read();
  254.             String id = reader.GetValue(0).ToString(); // get id
  255.             reader.Close();
  256.  
  257.             command.CommandText = "INSERT INTO log(userid,message,date) VALUES(" + id + ",'" + msg + "',NOW());";
  258.             command.ExecuteNonQuery();
  259.             command.CommandText = "UPDATE users SET sent = sent + 1 WHERE id=" + id + ";";
  260.             command.ExecuteNonQuery();
  261.         }
  262.  
  263.         public string getLog(String input)
  264.         {
  265.             try
  266.             {
  267.                 String[] arguments = input.Split('-');
  268.  
  269.                 String users = null;
  270.                 bool usersb = false;
  271.                 String date = null;
  272.                 bool dateb = false;
  273.  
  274.                 foreach (string argument in arguments)
  275.                 {
  276.                     if (argument.Substring(0, 1) == "u")
  277.                     {
  278.                         String[] s;
  279.                         String noArg = argument.Substring(argument.IndexOf('u') + 1);
  280.                         if (argument.Contains(','))
  281.                         {
  282.  
  283.                             s = noArg.Split(',');
  284.                             users = "users.username='" + s[0].Trim() + "'";
  285.  
  286.                             for (int i = 1; i < s.Length; i++)
  287.                             {
  288.                                 users += " OR users.username='" + s[i].Trim() + "'";
  289.                             }
  290.  
  291.                         }
  292.                         else
  293.                         {
  294.                             users = "users.username='" + noArg.Trim() + "'";
  295.                         }
  296.                         usersb = true;
  297.  
  298.                     }
  299.                     else if (argument.Substring(0, 1) == "d")
  300.                     {
  301.                         String noArg = argument.Substring(argument.IndexOf('d') + 1).Trim();
  302.                         dateb = true;
  303.                         if (argument.Contains(','))
  304.                         {
  305.                             String[] d;
  306.                             int argCount = 0;
  307.                             d = noArg.Split(',');
  308.                             foreach (String dt in d)
  309.                             {
  310.                                 if (dt.Contains('*'))
  311.                                 {
  312.                                     String[] dtsplit = dt.Split('*');
  313.                                     foreach (String dts in dtsplit)
  314.                                     {
  315.                                         dts.Trim();
  316.                                     }
  317.                                     if (argCount == 0)
  318.                                     {
  319.                                         date += "log.date BETWEEN CAST '" + dtsplit[0] + "00' AS DATETIME AND CAST'" + dtsplit[1] + "00' DATETIME";
  320.                                         argCount++;
  321.                                     }
  322.                                     else
  323.                                     {
  324.                                         date += "OR log.date BETWEEN CAST '" + dtsplit[0] + "00' DATETIME AND CAST '" + dtsplit[1] + "00' DATETIME";
  325.                                     }
  326.  
  327.                                 }
  328.                                 else
  329.                                 {
  330.                                     if (argCount == 0)
  331.                                     {
  332.                                         date += "log.date BETWEEN CAST '" + dt + "00' DATETIME AND DATE_ADD(CAST('" + d + "00' AS datetime), INTERVAL +5 MINUTE)";
  333.                                         argCount++;
  334.                                     }
  335.                                     else
  336.                                     {
  337.                                         date += " OR log.date BETWEEN '" + dt + "00' AND DATE_ADD(CAST('" + d + "00' AS datetime), INTERVAL +5 MINUTE)";
  338.                                     }
  339.                                 }
  340.                             }
  341.                         }
  342.                         else
  343.                         {
  344.                             int argCount = 0;
  345.                             String d = noArg;
  346.                             if (d.Contains('*'))
  347.                             {
  348.                                 String[] dtsplit = d.Split('*');
  349.                                 foreach (String dts in dtsplit)
  350.                                 {
  351.                                     dts.Trim();
  352.                                 }
  353.                                 if (argCount == 0)
  354.                                 {
  355.                                     date += "log.date BETWEEN '" + dtsplit[0] + "00' AND '20" + dtsplit[1] + "'";
  356.                                     argCount++;
  357.                                 }
  358.                                 else
  359.                                 {
  360.                                     date += "OR log.date BETWEEN '" + dtsplit[0] + "00' AND '20" + dtsplit[1] + "'";
  361.                                 }
  362.  
  363.                             }
  364.                             else
  365.                             {
  366.                                 if (argCount == 0)
  367.                                 {
  368.                                     date += "log.date BETWEEN '" + d + "00' AND DATE_ADD(CAST('" + d + "00' AS datetime), INTERVAL +5 MINUTE)";
  369.                                     argCount++;
  370.                                 }
  371.                                 else
  372.                                 {
  373.                                     date += " OR log.date BETWEEN '" + d + "'00 AND DATE_ADD(CAST('" + d + "00' AS datetime), INTERVAL +5 MINUTE)";
  374.                                 }
  375.                             }
  376.                         }
  377.                     }
  378.  
  379.                 }
  380.                 String args = "SELECT users.username, log.message, log.date, log.channelID FROM log INNER JOIN users ON users.id=log.userid WHERE ";
  381.                 if (!usersb && dateb)
  382.                 {
  383.                     args += date;
  384.                 }
  385.                 else if (usersb && !dateb)
  386.                 {
  387.                     args += users;
  388.                 }
  389.                 else
  390.                 {
  391.                     args += users + " AND " + date;
  392.                 }
  393.                 args += " ORDER BY log.date ASC;";
  394.  
  395.  
  396.  
  397.                 String data = null;
  398.                 Console.WriteLine(args);
  399.                 Console.WriteLine();
  400.  
  401.                 command = connection.CreateCommand();
  402.                 command.CommandText = args;
  403.                 reader = command.ExecuteReader();
  404.  
  405.                 while (reader.Read())
  406.                 {
  407.                     data += reader["channelID"].ToString() + ",(" + reader["date"].ToString() + ") <" + reader["username"].ToString() + "> " + reader["message"].ToString() + Environment.NewLine;
  408.                 }
  409.  
  410.                 reader.Close();
  411.  
  412.                 return (data);
  413.  
  414.             }
  415.             catch (Exception ex)
  416.             {
  417.                 Console.WriteLine("    >/log ERROR: " + ex.Message);
  418.                 return (null);
  419.  
  420.             }
  421.         }
  422.  
  423.         public string getFileLog(String input)
  424.         {
  425.             try
  426.             {
  427.                 String[] arguments = input.Split('-');
  428.  
  429.                 String senders = null;
  430.                 bool sendersb = false;
  431.                 String receivers = null;
  432.                 bool receiversb = false;
  433.                 String date = null;
  434.                 bool dateb = false;
  435.                 String fileinfo = null;
  436.                 bool fileinfob = false;
  437.  
  438.                 foreach (string argument in arguments)
  439.                 {
  440.                     if (argument.Substring(0, 1) == "s")
  441.                     {
  442.                         String[] s;
  443.                         String noArg = argument.Substring(argument.IndexOf('s') + 1);
  444.                         if (argument.Contains(','))
  445.                         {
  446.  
  447.                             s = noArg.Split(',');
  448.                             senders = "users.username='" + s[0].Trim() + "'";
  449.  
  450.                             for (int i = 1; i < s.Length; i++)
  451.                             {
  452.                                 senders += " OR users.username='" + s[i].Trim() + "'";
  453.                             }
  454.  
  455.                         }
  456.                         else
  457.                         {
  458.                             senders = "users.username='" + noArg.Trim() + "'";
  459.                         }
  460.                         sendersb = true;
  461.  
  462.                     }
  463.                     else if (argument.Substring(0, 1) == "r")
  464.                     {
  465.                         String[] r;
  466.                         String noArg = argument.Substring(argument.IndexOf('r') + 1);
  467.                         if (argument.Contains(','))
  468.                         {
  469.  
  470.                             r = noArg.Split(',');
  471.                             receivers = "filetransfers.receiverID='" + getIDFromUser(r[0].Trim()) + "'";
  472.  
  473.                             for (int i = 1; i < r.Length; i++)
  474.                             {
  475.                                 receivers += " OR filetransfers.receiverID='" + getIDFromUser(r[i].Trim()) + "'";
  476.                             }
  477.  
  478.                         }
  479.                         else
  480.                         {
  481.                             receivers = "filetransfers.receiverID='" + getIDFromUser(noArg.Trim()) + "'";
  482.                         }
  483.                         receiversb = true;
  484.  
  485.                     }                    
  486.                     else if (argument.Substring(0, 1) == "f")
  487.                     {
  488.                         String[] f;
  489.                         String noArg = argument.Substring(argument.IndexOf('f') + 1);
  490.                         if (argument.Contains(','))
  491.                         {
  492.  
  493.                             f = noArg.Split(',');
  494.                             fileinfo = "filetransfers.filename='" + f[0].Trim() + "'";
  495.  
  496.                             for (int i = 1; i < f.Length; i++)
  497.                             {
  498.                                 fileinfo += " OR filetransfers.filename='" + f[i].Trim() + "'";
  499.                             }
  500.  
  501.                         }
  502.                         else
  503.                         {
  504.                             fileinfo = "filetransfers.filename='" + noArg.Trim() + "'";
  505.                         }
  506.                         fileinfob = true;
  507.  
  508.                     }
  509.                     else if (argument.Substring(0, 1) == "d")
  510.                     {
  511.                         String noArg = argument.Substring(argument.IndexOf('d') + 1).Trim();
  512.                         dateb = true;
  513.                         if (argument.Contains(','))
  514.                         {
  515.                             String[] d;
  516.                             int argCount = 0;
  517.                             d = noArg.Split(',');
  518.                             foreach (String dt in d)
  519.                             {
  520.                                 if (dt.Contains('*'))
  521.                                 {
  522.                                     String[] dtsplit = dt.Split('*');
  523.                                     foreach (String dts in dtsplit)
  524.                                     {
  525.                                         dts.Trim();
  526.                                     }
  527.                                     if (argCount == 0)
  528.                                     {
  529.                                         date += "filetransfers.time BETWEEN CAST '" + dtsplit[0] + "00' AS DATETIME AND CAST'" + dtsplit[1] + "00' DATETIME";
  530.                                         argCount++;
  531.                                     }
  532.                                     else
  533.                                     {
  534.                                         date += "OR filetransfers.time BETWEEN CAST '" + dtsplit[0] + "00' DATETIME AND CAST '" + dtsplit[1] + "00' DATETIME";
  535.                                     }
  536.  
  537.                                 }
  538.                                 else
  539.                                 {
  540.                                     if (argCount == 0)
  541.                                     {
  542.                                         date += "filetransfers.time BETWEEN CAST '" + dt + "00' DATETIME AND DATE_ADD(CAST('" + dt + "00' AS datetime), INTERVAL +5 MINUTE)";
  543.                                         argCount++;
  544.                                     }
  545.                                     else
  546.                                     {
  547.                                         date += " OR filetransfers.time BETWEEN '" + dt + "00' AND DATE_ADD(CAST('" + dt + "00' AS datetime), INTERVAL +5 MINUTE)";
  548.                                     }
  549.                                 }
  550.                             }
  551.                         }
  552.                         else
  553.                         {
  554.                             String d;
  555.                             int argCount = 0;
  556.                                 if (d.Contains('*'))
  557.                                 {
  558.                                     String[] dtsplit = d.Split('*');
  559.                                     foreach (String dts in dtsplit)
  560.                                     {
  561.                                         dts.Trim();
  562.                                     }
  563.                                     if (argCount == 0)
  564.                                     {
  565.                                         date += "filetransfers.time BETWEEN CAST '" + dtsplit[0] + "00' AS DATETIME AND CAST'" + dtsplit[1] + "00' DATETIME";
  566.                                         argCount++;
  567.                                     }
  568.                                     else
  569.                                     {
  570.                                         date += "OR filetransfers.time BETWEEN CAST '" + dtsplit[0] + "00' DATETIME AND CAST '" + dtsplit[1] + "00' DATETIME";
  571.                                     }
  572.  
  573.                                 }
  574.                                 else
  575.                                 {
  576.                                     if (argCount == 0)
  577.                                     {
  578.                                         date += "filetransfers.time BETWEEN CAST '" + d + "00' DATETIME AND DATE_ADD(CAST('" + d + "00' AS datetime), INTERVAL +5 MINUTE)";
  579.                                         argCount++;
  580.                                     }
  581.                                     else
  582.                                     {
  583.                                         date += " OR filetransfers.time BETWEEN '" + d + "00' AND DATE_ADD(CAST('" + d + "00' AS datetime), INTERVAL +5 MINUTE)";
  584.                                     }
  585.                                 }
  586.                             }
  587.                         }
  588.                    
  589.                 }
  590.                 String args = "SELECT users.username, filetransfers.filename, filetransfers.receiverID, filetransfers.size, filetransfers.time FROM filetransfers INNER JOIN users ON users.id=filetransfers.userid WHERE ";
  591.                 int argcount = 0;
  592.                 if (sendersb)
  593.                 {
  594.                     if (argcount == 0)
  595.                     {
  596.                         args += senders;
  597.                         argcount++;
  598.                     } else
  599.                     {
  600.                         args += " AND " + senders;
  601.                     }
  602.                 }
  603.                 if (dateb)
  604.                 {
  605.                     if (argcount == 0)
  606.                     {
  607.                         args += date;
  608.                         argcount++;
  609.                     } else
  610.                     {
  611.                         args += " AND " + date;
  612.                     }
  613.                 }
  614.                 if (receiversb)
  615.                 {
  616.                     if (argcount == 0)
  617.                     {
  618.                         args += receivers;
  619.                         argcount++;
  620.                     } else
  621.                     {
  622.                         args += " AND " + receivers;
  623.                     }
  624.                 }
  625.                 if (fileinfob)
  626.                 {
  627.                     if (argcount == 0)
  628.                     {
  629.                         args += fileinfo;
  630.                         argcount++;
  631.                     } else
  632.                     {
  633.                         args += " AND " + fileinfo;
  634.                     }
  635.                 }
  636.                
  637.                 args += " ORDER BY filetransfers.time ASC;";
  638.                
  639.                 String data = null;
  640.                 Console.WriteLine(args);
  641.                 Console.WriteLine();
  642.  
  643.                 command = connection.CreateCommand();
  644.                 command.CommandText = args;
  645.                 reader = command.ExecuteReader();
  646.  
  647.                 while (reader.Read())
  648.                 {
  649.                     data += "(" + reader["time"].ToString() + ") " + reader["username"].ToString() + " sent " + reader["filename"].ToString() + " which is " + reader["size"].ToString() + " bytes to " + getUserFromID(reader["receiverID"].ToString()) + "." + Environment.NewLine;
  650.                 }
  651.  
  652.                 reader.Close();
  653.  
  654.                 return (data);
  655.  
  656.             }
  657.             catch (Exception ex)
  658.             {
  659.                 Console.WriteLine("    >/log ERROR: " + ex.Message);
  660.                 return (null);
  661.  
  662.             }
  663.         }
  664.  
  665.         public void fileTransfer(String userName,String toUser, String fileName, int fileSize)
  666.         {
  667.             command = connection.CreateCommand();
  668.             command.CommandText = "SELECT id FROM users WHERE username='" + userName + "';";
  669.             reader = command.ExecuteReader();
  670.             reader.Read();
  671.             String id = reader.GetValue(0).ToString(); // get id
  672.             reader.Close();
  673.  
  674.             command = connection.CreateCommand();
  675.             command.CommandText = "INSERT INTO filetransfers(userid,size,filename,time) VALUES('" + id + "','" + fileSize + "','" + fileName + "',NOW());";
  676.             command.ExecuteNonQuery();
  677.         }
  678.     }
  679. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement