diff --git a/readme/Demo/Hook/Demo.php b/readme/Demo/Hook/Demo.php index efd0bed1..37151f3d 100644 --- a/readme/Demo/Hook/Demo.php +++ b/readme/Demo/Hook/Demo.php @@ -14,7 +14,10 @@ class Demo extends ManagePlugin #[Hook(point: \App\Consts\Hook::USER_API_ORDER_PAY_AFTER)] public function tradeAfter($commodity, $order, $pay) { - $secret = json_decode($order->secret,true); + $lines = array_map(function($line) { + return rtrim($line, "\r"); + }, explode("\n", $order->secret)); + $secret = json_decode($lines[0],true); try{ $widget = json_decode($order->widget,true); @@ -32,13 +35,12 @@ class Demo extends ManagePlugin $secret["PayPrice"] = $order["amount"]; $secret["Count"] = $order["card_num"]; $order->secret = json_encode($secret,JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); - + //file_put_contents("secret.txt",$order->secret); $config = Plugin::getConfig("Demo"); $aesCrypto = new AesCrypto($config["KeyId"]); $order->secret = base64_encode($aesCrypto->encode($order->secret)); $order->save(); } - } class AesCrypto { diff --git a/readme/acg-faka-plugin-Demo.zip b/readme/acg-faka-plugin-Demo.zip index bcb7b0d8..02ef66e3 100644 Binary files a/readme/acg-faka-plugin-Demo.zip and b/readme/acg-faka-plugin-Demo.zip differ diff --git a/src/linker.messenger.relay/messenger/RelayMessengerIds.cs b/src/linker.messenger.relay/messenger/RelayMessengerIds.cs index 7d2b5bef..66f919a5 100644 --- a/src/linker.messenger.relay/messenger/RelayMessengerIds.cs +++ b/src/linker.messenger.relay/messenger/RelayMessengerIds.cs @@ -28,6 +28,8 @@ TestCdkey = 2115, ImportCdkey = 2116, + UpdateNode = 2117, + Max = 2199 } } diff --git a/src/linker.messenger.relay/server/IRelayServerCdkeyStore.cs b/src/linker.messenger.relay/server/IRelayServerCdkeyStore.cs index 78db33fb..4ef355f1 100644 --- a/src/linker.messenger.relay/server/IRelayServerCdkeyStore.cs +++ b/src/linker.messenger.relay/server/IRelayServerCdkeyStore.cs @@ -82,6 +82,7 @@ public string SecretKey { get; set; } public RelayServerCdkeyPageRequestFlag Flag { get; set; } } + [Flags] public enum RelayServerCdkeyPageRequestFlag { All = 0, diff --git a/src/linker.messenger.relay/server/IRelayServerNodeStore.cs b/src/linker.messenger.relay/server/IRelayServerNodeStore.cs index 38bd48bb..996173a8 100644 --- a/src/linker.messenger.relay/server/IRelayServerNodeStore.cs +++ b/src/linker.messenger.relay/server/IRelayServerNodeStore.cs @@ -23,6 +23,7 @@ namespace linker.messenger.relay.server /// /// public void SetInfo(RelayServerNodeInfo node); + public void UpdateInfo(RelayServerNodeUpdateInfo update); /// /// 设置月份 @@ -81,6 +82,17 @@ namespace linker.messenger.relay.server #endif } + public sealed partial class RelayServerNodeUpdateInfo + { + public string Name { get; set; } = string.Empty; + + public int MaxConnection { get; set; } + public double MaxBandwidth { get; set; } + public double MaxBandwidthTotal { get; set; } + public double MaxGbTotal { get; set; } + public long MaxGbTotalLastBytes { get; set; } + public bool Public { get; set; } + } public sealed partial class RelayServerNodeReportInfo { public string Id { get; set; } = string.Empty; @@ -104,7 +116,6 @@ namespace linker.messenger.relay.server public long LastTicks { get; set; } } - public sealed partial class RelayAskResultInfo { public ulong FlowingId { get; set; } diff --git a/src/linker.messenger.relay/server/RelayServerNodeTransfer.cs b/src/linker.messenger.relay/server/RelayServerNodeTransfer.cs index 96dc736d..1b6c04fe 100644 --- a/src/linker.messenger.relay/server/RelayServerNodeTransfer.cs +++ b/src/linker.messenger.relay/server/RelayServerNodeTransfer.cs @@ -376,12 +376,12 @@ namespace linker.messenger.relay.server Name = node.Name, Public = node.Public, MaxBandwidth = node.MaxBandwidth, - BandwidthRatio = Math.Round(node.MaxBandwidthTotal == 0 ? 0 : diff / 5 / node.MaxBandwidthTotal, 2), + BandwidthRatio = Math.Round(diff / 5, 2), MaxBandwidthTotal = node.MaxBandwidthTotal, MaxGbTotal = node.MaxGbTotal, MaxGbTotalLastBytes = node.MaxGbTotalLastBytes, MaxConnection = node.MaxConnection, - ConnectionRatio = Math.Round(node.MaxConnection == 0 ? 0 : connectionNum / 2.0 / node.MaxConnection, 2), + ConnectionRatio = Math.Round(connectionNum / 2.0), EndPoint = endPoint }; diff --git a/src/linker.messenger.serializer.memorypack/Entry.cs b/src/linker.messenger.serializer.memorypack/Entry.cs index 4d748e06..5822fde3 100644 --- a/src/linker.messenger.serializer.memorypack/Entry.cs +++ b/src/linker.messenger.serializer.memorypack/Entry.cs @@ -51,6 +51,7 @@ namespace linker.messenger.serializer.memorypack MemoryPackFormatterProvider.Register(new RelayTestInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayInfoFormatter()); + MemoryPackFormatterProvider.Register(new RelayServerNodeUpdateInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayServerNodeReportInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayAskResultInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayCacheInfoFormatter()); diff --git a/src/linker.messenger.serializer.memorypack/RelaySerializer.cs b/src/linker.messenger.serializer.memorypack/RelaySerializer.cs index fb5381a4..4870a2b7 100644 --- a/src/linker.messenger.serializer.memorypack/RelaySerializer.cs +++ b/src/linker.messenger.serializer.memorypack/RelaySerializer.cs @@ -150,6 +150,78 @@ namespace linker.messenger.serializer.memorypack } } + [MemoryPackable] + public readonly partial struct SerializableRelayServerNodeUpdateInfo + { + [MemoryPackIgnore] + public readonly RelayServerNodeUpdateInfo info; + + [MemoryPackInclude] + string Name => info.Name; + [MemoryPackInclude] + int MaxConnection => info.MaxConnection; + [MemoryPackInclude] + double MaxBandwidth => info.MaxBandwidth; + [MemoryPackInclude] + double MaxBandwidthTotal => info.MaxBandwidthTotal; + [MemoryPackInclude] + double MaxGbTotal => info.MaxGbTotal; + [MemoryPackInclude] + long MaxGbTotalLastBytes => info.MaxGbTotalLastBytes; + [MemoryPackInclude] + bool Public => info.Public; + + [MemoryPackConstructor] + SerializableRelayServerNodeUpdateInfo( + string name, + int maxConnection, double maxBandwidth, double maxBandwidthTotal, + double maxGbTotal, long maxGbTotalLastBytes, + bool Public) + { + var info = new RelayServerNodeUpdateInfo + { + MaxBandwidth = maxBandwidth, + MaxBandwidthTotal = maxBandwidthTotal, + MaxConnection = maxConnection, + MaxGbTotal = maxGbTotal, + MaxGbTotalLastBytes = maxGbTotalLastBytes, + Name = name, + Public = Public + }; + this.info = info; + } + + public SerializableRelayServerNodeUpdateInfo(RelayServerNodeUpdateInfo info) + { + this.info = info; + } + } + public class RelayServerNodeUpdateInfoFormatter : MemoryPackFormatter + { + public override void Serialize(ref MemoryPackWriter writer, scoped ref RelayServerNodeUpdateInfo value) + { + if (value == null) + { + writer.WriteNullObjectHeader(); + return; + } + + writer.WritePackable(new SerializableRelayServerNodeUpdateInfo(value)); + } + + public override void Deserialize(ref MemoryPackReader reader, scoped ref RelayServerNodeUpdateInfo value) + { + if (reader.PeekIsNull()) + { + reader.Advance(1); // skip null block + value = null; + return; + } + + var wrapped = reader.ReadPackable(); + value = wrapped.info; + } + } [MemoryPackable] diff --git a/src/linker.messenger.store.file/relay/RelayServerCdkeyStore.cs b/src/linker.messenger.store.file/relay/RelayServerCdkeyStore.cs index 53ce4a57..807572a1 100644 --- a/src/linker.messenger.store.file/relay/RelayServerCdkeyStore.cs +++ b/src/linker.messenger.store.file/relay/RelayServerCdkeyStore.cs @@ -29,6 +29,7 @@ namespace linker.messenger.store.file.relay info.Id = ObjectId.NewObjectId().ToString(); info.AddTime = DateTime.Now; info.UseTime = DateTime.Now; + info.StartTime = DateTime.Now; info.LastBytes = info.MaxBytes; info.CdkeyId = YitIdHelper.NextId(); info.OrderId = $"Linker{YitIdHelper.NextId()}"; @@ -60,7 +61,7 @@ namespace linker.messenger.store.file.relay RelayServerCdkeyOrderInfo order = result.Cdkey.DeJson(); result.Order = order; - if (order.WidgetUserId != info.UserId) + if (order.WidgetUserId != info.UserId || string.IsNullOrWhiteSpace(order.WidgetUserId)) { error.Add("UserId"); } @@ -106,36 +107,33 @@ namespace linker.messenger.store.file.relay } RelayServerCdkeyOrderInfo order = test.Order; var time = Regex.Match(order.Time, regex).Groups; - for (int i = 0; i < order.Count; i++) + RelayServerCdkeyStoreInfo store = new RelayServerCdkeyStoreInfo { - RelayServerCdkeyStoreInfo store = new RelayServerCdkeyStoreInfo - { - UseTime = DateTime.Now, - AddTime = DateTime.Now, - Bandwidth = order.Speed, - CostPrice = order.CostPrice, - EndTime = DateTime.Now - .AddYears(int.Parse(time[1].Value)) - .AddMonths(int.Parse(time[2].Value)) - .AddDays(int.Parse(time[3].Value)) - .AddHours(int.Parse(time[4].Value)) - .AddMinutes(int.Parse(time[5].Value)) - .AddSeconds(int.Parse(time[6].Value)), - LastBytes = order.Speed * 1024 * 1024 * 1024, - MaxBytes = order.Speed * 1024 * 1024 * 1024, - Price = order.Price, - Remark = "order", - StartTime = DateTime.Now, - UserId = order.WidgetUserId, - CdkeyId = YitIdHelper.NextId(), - Contact = order.Contact, - OrderId = order.OrderId, - PayPrice = order.PayPrice, - UserPrice = order.UserPrice, - Id = ObjectId.NewObjectId().ToString() - }; - liteCollection.Insert(store); - } + UseTime = DateTime.Now, + AddTime = DateTime.Now, + Bandwidth = order.Speed, + CostPrice = order.CostPrice, + EndTime = DateTime.Now + .AddYears(int.Parse(time[1].Value)) + .AddMonths(int.Parse(time[2].Value)) + .AddDays(int.Parse(time[3].Value)) + .AddHours(int.Parse(time[4].Value)) + .AddMinutes(int.Parse(time[5].Value)) + .AddSeconds(int.Parse(time[6].Value)), + LastBytes = order.Speed * 1024 * 1024 * 1024 * order.Count, + MaxBytes = order.Speed * 1024 * 1024 * 1024 * order.Count, + Price = order.Price, + Remark = "order", + StartTime = DateTime.Now, + UserId = order.WidgetUserId, + CdkeyId = YitIdHelper.NextId(), + Contact = order.Contact, + OrderId = order.OrderId, + PayPrice = order.PayPrice, + UserPrice = order.UserPrice, + Id = ObjectId.NewObjectId().ToString() + }; + liteCollection.Insert(store); return await Task.FromResult(true); } diff --git a/src/linker.messenger.store.file/relay/RelayServerNodeStore.cs b/src/linker.messenger.store.file/relay/RelayServerNodeStore.cs index 3bbd764b..8a66e794 100644 --- a/src/linker.messenger.store.file/relay/RelayServerNodeStore.cs +++ b/src/linker.messenger.store.file/relay/RelayServerNodeStore.cs @@ -22,6 +22,17 @@ namespace linker.messenger.store.file.relay { config.Data.Server.Relay.Distributed.Node = node; } + public void UpdateInfo(RelayServerNodeUpdateInfo update) + { + config.Data.Server.Relay.Distributed.Node.Name = update.Name; + config.Data.Server.Relay.Distributed.Node.MaxConnection = update.MaxConnection; + config.Data.Server.Relay.Distributed.Node.MaxBandwidth = update.MaxBandwidth; + config.Data.Server.Relay.Distributed.Node.MaxBandwidthTotal = update.MaxBandwidthTotal; + config.Data.Server.Relay.Distributed.Node.MaxGbTotal = update.MaxGbTotal; + config.Data.Server.Relay.Distributed.Node.MaxGbTotalLastBytes = update.MaxGbTotalLastBytes; + config.Data.Server.Relay.Distributed.Node.Public = update.Public; + + } public void SetMaxGbTotalLastBytes(long value) { config.Data.Server.Relay.Distributed.Node.MaxGbTotalLastBytes=value; diff --git a/src/linker.web/src/apis/relay.js b/src/linker.web/src/apis/relay.js index 4e41058f..d1eb99cf 100644 --- a/src/linker.web/src/apis/relay.js +++ b/src/linker.web/src/apis/relay.js @@ -23,4 +23,7 @@ export const relayCdkeyDel = (data) => { } export const relayCdkeyMy = (data) => { return sendWebsocketMsg('relay/MyCdkey', data); +} +export const relayCdkeyTest = (data) => { + return sendWebsocketMsg('relay/TestCdkey', data); } \ No newline at end of file diff --git a/src/linker.web/src/lang/en-us.js b/src/linker.web/src/lang/en-us.js index 1221fb87..a0152c8c 100644 --- a/src/linker.web/src/lang/en-us.js +++ b/src/linker.web/src/lang/en-us.js @@ -141,7 +141,7 @@ export default { 'server.relayCdkeyPayPrice': 'Pay price', 'server.relayCdkeyCostPrice': 'Cost price', 'server.relayCdkeyUserPrice': 'User price', - 'server.relayCdkeyOrderId': 'Order No', + 'server.relayCdkeyOrderId': 'OrderNo', 'server.relayCdkeyContact': 'Email', 'server.relayCdkeyRemark': 'Remark', @@ -161,6 +161,14 @@ export default { 'server.relayCdkeyOper': 'Oper', 'server.relayCdkeyDelConfirm': 'Are you sure to delete?', + 'server.relayCdkeyFlagAll': 'All', + 'server.relayCdkeyFlagTimein': 'In end time', + 'server.relayCdkeyFlagTimeout': 'Out end time', + 'server.relayCdkeyFlagBytesin': 'Has bytes', + 'server.relayCdkeyFlagBytesout': 'Not have bytes', + 'server.relayCdkeyFlagDeleted': 'Deleted', + 'server.relayCdkeyFlagUnDeleted': 'Not deleted', + 'server.sforwardSecretKey': 'Server forward secretKey', 'server.sforwardText': 'The server forward can be used when the key is correct', diff --git a/src/linker.web/src/lang/zh-cn.js b/src/linker.web/src/lang/zh-cn.js index 6216ba28..309deb2b 100644 --- a/src/linker.web/src/lang/zh-cn.js +++ b/src/linker.web/src/lang/zh-cn.js @@ -164,6 +164,35 @@ export default { 'server.relayCdkeyOper': '操作', 'server.relayCdkeyDelConfirm': '确认删除吗?', + 'server.relayCdkeyFlagAll': '全部', + 'server.relayCdkeyFlagTimein': '有效期内', + 'server.relayCdkeyFlagTimeout': '有效期外', + 'server.relayCdkeyFlagBytesin': '剩余', + 'server.relayCdkeyFlagBytesout': '已用完', + 'server.relayCdkeyFlagDeleted': '已删除', + 'server.relayCdkeyFlagUnDeleted': '未删除', + + 'server.relayCdkeyTestTitle': '测试解密CDKEY', + 'server.relayCdkeyTestKey': 'CDKEY', + 'server.relayCdkeyTestGB': '流量', + 'server.relayCdkeyTestGBError': '流量要大于0', + 'server.relayCdkeyTestSpeed': '带宽Mbps', + 'server.relayCdkeyTestSpeedError': '带宽要大于0', + 'server.relayCdkeyTestTime': '持续时间', + 'server.relayCdkeyTestTimeError': '格式错误', + 'server.relayCdkeyTestUserId': '用户标识', + 'server.relayCdkeyTestUserIdError': '用户标识不正确', + 'server.relayCdkeyTestOrderId': '订单', + 'server.relayCdkeyTestOrderIdError': '订单号不能为空', + 'server.relayCdkeyTestContact': '联系方式', + 'server.relayCdkeyTestCostPrice': '成本', + 'server.relayCdkeyTestPrice': '原价', + 'server.relayCdkeyTestUserPrice': '会员价', + 'server.relayCdkeyTestPayPrice': '支付', + 'server.relayCdkeyTestCount': '数量', + 'server.relayCdkeyTestCountError': '数量要大于0', + 'server.relayCdkeyTestParseError': '解密失败', + 'server.sforwardSecretKey': '服务器穿透密钥', 'server.sforwardText': '当密钥正确是可用', diff --git a/src/linker.web/src/views/full/server/RelayServers.vue b/src/linker.web/src/views/full/server/RelayServers.vue index 0f2b67a6..58a65baf 100644 --- a/src/linker.web/src/views/full/server/RelayServers.vue +++ b/src/linker.web/src/views/full/server/RelayServers.vue @@ -31,20 +31,19 @@ {{ scope.row.MaxBandwidth }}Mbps - + - + - - - diff --git a/src/linker.web/src/views/full/server/relayCdkey/Add.vue b/src/linker.web/src/views/full/server/relayCdkey/Add.vue new file mode 100644 index 00000000..d1cdbb03 --- /dev/null +++ b/src/linker.web/src/views/full/server/relayCdkey/Add.vue @@ -0,0 +1,139 @@ + + + + \ No newline at end of file diff --git a/src/linker.web/src/views/full/server/relayCdkey/Flags.vue b/src/linker.web/src/views/full/server/relayCdkey/Flags.vue new file mode 100644 index 00000000..1c1d8550 --- /dev/null +++ b/src/linker.web/src/views/full/server/relayCdkey/Flags.vue @@ -0,0 +1,50 @@ + + + + + \ No newline at end of file diff --git a/src/linker.web/src/views/full/server/relayCdkey/Index.vue b/src/linker.web/src/views/full/server/relayCdkey/Index.vue index 9aa0e022..f29b6d60 100644 --- a/src/linker.web/src/views/full/server/relayCdkey/Index.vue +++ b/src/linker.web/src/views/full/server/relayCdkey/Index.vue @@ -20,7 +20,7 @@ export default { const state = reactive({ hasRelayCdkey:false, showManager:false, - showMy:false + showMy:true }); onMounted(()=>{ diff --git a/src/linker.web/src/views/full/server/relayCdkey/Manager.vue b/src/linker.web/src/views/full/server/relayCdkey/Manager.vue index 6bf5e64a..d0bf6aac 100644 --- a/src/linker.web/src/views/full/server/relayCdkey/Manager.vue +++ b/src/linker.web/src/views/full/server/relayCdkey/Manager.vue @@ -1,21 +1,29 @@ - - + @@ -72,105 +79,26 @@ - -
- - - - - - Mbps - - - GB - MB - KB - B - - - -

- {{$t('server.relayCdkeyYear')}} - {{$t('server.relayCdkeyMonth')}} - {{$t('server.relayCdkeyDay')}} -

-

- {{$t('server.relayCdkeyHour')}} - {{$t('server.relayCdkeyMin')}} - {{$t('server.relayCdkeySec')}} -

-
- - - - {{ $t('server.relayCdkeyPrice') }} - - {{ $t('server.relayCdkeyUserPrice') }} - - {{ $t('server.relayCdkeyPayPrice') }} - - - - - - - - - - - - - - - - - - -
- 取消 - 确认 -
-
-
-
-
+ + \ No newline at end of file diff --git a/src/linker/Program.cs b/src/linker/Program.cs index 6d698d21..0f8d17be 100644 --- a/src/linker/Program.cs +++ b/src/linker/Program.cs @@ -2,6 +2,8 @@ using System.ServiceProcess; using System.Diagnostics; using linker.messenger.entry; +using linker.tunnel; +using linker.messenger.relay.client; namespace linker { @@ -56,6 +58,7 @@ namespace linker LinkerMessengerEntry.Build(); LinkerMessengerEntry.Setup(ExcludeModule.None); + LoggerHelper.Instance.Warning($"current version : {VersionHelper.version}"); LoggerHelper.Instance.Warning($"linker env is docker : {Environment.GetEnvironmentVariable("SNLTTY_LINKER_IS_DOCKER")}"); LoggerHelper.Instance.Warning($"linker env os : {System.Runtime.InteropServices.RuntimeInformation.OSDescription}"); diff --git a/version.txt b/version.txt index 5e43fb9e..d97e4173 100644 --- a/version.txt +++ b/version.txt @@ -1,5 +1,5 @@ v1.6.9 -2025-03-08 01:56:41 +2025-03-08 19:25:04 1. 优化linux下路由跟踪问题 2. 优化linux下获取本机IP问题 3. 增加ICS,让win7+、win server2008+支持NAT