コード例 #1
0
def cmd_chat(serv, args):
    # print "cmd_chat"
    user_id = args[0]
    client_socket = args[1]

    if len(args) < 3:
        return pt.MSG_ERROR
    chatWithUserId = 0
    try:
        chatWithUserId = int(args[2].strip())
    except:
        return pt.MSG_ERROR
    fdName = serv.get_user_name(chatWithUserId)
    text = ''
    if chatWithUserId not in serv.get_users().keys():
        text = '%s is not regist !' % chatWithUserId
        chatWithUserId = pt.SERV_USER
    elif chatWithUserId not in serv.get_usersonline():
        text = '%s is not online !' % fdName
        chatWithUserId = pt.SERV_USER
    elif chatWithUserId not in serv.get_user_friends(user_id):
        text = '[{0}:{1}] is not your friend ! Please add he/she first !'.format(
            chatWithUserId, fdName)
        chatWithUserId = pt.SERV_USER
    else:
        text = 'You are chating with:  [{0}:{1}]'.format(
            chatWithUserId, fdName)
    if client_socket == serv.get_server_socket():
        print text
    else:
        pt.send(client_socket, chatWithUserId, pt.SERV_USER, pt.MSG_CMD, text)
コード例 #2
0
    def process_cmd(self, user_id, msg):
        client_socket = self.get_user_socket(user_id)
        if client_socket is None:
            return pt.MSG_ERROR
        if not msg:
            return pt.MSG_ERROR
        res = pt.getcmd(msg)
        if res is None:
            return pt.MSG_ERROR
        cmdno = res[0]
        args = res[1]
        argss = [user_id, client_socket]

        text = pt.MAP_CMD_NO.keys()[pt.MAP_CMD_NO.values().index(cmdno)]
        for ag in args:
            argss.append(ag)
            text = text + "  " + ag
        text = '{0}:{1} | {2}'.format(user_id, self.get_user_name(user_id),
                                      text)
        print text
        if self.issupportcmd(user_id, cmdno) is not True:
            text = text + "  | no authority or no this command !"
            pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_ERROR, text)
            return pt.MSG_ERROR
        return scmap.MAP_CMD_FUN[cmdno](self, argss)
コード例 #3
0
ファイル: server.py プロジェクト: bbxytl/python-chat
    def process_cmd(self, user_id, msg):
        client_socket = self.get_user_socket(user_id)
        if client_socket is None:
            return pt.MSG_ERROR
        if not msg:
            return pt.MSG_ERROR
        res = pt.getcmd(msg)
        if res is None:
            return pt.MSG_ERROR
        cmdno = res[0]
        args = res[1]
        argss = [user_id, client_socket]

        text = pt.MAP_CMD_NO.keys()[pt.MAP_CMD_NO.values().index(cmdno)]
        for ag in args:
            argss.append(ag)
            text = text + "  " + ag
        text = '{0}:{1} | {2}'.format(user_id,
                                      self.get_user_name(user_id),
                                      text)
        print text
        if self.issupportcmd(user_id, cmdno) is not True:
            text = text + "  | no authority or no this command !"
            pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_ERROR, text)
            return pt.MSG_ERROR
        return scmap.MAP_CMD_FUN[cmdno](self, argss)
コード例 #4
0
ファイル: server.py プロジェクト: jarys/pynet
	def send_data(self, data):
		try:
			protocol.send(self.sending_socket, data)
			address = self.socketaddresses[self.sending_socket]
			self.output_func(self.sending_socket,self.host,self.port,address)
		except:
			self.remove_socket(self.sending_socket)
コード例 #5
0
ファイル: server.py プロジェクト: hpointu/awale
    def run(self):
        print("running...")
        self.running = True
        while self.running and self.ins:
            rds, wts, ers = select.select(self.ins, self.outs, self.ins, 0)

            for s in rds:
                if s is self._s:
                    if len(self.clients) < 2:
                        cl, addr = s.accept()
                        print("New client %s" % str(addr))
                        self.ins.append(cl)
                        self.clients[cl] = b''
                        player_no = len(self.players)
                        pname = player_name(player_no)
                        send(cl, 'info', "welcome %s" % pname)
                        send(cl, 'player_id', player_no)
                        self.players[cl] = player_no

                        if len(self.players) == 2:
                            self.broadcast('info', "Ready to play")
                            self.send_game()
                    else:
                        print("Maximum clients reached")
                        cl, addr = s.accept()
                        cl.close()
                else:
                    data = s.recv(5)
                    if data:
                        self.clients[s] += data
                    else:
                        print("Client disconnected")
                        self.ins.remove(s)
                        self.clients.pop(s)
                        if len(self.players) == 2:
                            self.broadcast(
                                'info',
                                "%s left. Exiting..." % \
                                player_name(self.players[s])
                            )
                            self.running = False
                        s.close()

            for s in ers:
                print("Error, closing socket.")
                self.ins.remove(s)
                s.close()

            # manage data
            for s in self.clients:
                data = self.clients[s]
                msg, remain = extract_msg(data)
                if msg:
                    self.process_msg(s, msg)
                self.clients[s] = remain
        print("closing sockets")
        for s in self.clients:
            s.close()
        self._s.close()
コード例 #6
0
ファイル: server.py プロジェクト: jarys/pynet
 def send_data(self, data):
     try:
         protocol.send(self.sending_socket, data)
         address = self.socketaddresses[self.sending_socket]
         self.output_func(self.sending_socket, self.host, self.port,
                          address)
     except:
         self.remove_socket(self.sending_socket)
コード例 #7
0
 def process_chat(self, from_user, to_user, msg):
     toSocket = self.get_user_socket(to_user)
     if toSocket is None:
         return pt.MSG_ERROR
     text = '[{0}:{1}] {2}'.format(from_user, self.get_user_name(from_user),
                                   msg)
     print text
     pt.send(toSocket, to_user, from_user, pt.MSG_TEXT, text)
コード例 #8
0
ファイル: server.py プロジェクト: jarys/pynet
 def send_data_to_all(self, data):
     for socket in self.connected_sockets:
         try:
             protocol.send(socket, data)
             address = self.socketaddresses[socket]
             self.output_func(socket, self.host, self.port, address)
         except:
             self.remove_socket(socket)
コード例 #9
0
ファイル: server.py プロジェクト: jarys/pynet
	def send_data_to_all(self, data):
		for socket in self.connected_sockets:
			try:
				protocol.send(socket, data)
				address = self.socketaddresses[socket]
				self.output_func(socket,self.host,self.port,address)
			except:
				self.remove_socket(socket)
コード例 #10
0
ファイル: main.py プロジェクト: LeguLeteron/LLCP
def send_to_hardware(message=p.rx_string):
    try:
        string = p.beautify(p.create(message))
        for i in string:
            raw_go_hw = p.RX(data=i).raw()
            p.send(raw_go_hw)
    except:
        raw_go_hw = p.RX().raw()
        p.send(raw_go_hw)
コード例 #11
0
ファイル: server.py プロジェクト: bbxytl/python-chat
 def process_chat(self, from_user, to_user, msg):
     toSocket = self.get_user_socket(to_user)
     if toSocket is None:
         return pt.MSG_ERROR
     text = '[{0}:{1}] {2}'.format(from_user,
                                   self.get_user_name(from_user),
                                   msg)
     print text
     pt.send(toSocket, to_user, from_user, pt.MSG_TEXT, text)
コード例 #12
0
ファイル: client.py プロジェクト: catlafe/python-chat
 def run(self):
     client = self.client
     while not self.done:
         data = raw_input()
         data_type = pt.MSG_TEXT
         if len(data) > 0 and data[0] == '/':
             data_type = pt.MSG_CMD
             client.curchatuser = pt.SERV_USER
         pt.send(self.client_socket, client.curchatuser, client.user_id,
                 data_type, data)
コード例 #13
0
ファイル: network.py プロジェクト: jyhanna/Autocore
    def __init__(self, message, subject, serializer, port, host):
        try:
            send_socket = socket.socket()
            send_socket.connect((host, port))

            protocol.send(send_socket, serializer(message), subject)
            send_socket.close()
        except socket.error, msg:
            logger.warn(
                str(msg[1]) + "Did you Initialize() to start the core?")
コード例 #14
0
ファイル: server.py プロジェクト: hpointu/awale
 def send_game(self, client=None):
     state = {
         'scores': self.game.scores,
         'game': self.game.game,
         'to_play': self.game.current_player,
     }
     if client:
         send(client, 'game_state', state)
     else:
         self.broadcast('game_state', state)
コード例 #15
0
ファイル: client.py プロジェクト: bbxytl/python-chat
 def run(self):
     client = self.client
     while not self.done:
         data = raw_input()
         data_type = pt.MSG_TEXT
         if len(data) > 0 and data[0] == '/':
             data_type = pt.MSG_CMD
             client.curchatuser = pt.SERV_USER
         pt.send(self.client_socket, client.curchatuser,
                 client.user_id, data_type, data)
コード例 #16
0
ファイル: pipe_server.py プロジェクト: iron-phoenix/networks
    def client_process(self, sock, active_clients):
        while 1:
            data = protocol.recv(sock)
            if not data:
                return sock.close()

            encryption = TripleDESCipher(data["key"])
            if data["encryption"] == 1:
                protocol.send(sock, (active_clients, encryption.encrypt(data["message"])))
            else:
                protocol.send(sock, (active_clients, encryption.decrypt(data["message"])))
コード例 #17
0
ファイル: network.py プロジェクト: jyhanna/Autocore
    def __init__(self, subject, callback, deserializer, port, host):
        try:
            receive_socket = socket.socket()
            receive_socket.connect((host, port))

            protocol.send(receive_socket, "", subject)
            message, _ = protocol.receive(receive_socket)
        except socket.error, msg:
            logger.warn(
                str(msg[1]) + " Did you Initialize() to start the core?")
            return
コード例 #18
0
ファイル: server.py プロジェクト: bbxytl/python-chat
 def logon(self, user_id, user_pwd, client_socket, client_addr):
     if user_id not in self.get_users():
         return None
     if user_pwd != self.get_user_pwd(user_id):
         text = 'PassWord is Wrong !'
         pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_ERROR, text)
         return False
     else:
         self.set_useronline_flag(user_id, pt.FLAG_ONLINE)
         self.set_user_socket(user_id, client_socket)
         self.set_user_addr(user_id, client_addr)
         return True
コード例 #19
0
 def logon(self, user_id, user_pwd, client_socket, client_addr):
     if user_id not in self.get_users():
         return None
     if user_pwd != self.get_user_pwd(user_id):
         text = 'PassWord is Wrong !'
         pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_ERROR, text)
         return False
     else:
         self.set_useronline_flag(user_id, pt.FLAG_ONLINE)
         self.set_user_socket(user_id, client_socket)
         self.set_user_addr(user_id, client_addr)
         return True
コード例 #20
0
ファイル: fork_server.py プロジェクト: iron-phoenix/networks
def client_process(sock, server_sock, nclients, timeout=60):
    server_sock.close()
    sock.settimeout(timeout)
    while 1:
        data = protocol.recv(sock)
        if not data:
            return sock.close()

        encryption = TripleDESCipher(data["key"])
        if data["encryption"] == 1:
            protocol.send(sock, (nclients.value, encryption.encrypt(data["message"])))
        else:
            protocol.send(sock, (nclients.value, encryption.decrypt(data["message"])))
コード例 #21
0
def cmd_online(serv, args):
    # print " cmd_online"
    user_id = args[0]
    client_socket = args[1]

    users = serv.get_usersonline()
    names = ''
    for uid in users.keys():
        names = names + str(uid) + ':' + serv.get_user_name(uid) + '\n'

    if client_socket == serv.get_server_socket():
        print names
    else:
        pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_TEXT, names)
コード例 #22
0
def cmd_get_cmds(serv, args):
    user_id = args[0]
    client_socket = args[1]
    text = ''
    if client_socket == serv.get_server_socket():
        cmds = pt.CMD_SET
    else:
        cmds = serv.get_user_cmds(user_id)
    for no in cmds:
        text = text + pt.get_cmd_name(no) + " : " + str(no) + "\n"
    if client_socket == serv.get_server_socket():
        print text
    else:
        pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_TEXT, text)
コード例 #23
0
def cmd_name(serv, args):
    # print " cmd _ name()"
    user_id = args[0]
    client_socket = args[1]

    names = serv.get_users()
    text = ''
    for id, info in names.items():
        text = text + str(id) + ':' + serv.get_user_name(id) + '\n'

    if client_socket == serv.get_server_socket():
        print text
    else:
        pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_TEXT, text)
コード例 #24
0
ファイル: server.py プロジェクト: bbxytl/python-chat
    def run(self):
        try:
            thread_serv = threading.Thread(target=self.server_cmd)
            thread_serv.start()

            while True and not self.__done:
                    client_socket, client_addr = self.__server_socket.accept()
                    thread = threading.Thread(target=self.clientLink, args=(client_socket, client_addr))
                    thread.start()
        except KeyboardInterrupt:
            return
        finally:
            for uid, info in self.get_usersonline().items():
                client_socket = self.get_user_socket(uid)
                pt.send(client_socket, uid, pt.SERV_USER, pt.CMD_QUIT, "Server is Sign Out !")
            self.save_users(self.__file_name)
コード例 #25
0
ファイル: server.py プロジェクト: adibl/2_7
def main():
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        server_socket.bind((IP, PORT))
        server_socket.listen(QUEUE_SIZE)
        # endless loop to receive client after client
        while True:
            comm_socket, client_address = server_socket.accept()
            while True:
                try:
                    request = protocol.recv(comm_socket)
                    if request[0] == "Exit":
                        comm_socket.close()
                        break
                    # add request to answer function call
                    is_work = protocol.send(comm_socket, request)
                    if not is_work:
                        comm_socket.close()
                        break
                except socket.error as msg:
                    print 'client socket disconnected- ' + str(msg)
                    comm_socket.close()
                    break
    except socket.error as msg:
        print 'failed to open server socket - ' + str(msg)
    finally:
        server_socket.close()
コード例 #26
0
    def run(self):
        try:
            thread_serv = threading.Thread(target=self.server_cmd)
            thread_serv.start()

            while True and not self.__done:
                client_socket, client_addr = self.__server_socket.accept()
                thread = threading.Thread(target=self.clientLink,
                                          args=(client_socket, client_addr))
                thread.start()
        except KeyboardInterrupt:
            return
        finally:
            for uid, info in self.get_usersonline().items():
                client_socket = self.get_user_socket(uid)
                pt.send(client_socket, uid, pt.SERV_USER, pt.CMD_QUIT,
                        "Server is Sign Out !")
            self.save_users(self.__file_name)
コード例 #27
0
def cmd_friends(serv, args):
    # print "cmd_friends"
    user_id = args[0]
    client_socket = args[1]
    if client_socket == serv.get_server_socket():
        return
    friends = serv.get_user_friends(user_id)
    text = ''
    for uid in friends:
        ol = '  '
        uid = int(uid)
        if serv.isuseronline(uid) == pt.FLAG_ONLINE:
            ol = '* '
        text = text + ol + str(uid) + ':' + serv.get_user_name(uid) + '\n'
    if client_socket == serv.get_server_socket():
        print text
    else:
        pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_TEXT, text)
コード例 #28
0
ファイル: network.py プロジェクト: jyhanna/Autocore
    def _relay(self, receive_socket):
        """
        Relays a signal, initiated by a notification, to the
        appropriate observers.
        """
        message, notifier_subject = protocol.receive(receive_socket)

        for observer_subject in self.observers:
            if observer_subject == notifier_subject:
                for observer_sock in self.observers[observer_subject]:
                    try:
                        protocol.send(observer_sock, message, notifier_subject)
                        # Remove observer socket since it's only created
                        # for one-time use.
                        self.observers[observer_subject].remove(observer_sock)
                    except socket.error, msg:
                        # Unprepared observer
                        logger.warn("Socket error (core): " + msg[1])
コード例 #29
0
def run(tcp_ip, tcp_port, gui, ai=None):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print("connecting to", tcp_ip)
    sock.connect((tcp_ip, tcp_port))

    running = True
    inputs = [
        sock,
    ]

    # If no AI, this thread will manage keyboard inputs
    # TODO : remove for a more advanced GUI
    if ai is None:
        inputs.append(sys.stdin)

    data = b''
    while running:
        rds, wts, ers = select.select(inputs, [], [], 0)
        for s in rds:
            if s is sys.stdin:
                # Managing keyboard input
                cmd = s.readline()
                send(sock, 'play', cmd.strip())
            if s is sock:
                d = s.recv(2048)
                if d:
                    data += d
                else:
                    print("lost connection")
                    running = False

        # manage data
        msg, remain = extract_msg(data)
        if msg:
            mtype, mval = decode_message(msg)
            gui.process_message(mtype, mval)

            # if an AI is attached, ask for a play
            if ai is not None:
                play = ai.process_message(mtype, mval)
                if play is not None:
                    send(sock, 'play', play)
        data = remain
    sock.close()
コード例 #30
0
ファイル: client.py プロジェクト: bbxytl/python-chat
 def logon(self, user_id, user_pwd):
     pt.send(self.client_socket, pt.SERV_USER,
             user_id, pt.MSG_LOGON, user_pwd)
     to_user, from_user, msg_type, msg = pt.recv(self.client_socket)
     print msg
     if msg_type == pt.MSG_LOGON:
         return True
     elif msg_type == pt.MSG_ERROR:
         return False
     elif msg_type == pt.MSG_REGISTER:
         while msg_type == pt.MSG_REGISTER:
             msg = sys.stdin.readline().strip()
             pt.send(self.client_socket, pt.SERV_USER,
                     user_id, pt.MSG_REGISTER, msg)
             to_user, from_user, msg_type, msg = pt.recv(self.client_socket)
             print msg
             if msg_type == pt.MSG_LOGON:
                 return None
     return False
コード例 #31
0
ファイル: client.py プロジェクト: adibl/2_7
def main():
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        client_socket.connect((SERVER_IP, SERVER_PORT))
        # send the message
        while True:
            massage = []
            massage.append(raw_input("enter action"))
            massage.append(raw_input("enter action"))
            protocol.send(client_socket, massage)
            if massage[0] == "Exit":
                break
            packet = []
            packet = protocol.recv(client_socket)
            print packet[0] + " " + packet[1]
    except socket.error as msg:
        print 'error in communication with server - ' + str(msg)
    finally:
        client_socket.close()
コード例 #32
0
def cmd_mdpwd(serv, args):
    # print " cmd_mdpwd"
    user_id = args[0]
    client_socket = args[1]

    if len(args) < 4:
        return pt.MSG_ERROR
    input_oldpwd = args[2]
    input_newpwd = args[3]
    old_pwd = serv.get_user_pwd(user_id)
    if serv.modify_pwd(user_id, input_oldpwd, input_newpwd) == True:
        text = '[{0}:{1}] old PassWord is : {2}, Now is {3}'.format(
            user_id, serv.get_user_name(user_id), old_pwd, input_newpwd)
        if client_socket == serv.get_server_socket():
            print text
        else:
            pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_TEXT, text)
    else:
        return pt.MSG_ERROR
コード例 #33
0
ファイル: client.py プロジェクト: catlafe/python-chat
 def logon(self, user_id, user_pwd):
     pt.send(self.client_socket, pt.SERV_USER, user_id, pt.MSG_LOGON,
             user_pwd)
     to_user, from_user, msg_type, msg = pt.recv(self.client_socket)
     print msg
     if msg_type == pt.MSG_LOGON:
         return True
     elif msg_type == pt.MSG_ERROR:
         return False
     elif msg_type == pt.MSG_REGISTER:
         while msg_type == pt.MSG_REGISTER:
             msg = sys.stdin.readline().strip()
             pt.send(self.client_socket, pt.SERV_USER, user_id,
                     pt.MSG_REGISTER, msg)
             to_user, from_user, msg_type, msg = pt.recv(self.client_socket)
             print msg
             if msg_type == pt.MSG_LOGON:
                 return None
     return False
コード例 #34
0
def cmd_quit(serv, args):
    # print "cmd_quit"
    user_id = args[0]
    client_socket = args[1]
    if client_socket == serv.get_server_socket():
        return pt.MSG_QUIT

    serv.set_useronline_flag(user_id, not pt.FLAG_ONLINE)
    user_sever = '0:Server'
    fuser = '******'.format(user_id, serv.get_user_name(user_id))
    quitString = '[from {0} to {1}] {1} Quit !'.format(user_sever, fuser)
    for id in serv.get_usersonline().keys():
        if id != user_id:
            onLineSocket = serv.get_user_socket(id)
            pt.send(onLineSocket, id, pt.SERV_USER, pt.MSG_FRIEND_QUIT,
                    quitString)
    pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_QUIT, quitString)
    print quitString
    return pt.MSG_QUIT
コード例 #35
0
def cmd_del_friend(serv, args):
    # print "cmd_del_friend"
    user_id = args[0]
    client_socket = args[1]

    if len(args) < 3:
        return pt.MSG_ERROR
    try:
        fdId = int(args[2].strip())
        if fdId not in serv.get_user_friends(user_id):
            text = '[{0}:{1}] is not your friend ! Can\'t delete !'.format(
                fdId, serv.get_user_name(fdId))
            pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_ERROR, text)
        else:
            text = '[{0}:{1}] delete friend: [{2}:{3}] !'.format(
                user_id, serv.get_user_name(user_id), fdId,
                serv.get_user_name(fdId))
            text = text + ' Now he/she is not your friend !'
            pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_TEXT, text)
    except:
        return pt.MSG_ERROR
コード例 #36
0
 def clientLink(self, client_socket, client_addr):
     print 'Accept new connection from %s:%s....' % client_addr
     time.sleep(1)
     to_user, from_user, data_type, data = pt.recv(client_socket)
     user_id = from_user
     user_pwd = data
     user_sever = '0:server'
     if to_user != pt.SERV_USER or data_type != pt.MSG_LOGON or data is None or not data:
         text = 'Logon Error !'
         print text
     else:
         sg = self.logon(user_id, user_pwd, client_socket, client_addr)
         if sg is None:
             user_id = self.register(client_socket, client_addr, user_id)
             if user_id is not None:
                 self.set_useronline_flag(user_id, not pt.FLAG_ONLINE)
             client_socket.close()
             print 'Close connection from %s:%s....' % client_addr
             return
         elif sg is False:
             client_socket.close()
             print 'Close connection from %s:%s....' % client_addr
             return
         user = '******'.format(user_id, self.get_user_name(
             user_id))  # %user_id   self.get_user_name(user_id)
         send_text = '[{0}] Welcome {1}'.format(user_sever, user)
         pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_LOGON,
                 send_text)
         print send_text
         while True:
             to_user, from_user, msg_type, msg = pt.recv(client_socket)
             fuser = '******'.format(from_user,
                                      self.get_user_name(from_user))
             # no the to_user
             if to_user != pt.SERV_USER and to_user not in self.get_users():
                 erro_string = '[from {0} to {1} ] {2} not regist !'.format(
                     user_sever, fuser, to_user)
                 pt.send(client_socket, from_user, pt.SERV_USER,
                         pt.MSG_TEXT, erro_string)
                 print erro_string
             # to the server ,should cmd
             elif to_user == pt.SERV_USER:
                 sg = self.process_cmd(from_user, msg)
                 if sg == pt.MSG_QUIT:
                     break
                 elif sg == pt.MSG_ERROR:
                     erro_string = '[from {0} to {1}] {2} : {3}'.format(
                         user_sever, fuser, msg, 'Wrong Cmd to Server !')
                     pt.send(client_socket, from_user, pt.SERV_USER,
                             pt.MSG_ERROR, erro_string)
                     print erro_string
             # to other client
             else:
                 sg = self.process_chat(from_user, to_user, msg)
                 if sg == pt.MSG_ERROR:
                     erro_string = '[from {0} to {1}] {2} not online !'.format(
                         user_sever, fuser, to_user)
     client_socket.close()
     print 'Close connection from %s:%s....' % client_addr
コード例 #37
0
ファイル: server.py プロジェクト: hpointu/awale
    def process_msg(self, client, msg):
        if len(self.players) != 2:
            send(client, 'info', "Waiting for opponent")
            return
        msg_type, msg = decode_message(msg)

        if msg_type == 'play':
            try:
                self.game.play(self.players[client], msg)
                p = player_name(self.players[client])
                self.broadcast('info', "%s played %s" % (p, msg))
                self.send_game()
            except AwaleException as e:
                send(client, 'error', str(e))
            if self.game.over():
                win_player = winner(self.game.game, self.game.scores)
                if win_player is not None:
                    self.broadcast('info',
                                   "%s wins !" % player_name(win_player))
                else:
                    self.broadcast('info', "Draw !")
                self.running = False
コード例 #38
0
def cmd_rename(serv, args):
    # print "cmd_rename()"
    if len(args) < 2:
        return pt.MSG_ERROR
    user_id = args[0]
    client_socket = args[1]
    if len(args) > 2:
        new_name = args[2]
    else:
        return pt.MSG_ERROR
    old_name = serv.set_user_name(user_id, new_name)

    msg = '[{0}] now call :[{1}]'.format(old_name, new_name)
    if old_name is None:
        return pt.MSG_ERROR
    else:
        for uid, info in serv.get_usersonline().items():
            client_socket = serv.get_user_socket(uid)
            pt.send(client_socket, uid, pt.SERV_USER, pt.MSG_TEXT, msg)

    if client_socket == serv.get_server_socket():
        print msg
コード例 #39
0
def cmd_add_friend(serv, args):
    # print "cmd_add_friend"
    user_id = args[0]
    client_socket = args[1]

    if len(args) < 3:
        return pt.MSG_ERROR
    try:
        fdId = int(args[2].strip())
        msg_type = pt.MSG_TEXT
        if fdId not in serv.get_users():
            text = '%s is not regist !' % fdId
            msg_type = pt.MSG_ERROR
        if serv.add_friend(user_id, fdId):
            text = '[{2}:{3}] have a new friend :[{0}:{1}]'.format(
                fdId, serv.get_user_name(fdId), user_id,
                serv.get_user_name(user_id))
        if client_socket == serv.get_server_socket():
            print text
        else:
            pt.send(client_socket, user_id, pt.SERV_USER, msg_type, text)
    except:
        return pt.MSG_ERROR
コード例 #40
0
ファイル: server.py プロジェクト: bbxytl/python-chat
 def clientLink(self, client_socket, client_addr):
     print 'Accept new connection from %s:%s....' % client_addr
     time.sleep(1)
     to_user, from_user, data_type, data = pt.recv(client_socket)
     user_id = from_user
     user_pwd = data
     user_sever = '0:server'
     if to_user != pt.SERV_USER or data_type != pt.MSG_LOGON or data is None or not data:
         text = 'Logon Error !'
         print text
     else:
         sg = self.logon(user_id, user_pwd, client_socket, client_addr)
         if sg is None:
             user_id = self.register(client_socket, client_addr, user_id)
             if user_id is not None:
                 self.set_useronline_flag(user_id, not pt.FLAG_ONLINE)
             client_socket.close()
             print 'Close connection from %s:%s....' % client_addr
             return
         elif sg is False:
             client_socket.close()
             print 'Close connection from %s:%s....' % client_addr
             return
         user = '******'.format(user_id, self.get_user_name(user_id))  # %user_id   self.get_user_name(user_id)
         send_text = '[{0}] Welcome {1}'.format(user_sever, user)
         pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_LOGON, send_text)
         print send_text
         while True:
             to_user, from_user, msg_type, msg = pt.recv(client_socket)
             fuser = '******'.format(from_user, self.get_user_name(from_user))
             # no the to_user
             if to_user != pt.SERV_USER and to_user not in self.get_users():
                 erro_string = '[from {0} to {1} ] {2} not regist !'.format(user_sever, fuser, to_user)
                 pt.send(client_socket, from_user, pt.SERV_USER, pt.MSG_TEXT, erro_string)
                 print erro_string
             # to the server ,should cmd
             elif to_user == pt.SERV_USER:
                 sg = self.process_cmd(from_user, msg)
                 if sg == pt.MSG_QUIT:
                     break
                 elif sg == pt.MSG_ERROR:
                     erro_string = '[from {0} to {1}] {2} : {3}'.format(user_sever,
                                                                        fuser,
                                                                        msg,
                                                                        'Wrong Cmd to Server !')
                     pt.send(client_socket, from_user, pt.SERV_USER, pt.MSG_ERROR, erro_string)
                     print erro_string
             # to other client
             else:
                 sg = self.process_chat(from_user, to_user, msg)
                 if sg == pt.MSG_ERROR:
                     erro_string = '[from {0} to {1}] {2} not online !'.format(user_sever,
                                                                               fuser,
                                                                               to_user)
     client_socket.close()
     print 'Close connection from %s:%s....' % client_addr
コード例 #41
0
def handle_commands(connection, command, params):
    if command == "dl":
        if params[1] == '0':
            params[1] = False
        else:
            params[1] = True
        if not params[1] and len(params) == 2:
            params.append(None)
        htt_thread = threading.Thread(target=httrack.download,
                                      args=(params[0], params[1], params[2]))
        htt_thread.start()
        dl_status = threading.Timer(2.0,
                                    dl_status_checker,
                                    args=(htt_thread, connection))
        dl_status.start()
    elif command == "list":
        file_list = listdir(config.sites_directory)
        folder_list = []
        archive_list = []
        for file in file_list:
            if path.isdir(config.sites_directory + '/' +
                          file) and file != "hts-cache":
                folder_list.append(file)
            if path.isfile(config.sites_directory + '/' + file) and \
                    (file[-7:] == ".tar.gz" or file[-8:] == ".tar.bz2" or file[-5:] == ".tar"):
                archive_list.append(file)
        site_string = ""
        folder_found = False
        if folder_list:
            site_string += "List of folders:\n" + "\n".join(folder_list)
            folder_found = True
        if archive_list:
            if folder_found:
                site_string += "\n================================================================================\n"
            site_string += "List of archives:\n" + "\n".join(archive_list)
        if site_string == "":
            site_string = "Sites not found!"
        protocol.send(connection, site_string)
    elif command == "load":
        load = ""
        for i in range(1, 100000):
            load += str(i) + ' '
            if i % 1000 == 0:
                load += '\n'
        protocol.send(connection, load)
    else:
        protocol.send(connection, "Invalid request")
コード例 #42
0
ファイル: server.py プロジェクト: antares-me/httrack-deamon
def handle_commands(connection, command, params):
    if command == "dl":
        if params[1] == '0':
            params[1] = False
        else:
            params[1] = True
        if not params[1] and len(params) == 2:
            params.append(None)
        htt_thread = threading.Thread(target=httrack.download, args=(params[0], params[1], params[2]))
        htt_thread.start()
        dl_status = threading.Timer(2.0, dl_status_checker, args=(htt_thread, connection))
        dl_status.start()
    elif command == "list":
        file_list = listdir(config.sites_directory)
        folder_list = []
        archive_list = []
        for file in file_list:
            if path.isdir(config.sites_directory + '/' + file) and file != "hts-cache":
                folder_list.append(file)
            if path.isfile(config.sites_directory + '/' + file) and \
                    (file[-7:] == ".tar.gz" or file[-8:] == ".tar.bz2" or file[-5:] == ".tar"):
                archive_list.append(file)
        site_string = ""
        folder_found = False
        if folder_list:
            site_string += "List of folders:\n" + "\n".join(folder_list)
            folder_found = True
        if archive_list:
            if folder_found:
                site_string += "\n================================================================================\n"
            site_string += "List of archives:\n" + "\n".join(archive_list)
        if site_string == "":
            site_string = "Sites not found!"
        protocol.send(connection, site_string)
    elif command == "load":
        load = ""
        for i in range (1, 100000):
            load += str(i) + ' '
            if i % 1000 == 0:
                load += '\n'
        protocol.send(connection, load)
    else:
        protocol.send(connection, "Invalid request")
コード例 #43
0
ファイル: server.py プロジェクト: bbxytl/python-chat
    def register(self, client_socket, client_addr, user_id):
        text = 'You have to register first ! Are you Register ?(y/n):'
        pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_REGISTER, text)
        while True:
            to_user, from_user, data_type, data = pt.recv(client_socket)
            if data.strip() != '':
                break
        if data_type != pt.MSG_REGISTER:
            return None
        elif data != 'y' and data != 'yes':
            pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_ERROR, "")
            return None
        else:
            text = 'Please input your : user_id(must Integer) user_name user_pwd \n'
            print text
            pt.send(client_socket, from_user, pt.SERV_USER, pt.MSG_REGISTER, text)
            to_user, from_user, data_type, data = pt.recv(client_socket)
            dtlist = data.strip().split(' ')
            text = 'Input is Wrong !'
            if len(dtlist) != 3:
                pt.send(client_socket, from_user, pt.SERV_USER, pt.MSG_ERROR, text)
                return None
            else:
                user_id = 0
                try:
                    user_id = int(dtlist[0])
                    user_name = dtlist[1]
                    user_pwd = dtlist[2]
                except:
                    text = 'UserId is Wrong !'
                    pt.send(client_socket, from_user, pt.SERV_USER, pt.MSG_ERROR, text)
                    return None

                if user_id in self.get_users():
                    text = 'UserId exist !'
                    pt.send(client_socket, from_user, pt.SERV_USER, pt.MSG_ERROR, text)
                    return None
                if self.get_user_id(user_name)is not None:
                    text = 'UserName exist !'
                    pt.send(client_socket, from_user, pt.SERV_USER, pt.MSG_ERROR, text)
                    return None
                if self.register_user(user_id, user_name, user_pwd, client_socket, client_addr) == True:
                    text = '[from server] {0}:{1} Register OK ! PassWord : {2}'.format(user_id,
                                                                                       user_name,
                                                                                       user_pwd)
                    pt.send(client_socket, user_id, pt.SERV_USER, pt.MSG_LOGON, text)
                    self.save_users(self.__file_name)
                    return user_id
                else:
                    text = 'Register  Wrong!'
                    pt.send(client_socket, from_user, pt.SERV_USER, pt.MSG_ERROR, text)
コード例 #44
0
ファイル: client.py プロジェクト: bbxytl/python-chat
        self.done = False

    def run(self):
        client = self.client
        while not self.done:
            data = raw_input()
            data_type = pt.MSG_TEXT
            if len(data) > 0 and data[0] == '/':
                data_type = pt.MSG_CMD
                client.curchatuser = pt.SERV_USER
            pt.send(self.client_socket, client.curchatuser,
                    client.user_id, data_type, data)


if __name__ == '__main__':
    if len(sys.argv) != 3:
        print u'Wrong Argvs : user_id(integer), user_pwd '
    else:
        hostname = '127.0.0.1'
        port = 18889
        qq_client = qqclient(hostname, port)
        user_id = 0
        try:
            user_id = int(sys.argv[1])
            user_pwd = sys.argv[2]
            qq_client.run(user_id, user_pwd)
        except ValueError, e:
            pt.send(qq_client.client_socket, pt.SERV_USER,
                    qq_client.user_id, pt.MSG_QUIT, '')
            print u'Wrong user_id(integer)!\nValueError: ', e
コード例 #45
0
ファイル: client.py プロジェクト: antares-me/httrack-deamon
# -*- coding: utf-8 -*-
# !/usr/bin/env python3

import socket

import config
import protocol


sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((config.host, config.port))
protocol.send(sock, input())
data = protocol.recv(sock)
sock.close()
print(data)
コード例 #46
0
ファイル: server.py プロジェクト: antares-me/httrack-deamon
def dl_status_checker(thread, connection):
    if thread.isAlive:
        protocol.send(connection, "Downloading has started")
    else:
        protocol.send(connection, "Downloading has FAILED")
コード例 #47
0
ファイル: client.py プロジェクト: jarys/pynet
 def send(self, data):
     protocol.send(self.sock, data)
コード例 #48
0
ファイル: client.py プロジェクト: jarys/pynet
 def quit(self):
     protocol.send(self.sock, b"client quit")
     self.sock.close()