83 lines
3.0 KiB
C#
83 lines
3.0 KiB
C#
using Medusa.Core.Attributes;
|
|
using System.Xml.Linq;
|
|
|
|
namespace Medusa.Core.Handlers.Boot
|
|
{
|
|
[Handler("services", "get")]
|
|
public class GetServicesHandler(ILogger<GetServicesHandler> logger, XDocument body) : IHandler
|
|
{
|
|
private readonly ILogger<GetServicesHandler> _logger = logger;
|
|
private readonly XDocument _body = body;
|
|
private const string CommonUrl = "http://localhost:5293/service/services/";
|
|
|
|
public Task<XDocument> HandleAsync(string model)
|
|
{
|
|
var services = CreateCoreServicesElement();
|
|
|
|
switch(model.Split(":")[0])
|
|
{
|
|
case "KFC":
|
|
AddKfcServices(services);
|
|
break;
|
|
case "MDX":
|
|
AddMdxServices(services);
|
|
break;
|
|
}
|
|
|
|
var document = new XDocument(new XElement("response", services));
|
|
return Task.FromResult(document);
|
|
}
|
|
|
|
private static XElement CreateCoreServicesElement()
|
|
{
|
|
var services = new XElement("services",
|
|
new XAttribute("expire", "3600"),
|
|
new XAttribute("method", "get"),
|
|
new XAttribute("mode", "operation"),
|
|
new XAttribute("status", "0"));
|
|
|
|
var coreServices = new string[]{
|
|
"cardmng", "facility", "message", "numbering", "package", "pcbevent", "pcbtracker", "pkglist",
|
|
"posevent", "userdata", "userid", "eacoin", "dlstatus", "netlog", "info", "reference", "sidmgr"
|
|
};
|
|
|
|
foreach(var service in coreServices)
|
|
{
|
|
services.Add(new XElement("item",
|
|
new XAttribute("name", service),
|
|
new XAttribute("url", $"{CommonUrl}{service}")));
|
|
}
|
|
|
|
services.Add(new XElement("item", new XAttribute("name", "ntp"),
|
|
new XAttribute("url", "ntp://pool.ntp.org/")));
|
|
|
|
services.Add(new XElement("item", new XAttribute("name", "keepalive"),
|
|
new XAttribute("url",
|
|
"http://127.0.0.1/keepalive?pa=127.0.0.1&ia=127.0.0.1&ga=127.0.0.1&ma=127.0.0.1&t1=2&t2=10")));
|
|
|
|
return services;
|
|
}
|
|
|
|
private static void AddKfcServices(XElement services)
|
|
{
|
|
const string sdvxurl = "http://127.0.0.1/service/services/sdvx";
|
|
string[] kfcServices = [
|
|
"local", "local2", "lobby", "slocal", "slocal2", "sglocal", "sglocal2", "lab", "globby",
|
|
"slobby", "sglobby"
|
|
];
|
|
|
|
foreach(string service in kfcServices)
|
|
services.Add(new XElement("item", new XAttribute("name", service), new XAttribute("url", sdvxurl)));
|
|
}
|
|
|
|
private static void AddMdxServices(XElement services)
|
|
{
|
|
const string mdxurl = "http://127.0.0.1/service/services/ddr";
|
|
string[] mdxServices = ["local"];
|
|
|
|
foreach(string service in mdxServices)
|
|
services.Add(new XElement("item", new XAttribute("name", service), new XAttribute("url", mdxurl)));
|
|
}
|
|
}
|
|
}
|