示例#1
0
def main():
    server_socket = socket.socket()
    server_socket.bind(("0.0.0.0", 8888))
    server_socket.listen()
    print("The server is up and running")
    (client_socket, client_address) = server_socket.accept()
    print("Client is connected")

    while True:
        length = client_socket.recv(4).decode()
        valid_protocol = protocol.get_msg(length)
        if valid_protocol:
            cmd = client_socket.recv(int(length)).decode()
            valid_cmd, command, params = check_client_request(cmd)
            if valid_cmd:
                reply = handle_client_request(command, params, client_socket)
                client_socket.send(protocol.create_msg(reply).encode())
                if command == "EXIT":
                    break

            else:
                # prepare proper error to client
                response = 'Bad command or parameters'
                client_socket.send(protocol.create_msg(response).encode())

        else:
            # prepare proper error to client
            response = 'Packet not according to protocol'
            client_socket.send(protocol.create_msg(response).encode())
            client_socket.recv(1024)

    # close sockets
    print("Closing connection")
    client_socket.close()
    server_socket.close()
示例#2
0
def main():
    my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    my_socket.connect(("127.0.0.1", 8888))

    print('Welcome to remote computer application. Available commands are:\n')
    print('TAKE_SCREENSHOT\nSEND_PHOTO\nDIR\nDELETE\nCOPY\nEXECUTE\nEXIT')
    # loop until user requested to exit
    while True:
        cmd = input("Please enter command:\n")
        try:
            if protocol.check_cmd(cmd):
                packet = protocol.create_msg(cmd)
                my_socket.send(packet.encode())
                length = my_socket.recv(4).decode()
                valid = protocol.get_msg(length)
                if valid:
                    serverResponse = my_socket.recv(int(length)).decode()
                    handle_server_response(my_socket, cmd, serverResponse)
                if serverResponse == "bay":
                    my_socket.close()
                    break
        except TypeError:
            print("invalid commend")
        except IndexError:
            print("invalid commend")
示例#3
0
def main():
    # open socket with client
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((IP, protocol.PORT))
    server_socket.listen()
    print("Server is up and running")
    (client_socket, client_address) = server_socket.accept()
    print("Client connected")
    # handle requests until user asks to exit
    while True:
        # Check if protocol is OK, e.g. length field OK
        valid_protocol, cmd = protocol.get_msg(client_socket)
        if valid_protocol:
            # Check if params are good, e.g. correct number of params, file name exists
            valid_cmd, command, params = check_client_request(cmd)
            if valid_cmd:
                # prepare a response using "handle_client_request"
                response = handle_client_request(command, params)
                # add length field using "create_msg"
                valid_response = protocol.create_msg(response)
                # send to client
                client_socket.send(valid_response)
                if command == 'SEND_PHOTO':  # Send the data of the photo itself to the client
                    with open(PHOTO_PATH, 'rb') as hfile:
                        data = hfile.read()
                        client_socket.send(data)
                if command == 'EXIT':
                    break
            else:
                # prepare proper error to client
                response = 'Bad command or parameters'
                valid_response = protocol.create_msg(response)
                # send to client
                client_socket.send(valid_response)
        else:
            if cmd == 'EXIT':  # Handle EXIT command, no need to respond to the client
                break
            # prepare proper error to client
            response = 'Packet not according to protocol'
            valid_response = protocol.create_msg(response)
            # send to client
            client_socket.send(valid_response)
            # Attempt to clean garbage from socket
            client_socket.recv(1024)
    print("Closing connection")
    server_socket.close()  # Close sockets
    client_socket.close()
def main():
    my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # open socket with the server
    my_socket.connect((IP, protocol.PORT))
    # print instructions
    print('Welcome to remote computer application. Available commands are:\n')
    print('TAKE_SCREENSHOT\nSEND_PHOTO\nDIR\nDELETE\nCOPY\nEXECUTE\nEXIT')
    # loop until user requested to exit
    while True:
        cmd = input("Please enter command:\n")
        if protocol.check_cmd(cmd):
            packet = protocol.create_msg(cmd)
            my_socket.send(packet)
            handle_server_response(my_socket, cmd)
            if cmd == 'EXIT':
                break
        else:
            if cmd == 'EXIT':
                break
            print("Not a valid command, or missing parameters\n")

    print("Closing\n")
    my_socket.close()  # Close socket
示例#5
0
def handle_client_request(command, params, client_socket):
    if command == "DIR":
        files = glob.glob(params + "\*.*")
        print(glob.glob(params))
        reply = "the dir contain :" + str(files)
        return reply
    elif command == "DELETE":
        os.remove(str(params))
        reply = "the file is delited" + params
        return reply
    elif command == "COPY":
        params = params.split(" ")
        if param_valid(params[0]) & param_valid(params[1]):
            shutil.copy(params[0], params[1])
            return "the operation done"
    elif command == "EXECUTE":
        valid = params.find(":")
        if valid > 0:
            params = r'' + params + ''
            print(params)
            subprocess.call([params], shell=True)
            return "the operation done"
    elif command == "TAKE_SCREENSHOT":
        image = pyautogui.screenshot()
        image.save(r'C:\screenServer.jpg')
        return "The server took a screenshot if you want to get the picture please enter - SEND_PHOTO "
    elif command == "SEND_PHOTO":
        filename = 'C:\screenServer.jpg'
        f = open(filename, 'rb')
        bytes = f.read()
        size = os.path.getsize(filename)
        size = str(size)
        client_socket.send(protocol.create_msg(size).encode())
        client_socket.sendall(bytes)
        f.close()
        print("photo sent")
        return "The server sent a screenshot"
    elif command == "EXIT":
        return "bay"
示例#6
0
def main():
    # open socket with client
    server_socket = socket.socket()
    server_socket.bind(("0.0.0.0", protocol.PORT))
    server_socket.listen()
    print("Server is up and running")
    (client_socket, client_address) = server_socket.accept()
    print("Client connected")

    # handle requests until user asks to exit
    while True:
        # Check if protocol is OK, e.g. length field OK
        valid_protocol, cmd = protocol.get_msg(client_socket)
        if valid_protocol:
            # Check if params are good, e.g. correct number of params, file name exists
            valid_cmd, command, params = check_client_request(cmd)
            if valid_cmd:
                if command == 'SEND_PHOTO':
                    #  Send size of length field
                    size_of_pic = os.path.getsize(PHOTO_PATH)
                    num_of_digits = len(str(size_of_pic))
                    size_msg = protocol.create_msg(str(num_of_digits).zfill(protocol.LENGTH_FIELD_SIZE))
                    client_socket.send(size_msg)
                    #  Send size of picture
                    client_socket.send(str(size_of_pic).encode())
                    #  Send picture
                    try:
                        img = open(PHOTO_PATH, 'rb')
                        image = img.read(size_of_pic)
                        if not image:
                            break
                        client_socket.send(image)
                        img.close()
                    except:
                        client_socket.send(protocol.create_msg("Something went wrong"))
                        return

                else:
                    # prepare a response using "handle_client_request"
                    response = handle_client_request(command, params)
                    # add length field using "create_msg"
                    response = protocol.create_msg(response)
                    # send to client
                    client_socket.send(response)

                if command == 'EXIT':
                    break

            else:
                # prepare proper error to client
                response = 'Bad command or parameters'
                response = protocol.create_msg(response)
                # send to client
                client_socket.send(response)

        else:
            # prepare proper error to client
            response = 'Packet not according to protocol'
            response = protocol.create_msg(response)
            # send to client
            client_socket.send(response)
            # Attempt to clean garbage from socket
            client_socket.recv(1024)

    # close sockets
    print("Closing connection")
    client_socket.close()
    server_socket.close()