Example #1
0
def connecting(host, port, username):
    global user, scall_user

    i = 0
    while True:  #cancel a 3 times
        try:
            conn_msg = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            conn_msg.settimeout(5)
            conn_msg.connect((host, port))
            conn_msg.settimeout(None)

            conn_file = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            conn_file.settimeout(5)
            conn_file.connect((host, port + 1))
            conn_file.settimeout(None)
        except:
            if i == 3:
                return (False, "attempt")
            time.sleep(0.2)
        else:
            break
        i += 1

    key = Fernet.generate_key()
    key_RSA = conn_msg.recv(2048)

    try:
        recipient_key = RSA.imporimport_keytKey(key_RSA)
    except:
        recipient_key = RSA.importKey(key_RSA)

    cipher_rsa = PKCS1_OAEP.new(recipient_key)
    enc_session_key = cipher_rsa.encrypt(key)

    conn_msg.send(enc_session_key)

    user = snet.user(key, conn_msg, conn_file, username)
    #user.sock_call = call_sock

    password = window.line_pass.text()

    user.secure_send(password, conn_msg)
    is_correct = user.secure_recv(conn_msg)
    is_correct = is_correct.decode()

    if is_correct == "1":
        user.secure_send(username + "*/randesc/*" + user.random_esc, conn_msg)

        sameu_and_key = user.secure_recv(conn_msg)
        sameu_and_key = sameu_and_key.decode()
        samer_username = sameu_and_key[0]

        if samer_username == "0":
            scall_user = snet.scall(sameu_and_key[1:])
            #scall_user.sock_call.settimeout(1)
            scall_user.sock_call.connect((host, port))
            scall_user.sock_call.setblocking(0)
            window.thread_recv_msg.start()  #end it with close
            window.thread_recv_file.start()
            return (True, "")
        else:
            return (False, "same")
    else:
        return (False, "pass")