241 lines
9.3 KiB
C#
241 lines
9.3 KiB
C#
|
|
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");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|