| 
					
				 | 
			
			
				@@ -0,0 +1,36 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ipaddress 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import logging 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from core.NeuronModule import NeuronModule, MissingParameterException, InvalidParameterException 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from wakeonlan import wol 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+logging.basicConfig() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+logger = logging.getLogger("kalliope") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class Wake_on_lan(NeuronModule): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def __init__(self, **kwargs): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super(Wake_on_lan, self).__init__(**kwargs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mac_address = kwargs.get('mac_address', None) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        broadcast_address = kwargs.get('broadcast_address', '255.255.255.255') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        port = kwargs.get('port', 9) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # check we provide a mac address 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if mac_address is None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            raise MissingParameterException("mac_address parameter required") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # convert to unicode for testing 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        broadcast_address_unicode = broadcast_address.decode('utf-8') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # check the ip address is a valid one 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ipaddress.ip_address(broadcast_address_unicode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # check the port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if type(port) is not int: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            raise InvalidParameterException("port argument must be an integer. Remove quotes in your configuration.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        logger.debug("Call Wake_on_lan_neuron with parameters: mac_address: %s, broadcast_address: %s, port: %s" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     % (mac_address, broadcast_address, port)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # send the magic packet, the mac address format will be check by the lib 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # wol.send_magic_packet(mac_address, ip_address=broadcast_address, port=port) 
			 |