#!/bin/bash

if [[ ${#} -ne 1 ]] ; then
        echo "Expected 1 argument - file"
        exit 1
fi

if [[ ! -f "${1}" ]] ; then
        echo "File does not exist"
        exit 1
fi

FILE="${1}"

topSites=$(cat ${FILE} | awk '{print $2}' | sort | uniq -c | sort -nr | head -n 3 | awk '{print $NF}')

while read site ; do
        siteLines=$(cat "${FILE}" | awk -var=${site} '{if ($2==vat) print $0}')
        https=$(echo "${siteLines}" | grep "HTTP/2.0" | wc -l)
        nonHttps=$(echo "${siteLines}" | grep -v "HTTP/2.0" | wc -l)
        echo "${site} HTTP/2.0: ${https} non-HTTP/2.0: ${nonHttps}"
        echo "${siteLines}" | awk '{if ($(NF-4)>=302) print $1}' | sort | uniq -c | sort -nr | head -n5
done < <(echo "${topSites}")

#Напишете shell скрипт, който приема задължителен параметър - име на файл.
#Файлът е log файл на HTTP сървър, в който се записват всички получени от сървъра request-и,
#които клиентите са изпратили. Файлът е текстови, като на всеки ред има информация от следния
#вид:
#35.223.122.181 dir.bg - [03/Apr/2020:17:25:06 -0500] GET / HTTP/1.1 302 0 "-" "Zend_Http_Client"
#94.228.82.170 del.bg - [03/Apr/2020:17:25:06 -0500] POST /auth HTTP/2.0 400 153 "foo bar" "<UA>"
#Всеки ред на файла се състои от полета, разделени с интервал. Описание на полетата с пример
#спрямо първият ред от горните:
#• адрес на клиент - 35.223.122.181
#• име на виртуален хост (сайт) - dir.bg
#• име на потребител - -
#• timestamp на заявката - [03/Apr/2020:17:25:06 -0500]
#• заявка - GET / HTTP/1.1 - състои се от три компонента, разделени с интервал: метод на заявката (за удобство приемаме, че може да има само GET и POST заявки), ресурсен идентификатор,
#и протокол (приемаме, че може да има само HTTP/1.0, HTTP/1.1 и HTTP/2.0 протоколи)
#• код за статус на заявката - 302
#• брой байтове - 0
#• referer - "-" - ограден в двойни кавички, подава се от HTTP клиента, произволен низ
#• user agent - "Zend_Http_Client" - ограден в двойни кавички, подава се от HTTP клиента,
#произволен низ
#За всеки от top 3 сайта, към които има най-много заявки, скриптът трябва да изведе в долния
#формат:
#• брой на HTTP/2.0 заявките
#• брой на не-HTTP/2.0 заявките
#• top 5 клиента, направили най-много заявки, завършили с код, по-голям от 302 (и броя на
#съответните им зявки)
#dir.bg HTTP/2.0: 0 non-HTTP/2.0: 5
#del.bg HTTP/2.0: 5 non-HTTP/2.0: 0
#5 94.228.82.170
#2 34.73.112.204
#1 185.217.0.138
