Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace YWIPSnitch
- {
- public partial class Service1 : ServiceBase
- {
- ProgReferences r = new ProgReferences();
- MySqlConnection conn = new MySqlConnection();
- public Service1()
- {
- InitializeComponent();
- }
- public void OnDebug()
- {
- OnStart(null);
- }
- protected override void OnStart(string[] args)
- {
- MonitorBandwidth();
- }
- protected override void OnStop()
- {
- }
- private void SendRegister(string computerName, string username, char inOrOut)
- {
- conn.ConnectionString = r.getSQLConnString();
- try
- {
- conn.Open();
- using (MySqlCommand cmd = conn.CreateCommand())
- {
- cmd.CommandText = r.getRegisterInsertSQL();
- cmd.Parameters.AddWithValue("@computer_name", computerName);
- cmd.Parameters.AddWithValue("@username", username);
- cmd.Parameters.AddWithValue("@register_type", inOrOut);
- cmd.ExecuteNonQuery();
- }
- }
- catch (MySqlException)
- {
- ReestablishDatabaseConnection();
- }
- conn.Close();
- }
- private void MonitorBandwidth()
- {
- NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
- while (true)
- {
- foreach (var ni in interfaces)
- {
- long beginBR = ni.GetIPv4Statistics().BytesReceived;
- long beginBS = ni.GetIPv4Statistics().BytesSent;
- DateTime beginTime = DateTime.Now;
- System.Threading.Thread.Sleep(30000);
- long endBR = ni.GetIPv4Statistics().BytesReceived;
- long endBS = ni.GetIPv4Statistics().BytesSent;
- DateTime endTime = DateTime.Now;
- long receivedBytes = endBR - beginBR;
- long sentBytes = endBS - beginBS;
- double totalSeconds = (endTime - beginTime).TotalSeconds;
- long bytesPerSecRec = receivedBytes / Convert.ToInt64(totalSeconds);
- long bytesPerSecSent = sentBytes / Convert.ToInt64(totalSeconds);
- InsertUsageData(bytesPerSecRec, bytesPerSecSent);
- break;
- }
- }
- }
- private void InsertUsageData(long bytesPerSecRec, long bytesPerSecSent)
- {
- string computerName = Environment.MachineName;
- ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
- ManagementObjectCollection collection = searcher.Get();
- string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];
- username = username.Replace("YS\", string.Empty);
- decimal dblBytesPerSecSent = bytesPerSecSent / 1024m;
- decimal dblBytesPerSecRec = bytesPerSecRec / 1024m;
- conn.ConnectionString = r.getSQLConnString();
- try
- {
- conn.Open();
- using (MySqlCommand cmd = conn.CreateCommand())
- {
- cmd.CommandText = r.getBWUsageInsertSQL();
- cmd.Parameters.AddWithValue("@computer_name", computerName);
- cmd.Parameters.AddWithValue("@username", username);
- cmd.Parameters.AddWithValue("@bytes_sent", dblBytesPerSecSent);
- cmd.Parameters.AddWithValue("@bytes_received", dblBytesPerSecRec);
- cmd.ExecuteNonQuery();
- }
- conn.Close();
- }
- catch (MySqlException)
- {
- ReestablishDatabaseConnection();
- }
- }
- private void ReestablishDatabaseConnection()
- {
- bool broken = true;
- conn.ConnectionString = r.getSQLConnString();
- while (broken)
- {
- System.Threading.Thread.Sleep(30000);
- try
- {
- conn.Open();
- conn.Close();
- broken = false;
- }
- catch (MySqlException)
- {
- }
- }
- }
- }
- }
- namespace YWIPSnitch
- {
- public class ProgReferences
- {
- //Variable Declarations
- string sqlConnString = ("SERVER=computerName; DATABASE=ywbwrat; UID=UID; password=Password;");
- string registerInsertSQL = @"INSERT INTO `ywbwrat`.`register` (`computer_name`, `username`, `register_type`) VALUES (@computer_name, @username, @register_type)";
- string bwUsageInsertSQL = @"INSERT INTO `ywbwrat`.`bw_info` (`computer_name`, `username`, `bytes_sent`, `bytes_received`) VALUES (@computer_name, @username, @bytes_sent, @bytes_received);";
- string viewList = @"SHOW FULL TABLES IN ywbwrat WHERE TABLE_TYPE LIKE 'VIEW';";
- //Return any values that are asked for
- public string getSQLConnString()
- {
- return sqlConnString;
- }
- public string getRegisterInsertSQL()
- {
- return registerInsertSQL;
- }
- public string getBWUsageInsertSQL()
- {
- return bwUsageInsertSQL;
- }
- public string getViewList()
- {
- return viewList;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement