Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.46 KB | None | 0 0
  1. namespace YWIPSnitch
  2. {
  3. public partial class Service1 : ServiceBase
  4. {
  5. ProgReferences r = new ProgReferences();
  6. MySqlConnection conn = new MySqlConnection();
  7.  
  8. public Service1()
  9. {
  10. InitializeComponent();
  11. }
  12.  
  13. public void OnDebug()
  14. {
  15. OnStart(null);
  16. }
  17.  
  18. protected override void OnStart(string[] args)
  19. {
  20. MonitorBandwidth();
  21. }
  22.  
  23. protected override void OnStop()
  24. {
  25.  
  26. }
  27.  
  28. private void SendRegister(string computerName, string username, char inOrOut)
  29. {
  30. conn.ConnectionString = r.getSQLConnString();
  31.  
  32. try
  33. {
  34. conn.Open();
  35. using (MySqlCommand cmd = conn.CreateCommand())
  36. {
  37. cmd.CommandText = r.getRegisterInsertSQL();
  38. cmd.Parameters.AddWithValue("@computer_name", computerName);
  39. cmd.Parameters.AddWithValue("@username", username);
  40. cmd.Parameters.AddWithValue("@register_type", inOrOut);
  41.  
  42. cmd.ExecuteNonQuery();
  43. }
  44. }
  45. catch (MySqlException)
  46. {
  47. ReestablishDatabaseConnection();
  48. }
  49.  
  50. conn.Close();
  51. }
  52.  
  53. private void MonitorBandwidth()
  54. {
  55. NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
  56.  
  57. while (true)
  58. {
  59. foreach (var ni in interfaces)
  60. {
  61. long beginBR = ni.GetIPv4Statistics().BytesReceived;
  62. long beginBS = ni.GetIPv4Statistics().BytesSent;
  63. DateTime beginTime = DateTime.Now;
  64.  
  65. System.Threading.Thread.Sleep(30000);
  66.  
  67. long endBR = ni.GetIPv4Statistics().BytesReceived;
  68. long endBS = ni.GetIPv4Statistics().BytesSent;
  69. DateTime endTime = DateTime.Now;
  70.  
  71. long receivedBytes = endBR - beginBR;
  72. long sentBytes = endBS - beginBS;
  73. double totalSeconds = (endTime - beginTime).TotalSeconds;
  74.  
  75. long bytesPerSecRec = receivedBytes / Convert.ToInt64(totalSeconds);
  76. long bytesPerSecSent = sentBytes / Convert.ToInt64(totalSeconds);
  77.  
  78. InsertUsageData(bytesPerSecRec, bytesPerSecSent);
  79.  
  80. break;
  81. }
  82. }
  83. }
  84.  
  85. private void InsertUsageData(long bytesPerSecRec, long bytesPerSecSent)
  86. {
  87. string computerName = Environment.MachineName;
  88.  
  89. ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
  90. ManagementObjectCollection collection = searcher.Get();
  91. string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];
  92. username = username.Replace("YS\", string.Empty);
  93.  
  94. decimal dblBytesPerSecSent = bytesPerSecSent / 1024m;
  95. decimal dblBytesPerSecRec = bytesPerSecRec / 1024m;
  96.  
  97. conn.ConnectionString = r.getSQLConnString();
  98. try
  99. {
  100. conn.Open();
  101. using (MySqlCommand cmd = conn.CreateCommand())
  102. {
  103. cmd.CommandText = r.getBWUsageInsertSQL();
  104. cmd.Parameters.AddWithValue("@computer_name", computerName);
  105. cmd.Parameters.AddWithValue("@username", username);
  106. cmd.Parameters.AddWithValue("@bytes_sent", dblBytesPerSecSent);
  107. cmd.Parameters.AddWithValue("@bytes_received", dblBytesPerSecRec);
  108.  
  109. cmd.ExecuteNonQuery();
  110. }
  111. conn.Close();
  112. }
  113.  
  114. catch (MySqlException)
  115. {
  116. ReestablishDatabaseConnection();
  117. }
  118. }
  119.  
  120. private void ReestablishDatabaseConnection()
  121. {
  122. bool broken = true;
  123. conn.ConnectionString = r.getSQLConnString();
  124.  
  125. while (broken)
  126. {
  127. System.Threading.Thread.Sleep(30000);
  128. try
  129. {
  130. conn.Open();
  131. conn.Close();
  132. broken = false;
  133. }
  134. catch (MySqlException)
  135. {
  136.  
  137. }
  138. }
  139. }
  140. }
  141. }
  142.  
  143. namespace YWIPSnitch
  144. {
  145. public class ProgReferences
  146. {
  147. //Variable Declarations
  148. string sqlConnString = ("SERVER=computerName; DATABASE=ywbwrat; UID=UID; password=Password;");
  149. string registerInsertSQL = @"INSERT INTO `ywbwrat`.`register` (`computer_name`, `username`, `register_type`) VALUES (@computer_name, @username, @register_type)";
  150. string bwUsageInsertSQL = @"INSERT INTO `ywbwrat`.`bw_info` (`computer_name`, `username`, `bytes_sent`, `bytes_received`) VALUES (@computer_name, @username, @bytes_sent, @bytes_received);";
  151. string viewList = @"SHOW FULL TABLES IN ywbwrat WHERE TABLE_TYPE LIKE 'VIEW';";
  152.  
  153. //Return any values that are asked for
  154. public string getSQLConnString()
  155. {
  156. return sqlConnString;
  157. }
  158. public string getRegisterInsertSQL()
  159. {
  160. return registerInsertSQL;
  161. }
  162. public string getBWUsageInsertSQL()
  163. {
  164. return bwUsageInsertSQL;
  165. }
  166. public string getViewList()
  167. {
  168. return viewList;
  169. }
  170. }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement