Reply to thread

Using Wake On Lan in plugins.


Extract the server IP from the UNC path ("\\server\share") and store the MAC address in MediaPortal.xml

Use it in configure.exe or setting screen of your plugin.


[CODE=C#]    private void SaveMAC(string uncPath)

    {

      String macAddress;

      byte[] hwAddress;


      WakeOnLanManager wakeOnLanManager = new WakeOnLanManager();


      IPAddress ipAddress = null;

      string hostName = Util.Utils.GetServerNameFromUNCPath(uncPath);


      using (Profile.Settings xmlreader = new MPSettings())

      {

        macAddress = xmlreader.GetValueAsString("macAddress", hostName, null);

      }


      if (wakeOnLanManager.Ping(hostName, 100) && !string.IsNullOrEmpty(macAddress))

      {

        Log.Debug("WakeUpServer: The {0} server already started and mac address is learnt!", hostName);

        return;

      }


      // Check if we already have a valid IP address stored,

      // otherwise try to resolve the IP address

      if (!IPAddress.TryParse(hostName, out ipAddress))

      {

        // Get IP address of the server

        try

        {

          IPAddress[] ips;


          ips = Dns.GetHostAddresses(hostName);


          Log.Debug("WakeUpServer: WOL - GetHostAddresses({0}) returns:", hostName);


          foreach (IPAddress ip in ips)

          {

            Log.Debug("    {0}", ip);


            ipAddress = ip;

            // Check for valid IP address

            if (ipAddress != null)

            {

              // Update the MAC address if possible

              hwAddress = wakeOnLanManager.GetHardwareAddress(ipAddress);


              if (wakeOnLanManager.IsValidEthernetAddress(hwAddress))

              {

                Log.Debug("WakeUpServer: WOL - Valid auto MAC address: {0:x}:{1:x}:{2:x}:{3:x}:{4:x}:{5:x}"

                  , hwAddress[0], hwAddress[1], hwAddress[2], hwAddress[3], hwAddress[4], hwAddress[5]);


                // Store MAC address

                macAddress = BitConverter.ToString(hwAddress).Replace("-", ":");


                Log.Debug("WakeUpServer: WOL - Store MAC address: {0}", macAddress);


                using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.MPSettings())

                {

                  xmlwriter.SetValue("macAddress", hostName, macAddress);

                }

              }

              else

              {

                Log.Debug("WakeUpServer: WOL - Not a valid IPv4 address: {0}", ipAddress);

              }

            }

          }

        }

        catch (Exception ex)

        {

          Log.Error("WakeUpServer: WOL - Failed GetHostAddress - {0}", ex.Message);

        }

      }

    }[/CODE]



Wake up the server before read the files from the share.


[CODE=C#]serverName = Util.Utils.GetServerNameFromUNCPath(uncPath);

WakeupUtils.HandleWakeUpServer(serverName, wolTimeout);[/CODE]


Top Bottom