Web server mod for Techblox to run commands
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

40 Zeilen
1.1KB

  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. namespace TBConsole
  5. {
  6. public class WebServer
  7. {
  8. private bool _running;
  9. private readonly HttpListener _listener = new HttpListener();
  10. private Func<string, string> _receiver;
  11. public WebServer(Func<string, string> receiver) => _receiver = receiver;
  12. public void Start()
  13. {
  14. _running = true;
  15. KeepListening();
  16. }
  17. public void Stop()
  18. {
  19. _running = false;
  20. _listener.Stop();
  21. }
  22. private async void KeepListening()
  23. {
  24. _listener.Prefixes.Add("http://localhost:8019/");
  25. _listener.Start();
  26. while (_running)
  27. {
  28. var context = await _listener.GetContextAsync();
  29. string resp = _receiver(await new StreamReader(context.Request.InputStream).ReadToEndAsync());
  30. var sw = new StreamWriter(context.Response.OutputStream);
  31. await sw.WriteLineAsync(resp);
  32. sw.Close();
  33. }
  34. }
  35. }
  36. }