using molilian.core;
using dodohold.core;
using Microsoft.AspNetCore.Mvc;
using Org.BouncyCastle.Ocsp;
using System.Text.Json;
using System.Runtime.InteropServices;
using System.Net;
using System.Security.Cryptography;
using Microsoft.AspNetCore.Authentication;
using TencentCloud.Ecm.V20190719.Models;
namespace molilian.api.Controllers
{
[ApiController]
[Route("[controller]/[action]")]
public class TkController : ControllerBase
{
protected IHttpContextAccessor _accessor;
public TkController(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
///
/// oppo调用
///
/// 正文
/// 渠道。tb/jd
/// 分配的客户端账号
/// 11位时间戳
/// 签名
/// 客户的IP
/// 客户的唯一ID
///
[HttpPost]
public async Task unionParse([FromBody] JsonElement form, [FromQuery] string a = "", [FromQuery] int t = 0, [FromQuery] string sign = "")
{
//正文
var content = form.Read("s", string.Empty);
var channel = form.Read("c", string.Empty);
var ip = form.Read("ip", string.Empty);
var oaid = form.Read("oaid", string.Empty);
//验证签名
if (string.IsNullOrEmpty(a) || string.IsNullOrEmpty(sign))
{
return new APIResult(new { success = false, message = "验证错误" }, APIResultCodeEnum.Unauthorized);
}
DateTime time1 = t.Convert2Datetime();
if (time1 < DateTime.Now.AddMinutes(-10))
{
return new APIResult(new { success = false, message = "验证错误2" }, APIResultCodeEnum.Unauthorized);
}
var account = ApiAccountCore.GetOne(a);
if (account == null)
{
return new APIResult(new { success = false, message = "验证错误3" }, APIResultCodeEnum.Unauthorized);
}
string app_sign = $"{account.api_secret}@{t}".MD5();
if (sign != app_sign)
{
return new APIResult(new { success = false, message = "验证错误4" }, APIResultCodeEnum.Unauthorized);
}
return await UnionParseCore.UnionParseAsync(content, channel, ip, oaid);
}
[HttpPost]
public async Task unsafeParse([FromBody] JsonElement form)
{
var content = form.Read("s", string.Empty);
var channel = form.Read("c", string.Empty);
var ip = form.Read("ip", string.Empty);
var oaid = form.Read("oaid", string.Empty);
// var count = form.Read("i", 1);
//#if DEBUG
// ActionResult result = null;
// for (var i = 0; i < count; i++)
// {
// result = await UnionParseCore.UnionParseAsync(content, channel, ip, oaid);
// }
// if (result != null) return result;
// return new APIResult(new
// {
// success = true,
// message = "ok"
// });
//#else
return await UnionParseCore.UnionParseAsync(content, channel, ip, oaid);
//#endif
}
///
/// 第三方调用
///
///
///
///
[HttpGet]
public async Task parse(string s, string s2 = "", string ip = "", string oaid = "")
{
AlimamaPlus alimama = null;
ip = AlimamaPlus.OppoDecode(ip);
oaid = AlimamaPlus.OppoDecode(oaid);
var result = AlimamaPlus.GetFormattedObject(s, ip, oaid);
string body = "";
string content = s.UrlDecode();
string content2 = s2.UrlDecode();
string account_name = string.Empty;
result.rawContent = content;
result.rawContent2 = content2;
try
{
if (AlimamaPlus.ShouldIgnoreRequest(ip, oaid, out string reason))
{
result.success = false;
result.message = "放弃转链";
result.reason = reason;
_ = TkLogCore.LogAsync(result);
return new APIResult(new
{
result.success,
result.message,
result.content,
result.couponAmount,
result.taoToken,
result.shortLinkurl,
result.deeplink_url,
});
}
var account = TkPoolCore.GetOne();
if (account == null)
{
result.success = false;
result.message = "放弃转链";
result.reason = "没有匹配账号";
_ = TkLogCore.LogAsync(result);
return new APIResult(new
{
result.success,
result.message,
result.content,
result.couponAmount,
result.taoToken,
result.shortLinkurl,
result.deeplink_url,
});
}
account_name = account.name;
alimama = new AlimamaPlus(account);
if (alimama.ShouldIgnoreOtherAff(s2))
{
result.success = false;
result.message = "放弃转链";
result.reason = "其他推广链接";
_ = TkLogCore.LogAsync(result);
return new APIResult(new
{
result.success,
result.message,
result.content,
result.couponAmount,
result.taoToken,
result.shortLinkurl,
result.deeplink_url,
});
}
result = await alimama.UnionParseAsync(content, result);
}
catch (Exception ex)
{
if (ex.Message.Contains("A task was canceled"))
{
result.success = false;
result.message = "放弃转链";
result.reason = "请求超时";
}
else
{
new LoggerLibrary("api_error", "parse")
.Info(s, s2)
.Info($"【taobao】{account_name}", body)
.Info(ex.Message, ex.StackTrace)
.Save();
NotifyCore.Notify(new NifyMessage
{
message = $"【转链接口异常】{account_name}\n{content}\n{content2}\n{body}\n\n{ex.Message}\n{ex.StackTrace}",
priority = NifyMessagePriority.high,
tags = ["red_circle"]
});
result.success = false;
result.message = "放弃转链";
result.reason = "转链接口异常";
}
}
_ = TkLogCore.LogAsync(result, alimama);
return new APIResult(new
{
result.success,
result.message,
result.content,
result.couponAmount,
result.taoToken,
result.shortLinkurl,
result.deeplink_url,
});
}
[HttpGet]
public ActionResult parse2(string s, string s2 = "", string ip = "", string oaid = "")
{
AlimamaPlus alimama = null;
ip = AlimamaPlus.OppoDecode(ip);
oaid = AlimamaPlus.OppoDecode(oaid);
var result = AlimamaPlus.GetFormattedObject(s, ip, oaid);
string body = "";
string content = s.UrlDecode();
string content2 = s2.UrlDecode();
string account_name = string.Empty;
result.rawContent = content;
result.rawContent2 = content2;
try
{
if (AlimamaPlus.ShouldIgnoreRequest(ip, oaid, out string reason))
{
result.success = false;
result.message = "放弃转链";
result.reason = reason;
_ = TkLogCore.LogAsync(result);
return new APIResult(new
{
result.success,
result.message,
result.content,
result.couponAmount,
result.taoToken,
result.shortLinkurl,
result.deeplink_url,
});
}
var account = TkPoolCore.GetOne();
if (account == null)
{
result.success = false;
result.message = "放弃转链";
result.reason = "没有匹配账号";
_ = TkLogCore.LogAsync(result);
return new APIResult(new
{
result.success,
result.message,
result.content,
result.couponAmount,
result.taoToken,
result.shortLinkurl,
result.deeplink_url,
});
}
account_name = account.name;
alimama = new AlimamaPlus(account);
if (alimama.ShouldIgnoreOtherAff(s2))
{
result.success = false;
result.message = "放弃转链";
result.reason = "其他推广链接";
_ = TkLogCore.LogAsync(result);
return new APIResult(new
{
result.success,
result.message,
result.content,
result.couponAmount,
result.taoToken,
result.shortLinkurl,
result.deeplink_url,
});
}
alimama.UnionParse(content, ref result);
//result.ip = ip;
//result.oaid = oaid;
}
catch (Exception ex)
{
new LoggerLibrary("api_error", "parse")
.Info(s, s2)
.Info($"【taobao】{account_name}", body)
.Info(ex.Message, ex.StackTrace)
.Save();
NotifyCore.Notify(new NifyMessage
{
message = $"【转链接口异常】{account_name}\n{content}\n{content2}\n{body}\n\n{ex.Message}\n{ex.StackTrace}",
priority = NifyMessagePriority.high,
tags = ["red_circle"]
});
result.success = false;
result.message = "放弃转链";
result.reason = "转链接口异常";
}
_ = TkLogCore.LogAsync(result, alimama);
return new APIResult(new
{
result.success,
result.message,
result.content,
result.couponAmount,
result.taoToken,
result.shortLinkurl,
result.deeplink_url,
});
}
[HttpGet]
public ActionResult jd_parse(string s, string s2 = "", string ip = "", string oaid = "")
{
var result = JdUnionPlus.GetFormattedObject(s, ip, oaid);
string body = "";
string content = s.UrlDecode();
string content2 = s2.UrlDecode();
try
{
if (AlimamaPlus.ShouldIgnoreRequest(ip, oaid, out string reason))
{
result.success = false;
result.message = "放弃转链";
result.reason = reason;
result.rawContent = content;
result.rawContent2 = content2;
TkLogCore.LogAsync(result);
return new APIResult(result);
}
var api = DataokeCore.GetOne();
if (api == null)
{
result.success = false;
result.message = "放弃转链";
result.reason = "没有匹配账号";
result.rawContent = content;
result.rawContent2 = content2;
TkLogCore.LogAsync(result);
return new APIResult(result);
}
var account = JdPoolCore.GetOne();
if (account == null)
{
result.success = false;
result.message = "放弃转链";
result.reason = "没有匹配账号";
result.rawContent = content;
result.rawContent2 = content2;
TkLogCore.LogAsync(result);
return new APIResult(result);
}
result = DataokeCore.JdParse(result, api, account, content);
}
catch (Exception ex)
{
new LoggerLibrary("api_error")
.Info(s, s2)
.Info("【jd】", body)
.Info(ex.Message, ex.StackTrace)
.Save();
NotifyCore.Notify(new NifyMessage
{
message = $"【转链接口异常】\n{content}\n{content2}\n{body}\n\n{ex.Message}\n{ex.StackTrace}",
priority = NifyMessagePriority.high,
tags = ["red_circle"]
});
result.success = false;
result.message = "放弃转链";
result.reason = "转链接口异常";
}
result.rawContent = content;
result.rawContent2 = content2;
TkLogCore.LogAsync(result);
return new APIResult(new
{
result.success,
result.message,
result.shortLinkurl,
result.deeplink_url,
});
}
//[HttpGet]
//public Task parse3(string s, string s2, string ip = "", string oaid = "")
//{
// var result = AlimamaPlus.GetFormattedObject(s, ip, oaid);
// string body = "";
// string content = s.UrlDecode();
// string content2 = s2.UrlDecode();
// try
// {
// if (AlimamaPlus.ShouldIgnoreRequest("", ""))
// {
// result.success = false;
// result.message = "放弃转链";
// }
// else
// {
// var account = VeapiPoolCore.GetOne();
// if (account == null)
// {
// result.success = false;
// result.message = "内部错误(500)";
// }
// else
// {
// var core = new VeapiPlus(account.name, account.key, account.sessionKey);
// result = core.UnionParse(content);
// }
// }
// }
// catch (Exception ex)
// {
// NotifyCore.Notify(new NifyMessage
// {
// message = $"【转链接口异常】\n{body}",
// priority = NifyMessagePriority.high,
// tags = ["red_circle"]
// });
// result.success = false;
// result.message = "转链接口异常";
// }
// _ = TkLogCore.Log(content, content2, result);
// return Task.FromResult(new APIResult(result));
//}
[HttpGet("{ignorePercentage}")]
public ActionResult set_ignore(int ignorePercentage = 0)
{
TkConfigCore.Update(ignorePercentage);
return new APIResult(new { success = true, message = "ok" });
}
[HttpGet("{ignorePercentage}")]
public ActionResult set_jd_ignore(int ignorePercentage = 0)
{
TkConfigCore.JdUpdate(ignorePercentage);
return new APIResult(new { success = true, message = "ok" });
}
[HttpGet]
public ActionResult reload()
{
ApiAccountCore.Refresh();
ProxyNodesCore.Refresh();
DataokeCore.Refresh();
JdPoolCore.Refresh();
PangolinPoolCore.Refresh();
TkConfigCore.Refresh();
TkPoolCore.Refresh();
VeapiPoolCore.Refresh();
return new APIResult(new
{
success = true,
message = "ok",
});
}
[HttpPost]
public ActionResult updateCookies([FromBody] JsonElement form)
{
string cookie = form.Read("cookie", string.Empty);
var user_agent = _accessor.HttpContext.Request.UserAgent();
TkPoolCore.UpdateCookies(cookie, user_agent);
return new APIResult(new
{
success = true,
message = "ok"
});
}
[HttpGet]
public async Task dplist([FromQuery] string query = "", [FromQuery] string a = "", [FromQuery] int t = 0, [FromQuery] string sign = "")
{
query = "";
//验证签名
if (string.IsNullOrEmpty(a) || string.IsNullOrEmpty(sign))
{
return new APIResult(new { success = false, message = "验证错误" }, APIResultCodeEnum.Unauthorized);
}
DateTime time1 = t.Convert2Datetime();
if (time1 < DateTime.Now.AddMinutes(-10))
{
return new APIResult(new { success = false, message = "验证错误2" }, APIResultCodeEnum.Unauthorized);
}
var account = ApiAccountCore.GetOne(a);
if (account == null)
{
return new APIResult(new { success = false, message = "验证错误3" }, APIResultCodeEnum.Unauthorized);
}
string app_sign = $"{account.api_secret}@{t}".MD5();
if (sign != app_sign)
{
return new APIResult(new { success = false, message = "验证错误4" }, APIResultCodeEnum.Unauthorized);
}
List