2021-04-26 20:41:26 +00:00
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
2021-04-26 21:41:04 +00:00
using System ;
2021-04-26 20:41:26 +00:00
using osu.Framework ;
using osu.Framework.Allocation ;
2021-04-27 01:05:18 +00:00
using osu.Framework.Graphics ;
2021-04-26 20:41:26 +00:00
using osu.Framework.Graphics.Sprites ;
using osu.Game.Graphics ;
using osu.Game.Overlays ;
using osu.Game.Overlays.Notifications ;
2021-04-27 02:37:08 +00:00
namespace osu.Desktop.Security
2021-04-26 20:41:26 +00:00
{
/// <summary>
/// Checks if the game is running with elevated privileges (as admin in Windows, root in Unix) and displays a warning notification if so.
/// </summary>
2021-04-27 01:05:18 +00:00
public partial class ElevatedPrivilegesChecker : Component
2021-04-26 20:41:26 +00:00
{
[Resolved]
2022-08-02 14:23:54 +00:00
private INotificationOverlay notifications { get ; set ; } = null ! ;
2021-04-26 20:41:26 +00:00
protected override void LoadComplete ( )
{
base . LoadComplete ( ) ;
2024-03-05 12:44:32 +00:00
if ( Environment . IsPrivilegedProcess )
2021-04-27 04:23:08 +00:00
notifications . Post ( new ElevatedPrivilegesNotification ( ) ) ;
2021-04-27 01:05:18 +00:00
}
2021-04-26 20:41:26 +00:00
2021-04-27 01:05:18 +00:00
private partial class ElevatedPrivilegesNotification : SimpleNotification
2021-04-26 20:41:26 +00:00
{
public override bool IsImportant = > true ;
2021-04-27 01:05:18 +00:00
public ElevatedPrivilegesNotification ( )
2021-04-26 20:41:26 +00:00
{
2021-04-27 05:38:19 +00:00
Text = $"Running osu! as {(RuntimeInfo.IsUnix ? " root " : " administrator ")} does not improve performance, may break integrations and poses a security risk. Please run the game as a normal user." ;
2021-04-26 20:41:26 +00:00
}
[BackgroundDependencyLoader]
2022-01-15 00:06:39 +00:00
private void load ( OsuColour colours )
2021-04-26 20:41:26 +00:00
{
Icon = FontAwesome . Solid . ShieldAlt ;
2022-08-30 08:40:35 +00:00
IconContent . Colour = colours . YellowDark ;
2021-04-26 20:41:26 +00:00
}
}
}
}