Esempio n. 1
0
    def post(self):
        logging.debug(self.fsid)
        if Mgdb().find_login(self.jsonbody):
            logging.debug('登录成功')
            fsname = self.jsonbody[name]
            fsid = Mgdb().get_fsid(fsname)
            self.set_cookie('fsid', fsid, gvars.domain, expires_days=30)
            self.set_cookie('fsname', fsname, gvars.domain, expires_days=30)

            self.write_ok("登录成功")
        else:
            logging.debug('登录失败')
            self.write_failure("登录失败")
Esempio n. 2
0
def send_comes(name):
    avatar = Mgdb().get_avatar(name)
    send = {'type': 2, 'from': name, 'time': get_time()}
    if avatar:
        send['msg'] = avatar
    for handler in online_users.values():
        if handler:
            handler.write_message(json.dumps(send))
Esempio n. 3
0
    def post(self):
        if check_register(self.jsonbody) is True:
            if Mgdb().add_login(self.jsonbody) is True:
                self.write_ok("注册成功")
            else:
                self.write_failure("用户名或邮箱已存在")

        else:
            self.write_failure("信息填写有误")
Esempio n. 4
0
 def get(self):
     name = self.get_argument('name')
     user = Mgdb().find_user({'name': name})
     if user:
         if 'avatar' in user:
             user['avatar'] = gvars.image_url + user['avatar']
         self.write_dict(user)
     else:
         self.write_failure('用户不存在')
Esempio n. 5
0
 def get(self):
     names_avatars = []
     for fsid in online_users.keys():
         if fsid != self.fsid:
             if fsid in ROBOTS:
                 name = fsid
                 avatar = Mgdb().get_avatar(name)
                 if not avatar:
                     avatar = ''
             else:
                 user = Mgdb().find_user({"fsid": fsid})
                 name = user['name']
                 if 'avatar' in user:
                     avatar = gvars.image_url + user['avatar']
                 else:
                     avatar = ''
             names_avatars.append({'name': name, 'avatar': avatar})
     d = {'online_users': names_avatars}
     self.write_dict(d)
Esempio n. 6
0
    def post(self):
        email = json.loads(self.request.body.decode('utf-8'))

        if Mgdb().find_email(email):
            logging.debug('email already exist')
        else:
            v_code = sys_email.send_verify_code(email[mail])
            if v_code is not None:
                emails_codes[email[mail]] = v_code
            else:
                logging.debug('send email failed')
Esempio n. 7
0
    def post(self):
        files = self.request.files.get('file')
        if files:
            avatar = files[0]
            ext = os.path.splitext(avatar['filename'])[1]
            filename = str(time.time()) + ext
            avatar_file = get_image_file(filename)

            with open(avatar_file, 'wb') as f:
                f.write(avatar['body'])
                logging.warn('upload: ' + avatar_file)

                Mgdb().update_avatar(self.name, filename)
                self.write_ok("上传成功")
Esempio n. 8
0
def send_msg2name(from_name, to_name, msg):
    """
    A发送给B一条消息, 系统要给A和B各发一条
    A收到{type: -1, from: B}
    B收到{type: 1, from: A}
    """
    send = {'msg': msg, 'time': get_time()}

    from_fsid = Mgdb().get_fsid(from_name)
    to_fsid = Mgdb().get_fsid(to_name)

    if from_fsid in online_users:
        from_handler = online_users[from_fsid]
        if from_handler:
            send['type'] = -1
            send['from'] = to_name
            from_handler.write_message(json.dumps(send))

    if to_fsid in online_users:
        to_handler = online_users[to_fsid]
        if to_handler:
            send['type'] = 1
            send['from'] = from_name
            to_handler.write_message(json.dumps(send))
Esempio n. 9
0
    def on_message(self, message):
        if isinstance(message, unicode):  # 普通消息
            msg = json.loads(message)
            if msg.has_key('type') and msg.has_key('to') and msg.has_key(
                    'msg'):
                # 验证发送过来的cookie
                if msg['type'] == 99:
                    fsid = msg['msg'][:32]
                    name = msg['msg'][32:]
                    if Mgdb().find_user({'fsid': fsid, 'name': name}):
                        self.fsid = fsid
                        self.name = name
                        logging.warn('on_open: ' + str(id(self)))
                        send_comes(name)
                        # 移除同一用户旧的handler
                        if fsid in online_users.keys():
                            online_users.pop(fsid)
                        send_comes(name)
                        online_users[fsid] = self

                elif self.fsid in online_users:
                    # image:// + 图片url
                    if msg['msg'] == 'image://' and self.temp:
                        msg['msg'] += gvars.image_url + self.temp
                        self.temp = None
                    if msg['type'] == 0:  # all
                        send_msg2all(self.name, msg['msg'])
                    elif msg['type'] == 1:  # name
                        if msg['to'] in ROBOTS:  # robot
                            send_msg2name(self.name, msg['to'], msg['msg'])
                            text = tuling.tuling_chat(self.fsid, msg['msg'])
                            send_msg2name(msg['to'], self.name, text)
                        else:  # person
                            send_msg2name(self.name, msg['to'], msg['msg'])
        else:  # 二进制文件, 先缓存到 self.temp, 接收到下一条文本消息再处理
            self.temp = str(time.time()) + '.jpg'
            temp = os.path.join(gvars.image_dir, self.temp)
            with open(temp, 'wb') as f:
                f.write(message)
Esempio n. 10
0
    def post(self):
        logging.debug(self.fsid)
        if Mgdb().find_login(self.jsonbody):
            logging.debug('登录成功')
            fsname = self.jsonbody[name]
            fsid = Mgdb().get_fsid(fsname)
            self.set_cookie('fsid', fsid, gvars.domain, expires_days=30)
            self.set_cookie('fsname', fsname, gvars.domain, expires_days=30)

            self.write_ok("登录成功")
        else:
            logging.debug('登录失败')
            self.write_failure("登录失败")


class LogoutHandler(BaseHandler):
    '''
    退出登录
    '''
    def get(self):
        self.write_ok("退出登录成功")
        if self.name:
            logging.warn('logout: ' + self.name)


if __name__ == "__main__":
    # run on local
    pass
    r = {u'username': u'\u8d85\u54e5', u'password': u'chao'}
    logging.debug(Mgdb().find_login(r))
Esempio n. 11
0
 def post(self):
     if Mgdb().update_user(self.name, self.jsonbody):
         self.write_ok('更新成功')
     else:
         self.write_failure('更新失败')