增加BARK声音、保存、自动复制支持
This commit is contained in:
parent
77048a07a9
commit
5cd022770e
@ -120,7 +120,7 @@ namespace Inotify.Controllers
|
|||||||
public IActionResult GetSendInfos(string? start, string? end)
|
public IActionResult GetSendInfos(string? start, string? end)
|
||||||
{
|
{
|
||||||
var templates = SendTaskManager.Instance.GetInputTemeplates();
|
var templates = SendTaskManager.Instance.GetInputTemeplates();
|
||||||
var sendInfos = DBManager.Instance.DBase.Fetch<SendInfo>();
|
var sendInfos = DBManager.Instance.DBase.Fetch<SendInfo>().Where(e=>!string.IsNullOrEmpty( e.TemplateID)).ToList();
|
||||||
var sendInfoQuerys = sendInfos.Where(e => int.Parse(e.Date) >= int.Parse(start) && int.Parse(e.Date) <= int.Parse(end)).ToList();
|
var sendInfoQuerys = sendInfos.Where(e => int.Parse(e.Date) >= int.Parse(start) && int.Parse(e.Date) <= int.Parse(end)).ToList();
|
||||||
var sendInfoGroups = sendInfoQuerys.GroupBy(e => e.Date).Select(e => new { date = e.Key, count = e.Sum(item => item.Count) }).ToList();
|
var sendInfoGroups = sendInfoQuerys.GroupBy(e => e.Date).Select(e => new { date = e.Key, count = e.Sum(item => item.Count) }).ToList();
|
||||||
var sendTypeInfoGroups = sendInfoQuerys.GroupBy(e => e.TemplateID).Select(e => new { date = e.Key, count = e.Sum(item => item.Count) }).ToList();
|
var sendTypeInfoGroups = sendInfoQuerys.GroupBy(e => e.TemplateID).Select(e => new { date = e.Key, count = e.Sum(item => item.Count) }).ToList();
|
||||||
|
@ -164,17 +164,10 @@ namespace Inotify.Data
|
|||||||
return DBase.Query<SendUserInfo>().FirstOrDefault(e => e.UserName == userName);
|
return DBase.Query<SendUserInfo>().FirstOrDefault(e => e.UserName == userName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetSendAuthInfo(string token, out string guid)
|
public string GetSendAuthInfo(string key, out string guid)
|
||||||
{
|
{
|
||||||
guid = string.Empty;
|
guid = null;
|
||||||
var upToekn = token.ToUpper();
|
var authInfo = DBManager.Instance.DBase.Query<SendAuthInfo>().FirstOrDefault(e => e.Key== key.ToUpper());
|
||||||
var userInfo = DBManager.Instance.DBase.Query<SendUserInfo>().FirstOrDefault(e => e.Token == upToekn && e.Active);
|
|
||||||
if (userInfo == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var authInfo = DBManager.Instance.DBase.Query<SendAuthInfo>().FirstOrDefault(e => e.Id == userInfo.SendAuthId && e.UserId == userInfo.Id);
|
|
||||||
if (authInfo == null)
|
if (authInfo == null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
<StartupObject>Inotify.Program</StartupObject>
|
<StartupObject>Inotify.Program</StartupObject>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<AssemblyVersion>2.0.0.4</AssemblyVersion>
|
<AssemblyVersion>2.1.0.0</AssemblyVersion>
|
||||||
<FileVersion>2.0.0.4</FileVersion>
|
<FileVersion>2.1.0.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
@ -18,7 +18,6 @@
|
|||||||
<PackageReference Include="FluentEmail.Core" Version="3.0.0" />
|
<PackageReference Include="FluentEmail.Core" Version="3.0.0" />
|
||||||
<PackageReference Include="FluentEmail.Liquid" Version="3.0.0" />
|
<PackageReference Include="FluentEmail.Liquid" Version="3.0.0" />
|
||||||
<PackageReference Include="FluentEmail.Smtp" Version="3.0.0" />
|
<PackageReference Include="FluentEmail.Smtp" Version="3.0.0" />
|
||||||
<PackageReference Include="jose-jwt" Version="3.1.0" />
|
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.12" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.12" />
|
||||||
<PackageReference Include="Microsoft.Data.Sqlite" Version="5.0.3" />
|
<PackageReference Include="Microsoft.Data.Sqlite" Version="5.0.3" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="5.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="5.0.0" />
|
||||||
|
@ -1,13 +1,7 @@
|
|||||||
using CorePush.Apple;
|
using CorePush.Apple;
|
||||||
using Jose;
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Security.Cryptography;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace Inotify.Sends.Products
|
namespace Inotify.Sends.Products
|
||||||
{
|
{
|
||||||
@ -32,52 +26,50 @@ namespace Inotify.Sends.Products
|
|||||||
[InputTypeAttribte(6, "SendUrl", "SendUrl", "SendUrl", true, true)]
|
[InputTypeAttribte(6, "SendUrl", "SendUrl", "SendUrl", true, true)]
|
||||||
public string SendUrl { get; set; }
|
public string SendUrl { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[SendMethodKey("3B6DE04D-A9EF-4C91-A151-60B7425C5AB2", "Bark", Order = 2999, Waring = "BARK通道勿手动添加,请使用APP添加BARK地址绑定")]
|
[SendMethodKey("3B6DE04D-A9EF-4C91-A151-60B7425C5AB2", "Bark", Order = 2999, Waring = "BARK通道勿手动添加,请使用APP添加BARK地址绑定")]
|
||||||
public class BarkSendTemplate : SendTemplate<BarkAuth>
|
public class BarkSendTemplate : SendTemplate<BarkAuth>
|
||||||
{
|
{
|
||||||
private static string KeyID;
|
|
||||||
|
|
||||||
private static string TeamID;
|
|
||||||
|
|
||||||
private static ApnSender apnSender;
|
private static ApnSender apnSender;
|
||||||
|
|
||||||
public override bool SendMessage(SendMessage message)
|
public override bool SendMessage(SendMessage message)
|
||||||
{
|
{
|
||||||
if (apnSender == null)
|
if (apnSender == null)
|
||||||
{
|
{
|
||||||
KeyID = SendCacheStore.GetSystemValue("barkKeyId");
|
var keyID = SendCacheStore.GetSystemValue("barkKeyId");
|
||||||
TeamID = SendCacheStore.GetSystemValue("barkTeamId");
|
var teamID = SendCacheStore.GetSystemValue("barkTeamId");
|
||||||
var privateKey = SendCacheStore.GetSystemValue("barkPrivateKey");
|
var privateKey = SendCacheStore.GetSystemValue("barkPrivateKey");
|
||||||
var privateKeyContent = privateKey.Split('\n')[1];
|
var privateKeyContent = privateKey.Split('\n')[1];
|
||||||
var decodeKey = Convert.FromBase64String(privateKeyContent);
|
|
||||||
var apnSettings = new ApnSettings()
|
var apnSettings = new ApnSettings()
|
||||||
{
|
{
|
||||||
|
|
||||||
TeamId = TeamID,
|
TeamId = teamID,
|
||||||
AppBundleIdentifier = "me.fin.bark",
|
AppBundleIdentifier = "me.fin.bark",
|
||||||
P8PrivateKey = privateKeyContent,
|
P8PrivateKey = privateKeyContent,
|
||||||
ServerType = ApnServerType.Production,
|
ServerType = ApnServerType.Production,
|
||||||
P8PrivateKeyId = KeyID,
|
P8PrivateKeyId = keyID,
|
||||||
};
|
};
|
||||||
|
|
||||||
apnSender = new ApnSender(apnSettings, new HttpClient());
|
apnSender = new ApnSender(apnSettings, new HttpClient());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var payload = new AppleNotification(
|
var payload = new AppleNotification(
|
||||||
Guid.NewGuid(),
|
Guid.NewGuid(),
|
||||||
message.Data,
|
message.Data,
|
||||||
message.Title);
|
message.Title)
|
||||||
|
{
|
||||||
|
IsArchive = Auth.IsArchive,
|
||||||
|
AutoMaticallyCopy=Auth.AutoMaticallyCopy,
|
||||||
|
};
|
||||||
|
payload.Aps.Sound = Auth.Sound;
|
||||||
|
|
||||||
var response = apnSender.Send(payload, Auth.DeviceToken);
|
var response = apnSender.Send(payload, Auth.DeviceToken);
|
||||||
|
|
||||||
if (response.IsSuccess)
|
if (response.IsSuccess)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AppleNotification
|
public class AppleNotification
|
||||||
@ -91,8 +83,12 @@ namespace Inotify.Sends.Products
|
|||||||
|
|
||||||
[JsonProperty("body")]
|
[JsonProperty("body")]
|
||||||
public string Body { get; set; }
|
public string Body { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[JsonProperty("sound")]
|
||||||
|
public string Sound { get; set; }
|
||||||
|
|
||||||
[JsonProperty("alert")]
|
[JsonProperty("alert")]
|
||||||
public Alert AlertBody { get; set; }
|
public Alert AlertBody { get; set; }
|
||||||
|
|
||||||
@ -119,5 +115,11 @@ namespace Inotify.Sends.Products
|
|||||||
|
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("isarchive")]
|
||||||
|
public string IsArchive { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("automaticallycopy")]
|
||||||
|
public string AutoMaticallyCopy { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,24 @@
|
|||||||
{
|
{
|
||||||
public class SendMessage
|
public class SendMessage
|
||||||
{
|
{
|
||||||
|
public SendMessage()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public SendMessage(SendMessage sendMessage)
|
||||||
|
{
|
||||||
|
Token = sendMessage.Token;
|
||||||
|
Title = sendMessage.Title;
|
||||||
|
Data = sendMessage.Data;
|
||||||
|
Key = sendMessage.Key;
|
||||||
|
|
||||||
|
}
|
||||||
public string Token;
|
public string Token;
|
||||||
public string Title;
|
public string Title;
|
||||||
public string? Data;
|
public string? Data;
|
||||||
public string? Key;
|
public string? Key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -178,15 +178,17 @@ namespace Inotify.Sends
|
|||||||
var result = sendMessageMethod.Invoke(sendMethodTemplateActor, new object[] { message });
|
var result = sendMessageMethod.Invoke(sendMethodTemplateActor, new object[] { message });
|
||||||
if (result != null)
|
if (result != null)
|
||||||
{
|
{
|
||||||
m_analyseMessages.Add(message);
|
var logMessage = new SendMessage(message);
|
||||||
|
logMessage.Key = authInfo.Key;
|
||||||
|
m_analyseMessages.Add(logMessage);
|
||||||
if ((bool)result)
|
if ((bool)result)
|
||||||
{
|
{
|
||||||
OnSendSucessed?.Invoke(this, message);
|
OnSendSucessed?.Invoke(this, logMessage);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
OnSendFailed?.Invoke(this, message);
|
OnSendFailed?.Invoke(this, logMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,7 +215,7 @@ namespace Inotify.Sends
|
|||||||
{
|
{
|
||||||
var message = m_analyseMessages.Take();
|
var message = m_analyseMessages.Take();
|
||||||
var date = DateTime.Now.ToString("yyyyMMdd");
|
var date = DateTime.Now.ToString("yyyyMMdd");
|
||||||
var authData = DBManager.Instance.GetSendAuthInfo(message.Token, out string temeplateId);
|
var authData = DBManager.Instance.GetSendAuthInfo(message.Key, out string temeplateId);
|
||||||
|
|
||||||
if (temeplateId != null)
|
if (temeplateId != null)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user