示例#1
0
        public static async Task <string> LoadProvider()
        {
            try
            {
                var prov = SettingsManager.Settings.Database.DatabaseProvider;
                switch (prov)
                {
                case "sqlite":
                    Provider = new SqliteDatabaseProvider();
                    break;

                case "mysql":
                    Provider = new MysqlDatabaseProvider();
                    break;

                default:
                    await LogHelper.LogInfo("Using default SQLite provider!");

                    Provider = new SqliteDatabaseProvider();
                    break;
                    //  return $"[CRITICAL] Unknown database provider {prov}!";
                }

                if (!EnsureDBExists())
                {
                    return("[CRITICAL] Failed to check DB integrity or create new instance!");
                }

                //upgrade database
                if (!Upgrade().GetAwaiter().GetResult())
                {
                    return("[CRITICAL] Failed to upgrade DB to latest version!");
                }

                //check integrity
                var users   = GetAuthUsers().GetAwaiter().GetResult();
                var groups  = SettingsManager.Settings.WebAuthModule.AuthGroups.Keys.ToList();
                var problem = string.Join(',', users.Where(a => !groups.Contains(a.GroupName)).Select(a => a.GroupName ?? "null").Distinct());
                if (!string.IsNullOrEmpty(problem))
                {
                    LogHelper.LogWarning(
                        $"Database table auth_users contains entries with invalid groupName fields! It means that these groups hasn't been found in your config file and this can lead to problems in auth validation. Either tell those users to reauth or fix group names manually!\nUnknown groups: {problem}")
                    .GetAwaiter().GetResult();
                }

                return(null);
            }
            catch (Exception ex)
            {
                LogHelper.LogEx(nameof(LoadProvider), ex).GetAwaiter().GetResult();
                return("Unexpected error while loading DB provider!");
            }
        }
示例#2
0
        public static string LoadProvider()
        {
            var prov = SettingsManager.Settings.Config.DatabaseProvider;

            switch (prov)
            {
            case "sqlite":
                Provider = new SqliteDatabaseProvider();
                break;

            default:
                LogHelper.LogInfo("Using default sqlite provider!").GetAwaiter().GetResult();
                Provider = new SqliteDatabaseProvider();
                break;
                //  return $"[CRITICAL] Unknown database provider {prov}!";
            }
            //upgrade database
            if (!SQLHelper.Upgrade().GetAwaiter().GetResult())
            {
                return("[CRITICAL] Failed to upgrade DB to latest version!");
            }

            return(null);
        }