mirror of
https://github.com/snltty/linker.git
synced 2025-10-27 11:00:25 +08:00
init
This commit is contained in:
95
cmonitor/server/api/services/HijackClientService.cs
Normal file
95
cmonitor/server/api/services/HijackClientService.cs
Normal file
@@ -0,0 +1,95 @@
|
||||
using cmonitor.server.service;
|
||||
using cmonitor.server.service.messengers.hijack;
|
||||
using cmonitor.server.service.messengers.sign;
|
||||
using common.libs.extends;
|
||||
using MemoryPack;
|
||||
|
||||
namespace cmonitor.server.api.services
|
||||
{
|
||||
public sealed class HijackClientService : IClientService
|
||||
{
|
||||
private readonly RuleConfig ruleConfig;
|
||||
private readonly SignCaching signCaching;
|
||||
private readonly MessengerSender messengerSender;
|
||||
public HijackClientService(RuleConfig ruleConfig, SignCaching signCaching, MessengerSender messengerSender)
|
||||
{
|
||||
this.ruleConfig = ruleConfig;
|
||||
this.signCaching = signCaching;
|
||||
this.messengerSender = messengerSender;
|
||||
}
|
||||
public Dictionary<string, UserNameInfo> Info(ClientServiceParamsInfo param)
|
||||
{
|
||||
return ruleConfig.UserNames;
|
||||
}
|
||||
public string AddName(ClientServiceParamsInfo param)
|
||||
{
|
||||
return ruleConfig.AddName(param.Content);
|
||||
}
|
||||
|
||||
public string AddProcessGroup(ClientServiceParamsInfo param)
|
||||
{
|
||||
return ruleConfig.AddProcessGroup(param.Content.DeJson<UpdateGroupInfo>());
|
||||
}
|
||||
public string DeleteProcessGroup(ClientServiceParamsInfo param)
|
||||
{
|
||||
return ruleConfig.DeleteProcessGroup(param.Content.DeJson<DeleteGroupInfo>());
|
||||
}
|
||||
public string AddProcess(ClientServiceParamsInfo param)
|
||||
{
|
||||
return ruleConfig.AddProcess(param.Content.DeJson<UpdateItemInfo>());
|
||||
}
|
||||
public string DeleteProcess(ClientServiceParamsInfo param)
|
||||
{
|
||||
return ruleConfig.DeleteProcess(param.Content.DeJson<DeleteItemInfo>());
|
||||
}
|
||||
|
||||
|
||||
public string AddRule(ClientServiceParamsInfo param)
|
||||
{
|
||||
return ruleConfig.AddRule(param.Content.DeJson<UpdateRuleInfo>());
|
||||
}
|
||||
public string DeleteRule(ClientServiceParamsInfo param)
|
||||
{
|
||||
return ruleConfig.DeleteRule(param.Content.DeJson<DeleteRuleInfo>());
|
||||
}
|
||||
|
||||
public string UpdateDevices(ClientServiceParamsInfo param)
|
||||
{
|
||||
return ruleConfig.UpdateDevices(param.Content.DeJson<UpdateDevicesInfo>());
|
||||
}
|
||||
|
||||
public async Task<List<string>> SetRules(ClientServiceParamsInfo param)
|
||||
{
|
||||
List<string> errorDevices = new List<string>();
|
||||
SetRuleParamInfo setRuleParamInfo = param.Content.DeJson<SetRuleParamInfo>();
|
||||
if (setRuleParamInfo.Devices.Length > 0)
|
||||
{
|
||||
byte[] bytes = MemoryPackSerializer.Serialize(setRuleParamInfo.Rules);
|
||||
for (int i = 0; i < setRuleParamInfo.Devices.Length; i++)
|
||||
{
|
||||
if (signCaching.Get(setRuleParamInfo.Devices[i], out SignCacheInfo cache))
|
||||
{
|
||||
bool res = await messengerSender.SendOnly(new MessageRequestWrap
|
||||
{
|
||||
Connection = cache.Connection,
|
||||
MessengerId = (ushort)HijackMessengerIds.Update,
|
||||
Payload = bytes
|
||||
});
|
||||
if (res == false)
|
||||
{
|
||||
errorDevices.Add(setRuleParamInfo.Devices[i]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return errorDevices;
|
||||
}
|
||||
|
||||
public sealed class SetRuleParamInfo
|
||||
{
|
||||
public string[] Devices { get; set; }
|
||||
public SetRuleInfo Rules { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user