| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using DaJiaoYan.Utils;
- using System.Net;
- using System.Text.RegularExpressions;
- using System.Threading;
- namespace DaJiaoYan.Services
- {
- internal class Instance
- {
- public static void Run()
- {
- Functions.UUIDBackgroundFunc();
- FileExts.CheckDirectory(Variables.Const.TMP_PATH, true);
- InitHttpServer();
- }
- public static void InitHttpServer()
- {
- AsyncHttpServer httpServer = new AsyncHttpServer(Variables.Const.TMP_PATH);
- httpServer.RegisterMiddleware((HttpListenerRequest request, HttpListenerResponse response) =>
- {
- // cors middleware
- string origin = request.Headers.Get("origin");
- //string referer = request.Headers.Get("referer");
- if (!string.IsNullOrEmpty(origin))
- {
- var m = Regex.Match(origin, @"(https?:\/\/([^/]*\.dajiaoyan.com|dajiaoyan.com))", RegexOptions.IgnoreCase);
- if (m.Success)
- {
- response.Headers.Add("Access-Control-Allow-Credentials", "true");
- response.Headers.Add("Access-Control-Allow-Origin", origin);
- }
- }
- return true;
- });
- httpServer.RegisterMiddleware((HttpListenerRequest request, HttpListenerResponse response) =>
- {
- // options middleware
- response.StatusCode = 200;
- if (string.Equals(request.HttpMethod, "OPTIONS", System.StringComparison.OrdinalIgnoreCase))
- {
- response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, PATCH, OPTIONS, PUT, DELETE");
- response.Headers.Add("Access-Control-Allow-Headers", "AppName,AppVersion,Authorization,Platform");
- return false;
- }
- return true;
- });
- httpServer.RegisterPrefix("/ping", new PingHandler(httpServer));
- httpServer.RegisterPrefix("/scanners", new ScannerHandler(httpServer));
- httpServer.RegisterPrefix("/scan", new ScanHandler(httpServer));
- httpServer.RegisterPrefix("/upload", new UploadHandler(httpServer));
- new Thread(State => { _ = httpServer.StartAsync(); })
- {
- IsBackground = true
- }.Start();
- }
- }
- }
|