#!/bin/bash

set -euo pipefail

function main () {
    # check for ubuntu only
    if ! grep -qi '^ID=ubuntu' /etc/os-release; then
        echo "only for ubuntu" > /dev/stderr
        exit 1
    fi

    # check for root
    if [ "$EUID" -ne 0 ]; then
        echo "Please run as root" > /dev/stderr
        exit 1
    fi

    apt update && apt install -y curl jq
    IPINFO="$(curl -s ipinfo.io)"
    if [ -z "$IPINFO" ]; then
        echo "Failed to get IP info" > /dev/stderr
        exit 1
    fi
    COUNTRYCODE="$(jq .country -r <<< "$IPINFO")"
    echo "Country code: $COUNTRYCODE"

    if ! grep -qE 'http(s)?://archive\.ubuntu\.com/' /etc/apt/sources.list.d/*; then
        echo "Not using default ubuntu repo, script will not function" > /dev/stderr
        exit 1
    fi

    MIRRORHOST="$(echo "$COUNTRYCODE" | tr 'A-Z' 'a-z').archive.ubuntu.com"

    echo "IP geolocated as $COUNTRYCODE, pdating mirror to $MIRRORHOST."
    find /etc/apt/sources.list.d/ -type f -exec \
      sed -i "s|archive\.ubuntu\.com|$MIRRORHOST|g" {} +
}

main