/
ivan
/
ModMas
Обзор
Документация
Войти
/
ivan
/
ModMas
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ModuleMaster/wol/wol.aspx
95 строк
4 KB
i.krivokon
Initial commit
13 мар 2026, 13:49
13 мар 2026, 13:49
00d9fb6
Код
Авторство
О чём код?
<%@ Page Language="C#" AutoEventWireup="true" %> <%@ Import Namespace="System.Xml" %> <%@ Import Namespace="System.Net.Sockets" %> <%@ Import Namespace="System.Web.Services" %> <!DOCTYPE html> <script runat="server"> static String XmlFilePath = "wol_hosts.xml"; static XmlDocument _xmlDataSource = null; static object lockXmlDataSourceObject = new object(); static XmlDocument xmlDataSource { get { String key = HttpContext.Current.Request.RawUrl + "_xmlDataSource"; lock (lockXmlDataSourceObject) { if (_xmlDataSource == null) { _xmlDataSource = (XmlDocument)HttpContext.Current.Cache.Get(key); if( _xmlDataSource == null ){ var filename = HttpContext.Current.Server.MapPath(XmlFilePath); if( System.IO.File.Exists(filename) ){ _xmlDataSource = new XmlDocument(); _xmlDataSource.Load( filename ); HttpContext.Current.Cache.Add( key, _xmlDataSource, new CacheDependency(filename), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, new CacheItemRemovedCallback( delegate(String _key, object value, CacheItemRemovedReason reason ){ _xmlDataSource = null; })); } } } } return _xmlDataSource; } } protected void Page_Load(object sender, EventArgs e) { //HostsGridView.DataSource = new XmlDataSource { EnableCaching = true, DataFile = XmlFilePath, XPath = "//host" }; //HostsGridView.DataBind(); Wakeup(0); } private static void WakeUp(byte[] mac, String broadCastAddress) { byte[] packet = new byte[17 * 6]; for (int i = 0; i < 6; i++) packet[i] = 0xFF; for (int i = 1; i <= 16; i++) for (int j = 0; j < 6; j++) packet[i * 6 + j] = mac[j]; System.Net.IPAddress wolIPAddr = String.IsNullOrEmpty(broadCastAddress) ? System.Net.IPAddress.Broadcast : System.Net.IPAddress.Parse(broadCastAddress); int wolPortAddr = 7; System.Net.IPEndPoint wolEndPoint = new System.Net.IPEndPoint(wolIPAddr, wolPortAddr); Socket client = new Socket(wolEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp); try { client.Connect(wolEndPoint); client.Send(packet, 0, packet.Length, SocketFlags.None); } catch (SocketException ex) { throw ex; } finally { client.Close(); } } [WebMethod] static public void Wakeup( int index ) { var xml = xmlDataSource; var node = (XmlElement)xml.SelectSingleNode("//host[" + (index+1).ToString() + "]"); String mac = node.GetAttribute("mac-address"), broadCastAddress = (String) DataBinder.Eval( node.SelectSingleNode("wol[@broadcast-address]/@broadcast-address"), "Value" ); String[] macs = mac.Split(":-".ToCharArray()); byte[] macb = new byte[macs.Length]; for (int i = 0; i < macb.Length; i++) macb[i] = Byte.Parse(macs[i], System.Globalization.NumberStyles.HexNumber); WakeUp(macb, broadCastAddress); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Wake On LAN</title> <script src="//code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script> <!-- Latest compiled and minified CSS --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" type="text/javascript"></script> </head> <body> Magic packet has been sent! </body> </html>