2025-06-06 16:00:39 +08:00

250 lines
8.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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";
/// <summary>
/// Actions权限过滤
/// </summary>
public static GlobalFilter GlobalFilter { get; set; }
/// <summary>
/// kafka配置
/// </summary>
public static Kafka Kafka { get; set; }
/// <summary>
/// 阿里云人脸识别
/// </summary>
public static ALiYunFaceDetect ALiYunFaceDetect { get; set; }
/// <summary>
/// 物联网签名
/// </summary>
public static IOTConfig IOTConfig { get; set; }
/// <summary>
/// 阿里云OSS
/// </summary>
public static ALiYunOSS ALiYunOSS { get; set; }
/// <summary>
/// YueDongServerOSS
/// </summary>
public static YueDongServerOSS YueDongServerOSS { get; set; }
/// <summary>
/// JWT有效期(分钟=默认120)
/// </summary>
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<Secret>(configuration.GetSection("Secret"));
services.Configure<Connection>(configuration.GetSection("Connection"));
services.Configure<CreateMember>(configuration.GetSection("CreateMember"));
services.Configure<ModifyMember>(configuration.GetSection("ModifyMember"));
services.Configure<GlobalFilter>(configuration.GetSection("GlobalFilter"));
services.Configure<Kafka>(configuration.GetSection("Kafka"));
services.Configure<ALiYunFaceDetect>(configuration.GetSection("ALiYunFaceDetect"));
services.Configure<IOTConfig>(configuration.GetSection("IOTConfig"));
services.Configure<ALiYunOSS>(configuration.GetSection("ALiYunOSS"));
services.Configure<YueDongServerOSS>(configuration.GetSection("YueDongServerOSS"));
var provider = services.BuildServiceProvider();
IWebHostEnvironment environment = provider.GetRequiredService<IWebHostEnvironment>();
CurrentPath = Path.Combine(environment.ContentRootPath, "").ReplacePath();
Secret = provider.GetRequiredService<IOptions<Secret>>().Value;
//设置修改或删除时需要设置为默认用户信息的字段
CreateMember = provider.GetRequiredService<IOptions<CreateMember>>().Value ?? new CreateMember();
ModifyMember = provider.GetRequiredService<IOptions<ModifyMember>>().Value ?? new ModifyMember();
GlobalFilter = provider.GetRequiredService<IOptions<GlobalFilter>>().Value ?? new GlobalFilter();
GlobalFilter.Actions = GlobalFilter.Actions ?? new string[0];
Kafka = provider.GetRequiredService<IOptions<Kafka>>().Value ?? new Kafka();
ALiYunFaceDetect = provider.GetRequiredService<IOptions<ALiYunFaceDetect>>().Value ?? new ALiYunFaceDetect();
IOTConfig = provider.GetRequiredService<IOptions<IOTConfig>>().Value ?? new IOTConfig();
ALiYunOSS = provider.GetRequiredService<IOptions<ALiYunOSS>>().Value ?? new ALiYunOSS();
YueDongServerOSS = provider.GetRequiredService<IOptions<YueDongServerOSS>>().Value ?? new YueDongServerOSS();
_connection = provider.GetRequiredService<IOptions<Connection>>().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; }
}
}