예제 #1
0
def refreshAccessToken(refreshToken):
    soclogging.logDebug(2, "Refreshing access token")

    url = parameters.getParameter('baseUrl') + '/api/v1/user/oauth2/token'
    data = 'grant_type=refresh_token&redirect_uri=https://www.getpostman.com/oauth2/callback&refresh_token=' + refreshToken
    headers = {
        'Authorization': parameters.getParameter('basicToken'),
        'Content-type': 'application/x-www-form-urlencoded',
        'Content-Length': str(len(data)),
        'Host': parameters.getParameter('host'),
        'Connection': 'close',
        'Accept-Encoding': 'gzip, deflate',
        'User-Agent': 'okhttp/3.10.0'
    }

    try:
        response = kiahttp.postHTTP(
            url=url,
            headers=headers,
            data=data,
            timeout=parameters.getParameter('reqTimeout'))
    except:
        raise

    try:
        accessToken = json.loads(response)
        accessToken['refresh_token'] = refreshToken
    except:
        soclogging.logDebug(0, "Token request failed, invalid response")
        soclogging.logDebug(2, response)
        raise

    soclogging.logDebug(2, "Access token = " + accessToken['access_token'])

    return accessToken
예제 #2
0
def getAuthToken(authCode):
    soclogging.logDebug(2, "Requesting access token")

    url = parameters.getParameter('baseUrl') + '/api/v1/user/oauth2/token'
    data = 'grant_type=authorization_code&redirect_uri=' + parameters.getParameter(
        'baseUrl') + '%2Fapi%2Fv1%2Fuser%2Foauth2%2Fredirect&code=' + authCode
    headers = {
        'Authorization': parameters.getParameter('basicToken'),
        'Content-type': 'application/x-www-form-urlencoded',
        'Content-Length': str(len(data)),
        'Host': parameters.getParameter('host'),
        'Connection': 'close',
        'Accept-Encoding': 'gzip, deflate',
        'User-Agent': 'okhttp/3.10.0'
    }

    try:
        response = kiahttp.postHTTP(
            url=url,
            headers=headers,
            data=data,
            timeout=parameters.getParameter('reqTimeout'))
    except:
        raise

    try:
        accessToken = json.loads(response)
    except:
        soclogging.logDebug(0, "Token request failed, invalid response")
        soclogging.logDebug(2, response)
        raise

    soclogging.logDebug(2, "Access token = " + accessToken['access_token'])

    return accessToken
예제 #3
0
def doPrewakeup(vehicleId):
    soclogging.logDebug(2, "Triggering Pre-Wakeup")

    url = parameters.getParameter(
        'baseUrl') + '/api/v1/spa/vehicles/' + vehicleId + '/control/engine'
    data = {
        "action": "prewakeup",
        "deviceId": parameters.getParameter('deviceId')
    }
    headers = {
        'Authorization':
        parameters.getParameter('tokenType') + ' ' +
        parameters.getParameter('accessToken'),
        'ccsp-device-id':
        parameters.getParameter('deviceId'),
        'ccsp-application-id':
        parameters.getParameter('appId'),
        'offset':
        '1',
        'Content-Type':
        'application/json;charset=UTF-8',
        'Content-Length':
        str(len(data)),
        'Host':
        parameters.getParameter('host'),
        'Connection':
        'close',
        'Accept-Encoding':
        'gzip, deflate',
        'User-Agent':
        'okhttp/3.10.0',
        'Stamp':
        stamps.getStamp()
    }

    try:
        response = kiahttp.postHTTP(
            url=url,
            data=data,
            headers=headers,
            timeout=parameters.getParameter('statusTimeout'))
    except:
        raise

    return
예제 #4
0
def setLanguage(cookies):
    soclogging.logDebug(2, "Setting language")

    url = parameters.getParameter('baseUrl') + '/api/v1/user/language'
    headers = {'Content-type': 'application/json'}
    data = {"lang": "en"}

    try:
        response = kiahttp.postHTTP(
            url=url,
            data=data,
            headers=headers,
            cookies=cookies,
            timeout=parameters.getParameter('reqTimeout'))
    except:
        raise

    return
예제 #5
0
def getDeviceId():
    soclogging.logDebug(2, "Requesting DeviceId")

    url = parameters.getParameter(
        'baseUrl') + '/api/v1/spa/notifications/register'
    data = {
        "pushRegId": parameters.getParameter('GCMSenderId'),
        "pushType": "GCM",
        "uuid": str(uuid.uuid1())
    }
    headers = {
        'ccsp-service-id': parameters.getParameter('clientId'),
        'Content-type': 'application/json;charset=UTF-8',
        'Content-Length': str(len(data)),
        'Host': parameters.getParameter('host'),
        'Connection': 'close',
        'Accept-Encoding': 'gzip, deflate',
        'User-Agent': 'okhttp/3.10.0',
        'Stamp': stamps.getStamp()
    }

    try:
        response = kiahttp.postHTTP(
            url=url,
            data=data,
            headers=headers,
            timeout=parameters.getParameter('reqTimeout'))
    except:
        raise

    try:
        responseDict = json.loads(response)
        deviceId = responseDict['resMsg']['deviceId']
    except:
        soclogging.logDebug(1, "Could not receive DeviceId, invalid response")
        soclogging.logDebug(2, response)
        raise

    soclogging.logDebug(2, "DeviceId = " + deviceId)

    return deviceId
예제 #6
0
def getAuthCode(cookies):
    soclogging.logDebug(2, "Sending username/password")

    url = parameters.getParameter('baseUrl') + '/api/v1/user/integrationinfo'
    headers = {'Content-type': 'application/json'}

    try:
        response = kiahttp.getHTTP(
            url=url,
            headers=headers,
            cookies=cookies,
            timeout=parameters.getParameter('reqTimeout'))
    except:
        raise

    try:
        responseDict = json.loads(response)
        userId = responseDict['userId']
        serviceId = responseDict['serviceId']
        soclogging.logDebug(2, "UserId = " + userId)
        soclogging.logDebug(2, "ServiceId = " + serviceId)
    except:
        soclogging.logDebug(0, "Login failed, invalid response")
        soclogging.logDebug(2, response)
        raise

    url = 'https://eu-account.' + parameters.getParameter(
        'brand'
    ) + '.com/auth/realms/eu' + parameters.getParameter(
        'brand'
    ) + 'idm/protocol/openid-connect/auth?client_id=' + parameters.getParameter(
        'authClientId'
    ) + '&scope=openid%20profile%20email%20phone&response_type=code&hkid_session_reset=true&redirect_uri=' + parameters.getParameter(
        'baseUrl'
    ) + '/api/v1/user/integration/redirect/login&ui_locales=en&state=' + serviceId + ':' + userId
    headers = {}

    try:
        response = kiahttp.getHTTP(
            url=url,
            headers=headers,
            cookies=cookies,
            timeout=parameters.getParameter('reqTimeout'))
    except:
        raise

    left = response.find('action="') + 8
    right = response.find('"', left)
    url = response[left:right].replace('&', '&')
    data = urlparse.urlencode({
        'username':
        parameters.getParameter('accountName'),
        'password':
        parameters.getParameter('accountPassword'),
        'credentialId':
        '',
        'rememberMe':
        'on'
    })
    headers = {
        'Content-type':
        'application/x-www-form-urlencoded',
        'User-Agent':
        'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0 Mobile/15B92 Safari/604.1'
    }
    cookiesForm = {'AUTH_SESSION_ID': kiahttp.lastCookies['AUTH_SESSION_ID']}

    try:
        response = kiahttp.postHTTP(
            url=url,
            data=data,
            headers=headers,
            cookies=cookiesForm,
            timeout=parameters.getParameter('reqTimeout'))
        parsed = urlparse.urlparse(kiahttp.lastUrl)
        intUserId = ''.join(parse_qs(parsed.query)['intUserId'])
        soclogging.logDebug(2, "intUserId = " + intUserId)
    except:
        soclogging.logDebug(0, "Login failed, invalid response")
        soclogging.logDebug(2, response)
        raise

    url = parameters.getParameter('baseUrl') + '/api/v1/user/silentsignin'
    headers = {'Content-type': 'application/json'}
    data = {'intUserId': intUserId}

    try:
        response = kiahttp.postHTTP(
            url=url,
            data=data,
            headers=headers,
            cookies=cookies,
            timeout=parameters.getParameter('reqTimeout'),
            allow_redirects=False)
        responseDict = json.loads(response)
        responseUrl = responseDict['redirectUrl']
        parsed = urlparse.urlparse(responseUrl)
        authCode = ''.join(parse_qs(parsed.query)['code'])
    except:
        soclogging.logDebug(0, "Login failed, invalid response")
        soclogging.logDebug(2, response)
        raise

    soclogging.logDebug(2, "AuthCode = " + authCode)

    return authCode