Compare commits

..

2 Commits

Author SHA1 Message Date
CortexCore 334f691d0e 1 2024-05-04 11:58:38 +08:00
CortexCore 3fcea8e55b 1 2024-04-30 11:16:03 +08:00
24 changed files with 241 additions and 264 deletions

19
.gitattributes vendored
View File

@ -1,19 +0,0 @@
# Git - gitattributes Documentation
# https://git-scm.com/docs/gitattributes
# 禁用所有文件的换行符自动转换
* -text
# 机器生成的文件
# Unity *.meta 所有平台下换行符均为 LF
*.meta text eol=lf
# 人类编写的文件
# C# 代码
*.cs text eol=lf

View File

@ -1,24 +0,0 @@
using IDIS;
using IDIS_Server_SIM.Extensions;
using CAICT.IDIS.Service;
using Microsoft.AspNetCore.Mvc;
namespace CN.CAICT.IDIS.Controllers;
/// <summary>
/// 诊断控制器
/// </summary>
[ApiController]
public class IDIS_DiagnosisController:Controller
{
/// <summary>
/// 诊断,使用该接口确保应用运行中
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("/api/diagnosis")]
public string Diagnose()
{
return "OK";
}
}

BIN
IDIS_Server-SIM.exe Normal file

Binary file not shown.

View File

@ -1,11 +1,11 @@
using BITKit;
using IDIS;
using CAICT.IDIS;
using CAICT.IDIS.Service;
using IDIS.Models;
using IDIS.Services;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace CN.CAICT.IDIS.Controllers;
namespace IDIS_Server_SIM.Controllers;
[ApiController]
public class IDIS_ServiceController:Controller
@ -15,51 +15,15 @@ public class IDIS_ServiceController:Controller
{
_service = service;
}
/// <summary>
/// 获取服务器信息
/// </summary>
/// <returns>主机名称</returns>
[HttpGet]
[Route("info")]
public IActionResult Info()
{
return Ok(new IDIS_Response(Environment.MachineName));
}
/// <summary>
/// 一次解析所有标识
/// </summary>
/// <returns>所有标识的数组</returns>
[HttpGet]
[Route("/identityv2/data/detail/all")]
public async Task<IActionResult> QueryAll()
{
try
return new ContentResult
{
var result = await _service.ToArrayAsync();
var response = new IDIS_Response(result);
var json = JsonConvert.SerializeObject(response);
//return Ok(JsonConvert.SerializeObject(response));
return new ContentResult()
{
Content = json,
ContentType = "application/json",
StatusCode = 200
};
}
catch (Exception e)
{
return BadRequest(new IDIS_Response(e.Message,false)
{
Status = 2
});
}
Content = Environment.MachineName
};
}
/// <summary>
/// 解析表示
/// </summary>
/// <param name="handle">标识码</param>
/// <returns></returns>
[HttpGet]
[Route("/identityv2/data/detail")]
public async Task<IActionResult> Query(string handle)
@ -85,21 +49,14 @@ public class IDIS_ServiceController:Controller
});
}
}
/// <summary>
/// 查询标识是否存在
/// </summary>
/// <param name="code">标识码</param>
/// <returns></returns>
[HttpGet]
[Route("isExist")]
public async Task<IActionResult> IsExist(string code)
{
return Ok(new IDIS_Response(await _service.IsExistAsync(code)));
}
/// <summary>
/// 注册标识
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("/identityv2/data")]
public async Task<IActionResult> Register()
@ -109,7 +66,7 @@ public class IDIS_ServiceController:Controller
using var reader = new StreamReader(Request.Body);
var json = await reader.ReadToEndAsync();
var data = JsonConvert.DeserializeObject<IDIS_Register_Data>(json)!;
await _service.RegisterIDISAsync(data.Handle, data.TemplateVersion, data.Value);
await _service.RegisterAsync(data.Handle, data.TemplateVersion, data.Value);
return Ok(new IDIS_Response());
}
catch (Exception e)
@ -121,21 +78,12 @@ public class IDIS_ServiceController:Controller
}
}
/// <summary>
/// 更新标识(目前不可用)
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("update")]
public string Update()
{
return "err:0";
}
/// <summary>
/// 删除标识
/// </summary>
/// <param name="code">标识码</param>
/// <returns></returns>
[HttpGet]
[Route("delete")]
public async Task<bool> Delete (string code)

View File

@ -0,0 +1,36 @@
using BITKit;
using IDIS;
using IDIS_Server_SIM.Extensions;
using IDIS.Models;
using IDIS.Services;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace IDIS_Server_SIM.Controllers;
[ApiController]
public class IDIS_StatisticsController:Controller
{
private readonly IDIS_Statistics_MySQLBased _service;
private readonly ILogger<IDIS_StatisticsController> _logger;
public IDIS_StatisticsController(IDIS_Statistics_MySQLBased service, ILogger<IDIS_StatisticsController> logger)
{
_service = service;
_logger = logger;
}
[Route("/api/query/today")]
public async Task<IActionResult> GetTodayQuery()
{
var result = await _service.GetTodayQuery();
return new IDIS_Response(result).ToActionResult();
}
[Route("/api/query/count")]
public async Task<IActionResult> GetQueryCount(string handle)
{
var result = await _service.GetQueryCount(handle);
return new IDIS_Response(result).ToActionResult();
}
}

View File

@ -1,11 +1,11 @@
using BITKit;
using IDIS;
using CAICT.IDIS;
using CAICT.IDIS.Service;
using IDIS.Models;
using IDIS.Services;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace CN.CAICT.IDIS.Controllers;
namespace IDIS_Server_SIM.Controllers;
[ApiController]
@ -19,12 +19,7 @@ public class IDIS_TemplateController:Controller
_service = service;
_logger = logger;
}
/// <summary>
/// 查询标识模板
/// </summary>
/// <param name="prefix">前缀例如88.123.99</param>
/// <param name="version">版本例如v0.0.1</param>
/// <returns></returns>
[Route("/snms/api/template/v1")]
[HttpGet]
public async Task<IActionResult> Query(string prefix, string version)
@ -41,10 +36,7 @@ public class IDIS_TemplateController:Controller
});
}
}
/// <summary>
/// 保存标识模板
/// </summary>
/// <returns></returns>
[Route("/snms/api/template/v1")]
[HttpPost]
public async Task<IActionResult> Save()

View File

@ -0,0 +1,78 @@
#pragma warning disable SYSLIB1045
using System.Text.RegularExpressions;
using BITKit;
using IDIS.Services;
await BITAppForNet.InitializeAsync("IDIS");
var config = Path.Combine(Environment.CurrentDirectory,"appsettings.json");
if (File.Exists(config))
{
var json = File.ReadAllText(config);
DataParser.Set(json);
}
var builder = WebApplication.CreateBuilder(args);
var cancellationTokenSource = new System.Threading.CancellationTokenSource();
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddTransient<IDIS_Service, IDIS_Service_MySQLBased>();
builder.Services.AddTransient<IDIS_Statistics_MySQLBased>();
builder.Services.AddTransient<IDIS_TemplateService, IDIS_TemplateService_MySQLBased>();
var app = builder.Build();
var logger = app.Services.GetRequiredService<ILogger<Program>>();
#region
logger.LogInformation("请输入二级节点地址,例如:88.123.99");
string? str;
while (true)
{
str = Console.ReadLine();
if (string.IsNullOrEmpty(str))
{
str = "88.123.99";
break;
}
const string pattern =@"^\d{1,3}\.\d{1,3}\.\d{1,3}$"; // 正则表达式模式
if (Regex.IsMatch(str,pattern))
{
break;
}
logger.LogInformation("错误的地址格式,请按照正确格式输入,例如:88.123.99");
}
logger.LogInformation("输入的地址符合要求。");
#endregion
var idis_Service = app.Services.GetRequiredService<IDIS_Service>();
//idis_Service.PreAddress = str!;
app.Services.GetRequiredService<IDIS_Statistics_MySQLBased>();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.MapGet("/", () => "Hello World!");
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();

View File

@ -1,40 +1,40 @@
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:39555",
"sslPort": 44303
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false, "launchUrl": "swagger",
"applicationUrl": "http://localhost:5242;http://localhost:5243",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7254;http://localhost:5242",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:39555",
"sslPort": 44303
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false, "launchUrl": "swagger",
"applicationUrl": "http://localhost:5242;http://localhost:5243",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7254;http://localhost:5242",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

View File

@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

View File

@ -0,0 +1,11 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"Urls": "http://+:5242",
"DefaultConnection":"server=server.bitfall.icu;port=3306;database=ifactory;uid=ifactory;password=JdBfKR2dxhm76Ss2",
"AllowedHosts": "*"
}

View File

@ -1,89 +0,0 @@
#pragma warning disable SYSLIB1045
using BITKit;
using BITKit.Net;
using CAICT.IDIS.Service;
using CN.CAICT.IDIS;
using IDIS.Model;
using Net.BITKit.Teleport;
using Newtonsoft.Json;
await BITAppForNet.InitializeAsync("CN.CAICT.IDIS");
var config = Path.Combine(Environment.CurrentDirectory,"appsettings.json");
if (File.Exists(config))
{
var json = File.ReadAllText(config);
DataParser.Set(json);
}
var builder = WebApplication.CreateBuilder(args);
var cancellationTokenSource = new System.Threading.CancellationTokenSource();
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(x =>
{
var currentDirectory = AppContext.BaseDirectory;
x.IncludeXmlComments(currentDirectory + "/CN.CAICT.IDIS.xml",true);
});
builder.Services.AddSingleton<NetProviderService>();
builder.Services.AddSingleton<INetServer, ENetServer>();
builder.Services.AddSingleton<INetProvider>(x => x.GetRequiredService<INetServer>().NetProvider);
builder.Services.AddTransient<IDIS_Service, IDIS_Service_SqlSugar>();
builder.Services.AddTransient<IDIS_EnterpriseService, IDIS_EnterpriseService_SqlSugar>();
builder.Services.AddTransient<IDIS_TemplateService, IDIS_TemplateService_Sugar>();
var app = builder.Build();
var server = app.Services.GetRequiredService<INetServer>();
server.StartServer(29755);
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.MapGet("/", () => "Hello World!");
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
new Thread(Tick).Start();
await app.RunAsync();
return;
async void Tick()
{
app.Services.QueryComponents(out ILogger<INetServer> logger);
while (true)
{
try
{
server.NetProvider.Tick();
}
catch (Exception exception)
{
logger.LogCritical(exception,exception.Message);
}
//logger.LogInformation("wait next frame");
await Task.Delay(16);
}
logger.LogCritical("程序已退出,不应该出现");
}

24
ReadMe.md Normal file
View File

@ -0,0 +1,24 @@
# IDIS Server Console
### IDIS 标识解析服务器控制台
指南版本`v0.2`
### 已支持的功能
- [x] 查询标识
- [x] 注册标识
- [x] 删除标识
- [x] 查询数据模板
- [x] 保存数据模板
### 已支持的功能
- [x] 查询当日解析的标识
- [x] 查询标识所有解析记录
## 食用指南
### 基本功能
1. 去寻找`标识解析附件1 SNMS-API-1.2.6.docx`这份文档
2. 按照`已支持的功能`去操作
### 统计功能
#### 查询当日解析的标识
![Clip_20240429_230249.png](ReadMe%2FClip_20240429_230249.png)
`Get:`http://localhost:5242/api/query/today
#### 查询单个标识所有的解析次数
![Clip_20240429_230509.png](ReadMe%2FClip_20240429_230509.png)
`Get:`http://localhost:5242/api/query/count?handle=88.101.6/xx004

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -1,8 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

View File

@ -1,10 +1,11 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"Urls": "http://+:5242",
"AllowedHosts": "*"
}
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"Urls": "http://+:5242",
"DefaultConnection":"server=server.bitfall.icu;port=3306;database=ifactory;uid=ifactory;password=JdBfKR2dxhm76Ss2",
"AllowedHosts": "*"
}

BIN
aspnetcorev2_inprocess.dll Normal file

Binary file not shown.

BIN
e_sqlite3.dll Normal file

Binary file not shown.

BIN
img.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
sni.dll Normal file

Binary file not shown.

11
web.config Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\IDIS_Server-SIM.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>