Refuse to run as root without explicit ignore (#2427)

* Refuse to run as root without explicit ignore

* Apply feedback

* Detect docker a bit better

* Guard more OS parts behind ifdefs

* Fix warnings

* Further fixes
This commit is contained in:
Łukasz Domeradzki
2021-10-17 00:11:04 +02:00
committed by GitHub
parent cfe88d59ec
commit bfbeb91633
6 changed files with 100 additions and 17 deletions

View File

@@ -193,7 +193,7 @@ namespace ArchiSteamFarm {
if (!uniqueInstance) {
ASF.ArchiLogger.LogGenericError(Strings.ErrorSingleInstanceRequired);
await Task.Delay(10000).ConfigureAwait(false);
await Task.Delay(SharedInfo.InformationDelay).ConfigureAwait(false);
return false;
}
@@ -210,10 +210,19 @@ namespace ArchiSteamFarm {
ASF.ArchiLogger.LogGenericInfo(copyright!);
}
if (!IgnoreUnsupportedEnvironment) {
if (IgnoreUnsupportedEnvironment) {
ASF.ArchiLogger.LogGenericWarning(Strings.WarningRunningInUnsupportedEnvironment);
} else {
if (!OS.VerifyEnvironment()) {
ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnsupportedEnvironment, SharedInfo.BuildInfo.Variant, OS.Version));
await Task.Delay(10000).ConfigureAwait(false);
await Task.Delay(SharedInfo.InformationDelay).ConfigureAwait(false);
return false;
}
if (!OS.IsRunningInDocker() && OS.IsRunningAsRoot()) {
ASF.ArchiLogger.LogGenericError(Strings.WarningRunningAsRoot);
await Task.Delay(SharedInfo.InformationDelay).ConfigureAwait(false);
return false;
}
@@ -221,7 +230,7 @@ namespace ArchiSteamFarm {
if (!Directory.Exists(SharedInfo.ConfigDirectory)) {
ASF.ArchiLogger.LogGenericError(Strings.ErrorConfigDirectoryNotFound);
await Task.Delay(10000).ConfigureAwait(false);
await Task.Delay(SharedInfo.InformationDelay).ConfigureAwait(false);
return false;
}
@@ -245,7 +254,7 @@ namespace ArchiSteamFarm {
if (globalConfig == null) {
ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.ErrorGlobalConfigNotLoaded, globalConfigFile));
await Task.Delay(5000).ConfigureAwait(false);
await Task.Delay(SharedInfo.ShortInformationDelay).ConfigureAwait(false);
return false;
}
@@ -348,16 +357,16 @@ namespace ArchiSteamFarm {
if (!File.Exists(globalDatabaseFile)) {
ASF.ArchiLogger.LogGenericInfo(Strings.Welcome);
await Task.Delay(10000).ConfigureAwait(false);
await Task.Delay(SharedInfo.InformationDelay).ConfigureAwait(false);
ASF.ArchiLogger.LogGenericWarning(Strings.WarningPrivacyPolicy);
await Task.Delay(5000).ConfigureAwait(false);
await Task.Delay(SharedInfo.ShortInformationDelay).ConfigureAwait(false);
}
GlobalDatabase? globalDatabase = await GlobalDatabase.CreateOrLoad(globalDatabaseFile).ConfigureAwait(false);
if (globalDatabase == null) {
ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.ErrorDatabaseInvalid, globalDatabaseFile));
await Task.Delay(5000).ConfigureAwait(false);
await Task.Delay(SharedInfo.ShortInformationDelay).ConfigureAwait(false);
return false;
}