#!/usr/bin/env python
import re, sys

r = re.compile(r'(\S+) jaboja.pl - \[([^]]+)\] "GET /%E2%9C%AA HTTP/1.[0-9]" (?:200|304) [0-9]+ "[^"]*" "([^"]*)"')
t_re = re.compile(
    r'([0-9][0-9])\/([A-Za-z]+)\/2015:'
    r'([0-9][0-9]:[0-9][0-9]:[0-9][0-9]) '
    r'\+([0-9][0-9])([0-9][0-9])'
)
months = [
    'Jan', 'Feb', 'Mar', 'Apr',
    'May', 'Jun', 'Jul', 'Aug',
    'Sep', 'Oct', 'Nov', 'Dec'
]

f = open('kosmos.log.txt', 'r')
g = open('kosmos.log', 'w')


n = 0
lines = []
while True:
    line = f.readline()
    if not line:
        break
    m = r.match(line)
    if m:
        n += 1
        ip, t, agent = m.groups()
        m = t_re.match(t)
        if m:
            day, mon, hour, tz1, tz2 = m.groups()
            mon = str(months.index(mon) + 1)
            if len(mon) == 1:
                mon = '0' + mon
            lines.append(("2015-{0}-{1}T{2}+{3}:{4}".format(
                mon, day, hour, tz1, tz2
            ), ip, agent))
        else:
            sys.stderr.write(t)
            sys.stderr.write("\n")
    else:
        sys.stderr.write(line)
        sys.stderr.write("\n")

lines.sort()
n = str(n)
g.write(' ' * (8-len(n)) + n + "\n")
for line in lines:
    g.write("{0}\t{1}\t{2}\n".format(*line))


g.close()
f.close()
