#!/usr/bin/python
"""clock.py v0.1
Copyright 2008 Michael Farrell <http://micolous.id.au/>

CGI script to show a big digital clock on Cisco 7940/7960 IP Phones.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
"""

from sys import argv
from time import strftime
digitsR = []

digitsR.append("0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000005555550100:000040FFFFFF0F00:0000E0FFFFFF2F00:0000F8FFFFFFBF00:0000FDFFFFFFBF00:00C0F7FFFFFFAF07:00F4DBFFFFFFEB0F:00FD6FAAAAAAFD3F:00FF3F000000FE7F:00FF3F000000FE7F:40FF2F000000FF3F:40FF2F000000FF3F:80FF1F000000FF3F:C0FF1F000040FF3F:C0FF0F000040FF2F:C0FF0F000080FF2F:C0FF0F000080FF1F:D0FF0F0000C0FF0F:D0FF0B0000C0FF0F:E0FF070000C0FF0F:C0FF02000080FF07:40BF00000000FE00:001D000000003C00:0000000000000000:0004000000000800:001F000000003E00:D07F000000C0BF00:F4FF000000F0FF02:FCFF010000F4FF02:FCFF000000F8FF02:FCFF000000F8FF01:FDFF000000FCFF01:FDBF000000FCFF00:FEBF000000FCFF00:FE7F000000FCFF00:FF3F000000FDBF00:FF3F000000FEBF00:FF3F000000FE7F00:FF3F000000FF7F00:FF2F000000FF3F00:FEEBFFFFFFFD0F00:F8F9FFFFFFF70300:70FFFFFFFF9F0000:80FFFFFFFF1F0000:00FFFFFFFF070000:00FDFFFFFF010000:00F4FFFF7F000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000")
digitsR.append("0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000008007:000000000000E00F:000000000000FC3F:000000000000FE7F:000000000000FE7F:000000000000FF3F:000000000000FF3F:000000000000FF3F:000000000040FF3F:000000000040FF2F:000000000080FF2F:000000000080FF1F:0000000000C0FF0F:0000000000C0FF0F:0000000000C0FF0F:000000000080FF07:000000000000FE00:0000000000003C00:0000000000000000:0000000000000800:0000000000003E00:0000000000C0BF00:0000000000F0FF02:0000000000F4FF02:0000000000F8FF02:0000000000F8FF01:0000000000FCFF01:0000000000FCFF00:0000000000FCFF00:0000000000FCFF00:0000000000FDBF00:0000000000FEBF00:0000000000FE7F00:0000000000FF7F00:0000000000FF3F00:0000000000FC0F00:0000000000F00300:0000000000900000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000")
digitsR.append("0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000005555550100:000040FFFFFF0F00:0000E0FFFFFF2F00:0000F8FFFFFFBF00:0000FCFFFFFFBF00:0000F4FFFFFFAF07:0000D0FFFFFFEB0F:000040AAAAAAFD3F:000000000000FE7F:000000000000FE7F:000000000000FF3F:000000000000FF3F:000000000000FF3F:000000000040FF3F:000000000040FF2F:000000000080FF2F:000000000080FF1F:0000000000C0FF0F:0000000000C0FF0F:0000000000C0FF0F:0000A4AAAAAAFF07:0000FEFFFF7FFE00:00C0FFFFFFFF3D00:00F0FFFFFFFF0700:00E4FFFFFFFF0200:00DFFFFFFF7F0000:D07FFFFFFF1F0000:F4FF555555010000:FCFF010000000000:FCFF000000000000:FCFF000000000000:FDFF000000000000:FDBF000000000000:FEBF000000000000:FE7F000000000000:FF3F000000000000:FF3F000000000000:FF3F000000000000:FF3F000000000000:FF2F000000000000:FEEBFFFFFF000000:F8F9FFFFFF030000:70FFFFFFFF0F0000:80FFFFFFFF1F0000:00FFFFFFFF070000:00FDFFFFFF010000:00F4FFFF7F000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000")
digitsR.append("0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000405555550000:0000D0FFFFFF0300:0000F8FFFFFF0B00:0000FEFFFFFF2F00:0000FFFFFFFF2F00:0000FDFFFFFFEB01:0000F4FFFFFFFA03:000090AAAA6AFF0F:000000000080FF1F:000000000080FF1F:0000000000C0FF0F:0000000000C0FF0F:0000000000C0FF0F:0000000000D0FF0F:0000000000D0FF0B:0000000000E0FF0B:0000000000E0FF07:0000000000F0FF03:0000000000F0FF03:0000000000F0FF03:0000A9AAAAEAFF01:0080FFFFFF9F3F00:00F0FFFFFF7F0F00:00FCFFFFFFFF0100:00F8FFFFFFBF0200:00F0FFFFFF9F0F00:00C0FFFFFFF72F00:0000555555FDBF00:0000000000FDBF00:0000000000FEBF00:0000000000FE7F00:0000000000FF7F00:0000000000FF3F00:0000000000FF3F00:0000000000FF3F00:0000000040FF2F00:0000000080FF2F00:0000000080FF1F00:00000000C0FF1F00:00000000C0FF0F00:00F8FFFF7FFF0300:00FEFFFFFFFD0000:C0FFFFFFFF270000:E0FFFFFFFF070000:C0FFFFFFFF010000:40FFFFFF7F000000:00FDFFFF1F000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000")
digitsR.append("0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:00F000000000E001:00FD02000000F803:40FF0B000000FF0F:C0FF0F000080FF1F:C0FF0F000080FF1F:D0FF0B0000C0FF0F:D0FF0B0000C0FF0F:E0FF070000C0FF0F:F0FF070000D0FF0F:F0FF030000D0FF0B:F0FF030000E0FF0B:F0FF030000E0FF07:F4FF030000F0FF03:F4FF020000F0FF03:F8FF010000F0FF03:F0BFAAAAAAEAFF01:D0AFFFFFFF9F3F00:40F7FFFFFF7F0F00:00FCFFFFFFFF0100:00F8FFFFFFBF0200:00F0FFFFFF9F0F00:00C0FFFFFFF72F00:0000555555FDBF00:0000000000FDBF00:0000000000FEBF00:0000000000FE7F00:0000000000FF7F00:0000000000FF3F00:0000000000FF3F00:0000000000FF3F00:0000000040FF2F00:0000000080FF2F00:0000000080FF1F00:00000000C0FF1F00:00000000C0FF0F00:0000000000FF0300:0000000000FC0000:0000000000240000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000")
digitsR.append("0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000405555550000:0000D0FFFFFF0300:0000F8FFFFFF0B00:0000FEFFFFFF2F00:0040FFFFFFFF2F00:00F0FDFFFFFF0B00:00FDF6FFFFFF0100:40FF9BAAAA6A0000:C0FF0F0000000000:C0FF0F0000000000:D0FF0B0000000000:D0FF0B0000000000:E0FF070000000000:F0FF070000000000:F0FF030000000000:F0FF030000000000:F0FF030000000000:F4FF030000000000:F4FF020000000000:F8FF010000000000:F0BFAAAAAA0A0000:D0AFFFFFFF1F0000:40F7FFFFFF7F0000:00FCFFFFFFFF0000:00F8FFFFFFBF0200:00F0FFFFFF9F0F00:00C0FFFFFFF72F00:0000555555FDBF00:0000000000FDBF00:0000000000FEBF00:0000000000FE7F00:0000000000FF7F00:0000000000FF3F00:0000000000FF3F00:0000000000FF3F00:0000000040FF2F00:0000000080FF2F00:0000000080FF1F00:00000000C0FF1F00:00000000C0FF0F00:00F8FFFF7FFF0300:00FEFFFFFFFD0000:C0FFFFFFFF270000:E0FFFFFFFF070000:C0FFFFFFFF010000:40FFFFFF7F000000:00FDFFFF1F000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000")
digitsR.append("0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000005555550100:000040FFFFFF0F00:0000E0FFFFFF2F00:0000F8FFFFFFBF00:0000FDFFFFFFBF00:00C0F7FFFFFF2F00:00F4DBFFFFFF0700:00FD6FAAAAAA0100:00FF3F0000000000:00FF3F0000000000:40FF2F0000000000:40FF2F0000000000:80FF1F0000000000:C0FF1F0000000000:C0FF0F0000000000:C0FF0F0000000000:C0FF0F0000000000:D0FF0F0000000000:D0FF0B0000000000:E0FF070000000000:C0FFAAAAAA2A0000:40BFFEFFFF7F0000:00DDFFFFFFFF0100:00F0FFFFFFFF0300:00E4FFFFFFFF0A00:00DFFFFFFF7F3E00:D07FFFFFFFDFBF00:F4FF555555F5FF02:FCFF010000F4FF02:FCFF000000F8FF02:FCFF000000F8FF01:FDFF000000FCFF01:FDBF000000FCFF00:FEBF000000FCFF00:FE7F000000FCFF00:FF3F000000FDBF00:FF3F000000FEBF00:FF3F000000FE7F00:FF3F000000FF7F00:FF2F000000FF3F00:FEEBFFFFFFFD0F00:F8F9FFFFFFF70300:70FFFFFFFF9F0000:80FFFFFFFF1F0000:00FFFFFFFF070000:00FDFFFFFF010000:00F4FFFF7F000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000")
digitsR.append("0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000405555550000:0000D0FFFFFF0300:0000F8FFFFFF0B00:0000FEFFFFFF2F00:0040FFFFFFFF2F00:00F0FDFFFFFFEB01:00FDF6FFFFFFFA03:40FF9BAAAA6AFF0F:C0FF0F000080FF1F:C0FF0F000080FF1F:D0FF0B0000C0FF0F:D0FF0B0000C0FF0F:E0FF070000C0FF0F:F0FF070000D0FF0F:F0FF030000D0FF0B:F0FF030000E0FF0B:F0FF030000E0FF07:F4FF030000F0FF03:F4FF020000F0FF03:F8FF010000F0FF03:F0BF000000E0FF01:D02F000000803F00:4007000000000F00:0000000000000000:0000000000000200:0000000000800F00:0000000000F02F00:0000000000FCBF00:0000000000FDBF00:0000000000FEBF00:0000000000FE7F00:0000000000FF7F00:0000000000FF3F00:0000000000FF3F00:0000000000FF3F00:0000000040FF2F00:0000000080FF2F00:0000000080FF1F00:00000000C0FF1F00:00000000C0FF0F00:0000000000FF0300:0000000000FC0000:0000000000240000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000")
digitsR.append("0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:000000FEFFFF0F00:000080FFFFFF3F00:0000F0FFFFFFBF00:0000FCFFFFFFFF01:0080FBFFFFFFBF0B:00E0DFFFFFFFEF2F:00FCBFFFFFFFFB7F:00FE7F000000FCFF:00FF7F000000FDFF:00FF3F000000FDBF:00FF3F000000FE7F:00FF3F000000FE7F:40FF2F000000FF3F:80FF2F000000FF3F:80FF1F000000FF3F:C0FF1F000040FF3F:C0FF0F000040FF2F:C0FF0F000080FF1F:C0FF0F000080FF1F:80FFFBFFFF7FFF0B:00FFFEFFFFFFFE01:00FCFFFFFFFF7B00:00E0FFFFFFFF0B00:00C8FFFFFFFF1600:003EFFFFFF7F7D00:C0BFFDFFFF5FFF00:F0FF010000E0FF03:F4FF020000F0FF03:F8FF010000F0FF03:F8FF010000F4FF03:FCFF000000F4FF02:FCFF000000F8FF02:FCFF000000F8FF01:FDFF000000FCFF01:FDBF000000FCFF00:FE7F000000FCFF00:FE7F000000FCFF00:FF3F000000FDBF00:FF3F000000FD7F00:FCDFFFFFFFF91F00:F4F7FFFFFFF70700:90FDFFFFFFDF0000:40FFFFFFFF3F0000:00FEFFFFFF0F0000:00FCFFFFFF020000:00F0FFFFBF000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000")
digitsR.append("0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000405555550000:0000D0FFFFFF0300:0000F8FFFFFF0B00:0000FEFFFFFF2F00:0040FFFFFFFF2F00:00F0FDFFFFFFEB01:00FDF6FFFFFFFA03:40FF9BAAAA6AFF0F:C0FF0F000080FF1F:C0FF0F000080FF1F:D0FF0B0000C0FF0F:D0FF0B0000C0FF0F:E0FF070000C0FF0F:F0FF070000D0FF0F:F0FF030000D0FF0B:F0FF030000E0FF0B:F0FF030000E0FF07:F4FF030000F0FF03:F4FF020000F0FF03:F8FF010000F0FF03:F0BFAAAAAAEAFF01:D0AFFFFFFF9F3F00:40F7FFFFFF7F0F00:00FCFFFFFFFF0100:00F8FFFFFFBF0200:00F0FFFFFF9F0F00:00C0FFFFFFF72F00:0000555555FDBF00:0000000000FDBF00:0000000000FEBF00:0000000000FE7F00:0000000000FF7F00:0000000000FF3F00:0000000000FF3F00:0000000000FF3F00:0000000040FF2F00:0000000080FF2F00:0000000080FF1F00:00000000C0FF1F00:00000000C0FF0F00:00F8FFFF7FFF0300:00FEFFFFFFFD0000:C0FFFFFFFF270000:E0FFFFFFFF070000:C0FFFFFFFF010000:40FFFFFF7F000000:00FDFFFF1F000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000")
digitsR.append("00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:20:F8:FC:FC:74:00:00:1E:3F:3F:2F:08:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00")

digits = []
for d in digitsR:
	a = d.split(":")
	digits.append(a)


t = strftime("%H%M")
date = strftime("%A, %d %B %Y")
#fh = open(argv[1], "w")


o = ""
for y in range(63):
	for c in range(2):
		o = o + digits[int(t[c])][y]
	o = o + digits[10][y]
	for c in range(2,4):
		o = o + digits[int(t[c])][y]

print """Content-Type: text/xml
Refresh: 10

<CiscoIPPhoneImage>
 <Title/>
  <LocationX>-1</LocationX>
  <LocationY>-1</LocationY>
  <Width>132</Width>
  <Height>63</Height>
  <Depth>2</Depth>
  <Prompt>%s</Prompt>
  <Data>%s</Data>
</CiscoIPPhoneImage>""" % (date, o)

