public Form_certificates(ServerInfo _serverInfo, ConnManager _connMgr, CertManager _certMgr, Cert _masterCert, bool _connected, List<Cert> _certList) { InitializeComponent(); serverInfo = _serverInfo; masterCert = _masterCert; certMgr = _certMgr; connMgr = _connMgr; connected = _connected; certList = _certList; driveDetector = new DriveDetector(this); driveDetector.DeviceArrived += new DriveDetectorEventHandler(OnDriveArrived); driveDetector.DeviceRemoved += new DriveDetectorEventHandler(OnDriveRemoved); UpdateDriveList(); FillServerSettingsBoxes(); if (!connected) { groupBoxAdmin.Enabled = true; groupBoxPcLock.Enabled = false; } else if (masterCert.userType == "admin") { groupBoxAdmin.Enabled = true; } else { groupBoxAdmin.Enabled = false; } }
public void CreateCert(Cert cert, string path) { cert.user = WindowsIdentity.GetCurrent().Name; cert.pcName = SystemInformation.ComputerName; cert.path = path + settingsHelper.defaultCertName; XDocument xCert = new XDocument( new XDeclaration("1.0", "UTF-16", null), new XElement(settingsHelper.xNameSpace + "EmplokeyCert", new XElement("User", cert.user), new XElement("PcName", cert.pcName), new XElement("UserType", "user"), new XElement("AuthKey", cert.HashedAuthKey) )); xCert.Save(cert.path); }
public Cert LoadUsbCert(string drive) { var newCert = new Cert(); if (File.Exists(drive + settingsHelper.defaultCertName)) { XDocument xCertUsb = XDocument.Load(drive + settingsHelper.defaultCertName); newCert.user = xCertUsb.Descendants("User").Single().Value; newCert.pcName = xCertUsb.Descendants("PcName").Single().Value; newCert.userType = xCertUsb.Descendants("UserType").Single().Value; newCert.path = drive + settingsHelper.defaultCertName; newCert.loaded = true; } return newCert; }
public bool TryToAuthorize(ServerInfo serverInfo, Cert cert) { string connString = String.Format(settingsHelper.connectionString, serverInfo.address); SqlConnection connection = new SqlConnection(connString); DataClassesDataContext database = new DataClassesDataContext(); try { connection.Open(); if (cert.userType == "admin") { var queryAuth = from a in database.Auths join u in database.Users on a.ID_user equals u.ID join c in database.Computers on a.ID_pc equals c.ID where u.Username == cert.user && a.Device == cert.deviceId select new { u.Type, a.Auth_key }; if (!queryAuth.Any()) return false; else if (queryAuth.First().Auth_key == cert.HashedAuthKey) return true; else return false; } else { var queryAuth = from a in database.Auths join u in database.Users on a.ID_user equals u.ID join c in database.Computers on a.ID_pc equals c.ID where u.Username == cert.user && c.PC_name == cert.pcName select new { u.Type, a.Auth_key }; if (queryAuth.Count() == 0) return false; else if (queryAuth.First().Auth_key == cert.HashedAuthKey) return true; else return false; } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { connection.Close(); } return false; }
public int StartSession(ServerInfo serverInfo, Cert cert) { string connString = String.Format(settingsHelper.connectionString, serverInfo.address); SqlConnection connection = new SqlConnection(connString); DataClassesDataContext database = new DataClassesDataContext(); try { connection.Open(); var queryAuth = from a in database.Auths join u in database.Users on a.ID_user equals u.ID where a.Auth_key == cert.HashedAuthKey && u.Username == cert.user select new { a.ID_pc, a.ID_user }; var queryPC = from c in database.Computers where c.PC_name == SystemInformation.ComputerName select c; Log newLog = new Log() { ID_pc = queryPC.First().ID, ID_user = queryAuth.First().ID_user, Time_login = DateTime.Now }; database.Logs.InsertOnSubmit(newLog); database.SubmitChanges(); return newLog.ID; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { connection.Close(); } return 0; }
public void SetPcLockStatus(ServerInfo serverInfo, Cert cert, int lockPc) { string connString = String.Format(settingsHelper.connectionString, serverInfo.address); SqlConnection connection = new SqlConnection(connString); DataClassesDataContext database = new DataClassesDataContext(); try { connection.Open(); var queryUser = from u in database.Users where u.Username == cert.user select u; if (queryUser.Count() == 0) { User newUser = new User { Username = cert.user, Type = "user" }; database.Users.InsertOnSubmit(newUser); database.SubmitChanges(); } var queryPC = from u in database.Computers where u.PC_name == Environment.MachineName select u; if (queryPC.Count() == 0) { Computer newPC = new Computer { PC_name = cert.pcName, Lock_status = lockPc }; database.Computers.InsertOnSubmit(newPC); database.SubmitChanges(); MessageBox.Show("This PC is now LOCKED.\n\nUser authorized on this PC:\n" + cert.user); } else { queryPC.First().Lock_status = lockPc; database.SubmitChanges(); if (lockPc == 1) MessageBox.Show("This PC is now LOCKED.\n\nUser authorized on this PC:\n" + cert.user); else MessageBox.Show("This PC is now UNLOCKED."); } queryUser = from u in database.Users where u.Username == cert.user select u; queryPC = from u in database.Computers where u.PC_name == Environment.MachineName select u; var queryAuth = from a in database.Auths where a.ID_user == queryUser.First().ID && a.ID_pc == queryPC.First().ID select a; if (queryAuth.Count() == 0) { Auth newAuth = new Auth { ID_pc = queryPC.First().ID, ID_user = queryUser.First().ID, Auth_key = cert.HashedAuthKey, Device = cert.deviceId }; database.Auths.InsertOnSubmit(newAuth); database.SubmitChanges(); } else if (lockPc == 0) { database.Auths.DeleteOnSubmit(queryAuth.First()); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { connection.Close(); } }
public Form_certificates(ServerInfo _serverInfo, ConnManager _connMgr, CertManager _certMgr, Cert _masterCert, bool _connected, List <Cert> _certList) { InitializeComponent(); serverInfo = _serverInfo; masterCert = _masterCert; certMgr = _certMgr; connMgr = _connMgr; connected = _connected; certList = _certList; driveDetector = new DriveDetector(this); driveDetector.DeviceArrived += new DriveDetectorEventHandler(OnDriveArrived); driveDetector.DeviceRemoved += new DriveDetectorEventHandler(OnDriveRemoved); UpdateDriveList(); FillServerSettingsBoxes(); if (!connected) { groupBoxAdmin.Enabled = true; groupBoxPcLock.Enabled = false; } else if (masterCert.userType == "admin") { groupBoxAdmin.Enabled = true; } else { groupBoxAdmin.Enabled = false; } }
private void SetMasterCert() { foreach (var cert in certList) { if (!masterCert.loaded) masterCert = cert; else if (masterCert.userType == "user" && cert.userType == "admin") masterCert = cert; if (cert.userType == "admin") break; } }