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"