<?php

function makeflatip($ip_str) {
	$ip_parts = explode('.', $ip_str);
	$flat = $ip_parts[0] << 24;
	$flat += $ip_parts[1] << 16;
	$flat += $ip_parts[2] << 8;
	$flat += $ip_parts[3];
	return $flat;
}

$image = imagecreatetruecolor(16, 16);

$back = imagecolorallocate($image, 28, 77, 134);
$front = imagecolorallocate($image, 49, 114, 193);
$border = imagecolorallocate($image, 230, 236, 243);

imagefill($image, 0, 0, $back);
imagerectangle($image, 0, 0, 15, 15, $border);

$data_ip = makeflatip($_SERVER['REMOTE_ADDR']);
$data_port = $_SERVER['REMOTE_PORT'];
$data_time = time();

$data = "SW".pack('NnN', $data_ip, $data_port, $data_time);
$x = 1;
$y = 0;
for ($i = 0; $i < strlen($data); $i++) {
	$char = ord($data[$i]);
	for ($b = 0; $b < 8; $b++) {
		$on = ($char & (128 >> $b)) > 0;
		#echo "$x,$y: ($char & ". (128 >> $b) .") $on <br />";
		imagesetpixel($image, $x, $y * 2 + 1, $on ? $front : $back);
		imagesetpixel($image, $x, $y * 2 + 2, $on ? $front : $back);
		$x++;
		if ($x > 14) {
			$x = 1;
			$y++;
		}
	}
}

header('Content-Type: image/png');
imagepng($image);

?>
