diff --git a/poll.py b/poll.py new file mode 100755 index 0000000..127c5c8 --- /dev/null +++ b/poll.py @@ -0,0 +1,37 @@ +#! /bin/env python3 +from requests import get, post, patch +from os import getenv +import logging + +logging.basicConfig(level=logging.INFO) + +fingerpass = getenv('FINGER_PW') + +gitauth = (getenv('GIT_USER', getenv('GIT_PW')) + +fingerurl = f'https://finger.stacken.kth.se/services/git/all' + +response = get(fingerurl, auth=('git', fingerpass)) +response.raise_for_status() + +for (user, passwd) in response.json().items(): + response = post('https://git.stacken.kth.se/api/v1/admin/users', + data={ + "username": user, + "email": f"{user}@stacken.kth.se", + "password": passwd, + }, + auth = ('fingerpoller', gitpass) + ) + if response.status_code == 422: + patch(f'https://git.stacken.kth.se/api/v1/admin/users/{user}', + data = { "password": passwd }, + auth = gitauth + ).raise_for_status() + print(f"Updated password for {user}") + else: + response.raise_for_status() + print(f"Created user {user}") + + +