初始化
This commit is contained in:
240
BooliveMQTT_Auth/Program.cs
Normal file
240
BooliveMQTT_Auth/Program.cs
Normal file
@@ -0,0 +1,240 @@
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using BLW_Log.Models;
|
||||
using Common;
|
||||
using CommonEntity;
|
||||
using IotManager.Common;
|
||||
using IotManager.job;
|
||||
using IotManager.private_key;
|
||||
using IotManager.services;
|
||||
using MathNet.Numerics.Interpolation;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using MySQLAccess.PGModels;
|
||||
using Quartz;
|
||||
using RestSharp;
|
||||
using ViewModels;
|
||||
|
||||
namespace IotManager
|
||||
{
|
||||
public class DomainSettings
|
||||
{
|
||||
public string[] Ok { get; set; }
|
||||
}
|
||||
|
||||
public class Program
|
||||
{
|
||||
|
||||
static async Task TTT()
|
||||
{
|
||||
try
|
||||
{
|
||||
using PostgresContext dbcontext = new PostgresContext();
|
||||
var userdata = await dbcontext.Deviceinfos.Select(A => new DeviceCacheInfo { ClientId = A.ClientId, SecretKey = A.SecretKey }).ToListAsync();
|
||||
|
||||
RestClient client1 = new RestClient("http://iot-manage.uts-data.com:5001");
|
||||
string ti = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
var request1 = new RestRequest("/api/Values/SetDeviceInfoChache", Method.Post);
|
||||
request1.AddJsonBody(userdata);
|
||||
var re = await client1.ExecuteAsync(request1);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
|
||||
//var iv = new byte[] { 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff };
|
||||
//byte[] key = new byte[] { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c };
|
||||
|
||||
//AFC1E534C82933EFA5805F21AFA494DE06534D055D432953299A46A4983614C60B5FA21C19843D
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
var domainSettings = builder.Configuration.GetSection("AllowDomain").Get<DomainSettings>();
|
||||
builder.Services.AddSingleton<MyMemoryCache>();
|
||||
CSRedisCacheHelper.Configuration = builder.Configuration;
|
||||
// ע<><D7A2>MQTT<54>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
|
||||
builder.Services.AddMemoryCache();
|
||||
builder.Services.AddHostedService<MqttClientHostedService>();
|
||||
builder.Services.AddHostedService<Mqtt2RabbitMQ>();
|
||||
//builder.Services.AddHostedService<MyTimer>();
|
||||
|
||||
//builder.Host.UseOrleansClient(ooo=>
|
||||
//{
|
||||
// ooo.UseLocalhostClustering();
|
||||
//});
|
||||
builder.Services.AddControllers();
|
||||
|
||||
//builder.Services.AddDbContext<IotServerContext>(options =>
|
||||
//{
|
||||
// options.UseNpgsql(builder.Configuration.GetConnectionString("PGSqlStr"));
|
||||
//});
|
||||
|
||||
builder.Services.AddDbContextFactory<PostgresContext>(options =>
|
||||
options.UseNpgsql(builder.Configuration.GetConnectionString("PGSqlStr")));
|
||||
|
||||
//builder.Services.AddScoped<IotServerContext>();
|
||||
builder.Services.AddCors(options =>
|
||||
{
|
||||
options.AddPolicy(name: "Vue3",
|
||||
policy =>
|
||||
{
|
||||
//policy.WithOrigins(domainSettings.Ok)
|
||||
policy
|
||||
.AllowAnyOrigin()
|
||||
.AllowAnyHeader()
|
||||
.AllowAnyMethod();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
builder.Services.AddAuthorization();
|
||||
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
||||
.AddJwtBearer(option =>
|
||||
{
|
||||
string DefaultKey = "~7#UZ~:-G6HDC7'!1uwq+f@9,zaJ4DH4JdM#PYyc9HxFT.^M7M}i40qM~?^Qt;mF98;21+Zn'67>>04=GOj2]P:-1p;G@ln03^h~19A]gB1308e57#&MtpM4n53UF1N}";
|
||||
var sec = Encoding.UTF8.GetBytes(builder.Configuration["JWT:SecretKey"] ?? DefaultKey);
|
||||
|
||||
|
||||
|
||||
option.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
|
||||
{
|
||||
ValidateIssuer = true,
|
||||
ValidateAudience = true,
|
||||
ValidateLifetime = true,
|
||||
|
||||
ValidateIssuerSigningKey = true,
|
||||
ValidIssuer = builder.Configuration["JwT:Issuer"],
|
||||
ValidAudience = builder.Configuration["JwT:Audience"],
|
||||
IssuerSigningKey = new SymmetricSecurityKey(sec)
|
||||
};
|
||||
|
||||
option.Events = new JwtBearerEvents
|
||||
{
|
||||
OnMessageReceived = context =>
|
||||
{
|
||||
var token = context.Request.Headers["token"].FirstOrDefault();
|
||||
if (string.IsNullOrEmpty(token))
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD> token ͷ<><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Authorization ͷ<><CDB7>
|
||||
token = context.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last();
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD> token<65><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD> HttpContext <20><>
|
||||
if (!string.IsNullOrEmpty(token))
|
||||
{
|
||||
context.Token = token;
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
builder.Services.AddQuartz(q =>
|
||||
{
|
||||
//var jobKey1 = new JobKey("ExcelGenerateJob");
|
||||
//q.AddJob<MyExcel>(opts => opts.WithIdentity(jobKey1));
|
||||
|
||||
//q.AddTrigger(opts => opts
|
||||
// .ForJob(jobKey1)
|
||||
// .WithIdentity("ExcelGenerateJob-trigger")
|
||||
// .StartAt(DateBuilder.TodayAt(h, m, s))
|
||||
// .WithCalendarIntervalSchedule(x => x
|
||||
// .WithIntervalInDays(1)
|
||||
// .InTimeZone(TimeZoneInfo.Local))
|
||||
//);
|
||||
//q.AddTrigger(opts => opts
|
||||
// .ForJob(jobKey1)
|
||||
// .WithIdentity("ExcelGenerateJob-trigger")
|
||||
// .WithCronSchedule("0 0 17 * * ?", (schedule) =>
|
||||
// {
|
||||
// schedule.WithMisfireHandlingInstructionDoNothing().InTimeZone(TimeZoneInfo.Local);
|
||||
// }) // ÿ<><C3BF>17:00
|
||||
//);
|
||||
|
||||
|
||||
///<2F><><EFBFBD>Ļ<EFBFBD><C4BB>Ǽٵ<C7BC>
|
||||
var jobKey2 = new JobKey("ShuJuTongBu");
|
||||
q.AddJob<DataAsync>(opts => opts.WithIdentity(jobKey2));
|
||||
q.AddTrigger(opts => opts
|
||||
.ForJob(jobKey2)
|
||||
.WithIdentity("ShuJuTongBuScan-trigger")
|
||||
.WithCalendarIntervalSchedule(x =>
|
||||
{
|
||||
x.WithIntervalInMinutes(30).Build();
|
||||
//x.WithIntervalInSeconds(2).Build();
|
||||
})
|
||||
);
|
||||
|
||||
//<2F><><EFBFBD>Ļ<EFBFBD><C4BB>Ǽٵ<C7BC>
|
||||
|
||||
|
||||
//var jobKey3 = new JobKey("DeleteFile");
|
||||
//q.AddJob<ExcelScan>(opts => opts.WithIdentity(jobKey3));
|
||||
//q.AddTrigger(opts => opts
|
||||
// .ForJob(jobKey3)
|
||||
// .WithIdentity("DeleteFile-trigger")
|
||||
// .WithCronSchedule("0 0 1 * * ?", (schedule) =>
|
||||
// {
|
||||
// schedule.WithMisfireHandlingInstructionDoNothing().InTimeZone(TimeZoneInfo.Local);
|
||||
// }) // ÿ<><C3BF>17:00
|
||||
//);
|
||||
|
||||
});
|
||||
|
||||
builder.Services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true);
|
||||
var app = builder.Build();
|
||||
app.UseHttpsRedirection();
|
||||
|
||||
app.UseCors("Vue3");
|
||||
app.UseRouting();
|
||||
app.UseAuthentication(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>м<EFBFBD><D0BC><EFBFBD>
|
||||
app.UseAuthorization(); // ʹ<><CAB9><EFBFBD><EFBFBD>Ȩ<EFBFBD>м<EFBFBD><D0BC><EFBFBD>
|
||||
|
||||
|
||||
app.MapControllers();
|
||||
|
||||
StaticData.GetWebAPIMethod();
|
||||
StaticData.GetWebAPIMethod1();
|
||||
|
||||
//TTT().Wait();
|
||||
|
||||
//HHH();
|
||||
//IronPython.Runtime.PythonList QQQ = StaticData.scope2.GetVariable("DeviceId");
|
||||
//var QQQC= QQQ.Select(A=>(int)A).ToList();
|
||||
//foreach (var item in QQQC)
|
||||
//{
|
||||
// int a = (int)item;
|
||||
//}
|
||||
//string QQQ1 = Newtonsoft.Json.JsonConvert.SerializeObject(QQQ);
|
||||
//var QQQ2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(QQQ1);
|
||||
app.Run();
|
||||
}
|
||||
|
||||
public static void HHH()
|
||||
{
|
||||
byte[] decryptedContent = new byte[] { 0x03, 0x00, 0x04, 0x00 };
|
||||
string HexData = Tools.ByteToString(decryptedContent);
|
||||
//ȼ<><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:03 00 04 00
|
||||
Console.WriteLine("ȼ<><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:" + HexData);
|
||||
byte ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ = decryptedContent[0];
|
||||
byte <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬1 = decryptedContent[2];
|
||||
//0x04<30>DZ<EFBFBD><C7B1><EFBFBD>
|
||||
//0x03<30><33>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (decryptedContent.Length == 4)
|
||||
{
|
||||
if (<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬1 == 0x04)
|
||||
{
|
||||
IronPython.Runtime.PythonList QQQ = StaticData.scope2.GetVariable("MobileNo");
|
||||
IronPython.Runtime.PythonList III = StaticData.scope2.GetVariable("DeviceId");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user