mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2025-12-07 09:36:05 -08:00
Create wol.php
wol.php file is created to perform "WOL" functions
This commit is contained in:
90
front/php/server/wol.php
Normal file
90
front/php/server/wol.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
#---------------------------------------------------------------------------------#
|
||||
# Pi.Alert #
|
||||
# Open Source Network Guard / WIFI & LAN intrusion detector #
|
||||
# #
|
||||
# wol.php - Front module. Server side. System Information #
|
||||
#---------------------------------------------------------------------------------#
|
||||
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
|
||||
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
|
||||
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
|
||||
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
|
||||
#---------------------------------------------------------------------------------#
|
||||
|
||||
/*
|
||||
* This code will send a Wake-on-LAN packet to the specified MAC address.
|
||||
*
|
||||
* The MAC address must be in the format AA:BB:CC:DD:EE:FF.
|
||||
*
|
||||
* The port and password are optional. If no port is specified, the default port of 9 is used.
|
||||
* If no password is specified, no password is used.
|
||||
*/
|
||||
|
||||
// Get init.php
|
||||
require dirname(__FILE__).'/../server/init.php';
|
||||
|
||||
// Get the MAC address of the device to wake up
|
||||
$mac = $_GET['mac'];
|
||||
|
||||
// Validate the MAC address
|
||||
if (!filter_var($mac, FILTER_VALIDATE_MAC)) {
|
||||
// Error message
|
||||
$output = lang('DevDetail_Tab_Tools_WOL_Error_MAC');
|
||||
// Show the result
|
||||
echo "<pre>";
|
||||
echo $output;
|
||||
echo "</pre>";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Get the port
|
||||
$port = isset($_GET['port']) ? $_GET['port'] : 9;
|
||||
|
||||
// Validate the port
|
||||
if (!filter_var($port, FILTER_VALIDATE_INT, array('options' => array('min_range' => 1, 'max_range' => 65535)))) {
|
||||
// Error message
|
||||
$output = lang('DevDetail_Tab_Tools_WOL_Error_Port');
|
||||
// Show the result
|
||||
echo "<pre>";
|
||||
echo $output;
|
||||
echo "</pre>";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Get password
|
||||
$password = isset($_GET['password']) ? $_GET['password'] : '';
|
||||
|
||||
// Validate the password
|
||||
if (!filter_var($password, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/"))) {
|
||||
// Error message
|
||||
$output = lang('DevDetail_Tab_Tools_WOL_Error_Password');
|
||||
// Show the result
|
||||
echo "<pre>";
|
||||
echo $output;
|
||||
echo "</pre>";
|
||||
exit;
|
||||
}
|
||||
|
||||
// Create the magic packet
|
||||
$magicPacket = pack('H*', 'FF FF FF FF FF FF FF ' . $mac);
|
||||
|
||||
// Create a UDP socket
|
||||
$socket = socket_create(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
||||
|
||||
// Set the socket options
|
||||
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, true);
|
||||
|
||||
// Send the WoL packet
|
||||
socket_sendto($socket, $magicPacket, strlen($magicPacket), 0, '255.255.255.255', $port);
|
||||
|
||||
// Close the socket
|
||||
socket_close($socket);
|
||||
|
||||
// Print a message to indicate that the device has been woken up
|
||||
echo "<pre>";
|
||||
$output = lang('DevDetail_Tab_Tools_WOL_Message');
|
||||
echo $output;
|
||||
echo "</pre>";
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user