public static void BlockSites() { try { LocalLogger.Log($"Method {nameof(BlockSites)} is running"); //if (!SessionManager.Unlocked) return; var user = JsonLocalDatabase.Instance.Computer?.ComputerUsers? .FirstOrDefault(u => u.Name == ComputerUsersHelper.CurrentlyLoggedInUser()); if (user == null) { return; } var blockedSites = user.BlockedSites; ClearHostsFile(); var blockedEntries = new StringBuilder(); var hostsFileContent = File.ReadAllText(HostsFileLocation); foreach (var blockedSite in blockedSites.Where(s => s.Active)) { blockedEntries.AppendLine($"0.0.0.0 {blockedSite.UrlAddress} www.{blockedSite.UrlAddress} #Autogenerated by ArktinMonitor"); } File.WriteAllText(HostsFileLocation, hostsFileContent + Environment.NewLine + blockedEntries); } catch (Exception e) { LocalLogger.Log(nameof(BlockSites), e); } }
public static void UpdateUsers() { LocalLogger.Log($"Method {nameof(UpdateUsers)} is running"); HubService.LogOnPage("Updating users"); try { var newComputerUsers = ComputerUsersHelper.GetComputerUsers(); var db = JsonLocalDatabase.Instance; var computer = db.Computer; var equal = db.Computer.ComputerUsers != null && newComputerUsers.All(computer.ComputerUsers.Contains); if (equal && db.Computer.ComputerUsers.Count == newComputerUsers.Count) { return; } if (computer.ComputerUsers == null) { computer.ComputerUsers = newComputerUsers; } foreach (var newComputerUser in newComputerUsers) { var user = computer.ComputerUsers.FirstOrDefault(u => u.Name == newComputerUser.Name); if (user == null) { computer.ComputerUsers.Add(newComputerUser); } else { var userChanged = user.FullName != newComputerUser.FullName || user.PrivilegeLevel != newComputerUser.PrivilegeLevel; if (userChanged) { user.Synced = false; user.FullName = newComputerUser.FullName; user.PrivilegeLevel = newComputerUser.PrivilegeLevel; } } } var removedComputerUsers = computer.ComputerUsers.Except(newComputerUsers).ToList(); removedComputerUsers.ForEach(u => { var removedComputerUser = computer.ComputerUsers.FirstOrDefault(cu => cu.Name == u.Name); if (removedComputerUser != null) { removedComputerUser.Removed = true; } }); db.Computer = computer; } catch (Exception e) { LocalLogger.Log("UpdateUsers", e); } }
public static void StartAppKiller() { LocalLogger.Log($"Method {nameof(StartAppKiller)} is running"); //if (!SessionManager.Unlocked) return; try { var user = JsonLocalDatabase.Instance.Computer.ComputerUsers? .FirstOrDefault(u => u.Name == ComputerUsersHelper.CurrentlyLoggedInUser()); if (user?.BlockedApps == null || user.BlockedApps.Count == 0) { return; } var processes = ArktinMonitor.Helpers.Processes.GetProcesses(); var count = 0; foreach (var process in processes) { if (user.BlockedApps.Where(a => a.Active).All(app => app.Path != process.Path)) { continue; } try { Process.GetProcessById(process.ProcessId).Kill(); LocalLogger.Log($"App {process.Path} with PID {process.ProcessId} has been closed!"); count++; } catch (Exception e) { LocalLogger.Log("AppBlocker", e); } } if (count > 0) { HubService.LogOnPage($"Killed {count} apps!"); } } catch (Exception e) { LocalLogger.Log("AppBlocker", e); } }
/// <summary> /// Returns user that current session is unlocked or null if locked /// </summary> /// <returns></returns> public static string GetActive() { var user = ComputerUsersHelper.CurrentlyLoggedInUser(); return(Unlocked ? user : null); }