Example #1
0
def run(key, port=DEFAULT_PORT):
    scon = neonet.NrlOpenPort(port)
    while True:
        data = scon.recv(float('inf'))
        adr = data[0]
        data = data[1]
        try:
            if data == b"REMOTE_CONNECT":
                port = random.randint(8192, 2**30)
                scon.send(adr, b"OK=" + hex(port).encode())
                con = neonet.NrlSecureConnection(adr, port, key, 500)
                #_thread.start_new_thread(handle_client, (con, adr))
                handle_client(con, adr)
            else:
                log("Strange data from " + str(adr) + " : " + data.decode())
        except:
            pass
Example #2
0
def run_server(adr=net.address, port=CMD_PORT, password=""):
    password = crypt.shortstrhash(password)
    net.setup(adr)
    print("Starting command-issuing server at " + hex(net.address) + ":" +
          str(port))
    scon = net.NrlOpenPort(port)
    cons = []

    while True:
        for i in cons:
            if i.available():
                # update the connection because a packet is available
                packet = i.recv()
                try:
                    packet = crypt.decrypt1(packet, password)
                except:
                    continue
                timing = int.from_bytes(packet[:8], 'little')
                if timing < millis() and timing > millis() - 5000:
                    __cmdBcast(cons, packet[8:], password)
                try:
                    print(
                        hex(i.adr) + " : issued command: " +
                        packet[8:].decode())
                except:
                    print(hex(i.adr) + " : issued a binary command.")
        if scon.available():
            pk = scon.recv(0)
            remote_adr = pk[0]
            timing = int.from_bytes(pk[1][:8], 'little')
            if timing < millis() and timing > millis() - 5000:
                expected = crypt.sha512(hex(timing) + password)
                if expected == pk[1][8:]:
                    port = get_rand_port()
                    scon.send(pk[0], port.to_bytes(4, 'little'))
                    cons.append(net.NrlConnection(pk[0], port))
                    print("New connection from " + hex(pk[0]))
                else:
                    print("Connection failure from " + hex(pk[0]) +
                          ": bad cryptographic sequence.")
            else:
                print("Connection failure from " + hex(pk[0]) +
                      ": expired timing.")
        time.sleep(0.001)
Example #3
0
def run_server(adr=net.address, port=MSG_PORT):
    net.setup(adr)
    print("Starting messaging server at " + hex(net.address) + ":" + str(port))
    scon = net.NrlOpenPort(port)
    cons = []

    messages = []

    users = {}

    while True:
        for i in cons:
            if i.available():
                # update the connection because a packet is available
                packet = i.recv()
                cmd = packet[0]
                packet = packet[1:]
                if cmd == CMD_WRITE_MSG:
                    messages.append(
                        __msgBcast(cons, users[i.adr] + b": " + packet))
                    print((users[i.adr] + b": " + packet).decode())
                elif cmd == CMD_READ_ALL:
                    for i2 in messages:
                        __sendMsgPkt(i, i2)
                else:
                    print("Invalid packet receieved from " +
                          users[i.adr].decode() + " : " + repr(packet))
        if scon.available():
            pk = scon.recv(0)
            if pk[1].startswith(b'MSG_CON') and pk[1][7] == 58:
                port = get_rand_port()
                scon.send(pk[0], port.to_bytes(4, 'little'))
                cons.append(net.NrlConnection(pk[0], port))
                user = pk[1][8:]
                print("New connection from " + hex(pk[0]) + " [" +
                      user.decode() + "]")
                users[pk[0]] = user
                messages.append(__msgBcast(cons, user + b' is now online.'))
        time.sleep(0.001)