mirror of
				https://gitlab.com/Kwoth/nadekobot.git
				synced 2025-11-04 00:34:26 -05:00 
			
		
		
		
	Re-added old creds -> creds.yml migration to avoid massive complications in the windows updater and general update process
This commit is contained in:
		
							
								
								
									
										45
									
								
								src/NadekoBot/Common/OldCreds.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/NadekoBot/Common/OldCreds.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
namespace NadekoBot.Common;
 | 
			
		||||
 | 
			
		||||
public class OldCreds
 | 
			
		||||
{
 | 
			
		||||
    public string Token { get; set; } = string.Empty;
 | 
			
		||||
    public ulong[] OwnerIds { get; set; } = new ulong[1];
 | 
			
		||||
    public string LoLApiKey { get; set; } = string.Empty;
 | 
			
		||||
    public string GoogleApiKey { get; set; } = string.Empty;
 | 
			
		||||
    public string MashapeKey { get; set; } = string.Empty;
 | 
			
		||||
    public string OsuApiKey { get; set; } = string.Empty;
 | 
			
		||||
    public string SoundCloudClientId { get; set; } = string.Empty;
 | 
			
		||||
    public string CleverbotApiKey { get; set; } = string.Empty;
 | 
			
		||||
    public string CarbonKey { get; set; } = string.Empty;
 | 
			
		||||
    public int TotalShards { get; set; } = 1;
 | 
			
		||||
    public string PatreonAccessToken { get; set; } = string.Empty;
 | 
			
		||||
    public string PatreonCampaignId { get; set; } = "334038";
 | 
			
		||||
    public RestartConfig RestartCommand { get; set; }
 | 
			
		||||
 | 
			
		||||
    public string ShardRunCommand { get; set; } = string.Empty;
 | 
			
		||||
    public string ShardRunArguments { get; set; } = string.Empty;
 | 
			
		||||
    public int? ShardRunPort { get; set; }
 | 
			
		||||
    public string MiningProxyUrl { get; set; } = string.Empty;
 | 
			
		||||
    public string MiningProxyCreds { get; set; } = string.Empty;
 | 
			
		||||
 | 
			
		||||
    public string BotListToken { get; set; } = string.Empty;
 | 
			
		||||
    public string TwitchClientId { get; set; } = string.Empty;
 | 
			
		||||
    public string VotesToken { get; set; } = string.Empty;
 | 
			
		||||
    public string VotesUrl { get; set; } = string.Empty;
 | 
			
		||||
    public string RedisOptions { get; set; } = string.Empty;
 | 
			
		||||
    public string LocationIqApiKey { get; set; } = string.Empty;
 | 
			
		||||
    public string TimezoneDbApiKey { get; set; } = string.Empty;
 | 
			
		||||
    public string CoinmarketcapApiKey { get; set; } = string.Empty;
 | 
			
		||||
 | 
			
		||||
    public class RestartConfig
 | 
			
		||||
    {
 | 
			
		||||
        public string Cmd { get; set; }
 | 
			
		||||
        public string Args { get; set; }
 | 
			
		||||
 | 
			
		||||
        public RestartConfig(string cmd, string args)
 | 
			
		||||
        {
 | 
			
		||||
            Cmd = cmd;
 | 
			
		||||
            Args = args;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -116,8 +116,52 @@ public sealed class BotCredsProvider : IBotCredsProvider
 | 
			
		||||
        Reload();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    private string OldCredsJsonPath
 | 
			
		||||
        => Path.Combine(Directory.GetCurrentDirectory(), "credentials.json");
 | 
			
		||||
 | 
			
		||||
    private string OldCredsJsonBackupPath
 | 
			
		||||
        => Path.Combine(Directory.GetCurrentDirectory(), "credentials.json.bak");
 | 
			
		||||
    
 | 
			
		||||
    private void MigrateCredentials()
 | 
			
		||||
    {
 | 
			
		||||
        if (File.Exists(OldCredsJsonPath))
 | 
			
		||||
        {
 | 
			
		||||
            Log.Information("Migrating old creds...");
 | 
			
		||||
            var jsonCredentialsFileText = File.ReadAllText(OldCredsJsonPath);
 | 
			
		||||
            var oldCreds = JsonConvert.DeserializeObject<OldCreds>(jsonCredentialsFileText);
 | 
			
		||||
 | 
			
		||||
            if (oldCreds is null)
 | 
			
		||||
            {
 | 
			
		||||
                Log.Error("Error while reading old credentials file. Make sure that the file is formatted correctly");
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var creds = new Creds
 | 
			
		||||
            {
 | 
			
		||||
                Version = 1,
 | 
			
		||||
                Token = oldCreds.Token,
 | 
			
		||||
                OwnerIds = oldCreds.OwnerIds.Distinct().ToHashSet(),
 | 
			
		||||
                GoogleApiKey = oldCreds.GoogleApiKey,
 | 
			
		||||
                RapidApiKey = oldCreds.MashapeKey,
 | 
			
		||||
                OsuApiKey = oldCreds.OsuApiKey,
 | 
			
		||||
                CleverbotApiKey = oldCreds.CleverbotApiKey,
 | 
			
		||||
                TotalShards = oldCreds.TotalShards <= 1 ? 1 : oldCreds.TotalShards,
 | 
			
		||||
                Patreon = new(oldCreds.PatreonAccessToken, null, null, oldCreds.PatreonCampaignId),
 | 
			
		||||
                Votes = new(oldCreds.VotesUrl, oldCreds.VotesToken, string.Empty, string.Empty),
 | 
			
		||||
                BotListToken = oldCreds.BotListToken,
 | 
			
		||||
                RedisOptions = oldCreds.RedisOptions,
 | 
			
		||||
                LocationIqApiKey = oldCreds.LocationIqApiKey,
 | 
			
		||||
                TimezoneDbApiKey = oldCreds.TimezoneDbApiKey,
 | 
			
		||||
                CoinmarketcapApiKey = oldCreds.CoinmarketcapApiKey
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            File.Move(OldCredsJsonPath, OldCredsJsonBackupPath, true);
 | 
			
		||||
            File.WriteAllText(CredsPath, Yaml.Serializer.Serialize(creds));
 | 
			
		||||
 | 
			
		||||
            Log.Warning(
 | 
			
		||||
                "Data from credentials.json has been moved to creds.yml\nPlease inspect your creds.yml for correctness");
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        if (File.Exists(CREDS_FILE_NAME))
 | 
			
		||||
        {
 | 
			
		||||
            var creds = Yaml.Deserializer.Deserialize<Creds>(File.ReadAllText(CREDS_FILE_NAME));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user