#! /usr/local/bin/perl
# 
# Copyright (C) 2004-2005 HUNDREDSOFT CORPORATION All Rights Reserved.
#
#  wol.cgi
#
#      MACアドレスは、ipconfig /all (win)や ifconfig (linux)でわかります。
#

use Socket;

$macaddr = '00-1f-c6-d7-f4-6d'; # xx-xx-xx-xx-xx-xx
$ipaddr = '210.159.241.66';  # xxx.xxx.xxx.xxx

# アドレス固定の方は
# 上の $macaddrと$ipaddrにコードを設定し,下の↓から↑の行まで
# コメントアウトしてください。
############################↓↓↓↓↓
#$len = 80;
#read(STDIN, $in, $len);
#@in = split(/[&;]/,$in); 
#foreach (@in){
#	($key, $val) = split(/=/);
#	if ($key eq 'macaddr'){
#		$macaddr = $val;
#	}
#	if ($key eq 'ipaddr'){
#		$ipaddr = $val;
#	}
#}
############################↑↑↑↑↑


$macaddr=~s/-//g;
$data = &chr16hex($macaddr);

socket(SOCKET, PF_INET, SOCK_DGRAM, 0);
$iaddr = inet_aton($ipaddr);
$sock_addr = pack_sockaddr_in(1024, $iaddr);

send(SOCKET, $data, 0, $sock_addr);


print "Content-type: text/html\n\n";
	print<<"__SOUSIN_OK__";
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp">
<title>WOL sample</title>
</head>
<body BGCOLOR="#ffe0c0">
<center>
うまくいったかな？<BR>
<BR><BR><BR>
ブラウザの戻るボタンをクリックしてください<BR>
</center>
</body>
</html>
__SOUSIN_OK__


exit;



sub chr16hex {
	local($mac) = @_;
	$_ = "ffffffffffff";
	for ($i=0; $i<16; $i++){
		$_ .= $mac;
	}
	1 while s/([0-9A-Fa-f][0-9A-Fa-f])/pack("c",hex($1))/geo;
	$_;
}


__END__

