
    Vh                     ~    d dl mZmZmZ eZdZdZdZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d Zd	 Zed
k(  r e        yy)    )absolute_importdivisionprint_functiona  
module: wakeonlan
short_description: Send a magic Wake-on-LAN (WoL) broadcast packet
description:
  - The C(wakeonlan) module sends magic Wake-on-LAN (WoL) broadcast packets.
extends_documentation_fragment:
  - community.general.attributes
attributes:
  check_mode:
    support: full
  diff_mode:
    support: none
options:
  mac:
    description:
      - MAC address to send Wake-on-LAN broadcast packet for.
    required: true
    type: str
  broadcast:
    description:
      - Network broadcast address to use for broadcasting magic Wake-on-LAN packet.
    default: 255.255.255.255
    type: str
  port:
    description:
      - UDP port to use for magic Wake-on-LAN packet.
    default: 7
    type: int
todo:
  - Add arping support to check whether the system is up (before and after)
  - Enable check-mode support (when we have arping support)
  - Does not have SecureOn password support
notes:
  - This module sends a magic packet, without knowing whether it worked.
  - Only works if the target system was properly configured for Wake-on-LAN (in the BIOS and/or the OS).
  - Some BIOSes have a different (configurable) Wake-on-LAN boot order (in other words, PXE first).
seealso:
  - module: community.windows.win_wakeonlan
author:
  - Dag Wieers (@dagwieers)
a  
- name: Send a magic Wake-on-LAN packet to 00:00:5E:00:53:66
  community.general.wakeonlan:
    mac: '00:00:5E:00:53:66'
    broadcast: 192.0.2.23
  delegate_to: localhost

- community.general.wakeonlan:
    mac: 00:00:5E:00:53:66
    port: 9
  delegate_to: localhost
z
# Default return values
N)AnsibleModule)	to_nativec                    |}t        |      dk(  r|j                  |d   d      }t        |      dk7  r| j                  d|z         	 t        |d       d	}dj                  d
|dz  g      }t        dt        |      d      D ]9  }d	j                  |t        j                  dt        |||dz    d            g      }; t        j                  t        j                  t        j                        }|j                  t        j                  t        j                  d       | j                  s	 |j!                  |||f       |j%                          y# t        $ r | j                  d|z         Y w xY w# t        j"                  $ rH}	|j%                          | j                  t'        |	      t)        j*                                Y d}	~	d}	~	ww xY w)z" Send a magic Wake-on-LAN packet.           z Incorrect MAC address length: %s)msg   z Incorrect MAC address format: %s    FFFFFFFFFFFF   r   B   )r   	exceptionN)lenreplace	fail_jsonint
ValueErrorjoinrangestructpacksocketAF_INET
SOCK_DGRAM
setsockopt
SOL_SOCKETSO_BROADCAST
check_modesendtoerrorcloser   	traceback
format_exc)
modulemac	broadcastportmac_origdatapaddingisockes
             o/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/modules/wakeonlan.py	wakeonlanr5   N   s    H 3x6kk#a&"% 3x2~?(JKLC
 Dgg~sRx01G1c'lA& Nxxv{{3GAq1u4Er0JKLMN ==):):;DOOF%%v':':A>	QKKy$/0
 	JJL+  L?(JKL" || 	QJJL19M9M9OPP	Qs*   
E .E8 E54E58G>GGc            
         t        t        t        dd      t        dd      t        dd            d	      } | j                  d
   }| j                  d   }| j                  d   }t        | |||       | j	                  d       y )NstrT)typerequiredz255.255.255.255)r8   defaultr      )r+   r,   r-   )argument_specsupports_check_moder+   r,   r-   )changed)r   dictparamsr5   	exit_json)r*   r+   r,   r-   s       r4   mainrB   v   s    %$//@A5!,

 !F --
Ck*I== Dfc9d+
T"r   __main__)
__future__r   r   r   r8   __metaclass__DOCUMENTATIONEXAMPLESRETURNr   r   r(   ansible.module_utils.basicr   +ansible.module_utils.common.text.convertersr   r5   rB   __name__ r   r4   <module>rM      sY    A @(T
    4 A%P#& zF r   