Exemple #1
0
    def on_logged_out(self, user_id, device_id, access_token):
        """Close session on keycloak server
        """
        def _clear_keycloak_tokens(txn):
            sql = """
UPDATE keycloak_provider_tokens
SET refresh_tokens = ARRAY[]::TEXT[]
WHERE user_id = '{}'
"""
            txn.execute(sql.format(user_id))

        def _get_refresh_tokens(txn):
            sql = """
SELECT refresh_tokens
FROM keycloak_provider_tokens
WHERE user_id = '{}'
"""
            txn.execute(sql.format(user_id))
            return txn.fetchone()

        res = yield self.account_handler.run_db_interaction(
            "get_refresh_tokens", _get_refresh_tokens)

        keycloak_openid = KeycloakOpenID(server_url=self.url,
                                         client_id=self.client_id,
                                         realm_name=self.realm_name,
                                         client_secret_key=self.secret_key)

        # We can't separate current session and close all sessions off this user
        # close keycloack sessions
        for refresh_token in res[0]:
            keycloak_openid.logout(refresh_token)

        # close other sysnapse sessions
        device_handler = self.account_handler.hs.get_device_handler()
        yield device_handler.delete_all_devices_for_user(user_id)

        # .. and then delete any access tokens which weren't associated with
        # devices.
        auth_handler = self.account_handler.hs.get_auth_handler()
        yield auth_handler.delete_access_tokens_for_user(user_id)

        res = self.account_handler.run_db_interaction("clear_keycloak_tokens",
                                                      _clear_keycloak_tokens)
        defer.returnValue(True)
    'Mozilla/5.0 (X11; Linux ppc64le; rv:66.0) Gecko/20100101 Firefox/66.0',
    'Accept': '*/*',
    'Access-Control-Request-Method': 'GET',
    'Access-Control-Request-Headers':
    'authorization,cache-control,content-type,expires,pragma',
    'Referer': 'https://www.wienernetze.at/wnapp/smapp/',
    'Connection': 'keep-alive'
}

p = requests.options(URL, headers=headers)

print('[' + str(p.status_code) + '] ' +
      requests.status_codes._codes[p.status_code][0])

if p.status_code != 200:
    keycloak_openid.logout(token['refresh_token'])
    sys.exit()

print(" ")
print("===========")
print("=== GET ===")
print("===========")
print(" ")

URL = "https://service.wienernetze.at/rest/smp/1.0/m/messdaten/zaehlpunkt/" + ZNR + "/verbrauch"
URL = URL + "?dateFrom=" + from_date_utc.isoformat() + ".000Z"
URL = URL + "&quarter-hour=true"
URL = URL + "&period=DAY&accumulate=false&offset=0&dayViewResolution=QUARTER-HOUR"

encoding = "ISO-8859-1"