Advertisement
Guest User

Untitled

a guest
Aug 15th, 2017
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.59 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 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["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.  
  555. }
  556. }
  557. }
  558. String args = "SELECT users.username, filetransfers.filename, filetransfers.receiverID, filetransfers.size, filetransfers.time FROM filetransfers INNER JOIN users ON users.id=filetransfers.userid WHERE ";
  559. int argcount = 0;
  560. if (sendersb)
  561. {
  562. if (argcount == 0)
  563. {
  564. args += senders;
  565. argcount++;
  566. } else
  567. {
  568. args += " AND " + senders;
  569. }
  570. }
  571. if (dateb)
  572. {
  573. if (argcount == 0)
  574. {
  575. args += date;
  576. argcount++;
  577. } else
  578. {
  579. args += " AND " + date;
  580. }
  581. }
  582. if (receiversb)
  583. {
  584. if (argcount == 0)
  585. {
  586. args += receivers;
  587. argcount++;
  588. } else
  589. {
  590. args += " AND " + receivers;
  591. }
  592. }
  593. if (fileinfob)
  594. {
  595. if (argcount == 0)
  596. {
  597. args += fileinfo;
  598. argcount++;
  599. } else
  600. {
  601. args += " AND " + fileinfo;
  602. }
  603. }
  604.  
  605. args += " ORDER BY filetransfers.time ASC;";
  606.  
  607. String data = null;
  608. Console.WriteLine(args);
  609. Console.WriteLine();
  610.  
  611. command = connection.CreateCommand();
  612. command.CommandText = args;
  613. reader = command.ExecuteReader();
  614.  
  615. while (reader.Read())
  616. {
  617. data += "(" + reader["time"].ToString() + ") " + reader["username"].ToString() + " sent " + reader["filename"].ToString() + " which is " + reader["size"].ToString() + " bytes to " getUserFromID(reader["receiverID"].ToString()) + "." + Environment.NewLine;
  618. }
  619.  
  620. reader.Close();
  621.  
  622. return (data);
  623.  
  624. }
  625. catch (Exception ex)
  626. {
  627. Console.WriteLine(" >/log ERROR: " + ex.Message);
  628. return (null);
  629.  
  630. }
  631. }
  632.  
  633. public void fileTransfer(String userName,String toUser, String fileName, int fileSize)
  634. {
  635. command = connection.CreateCommand();
  636. command.CommandText = "SELECT id FROM users WHERE username='" + userName + "';";
  637. reader = command.ExecuteReader();
  638. reader.Read();
  639. String id = reader.GetValue(0).ToString(); // get id
  640. reader.Close();
  641.  
  642. command = connection.CreateCommand();
  643. command.CommandText = "INSERT INTO filetransfers(userid,size,filename,time) VALUES('" + id + "','" + fileSize + "','" + fileName + "',NOW());";
  644. command.ExecuteNonQuery();
  645. }
  646. }
  647. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement