#!/usr/bin/python3

from sys import exit

from libsvsync.rsync import sysvol_rsync, validate_machine
from libsvsync.samdb import init_samdb, search_upstream, validate_samdb


def main():
    lp, samdb = None, None

    try:
        lp, samdb = init_samdb()
    except:
        print("init samdb failed.")
        return 1

    res1 = validate_samdb(samdb)
    res2 = validate_machine(lp)

    if res1[0] and res2[0]:
        try:
            upstream = search_upstream(samdb)
        except:
            print("search_upstream failed.")
            return 1
        if upstream is None:
            return 0
        print(f"Trying to rsync from '{upstream}'...")
        if not sysvol_rsync(lp, upstream):
            print(
                "Error: Rsync failed. Check sshd settings on upstream and role settings. See: https://www.altlinux.org/ActiveDirectory/Login/DC.")
            return 2
        return 0

    if not res1[0]:
        for message in res1[1]:
            print(message)
    if not res2[0]:
        for message in res2[1]:
            print(message)
    return 1

if __name__ == "__main__":
    exit(main())
