using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using System.IO; using VOL.Core.Const; using VOL.Core.Extensions; namespace VOL.Core.Configuration { public static class AppSetting { public static IConfiguration Configuration { get; private set; } public static string DbConnectionString { get { return _connection.DbConnectionString; } } public static string RedisConnectionString { get { return _connection.RedisConnectionString; } } public static bool UseRedis { get { return _connection.UseRedis; } } public static bool UseSignalR { get { return _connection.UseSignalR; } } public static Secret Secret { get; private set; } public static CreateMember CreateMember { get; private set; } public static ModifyMember ModifyMember { get; private set; } private static Connection _connection; public static string TokenHeaderName = "Authorization"; /// /// Actions权限过滤 /// public static GlobalFilter GlobalFilter { get; set; } /// /// kafka配置 /// public static Kafka Kafka { get; set; } /// /// 阿里云人脸识别 /// public static ALiYunFaceDetect ALiYunFaceDetect { get; set; } /// /// 物联网签名 /// public static IOTConfig IOTConfig { get; set; } /// /// 阿里云OSS /// public static ALiYunOSS ALiYunOSS { get; set; } /// /// YueDongServerOSS /// public static YueDongServerOSS YueDongServerOSS { get; set; } /// /// JWT有效期(分钟=默认120) /// public static int ExpMinutes { get; private set; } = 120; public static string OriginalPwd { get; set; } public static string CurrentPath { get; private set; } = null; public static string DownLoadPath { get { return CurrentPath + "\\Download\\"; } } public static void Init(IServiceCollection services, IConfiguration configuration) { Configuration = configuration; services.Configure(configuration.GetSection("Secret")); services.Configure(configuration.GetSection("Connection")); services.Configure(configuration.GetSection("CreateMember")); services.Configure(configuration.GetSection("ModifyMember")); services.Configure(configuration.GetSection("GlobalFilter")); services.Configure(configuration.GetSection("Kafka")); services.Configure(configuration.GetSection("ALiYunFaceDetect")); services.Configure(configuration.GetSection("IOTConfig")); services.Configure(configuration.GetSection("ALiYunOSS")); services.Configure(configuration.GetSection("YueDongServerOSS")); var provider = services.BuildServiceProvider(); IWebHostEnvironment environment = provider.GetRequiredService(); CurrentPath = Path.Combine(environment.ContentRootPath, "").ReplacePath(); Secret = provider.GetRequiredService>().Value; //设置修改或删除时需要设置为默认用户信息的字段 CreateMember = provider.GetRequiredService>().Value ?? new CreateMember(); ModifyMember = provider.GetRequiredService>().Value ?? new ModifyMember(); GlobalFilter = provider.GetRequiredService>().Value ?? new GlobalFilter(); GlobalFilter.Actions = GlobalFilter.Actions ?? new string[0]; Kafka = provider.GetRequiredService>().Value ?? new Kafka(); ALiYunFaceDetect = provider.GetRequiredService>().Value ?? new ALiYunFaceDetect(); IOTConfig = provider.GetRequiredService>().Value ?? new IOTConfig(); ALiYunOSS = provider.GetRequiredService>().Value ?? new ALiYunOSS(); YueDongServerOSS = provider.GetRequiredService>().Value ?? new YueDongServerOSS(); _connection = provider.GetRequiredService>().Value; ExpMinutes = (configuration["ExpMinutes"] ?? "120").GetInt(); OriginalPwd = configuration["OriginalPwd"] ?? "1"; DBType.Name = _connection.DBType; if (string.IsNullOrEmpty(_connection.DbConnectionString)) throw new System.Exception("未配置好数据库默认连接"); try { _connection.DbConnectionString = _connection.DbConnectionString.DecryptDES(Secret.DB); } catch { } if (!string.IsNullOrEmpty(_connection.RedisConnectionString)) { try { _connection.RedisConnectionString = _connection.RedisConnectionString.DecryptDES(Secret.Redis); } catch { } } } // 多个节点name格式 :["key:key1"] public static string GetSettingString(string key) { return Configuration[key]; } // 多个节点,通过.GetSection("key")["key1"]获取 public static IConfigurationSection GetSection(string key) { return Configuration.GetSection(key); } } public class Connection { public string DBType { get; set; } public string DbConnectionString { get; set; } public string RedisConnectionString { get; set; } public bool UseRedis { get; set; } public bool UseSignalR { get; set; } } public class CreateMember : TableDefaultColumns { } public class ModifyMember : TableDefaultColumns { } public abstract class TableDefaultColumns { public string UserIdField { get; set; } public string UserNameField { get; set; } public string DateField { get; set; } } public class GlobalFilter { public string Message { get; set; } public bool Enable { get; set; } public string[] Actions { get; set; } } public class Kafka { public bool UseProducer { get; set; } public ProducerSettings ProducerSettings { get; set; } public bool UseConsumer { get; set; } public bool IsConsumerSubscribe { get; set; } public ConsumerSettings ConsumerSettings { get; set; } public Topics Topics { get; set; } } public class ProducerSettings { public string BootstrapServers { get; set; } public string SaslMechanism { get; set; } public string SecurityProtocol { get; set; } public string SaslUsername { get; set; } public string SaslPassword { get; set; } } public class ConsumerSettings { public string BootstrapServers { get; set; } public string SaslMechanism { get; set; } public string SecurityProtocol { get; set; } public string SaslUsername { get; set; } public string SaslPassword { get; set; } public string GroupId { get; set; } } public class Topics { public string TestTopic { get; set; } } public class ALiYunFaceDetect { public string AccessKeyId { get; set; } public string SecretAccessKey { get; set; } public string Endpoint { get; set; } public string StudeneDb { get; set; } public string TeacherDb { get; set; } } public class ALiYunOSS { public string AccessKeyId { get; set; } public string SecretAccessKey { get; set; } public string Endpoint { get; set; } } public class YueDongServerOSS { public string BucketName { get; set; } public string Prefix { get; set; } } public class IOTConfig { public string SecretKey { get; set; } public int ExpirationDate { get; set; } public string DataSyncCallBackUrl { get; set; } } }