def generate_authorization_request(configuration, registration, redirect_url, key: jwk.JWK): auth_url = configuration["authorization_endpoint"] client_id = registration["client_id"] pubkey = key.export_public(as_dict=True) pubkey.update({"alg": "RS256", "ext": True, "key_ops": ["verify"]}) nonce = secrets.token_urlsafe(24) request = { "redirect_uri": redirect_url, "display": "page", "nonce": nonce, "key": pubkey } print(request) # I can't seem to use jwcrypto to encode a jwt and sign it with the key, so let's just # install pyjwt and use that instead privatekey = key.export_to_pem(private_key=True, password=None) request_jwt = jwt.encode(request, key=None, algorithm=None) state = secrets.token_urlsafe(24) params = { "scope": "openid", "client_id": client_id, # TODO: This should be the values we added when registering "response_type": "id_token token", "request": request_jwt, "state": state, } p = Request('GET', auth_url, params=params).prepare() return p.url
def get_challenge(self, public_key: jwk.JWK): key_id = public_key.thumbprint(self._hasher_name) if not key_id in self._keys: self._keys[key_id] = public_key.export_public(as_dict=True) challenge = self._get_sts(key_id, expires_on=time.time() + self._ttl) challenge_hash = self._hashfn(challenge).digest() # if algorithm == 'rsa-sha256-pss': # signature = self._keypair.sign( # challenge_hash, # padding=PSS(mgf=MGF1(self._hasher_name), # salt_length=self._hasher_name.digest_size), # algorithm=self._hasher_name # ) if algorithm == 'rsa-sha256': signature = self._keypair.sign( challenge_hash, padding=PKCS1v15(), algorithm=self._hasher_name ) else: raise NotImplementedError('Cannot sign data: invalid algorithm') return ':'.join([_bytes_to_base64str(obj) for obj in [challenge_hash, signature, challenge]])
def encrypt(payload, key: jwk.JWK, namespace: str, path: Path = None): """Encrypt and assemble a payload. https://jwcrypto.readthedocs.io/en/stable/jwe.html """ public_key = jwk.JWK.from_json(key.export_public()) protected_header = { "alg": "ECDH-ES", "enc": "A256GCM", "typ": "JWE", "kid": public_key.thumbprint(), } compressed = gzip.compress(json.dumps(payload).encode()) jwetoken = jwe.JWE(compressed, recipient=public_key, protected=protected_header) # load the envelope with (pioneer / "telemetry.pioneer-study.4.sample.pass.json").open("r") as fp: envelope = json.load(fp) # by convention, the encryption key is the document namespace since each # study is contained within a dataset envelope["payload"] = { **envelope["payload"], **dict( encryptedData=jwetoken.serialize(compact=True), encryptionKeyId=namespace, schemaNamespace=namespace, schemaName="test", schemaVersion=1, ), } if path: with path.open("w") as fp: write_serialized(json.dumps(envelope), fp) return envelope
def ServerMain(q,tport): filu = 'serverdaemon.ini' HOST = '0.0.0.0' #change to None if wanted listen from IPv6 address try: fp = open(filu, 'r+') Config.readfp(fp) url = Config.get('REST','url') header = Config.get('REST','header') if tport==0: tport = int(Config.get('DAEMON','port')) PORT = int(Config.get('DAEMON','port')) fp.close() except: url = input('anna url:') header = input('anna header:') port = input('anna port:') cfgfile = open(filu,'w') try: Config.add_section('REST') Config.add_section('DAEMON') print("*** Created sections") except: print('*** sections already exists') Config.set('REST','url',url) Config.set('REST','header', header) Config.set('DAEMON','port',port) Config.write(cfgfile) cfgfile.close() tport = int(Config.get('DAEMON','port')) url = Config.get('REST','url') header = Config.get('REST','header') PORT = int(Config.get('DAEMON','port')) print("*** Created information.") header = ast.literal_eval(header) try: conn = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) while True: print("*** Main ***") #print("*" * 60) conn = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: conn.bind((HOST, PORT)) except: print("Main *** Ei onnistunut") ServerMain(q,tport) info = conn.recvfrom(1024) #print(info) data = info[0].decode("utf-8") #print (data) addr = info[1] #print (addr) #datan tarkistus ja säikeen aloitus if data=="I am Client": #print("Main *** Right start message") #lähetetään julkinen avain key = JWK(generate="RSA",public_exponent=29,size=1000) public_key = key.export_public() conn.sendto(public_key.encode("utf-8"),addr) #otetaan viesti vastaan ja avataan encrypted_signed_token = conn.recv(1024).decode("utf-8") #print(encrypted_signed_token) E = JWE() E.deserialize(encrypted_signed_token, key) raw_payload = E.payload #print("*** raw payload:",raw_payload) string = raw_payload.decode("utf-8") #print("*** received str:", string) Payload = json.loads(string) #print("*** JSON:",Payload) #print("*** received payload:", Payload['exp']) #käydään REST app kysymässä Kumokselta mac = str(Payload['exp']) myResponse = requests.get(url + mac,header) #print(url + mac,header) #print("REST:", myResponse.status_code) if(myResponse.ok): print("main *** Found!") jData = json.loads(myResponse.content.decode("utf-8")) #print("The response contains {0} properties".format(len(jData))) # Konrollerille yhteys #Haetaan "listalta" if not q.empty(): tport = q.get() conn.sendto(tport.encode("utf-8"),addr) else: tport = str(int(tport)+1) conn.sendto(tport.encode("utf-8"),addr) #Aloitetaan stringissä uusi yhteys thread.start_new_thread(Listen_Client,(url,data,tport,q,header,)) else: print("Main *** Not found") answer="Good try <3" conn.sendto(answer.encode("utf-8"),addr) else: conn.close() print("*" * 60) conn.close() print("*" * 60) except: conn.close() print("Main *** Frong message. Start again") ServerMain(q,tport)
def Listen_Client(url,data,tport,q,header): try: while True: #print("---Thread---") HOST = '0.0.0.0' PORT = int(tport) conn = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: conn.bind((HOST, PORT)) print("Thread *** Bind is ready", PORT) except: print("Thread *** Connection bind failed") Listen_Client(url,data,PORT,q,header) info = conn.recvfrom(1024) #print(info) data = info[0].decode("utf-8") #print (data) addr = info[1] #print (addr) #print("-" * 60) #print('Thread *** connected by', addr) key = JWK(generate="RSA",public_exponent=29,size=1000) public_key = key.export_public() #print('Thread *** public key',public_key) conn.sendto(public_key.encode("utf-8"),addr) #otetaan viesti vastaan ja avataan try: conn.settimeout(60) encrypted_signed_token_info = conn.recvfrom(1024) encrypted_signed_token = encrypted_signed_token_info[0].decode("utf-8") #print(encrypted_signed_token) except: print('Thread *** time out') break E = JWE() E.deserialize(encrypted_signed_token, key) raw_payload = E.payload string = raw_payload.decode("utf-8") Payload = json.loads(string) #print("Thread *** received payload:", Payload['exp']) #käydään REST app kysymässä Kumokselta mac = str(Payload['exp']) myResponse = requests.get(url + mac,header) #print(url + mac,header) #print("Thread *** REST:", myResponse.status_code) #tarkistus if(myResponse.ok): print("Thread *** Found!") jData = json.loads(myResponse.content.decode("utf-8")) #print("The response contains {0} properties".format(len(jData))) conn.close() else: print("Thread *** Not found") answer="Good try <3" conn.send(answer.encode("utf-8")) #SDN irrottaa kyseisen laitteen verkosta break conn.close() #conn.close() print("Thread *** end") q.put(tport) except: #conn.close() q.put(tport) print("Thread *** Forced end")
def Listen_Client(url,data,tport,q,header): try: while True: HOST = '0.0.0.0' PORT = tport s = None for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): af, socktype, proto, canonname, sa = res try: s = socket.socket(af, socktype, proto) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) except socket.error as msg: print("Thread *** error message:",msg) s = None sys.exit(1) continue try: print("Thread",sa) s.bind(sa) s.listen(1) except socket.error as msg: print("Thread *** error message:",msg) s.close() s = None sys.exit(1) continue break if s is None: print("Thread *** could not open socket") break conn, addr = s.accept() while True: print("-" * 60) print('Thread *** connected by', addr) key = JWK(generate="RSA",public_exponent=29,size=1000) public_key = key.export_public() print('Thread *** public key',public_key) conn.send(public_key.encode("utf-8")) #otetaan viesti vastaan ja avataan try: conn.settimeout(20) encrypted_signed_token = conn.recv(1024).decode("utf-8") print(encrypted_signed_token) except: print('Thread *** time out') q.put(tport) break E = JWE() E.deserialize(encrypted_signed_token, key) raw_payload = E.payload string = raw_payload.decode("utf-8") Payload = json.loads(string) #print("Thread *** received payload:", Payload['exp']) while True: try: #käydään REST app kysymässä Kumokselta mac = str(Payload['exp']) myResponse = requests.get(url + mac,header) break except: print("Thread *** REST failed") print(url + mac,header) print("Thread *** REST:", myResponse.status_code) #tarkistus if(myResponse.ok): print("Thread *** Found!") jData = json.loads(myResponse.content.decode("utf-8")) print("The response contains {0} properties".format(len(jData))) elif myResponse.status_code==400: print("Baasbox is down or configuration file is wrong") break else: print("Thread *** Not found") answer="Good try <3" conn.send(answer.encode("utf-8")) q.put(tport) #SDN irrottaa kyseisen laitteen verkosta break conn.close() #break print("Thread *** end") print("-" * 60) except Exception as msg: print("Thread *** Forced end") print(msg) print("-" * 60)
def mainServer(q): filu = 'serverdaemon.ini' HOST = '0.0.0.0' #change to None if wanted listen from IPv6 address try: fp = open(filu, 'r+') Config.readfp(fp) url = Config.get('REST','url') header = Config.get('REST','header') tport = int(Config.get('DAEMON','port')) PORT = int(Config.get('DAEMON','port')) fp.close() except: filu = input('anna kansion nimi:') url = input('anna url:') header = input('anna header:') port = input('anna port:') cfgfile = open(filu,'w') try: Config.add_section('REST') Config.add_section('DAEMON') print("*** Created sections") except: print('*** sections already exists') Config.set('REST','url',url) Config.set('REST','header', header) Config.set('DAEMON','port',port) Config.write(cfgfile) cfgfile.close() tport = int(Config.get('DAEMON','port')) url = Config.get('REST','url') header = Config.get('REST','header') PORT = int(Config.get('DAEMON','port')) print("*** Created information.") header = ast.literal_eval(header) while True: s = None for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): af, socktype, proto, canonname, sa = res try: s = socket.socket(af, socktype, proto) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) except socket.error as msg: s = None continue try: #print('Main ***',sa) s.bind(sa) s.listen(1) except socket.error as msg: s.close() s = None continue break if s is None: print('Main *** Could not open socket') mainServer(q) #sys.exit(1) conn, addr = s.accept() print("*" * 60) print('Main *** Connected by', addr) try: conn.settimeout(5) data = conn.recv(1024).decode("utf-8") conn.settimeout(None) except: print("Main *** timeout") mainServer(q) print(data) #datan tarkistus ja säikeen aloitus if data=="I am Client": print("Main*** Right start message") #lähetetään julkinen avain key = JWK(generate="RSA",public_exponent=29,size=1000) public_key = key.export_public() conn.send(public_key.encode("utf-8")) #otetaan viesti vastaan ja avataan encrypted_signed_token = conn.recv(1024).decode("utf-8") print(encrypted_signed_token) E = JWE() E.deserialize(encrypted_signed_token, key) raw_payload = E.payload print("*** raw payload:",raw_payload) string = raw_payload.decode("utf-8") print("*** received str:", string) Payload = json.loads(string) print("*** JSON:",Payload) print("*** received payload:", Payload['exp']) while True: try: #käydään kysymässä onko listoilla mac = str(Payload['exp']) myResponse = requests.get(url + mac,header) print(url + mac,header) print("REST:", myResponse.status_code) break except: print("Main *** REST failed") if(myResponse.ok): print("Main *** Found!") jData = json.loads(myResponse.content.decode("utf-8")) print("The response contains {0} properties".format(len(jData))) #Kontrollerille viestiä, id configuroitavissa #{ #ip: string, #valid: bool #} #POST /iot-service/:id #Haetaan "listalta" if not q.empty(): free_port = q.get() conn.send(free_port.encode("utf-8")) else: tport = str(int(tport)+1) conn.send(tport.encode("utf-8")) #Aloitetaan stringissä uusi yhteys #conn.shutdown(socket.SHUT_RDWR) conn.close() thread.start_new_thread(Listen_Client,(url,data,tport,q,header,)) elif myResponse.status_code==400: print("Baasbox is down or configuration file is wrong") break else: print("Not found") answer="Good try <3" conn.send(answer.encode("utf-8")) break else: conn.close() print("*" * 60) conn.close() print("*" * 60)
def Listen_Client(url, data, tport, q, header): try: while True: HOST = '0.0.0.0' PORT = tport s = None for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): af, socktype, proto, canonname, sa = res try: s = socket.socket(af, socktype, proto) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) except socket.error as msg: #print(PORT,"Thread *** error message:",msg) s = None sys.exit(1) continue try: #print("Thread",sa) s.bind(sa) s.listen(1) except socket.error as msg: print(PORT, "Thread *** error message:", msg) s.close() s = None sys.exit(1) continue break if s is None: print(PORT, "Thread *** could not open socket") break conn, addr = s.accept() while True: #print("-" * 60) #print('Thread *** connected by', addr) key = JWK(generate="RSA", public_exponent=29, size=1000) public_key = key.export_public() #print('Thread *** public key',public_key) conn.send(public_key.encode("utf-8")) #otetaan viesti vastaan ja avataan try: conn.settimeout(20) encrypted_signed_token = conn.recv(1024).decode("utf-8") #print(encrypted_signed_token) except: print(PORT, 'Thread *** time out') q.put(tport) break try: E = JWE() E.deserialize(encrypted_signed_token, key) except Exception as msg: print(PORT, 'Thread *** Wrong key', encrypted_signed_token) print(PORT, 'Thread *** Wrong key', public_key) print(PORT, 'Thread *** Wrong key', msg) break raw_payload = E.payload string = raw_payload.decode("utf-8") Payload = json.loads(string) #print("Thread *** received payload:", Payload['exp']) while True: try: #käydään REST app kysymässä Kumokselta mac = str(Payload['exp']) #myResponse = requests.get(url + mac,header) myResponse = Check_rest(url, mac, header) break except Exception as msg: print(PORT, "Thread *** REST failed", msg) #print(url + mac,header) #print("Thread *** REST:", myResponse.status_code) #tarkistus if (myResponse == 200): #if(mac=='mac=00-00-00-00-00-01'): #print("Thread *** Found!") jData = "mac=00-00-00-00-00-01" #jData = json.loads(myResponse.content.decode("utf-8")) #print("The response contains {0} properties".format(len(jData))) else: print("Thread *** Not found") answer = "Good try <3" conn.send(answer.encode("utf-8")) q.put(tport) #SDN irrottaa kyseisen laitteen verkosta break conn.close() #break print(PORT, "Thread *** end") print("-" * 60) except Exception as msg: print(PORT, "Thread *** Forced end", msg) print("-" * 60)
def mainServer(kierros, PORT, q): if (kierros == 0): info = filu_checker() print(info) info = dict(info) url = info['url'] header = info['header'] PORT = int(info['port']) tport = int(info['port']) kierros = 1 HOST = '0.0.0.0' #change to None if wanted listen from IPv6 address while True: s = None for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): af, socktype, proto, canonname, sa = res try: s = socket.socket(af, socktype, proto) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) except socket.error as msg: print("Main ***", msg) s = None continue try: #print('Main ***',sa) s.bind(sa) s.listen(1) except socket.error as msg: print("Main ***", msg) s.close() s = None continue break if s is None: print('Main *** Could not open socket') time.sleep(10) PORT = PORT + 1 mainServer(kierros, PORT, q) #sys.exit(1) conn, addr = s.accept() #print("*" * 60) #print('Main *** Connected by', addr) try: #conn.settimeout(5) data = conn.recv(1024).decode("utf-8") #conn.settimeout(None) except: print("Main *** timeout") mainServer(kierros, PORT, q) #print(data) #datan tarkistus ja säikeen aloitus if data == "I am Client": #print("Main*** Right start message") #lähetetään julkinen avain key = JWK(generate="RSA", public_exponent=29, size=1000) public_key = key.export_public() conn.send(public_key.encode("utf-8")) #otetaan viesti vastaan ja avataan encrypted_signed_token = conn.recv(1024).decode("utf-8") #print(encrypted_signed_token) try: E = JWE() E.deserialize(encrypted_signed_token, key) raw_payload = E.payload #print("*** raw payload:",raw_payload) string = raw_payload.decode("utf-8") except Exception as msg: print('Main *** Wrong key', encrypted_signed_token) print('Main *** Wrong key', public_key) print('Main *** Wrong key', msg) break #print("*** received str:", string) Payload = json.loads(string) #print("*** JSON:",Payload) #print("*** received payload:", Payload['exp']) while True: try: #käydään kysymässä onko listoilla mac = str(Payload['exp']) #Tähän kohti kysymys lähetetään request session ohjelmalle myResponse = Check_rest(url, mac, header) #myResponse = requests.get(url + mac,header) #print(url + mac,header) #print("REST:", myResponse.status_code) break except Exception as msg: print("Main *** REST failed", msg) sys.exit(1) if (myResponse == 200): #if(mac=='mac=00-00-00-00-00-01'): #print("Main *** Found!") #jData = json.loads(myResponse.content.decode("utf-8")) #print("The response contains {0} properties".format(len(jData))) jData = 'mac=00-00-00-00-00-01' #Kontrollerille viestiä, id configuroitavissa #{ #ip: string, #valid: bool #} #POST /iot-service/:id #Haetaan "listalta" if not q.empty(): free_port = q.get() conn.send(free_port.encode("utf-8")) else: tport = str(int(tport) + 1) conn.send(tport.encode("utf-8")) #Aloitetaan stringissä uusi yhteys #conn.shutdown(socket.SHUT_RDWR) conn.close() thread.start_new_thread(Listen_Client, ( url, data, tport, q, header, )) else: print("Not found", myResponse.status_code) answer = "Good try <3" conn.send(answer.encode("utf-8")) break else: conn.close() print("*" * 60) conn.close() print("*" * 60)
def mainServer(q): filu = 'serverdaemon.ini' HOST = '0.0.0.0' #change to None if wanted listen from IPv6 address try: fp = open(filu, 'r+') Config.readfp(fp) url = Config.get('REST', 'url') header = Config.get('REST', 'header') tport = int(Config.get('DAEMON', 'port')) PORT = int(Config.get('DAEMON', 'port')) fp.close() except: filu = input('anna kansion nimi:') url = input('anna url:') header = input('anna header:') port = input('anna port:') cfgfile = open(filu, 'w') try: Config.add_section('REST') Config.add_section('DAEMON') print("*** Created sections") except: print('*** sections already exists') Config.set('REST', 'url', url) Config.set('REST', 'header', header) Config.set('DAEMON', 'port', port) Config.write(cfgfile) cfgfile.close() tport = int(Config.get('DAEMON', 'port')) url = Config.get('REST', 'url') header = Config.get('REST', 'header') PORT = int(Config.get('DAEMON', 'port')) print("*** Created information.") header = ast.literal_eval(header) while True: s = None for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): af, socktype, proto, canonname, sa = res try: s = socket.socket(af, socktype, proto) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) except socket.error as msg: s = None continue try: #print('Main ***',sa) s.bind(sa) s.listen(1) except socket.error as msg: s.close() s = None continue break if s is None: print('Main *** Could not open socket') mainServer(q) #sys.exit(1) conn, addr = s.accept() print("*" * 60) print('Main *** Connected by', addr) try: conn.settimeout(5) data = conn.recv(1024).decode("utf-8") conn.settimeout(None) except: print("Main *** timeout") mainServer(q) print(data) #datan tarkistus ja säikeen aloitus if data == "I am Client": print("Main*** Right start message") #lähetetään julkinen avain key = JWK(generate="RSA", public_exponent=29, size=1000) public_key = key.export_public() conn.send(public_key.encode("utf-8")) #otetaan viesti vastaan ja avataan encrypted_signed_token = conn.recv(1024).decode("utf-8") print(encrypted_signed_token) E = JWE() E.deserialize(encrypted_signed_token, key) raw_payload = E.payload print("*** raw payload:", raw_payload) string = raw_payload.decode("utf-8") print("*** received str:", string) Payload = json.loads(string) print("*** JSON:", Payload) print("*** received payload:", Payload['exp']) while True: try: #käydään kysymässä onko listoilla mac = str(Payload['exp']) myResponse = requests.get(url + mac, header) print(url + mac, header) print("REST:", myResponse.status_code) break except: print("Main *** REST failed") if (myResponse.ok): print("Main *** Found!") jData = json.loads(myResponse.content.decode("utf-8")) print("The response contains {0} properties".format( len(jData))) #Kontrollerille viestiä, id configuroitavissa #{ #ip: string, #valid: bool #} #POST /iot-service/:id #Haetaan "listalta" if not q.empty(): free_port = q.get() conn.send(free_port.encode("utf-8")) else: tport = str(int(tport) + 1) conn.send(tport.encode("utf-8")) #Aloitetaan stringissä uusi yhteys #conn.shutdown(socket.SHUT_RDWR) conn.close() thread.start_new_thread(Listen_Client, ( url, data, tport, q, header, )) elif myResponse.status_code == 400: print("Baasbox is down or configuration file is wrong") break else: print("Not found") answer = "Good try <3" conn.send(answer.encode("utf-8")) break else: conn.close() print("*" * 60) conn.close() print("*" * 60)
def mainServer(kierros,PORT,q): if(kierros==0): info = filu_checker() print(info) info = dict(info) url = info['url'] header = info['header'] PORT = int(info['port']) tport = int(info['port']) kierros = 1 HOST = '0.0.0.0' #change to None if wanted listen from IPv6 address while True: s = None for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): af, socktype, proto, canonname, sa = res try: s = socket.socket(af, socktype, proto) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) except socket.error as msg: print("Main ***",msg) s = None continue try: #print('Main ***',sa) s.bind(sa) s.listen(1) except socket.error as msg: print("Main ***",msg) s.close() s = None continue break if s is None: print('Main *** Could not open socket') time.sleep(10) PORT = PORT+1 mainServer(kierros,PORT,q) #sys.exit(1) conn, addr = s.accept() #print("*" * 60) #print('Main *** Connected by', addr) try: #conn.settimeout(5) data = conn.recv(1024).decode("utf-8") #conn.settimeout(None) except: print("Main *** timeout") mainServer(kierros,PORT,q) #print(data) #datan tarkistus ja säikeen aloitus if data=="I am Client": #print("Main*** Right start message") #lähetetään julkinen avain key = JWK(generate="RSA",public_exponent=29,size=1000) public_key = key.export_public() conn.send(public_key.encode("utf-8")) #otetaan viesti vastaan ja avataan encrypted_signed_token = conn.recv(1024).decode("utf-8") #print(encrypted_signed_token) try: E = JWE() E.deserialize(encrypted_signed_token, key) raw_payload = E.payload #print("*** raw payload:",raw_payload) string = raw_payload.decode("utf-8") except Exception as msg: print('Main *** Wrong key',encrypted_signed_token) print('Main *** Wrong key',public_key) print('Main *** Wrong key',msg) break #print("*** received str:", string) Payload = json.loads(string) #print("*** JSON:",Payload) #print("*** received payload:", Payload['exp']) while True: try: #käydään kysymässä onko listoilla mac = str(Payload['exp']) #Tähän kohti kysymys lähetetään request session ohjelmalle myResponse = Check_rest(url,mac,header) #myResponse = requests.get(url + mac,header) #print(url + mac,header) #print("REST:", myResponse.status_code) break except Exception as msg: print("Main *** REST failed",msg) sys.exit(1) if(myResponse == 200): #if(mac=='mac=00-00-00-00-00-01'): #print("Main *** Found!") #jData = json.loads(myResponse.content.decode("utf-8")) #print("The response contains {0} properties".format(len(jData))) jData = 'mac=00-00-00-00-00-01' #Kontrollerille viestiä, id configuroitavissa #{ #ip: string, #valid: bool #} #POST /iot-service/:id #Haetaan "listalta" if not q.empty(): free_port = q.get() conn.send(free_port.encode("utf-8")) else: tport = str(int(tport)+1) conn.send(tport.encode("utf-8")) #Aloitetaan stringissä uusi yhteys #conn.shutdown(socket.SHUT_RDWR) conn.close() thread.start_new_thread(Listen_Client,(url,data,tport,q,header,)) else: print("Not found",myResponse.status_code) answer="Good try <3" conn.send(answer.encode("utf-8")) break else: conn.close() print("*" * 60) conn.close() print("*" * 60)