using Bro.Common.Helper; using SuperDog; using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Diagnostics; using System.Linq; using System.Net; using System.Net.Sockets; using System.ServiceProcess; using System.Text; using System.Threading; using System.Threading.Tasks; namespace AuthorityService { public partial class AuthorityService : ServiceBase { public AuthorityService() { InitializeComponent(); } Timer authorityCheckTimer = null; UdpClient client = null; const string OK = "AuthorityOK"; const string NG = "AuthorityNG"; LoggerHelper logHelper = null; protected override void OnStart(string[] args) { logHelper = new LoggerHelper(AppDomain.CurrentDomain.BaseDirectory, "AuthorityServiceLog"); authorityCheckTimer = new Timer(OnAuthorityCheck, null, 1000 * 60, 1000 * 60); int port = 11001; if (!int.TryParse(ConfigurationManager.AppSettings["Port"], out port)) { port = 11001; } client = new UdpClient(port); client.EnableBroadcast = true; client.BeginReceive(OnRequestReceived, null); } private void OnRequestReceived(IAsyncResult ar) { try { IPEndPoint remoteIP = null; var data = client.EndReceive(ar, ref remoteIP); if (System.Text.Encoding.UTF8.GetString(data) == "AuthorityCheck") { var respond = System.Text.Encoding.UTF8.GetBytes(DogStatus == DogStatus.StatusOk ? OK : NG); client.Send(respond, respond.Length, remoteIP); } } catch (Exception ex) { logHelper.LogAsync(DateTime.Now, "通信异常", ex.Message); } finally { client.BeginReceive(OnRequestReceived, null); } } DogStatus DogStatus = DogStatus.StatusOk; private void OnAuthorityCheck(object state) { try { DogFeature feature = new DogFeature(1); using (var dog = new Dog(feature)) { string vendorCodes = "FIgWctNxfC4kOOrFk52ktOm6JBRreMTI2ckQRUwjJmzstXN2awbyKGfjdlWcKFpjMiJRwirzPlJKSThN1nC7axSY4Y9l5+aRzCYI8WoYFmtx4zBx2n1fQ9Rb/CGk99Z9mM5mpZQVH+PGmZGsEjfSBdY12HjIcPVHGmMyecskMlhIGxDqUg8ndCk8/0fqexKbQCffDiGAPbxZgxKlRAnxJFOwd1V2Hmq3Iln1YNhyRRbgudU7kPCY/RsxBKXtL4wym96d2jQNDcKV8A5Anb4UlSLbac7OcrCZEBSUTpMjyDYRvDWFWTmfVKX9/vuI4VvKjr2t/wt01Nu0tQ0a4AVtQZk+l13WZkwkkeOUh6gtvVFJZH61hpwhOOjnN9dNw8WSYBYC/NyaMjiv7yRVHt9K/Bs76T8I0ias55BP1GXe6C+zGJ9KXK+baCLojMTObj3Bs9JFhDwEDgEjRDCxz9POZnE3XPe/2ET4KbRP5cXZsX7rxbnwQ33E/cKcG1hidG3RTLu7d+IRob9vgpeeUYXB8OHSoReJBsjhJEWBCDko9YnTb1FcO0YwPQdxW0BaVf1n6XAXlPUA6cGP552Kp3F0pcIxVKKGpYUeDL7oIFQrtnJ5aW7mB+/c35BDTCueM8wQIJ3b2KOI+lueC+dbhpHffVgtPnrh/atxcZxUoM2/KxjvniCYtUOKbeYh8Gqn1MDk1bAO2B9KNBrbGuWJpgDTfZunE/ZVtd09clExYJ8NW2Lw6pfNB3nbh1MlRUmmhQPIDubOnjiaBVbCQGF6Nm4/M0aIywSPJCMPaXK0sso5v+EDM4frryOPkvBEAbDyIuU+yQkO9vnYggKLAezyxZNxVqQgXcMaS0WyJxZxjFku7/Os8YU5z54DeOu6zDRD4zAjUKT7JIQcJKvtYGVB5lvirKDqISzDjsHcq4NJyQbQzg462y9o90ljUwCCMJrBmOw4NHpYKTNypN8aCsYmiebwag=="; DogStatus = dog.Login(vendorCodes, ""); } } catch (Exception ex) { logHelper.LogAsync(DateTime.Now, "加密狗检测异常", ex.Message); } } protected override void OnStop() { authorityCheckTimer.Change(-1, -1); authorityCheckTimer.Dispose(); } } }