diff --git a/DockerComposeShells/adminapi/conf/appsettings.Development.json b/DockerComposeShells/adminapi/conf/appsettings.Development.json index 75a747b..485c338 100644 --- a/DockerComposeShells/adminapi/conf/appsettings.Development.json +++ b/DockerComposeShells/adminapi/conf/appsettings.Development.json @@ -3,71 +3,68 @@ "SelfUrl": "http://localhost:44315", "CorsOrigins": "https://*.IoT.com,http://localhost:4200,http://localhost:3100,http://localhost:80,http://10.10.70.11:4200,http://47.110.53.196:30711,http://192.168.111.174:30711" }, - "ConnectionStrings": { - "Default": "Data Source=mysql;Port=3306;Database=JiSheIoTProDB;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;" - // // 正式 - // "PrepayDB": "server=rm-m5el3d1u1k0wzk70n2o.sqlserver.rds.aliyuncs.com,3433;database=jishe.sysdb;uid=v3sa;pwd=JiShe123;Encrypt=False;Trust Server Certificate=False", - // "EnergyDB": "server=rm-wz9hw529i3j1e3b5fbo.sqlserver.rds.aliyuncs.com,3433;database=db_energy;uid=yjdb;pwd=Kdjdhf+9*7ad222LL;Encrypt=False;Trust Server Certificate=False" - }, - "Hangfire": { - "Redis": { - "Host": "redis:6379,password=1q3J@BGf!yhTaD46nS#", - "DB": "2" - } - }, + "ConnectionStrings": { + "Default": "Data Source=mysql;Port=3306;Database=JiSheIoTProDB;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;" + }, + "Hangfire": { "Redis": { - "Configuration": "redis:6379,defaultdatabase=5,password=1q3J@BGf!yhTaD46nS#" - }, - "Kafka": { - "BootstrapServers": "47.110.62.104:9094,47.110.53.196:9094,47.110.60.222:9094", - "EnableFilter": true, - "EnableAuthorization": false, - "SaslUserName": "lixiao", - "SaslPassword": "lixiao@1980", - "KafkaReplicationFactor": 3, - "NumPartitions": 30, - "TaskThreadCount": -1 - }, - "Pulsar": { - "ServiceUrl": "pulsar://pulsar-broker:9093", - "WebUrl": "http://pulsar-broker:9094", - "UserName": "admin", - "TenantName": "1YMVZZkAkRArjxSD8457", - "Namespace": "OneNET", - "PulsarSecretKey": "0fd7afb8b0d04e6abc4fdfdac2190a79", - "PulsarSubscriptionCustomName": "sub", - "EnableTls": false, - "ValidateServerCertificate": false, - "ConnectionTimeout": 30, - "OperationTimeout": 30, - "KeepAliveInterval": 30, - "TaskThreadCount": 1, - "IsSubscriber": true, - "DefaultPartitions": 16, - "DefaultBundles": 16, - "EnableAutoCreation": true, //开启自动创建Topic - "TopicMode": "Static", //Dynamic 主题模式 - "EnableTopicTypeFilter": true, //允许Topic类型过滤 - "AllowedTopicTypes": [ "Static" ], //允许的Topic类型 - "AllowedClusters": [ "pulsar-cluster-1" ], //允许的集群 - "AdminRoles": [ "admin" ], - "EnableConsumerIdleCleanup": true, - "ConsumerIdleCleanupMinutes": 120, - "EnableProducerIdleCleanup": true, - "ProducerIdleCleanupMinutes": 60 - }, - "IoTDBOptions": { - "UserName": "root", - "Password": "Lixiao@1980", - "TreeModelClusterList": [ "iotdb-standalone:6667" ], - "TableModelClusterList": [ "iotdb-standalone:6667" ], - "PoolSize": 32, - "DataBaseName": "jisheiotdata", - "OpenDebugMode": true, - "UseTableSessionPoolByDefault": false - }, + "Host": "redis:6379,password=1q3J@BGf!yhTaD46nS#", + "DB": "2" + } + }, + "Redis": { + "Configuration": "redis:6379,defaultdatabase=5,password=1q3J@BGf!yhTaD46nS#" + }, + "Kafka": { + "BootstrapServers": "47.110.62.104:9094,47.110.53.196:9094,47.110.60.222:9094", + "EnableFilter": true, + "EnableAuthorization": false, + "SaslUserName": "lixiao", + "SaslPassword": "lixiao@1980", + "KafkaReplicationFactor": 3, + "NumPartitions": 30, + "TaskThreadCount": -1 + }, + "Pulsar": { + "ServiceUrl": "pulsar://pulsar-broker:9093", + "WebUrl": "http://pulsar-broker:9094", + "UserName": "admin", + "TenantName": "1YMVZZkAkRArjxSD8457", + "Namespace": "OneNET", + "PulsarSecretKey": "0fd7afb8b0d04e6abc4fdfdac2190a79", + "PulsarSubscriptionCustomName": "sub", + "EnableTls": false, + "ValidateServerCertificate": false, + "ConnectionTimeout": 30, + "OperationTimeout": 30, + "KeepAliveInterval": 30, + "TaskThreadCount": 1, + "IsSubscriber": true, + "DefaultPartitions": 16, + "DefaultBundles": 16, + "EnableAutoCreation": true, //开启自动创建Topic + "TopicMode": "Static", //Dynamic 主题模式 + "EnableTopicTypeFilter": true, //允许Topic类型过滤 + "AllowedTopicTypes": [ "Static" ], //允许的Topic类型 + "AllowedClusters": [ "pulsar-cluster-1" ], //允许的集群 + "AdminRoles": [ "admin" ], + "EnableConsumerIdleCleanup": true, + "ConsumerIdleCleanupMinutes": 120, + "EnableProducerIdleCleanup": true, + "ProducerIdleCleanupMinutes": 60 + }, + "IoTDBOptions": { + "UserName": "root", + "Password": "Lixiao@1980", + "TreeModelClusterList": [ "iotdb-standalone:6667" ], + "TableModelClusterList": [ "iotdb-standalone:6667" ], + "PoolSize": 32, + "DataBaseName": "jisheiotdata", + "OpenDebugMode": true, + "UseTableSessionPoolByDefault": false + }, "ServerApplicationOptions": { - "ServerTagName": "JiSheCollectBus01", + "ServerTagName": "JiSheCollectBus12", "FirstCollectionTime": "2025-04-28 15:07:00", "AutomaticVerificationTime": "16:07:00", "AutomaticTerminalVersionTime": "17:07:00", @@ -75,28 +72,29 @@ "AutomaticDayFreezeTime": "02:30:00", "AutomaticMonthFreezeTime": "03:30:00", "DefaultProtocolPlugin": "T37612012ProtocolPlugin", - "VerifySignatureToken": "SIcPQnpMgaFDmNlIjNmzq5smshz7cKrh", + "SignatureToken": "SIcPQnpMgaFDmNlIjNmzq5smshz7cKrh", + "AesSecurityKey": "RPTEIGCA1KvDEXS1", "IsAesEncrypted": false, "DistributedMessage": 2, "SnowflakeWorkerId": 1 }, - "Jwt": { - "Audience": "JiShe.IoT", - "SecurityKey": "dzehzRz9a8asdfaf43ghVD@d#fasdfaf567sdadfasdf=", - "Issuer": "JiShe.IoT", - "ExpirationTime": 2 - }, - "FreeRedisOptions": { - "ConnectionString": "redis:6379,password=1q3J@BGf!yhTaD46nS#,abortConnect=false,connectTimeout=30000,allowAdmin=true,maxPoolSize=500,defaultdatabase=14", - "UseDistributedCache": true - }, - "FreeSqlProviderOptions": { - "UsePrepayDB": false, - "UseEnergyDB": false, - "PrintLog": false - }, - "OneNETSecureReceiveOptions": { - "OneNETVerifySignatureToken": "SIcPQnpMgaFDmNlIjNmzq5smshz7cKrh", - "OneNETAesKey": "RPTEIGCA1KvDEXS1" - } - } \ No newline at end of file + "Jwt": { + "Audience": "JiShe.IoT", + "SecurityKey": "dzehzRz9a8asdfaf43ghVD@d#fasdfaf567sdadfasdf=", + "Issuer": "JiShe.IoT", + "ExpirationTime": 2 + }, + "FreeRedisOptions": { + "ConnectionString": "redis:6379,password=1q3J@BGf!yhTaD46nS#,abortConnect=false,connectTimeout=30000,allowAdmin=true,maxPoolSize=500,defaultdatabase=14", + "UseDistributedCache": true + }, + "FreeSqlProviderOptions": { + "UsePrepayDB": false, + "UseEnergyDB": false, + "PrintLog": false + }, + "OneNETSecureReceiveOptions": { + "OneNETVerifySignatureToken": "SIcPQnpMgaFDmNlIjNmzq5smshz7cKrh", + "OneNETAesKey": "RPTEIGCA1KvDEXS1" + } +} \ No newline at end of file diff --git a/host/JiShe.IoT.HttpApi.Host/IoTHttpApiHostModule.cs b/host/JiShe.IoT.HttpApi.Host/IoTHttpApiHostModule.cs index a41013c..06b8ce0 100644 --- a/host/JiShe.IoT.HttpApi.Host/IoTHttpApiHostModule.cs +++ b/host/JiShe.IoT.HttpApi.Host/IoTHttpApiHostModule.cs @@ -56,6 +56,11 @@ namespace JiShe.IoT { configuration.GetSection(nameof(DataChannelOptions)).Bind(options); }); + + Configure(options => + { + configuration.GetSection(nameof(ServerApplicationOptions)).Bind(options); + }); } public override void OnApplicationInitialization(ApplicationInitializationContext context) diff --git a/host/JiShe.IoT.HttpApi.Host/Program.cs b/host/JiShe.IoT.HttpApi.Host/Program.cs index 9ee82f8..93171d8 100644 --- a/host/JiShe.IoT.HttpApi.Host/Program.cs +++ b/host/JiShe.IoT.HttpApi.Host/Program.cs @@ -1,3 +1,6 @@ +using JiShe.ServicePro.Core; +using Microsoft.Extensions.Configuration; + namespace JiShe.IoT; public class Program @@ -19,12 +22,16 @@ public class Program }) .ConfigureAppConfiguration((context, builder) => { - var env = context.HostingEnvironment.EnvironmentName; - string[] filePathArray = new string[] { System.AppDomain.CurrentDomain.BaseDirectory, "configs" }; + var env = context.HostingEnvironment.EnvironmentName; + string[] filePathArray = new string[] { System.AppDomain.CurrentDomain.BaseDirectory, "configs"}; string jsonPath = Path.Combine(filePathArray); - Log.Warning($"当前环境 :{env},配置文件路径:{jsonPath}"); - builder.AddJsonFile(Path.Combine(jsonPath, "appsettings.json"), false, true); - builder.AddJsonFile(Path.Combine(jsonPath, $"appsettings.{env}.json"), false, true); + + string defaultJson = Path.Combine(new string[] { jsonPath, "appsettings.json" }); + var environmentJson = Path.Combine(new string[] { jsonPath, $"appsettings.{env}.json" } ); + + builder.AddJsonFile(defaultJson, false, true); + builder.AddJsonFile(environmentJson, false, true); + Console.WriteLine($"当前环境 :{env},配置文件路径:{environmentJson}"); }); await builder.AddApplicationAsync(); @@ -33,7 +40,7 @@ public class Program options.Limits.MaxRequestBodySize = 100 * 1024 * 1024; // 100MB null不受限制 options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(2); options.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(1); - + //获取或设置请求正文的最小数据速率(字节/秒)。将此属性设置为NULL表示不应强制执行最小数据速率。////获取或设置请求正文的最小数据速率(字节/秒)。将此属性设置为NULL表示不应强制执行最小数据速率。 options.Limits.MinRequestBodyDataRate = null;//new MinDataRate(bytesPerSecond: 2048, gracePeriod: TimeSpan.FromSeconds(10)); diff --git a/src/JiShe.IoT.Application/IoTAppService.cs b/src/JiShe.IoT.Application/IoTAppService.cs index 2563e92..8c73968 100644 --- a/src/JiShe.IoT.Application/IoTAppService.cs +++ b/src/JiShe.IoT.Application/IoTAppService.cs @@ -85,7 +85,7 @@ namespace JiShe.IoT /// protected HttpDataResult HandleOpenApiRequest(OpenApiRequest input, ServerApplicationOptions serverOptions) where T : class { - if (input == null || serverOptions == null || string.IsNullOrWhiteSpace(input.Message) || string.IsNullOrWhiteSpace(input.Nonce) || string.IsNullOrWhiteSpace(input.Signature)) + if (input == null || serverOptions == null || string.IsNullOrWhiteSpace(input.Message) || string.IsNullOrWhiteSpace(input.Nonce) || string.IsNullOrWhiteSpace(input.Signature) || serverOptions == null || string.IsNullOrWhiteSpace(serverOptions.SignatureToken)) { return HttpDataResultExtensions.Failed(null, "请求参数不能为空", -1101); }