コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
ファイル: AppsBlocker.cs プロジェクト: arcinxe/ArktinMonitor
        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);
            }
        }
コード例 #4
0
        /// <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);
        }