TestController.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. using molilian.core;
  2. using dodohold.core;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Org.BouncyCastle.Ocsp;
  5. using System.Text.Json;
  6. using System.Runtime.InteropServices;
  7. using System.Net;
  8. using System.Threading;
  9. namespace molilian.api.Controllers
  10. {
  11. [ApiController]
  12. [Route("[controller]/[action]")]
  13. public class TestController : ControllerBase
  14. {
  15. protected IHttpContextAccessor _accessor;
  16. public TestController(IHttpContextAccessor accessor)
  17. {
  18. _accessor = accessor;
  19. }
  20. [HttpGet]
  21. public async Task<ActionResult> ip(string ip)
  22. {
  23. string result = IP2RegionPlus.Search(ip);
  24. return new APIResult(new
  25. {
  26. success = true,
  27. message = result
  28. });
  29. }
  30. [HttpGet]
  31. public async Task<ActionResult> testTask()
  32. {
  33. string url = "https://www.taobao.com";
  34. TkDataDTO result = new TkDataDTO();
  35. result.message = "init";
  36. result.success = true;
  37. int timeout = 1000;
  38. using var cts = new CancellationTokenSource();
  39. cts.CancelAfter(timeout);
  40. var requestTask = Task.Run(() => AlimamaPlus.testTaskAsync(result, cts.Token), cts.Token);
  41. var delayTask = Task.Delay(timeout, cts.Token);
  42. var completedTask = await Task.WhenAny(requestTask, delayTask);
  43. if (completedTask == requestTask)
  44. {
  45. result = await requestTask;
  46. }
  47. else
  48. {
  49. cts.Cancel();
  50. result.success = false;
  51. result.message = "放弃转链";
  52. result.reason = "请求超时";
  53. result.itemName = "点击打开淘宝APP";
  54. }
  55. return new APIResult(new
  56. {
  57. success = true,
  58. message = "ok",
  59. result,
  60. });
  61. }
  62. [HttpGet]
  63. public async Task<ActionResult> testThread()
  64. {
  65. // 查看默认的最小和最大线程数
  66. ThreadPool.GetMinThreads(out int defaultMinWorker, out int defaultMinIOC);
  67. ThreadPool.GetMaxThreads(out int defaultMaxWorker, out int defaultMaxIOC);
  68. string tmp = $"Default Min worker threads: {defaultMinWorker}, Min I/O completion threads: {defaultMinIOC}";
  69. string tmp2 = $"Default Max worker threads: {defaultMaxWorker}, Max I/O completion threads: {defaultMaxIOC}";
  70. // 获取当前线程池中可用的工作线程数和 I/O 完成端口线程数
  71. ThreadPool.GetAvailableThreads(out int availableWorkerThreads, out int availableIOCompletionThreads);
  72. string tmp3 = $"Current available worker threads: {availableWorkerThreads}, available I/O completion threads: {availableIOCompletionThreads}";
  73. return new APIResult(new
  74. {
  75. tmp,
  76. tmp2,
  77. tmp3,
  78. });
  79. }
  80. [HttpPost]
  81. public async Task<ActionResult> test1([FromBody] JsonElement form)
  82. {
  83. NotifyCore.Notify(new NifyMessage
  84. {
  85. message = $"【淘宝联盟:test】cookie 掉线",
  86. priority = NifyMessagePriority.high,
  87. tags = ["red_circle"]
  88. });
  89. return new APIResult(new
  90. {
  91. success = true,
  92. message = "ok"
  93. });
  94. }
  95. [HttpGet]
  96. public async Task<ActionResult> xxx()
  97. {
  98. var list = TkPoolCore.List();
  99. if (list == null) return new APIResult(new { success = false, message = "没有有效账号", });
  100. string message = string.Empty;
  101. foreach (var account in list)
  102. {
  103. try
  104. {
  105. var alimama = new AlimamaPlus(account);
  106. alimama.RenewCookie();
  107. }
  108. catch (Exception ex)
  109. {
  110. message = $"【cookie续期】xxxx\n{ex.Message}\n{ex.StackTrace}";
  111. NotifyCore.Notify(new NifyMessage
  112. {
  113. message = message,
  114. priority = NifyMessagePriority.high,
  115. tags = ["red_circle"]
  116. });
  117. continue;
  118. }
  119. }
  120. return new APIResult(new { success = true, message = "ok" });
  121. }
  122. [HttpPost]
  123. public async Task<ActionResult> Upfile(IFormFile file, [FromQuery] string dir = "")
  124. {
  125. // 检查文件是否为空
  126. if (file == null || file.Length == 0) throw new APIException("无效文件");
  127. using MemoryStream stream = new();
  128. file.CopyTo(stream);
  129. var bytes = stream.ToArray();
  130. var result = await ImageHostingPlus.Dianping(file.FileName, bytes);
  131. //result = ImageHostingPlus.Dianping2(file);
  132. return new APIResult(new { data = result });
  133. }
  134. }
  135. }