using System; using System.Net; using System.Net.Sockets; using System.Text; using Comal.Classes; using InABox.Clients; using InABox.Core; using PRSServices; namespace PRSServer; internal class AutoDiscoveryEngine : Engine { public override void Run() { var settings = new AutoDiscoverySettings(); settings.Name = Properties.DisplayName; var urls = Properties.ServerURLs; if (String.IsNullOrWhiteSpace(urls)) { var url = CoreUtils.GetPropertyValue(Properties, "ServerURL") as String; var port = CoreUtils.GetPropertyValue(Properties, "ServerPort"); urls = !String.IsNullOrWhiteSpace(url) ? $"{url}:{port}" : ""; } settings.URLs = urls.Split(';'); settings.Protocol = Properties.Protocol; settings.LibraryLocation = Properties.LibraryLocation; settings.GoogleAPIKey = Properties.GoogleAPIKey; var responseData = Encoding.ASCII.GetBytes(Serialization.Serialize(settings)); while (true) { var server = new UdpClient(8888); var clientEp = new IPEndPoint(IPAddress.Any, 0); var clientRequestData = server.Receive(ref clientEp); Logger.Send(LogType.Information, "", string.Format("Processing Request from {0}", clientEp)); server.Send(responseData, responseData.Length, clientEp); Logger.Send(LogType.Information, "", string.Format("- Sending: {0} bytes", responseData.Length)); server.Close(); Logger.Send(LogType.Information, "", "- Closed"); } } public override void Stop() { } }