61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
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'])
|
|
|