import os import requests import logging import json def buildSubparser(subparser): subparser.add_argument('--url', default='https://cloud.tsc-vfl.de') def run(args): l = logging.getLogger(__name__) l.debug('Login to %s', args.url) url = f'{args.url}/index.php/login/v2' l.debug('Using login url %s', url) startRequest = requests.post(url) startRequest.raise_for_status() data = startRequest.json() print('You need to login in the browser now to validate the login token.') print('Please visit the following url:') print(data['login']) print() print('After you have logged in, press enter to continue.') input() l.debug('Logging in') intermediateToken = data['poll']['token'] pollUrl = data['poll']['endpoint'] loginRequest = requests.post(pollUrl, data={'token': intermediateToken}) loginRequest.raise_for_status() data = loginRequest.json() loginName = data['loginName'] appPassword = data['appPassword'] data = { 'loginName': loginName, 'appPassword': appPassword, 'base': data['server'] } with open('login.json', 'w') as f: json.dump(data, f) l.info('Login successful') class LoginData: def __init__(self, loginName, appPassword): self.loginName = loginName self.appPassword = appPassword def loadLoginData(): with open('login.json', 'r') as f: data = json.load(f) return LoginData(data['loginName'], data['appPassword'])