Beispiel #1
0
def remove_token():
    #支持两种判断方式 输入邮箱token后验证
    #通过邮件里的check标志验证
    mail = request.args.get('mail')
    token = request.args.get('token')
    check = request.args.get('check')

    if mail and token:

        res = database().remove_token(global_config.engine, {
            "mail": mail,
            "token": token
        })
        if res:
            return format_response('ok', '密钥删除成功')
        else:
            return format_response('error', '密钥删除失败')

    elif mail and check:
        res = database().remove_token(global_config.engine, {
            "mail": mail,
            "check": check
        })
        if res:
            return format_response('ok', '密钥删除成功')
        else:
            return format_response('error', '密钥删除失败')

    else:
        return format_response('error', '密钥删除失败,信息不全')
Beispiel #2
0
def mail_for_reset():
    #获取用户的mail地址 给目标用户发送找回邮件
    address = request.json["mail"]
    if mail_to(address):
        return format_response('ok', '找回邮件已发送')
    else:
        return format_response('error', '请求找回错误')
Beispiel #3
0
def image_info():
    # 根据图片的id获取图片信息
    name = request.args.get("name")
    img = database().get(global_config.engine, 'image', name)
    if img:
        return format_response('ok', img)
    else:
        return format_response('error', '图片信息获取失败')
Beispiel #4
0
def image_delete():
    #根据图片的唯一ID删除对应的文件
    data = request.json
    if "namaelist" in data.keys():
        database().delete_many(global_config.engine,'image',data["namelist"])
        return format_response('ok', '文件删除成功')

    elif "name" in data.keys():
        database().delete(global_config.engine,'image',data["name"])
        return format_response('ok','文件删除成功')
Beispiel #5
0
def mail_for_reset():
    #获取用户的mail地址 给目标用户发送找回邮件
    try:
        address = request.json["mail"]
        if mail_to(address):
            return format_response('ok', '找回邮件已发送')
        else:
            return format_response('error', '请求找回错误')

    except Exception as e:
        print(e.args)
        return format_response('error', '请求找回错误')
Beispiel #6
0
def image_info():
    # 根据图片的id获取图片信息
    try:
        name = request.json["name"]
        img = database().get(global_config.engine,'image',name)
        if img:
            return format_response('ok',img)
        else:
            return format_response('error','图片信息获取失败')
            
    except Exception as e:
        
        return format_response('error', '图片信息获取失败')
Beispiel #7
0
def image_list():
    #支持按需获取图片列表 用于前端的懒加载
    try:
        token = request.args.get('token')
        if request.args.get('page'):
            #分页情况
            #默认从第一页开始
            if global_config.engine == 'sqlite':
                try:
                    # pages = count_page(all,global_config.image_page)
                    p = Image.query.paginate(1, 10)
                    #暂未实现
                    return format_response('ok', 10)

                except:
                    return format_response('error', '获取图片列表错误')
            else:
                pass

        else:
            #默认返回全部图片列表
            #包含图片总数,计算得到的图片分页数
            g.data = []
            mail = database().get(global_config.engine, 'token', token)
            if mail:
                #仅获取当前用户下的图片列表
                if global_config.engine == 'sqlite':
                    img_list = database().get_image_list(
                        global_config.engine, mail)
                    for i in img_list:
                        g.data.append(i.info())

                elif global_config.engine == 'mongo':
                    img_list = database().get_image_list(
                        global_config.engine, mail)
                    for i in img_list:
                        g.data.append({
                            "name": i["name"],
                            "path": i["path"],
                            "url": i["url"]
                        })

                else:
                    pass
            else:
                pass
            return format_response('ok', g.data)

    except Exception as e:
        print((e.args))
        return format_response('error', '图片列表加载失败')
Beispiel #8
0
def image_format():
    name = request.json["name"]
    try:
        img = database().get(global_config.engine,'image',name)
        print(global_config.image_url)
        res = {
            "raw": img["name"],
            "link": "{}{}".format(global_config.image_url,img["name"]),
            "html": "<img src={}{} alt=image>".format(global_config.image_url,img["name"]),
            "markdown": "![image]({}{})".format(global_config.image_url,img["name"])
        }
        return format_response('ok',res)

    except Exception as e:
        print(e.args)
        return format_response('error','获取格式化信息失败')
def image_upload():
    #保持一个上下文的命名变量
    #默认的文件列表是file,这应该与前端保持同步
    #没有使用安全命名的方式,因为所有文件名会经过hash计算后重命名
    #默认需要登录认证
    token = request.args.get("token")
    files = request.files.getlist('file')
    path = global_config.image_path if global_config.image_path != '' else os.path.join(os.getcwd(),"images")

    if token and database().get(global_config.engine,'token',token):
        #账户存在
        try:
            if not os.path.exists(path):
                os.mkdir(path)
                #保证目录的创建
            #判断是否有上传文件
            if 'file' not in request.files:
                return format_response('error', '空的上传文件')
            else:
                res = database().get(global_config.engine, 'token', token)
                for f in files:
                    if f.filename:
                        name = rename.rename(f.filename)
                        f.save(os.path.join(path, name))

                        #数据库操作
                        try:
                            database().set(global_config.engine, 'image',
                                           {"name": name, "mail": res, "path": os.path.join(path, name),
                                            "url": "{}{}".format(global_config.image_url, name),
                                            "time": generate_time()[0]
                                            })
                        except:
                            return format_response('error', '文件上传失败')

                return format_response('ok', '文件上传成功')

        except Exception as e:
            print(e.args)
            return format_response('error', '文件上传失败')

    else:
        return format_response('error', '无文件上传权限')
Beispiel #10
0
def image_delete():
    #根据图片的唯一ID删除对应的文件
    try:
        data = request.json
        if "namaelist" in data.keys():
            try:
                database().delete_many(global_config.engine, 'image',
                                       data["namelist"])
                return format_response('ok', '文件删除成功')

            except:
                return format_response('error', '文件删除失败')

        elif "name" in data.keys():
            try:
                database().delete(global_config.engine, 'image', data["name"])
                return format_response('ok', '文件删除成功')
            except:
                return format_response('error', '文件删除失败')

    except Exception as e:
        print(e.args)
        return format_response('error', '文件删除失败')
Beispiel #11
0
def image_list():
    #支持按需获取图片列表 用于前端的懒加载
    try:
        if request.args.get('page'):
            #分页情况
            #默认从第一页开始
            if global_config.engine == 'sqlite':
                try:
                    # pages = count_page(all,global_config.image_page)
                    p = Image.query.paginate(1,10)
                    #暂未实现
                    return format_response('ok',10)

                except:
                    return format_response('error','获取图片列表错误')    
            else:
                pass    

        else:
            #默认返回全部图片列表
            #包含图片总数,计算得到的图片分页数
            g.data = []
            if global_config.engine == 'sqlite':
                img_list = Image.query.all()
                for i in img_list:
                    g.data.append(i.info())
            else:
                img_list = mongo.db.images.find()
                for i in img_list:
                    g.data.append({"name": i["name"], "path": i["path"], "url": i["url"]})

            return format_response('ok',g.data)  

    except Exception as e:
        print((e.args))
        return format_response('error','图片列表加载失败')    
Beispiel #12
0
def image_format():
    name = request.json["name"]
    img = database().get(global_config.engine, 'image', name)
    res = {
        "raw":
        img["name"],
        "link":
        "{}{}".format(global_config.image_url, img["name"]),
        "html":
        "<img src={}{} alt=image>".format(global_config.image_url,
                                          img["name"]),
        "markdown":
        "![image]({}{})".format(global_config.image_url, img["name"])
    }
    return format_response('ok', res)
def jwt_auth():
    if current_app.config["JWT"]:
        token = request.args.get('token')
        if token:
            if token == test_token["token"]:
                pass
            else:
                t = database().get(global_config.engine,'token',token)
                if t:
                    pass
                else:
                    return abort(401)
        else:
            #你可以使用常规的401权限码也可以使用统一响应码
            return format_response('forbidden','401 No Authority')
            #return abort(401)
    else:
        #不使用jwt时跳过认证
        pass                  
Beispiel #14
0
 def wrapper(*args, **kwargs):
     try:
         response = f(*args, **kwargs)
         return response
     except Exception as e:
         log_dir = os.path.join(os.getcwd(),
                                current_app.config['ERROR_LOG_DIR'])
         if not os.path.exists(log_dir):
             os.makedirs(log_dir)
         timestamp = datetime.now().strftime('%Y.%m.%d')
         logging.basicConfig(level=logging.ERROR,
                             filename=os.path.join(log_dir,
                                                   timestamp + ".log"))
         logging.getLogger("werkzeug").setLevel(logging.WARNING)
         message = '[{}] {} {} {}\n{}'.format(
             datetime.now().strftime('%Y/%m/%d %H:%M:%S'), request.method,
             request.url, f.__name__, e)
         logging.error(message)
         return format_response('error', '发生了错误')
Beispiel #15
0
def init_db():
    db.create_all()
    return format_response('ok', 'database init success')
Beispiel #16
0
def remove_token():
    #支持两种判断方式 输入邮箱token后验证
    #通过邮件里的check标志验证
    mail = request.args.get('mail')
    token = request.args.get('token')
    check = request.args.get('check')

    if global_config.engine == 'sqlite':
        if mail and token:
            t = Token.query.filter_by(mail=mail).first()
            try:
                if t.token == token:
                    #验证成功
                    db.session.delete(t)
                    db.session.commit()
                    return format_response('ok', '密钥删除成功')
                else:
                    return format_response('error', '密钥删除失败')
            except:
                db.session.rollback()
                return format_response('error', '密钥删除失败')

        elif mail and check:
            t = Token.query.filter_by(mail=mail).first()
            try:
                if t.check == check:
                    #验证成功
                    db.session.delete(t)
                    db.session.commit()
                    return format_response('ok', '密钥删除成功')
                else:
                    return format_response('error', '密钥删除失败')
            except:
                db.session.rollback()
                return format_response('error', '密钥删除失败')

        else:
            return format_response('error', '密钥删除失败,信息不全')

    else:
        #mongo
        if mail and token:
            t = mongo.db.token.find_one({"mail": mail})
            try:
                if t["token"] == token:
                    #验证成功
                    mongo.db.token.delete_one({"mail": mail})
                    return format_response('ok', '密钥删除成功')
                else:
                    return format_response('error', '密钥删除失败')
            except:
                return format_response('error', '密钥删除失败')

        elif mail and check:
            t = mongo.db.token.find_one({"mail": mail})
            try:
                if t["check"] == check:

                    #验证成功
                    mongo.db.token.delete_one({"mail": mail})
                    return format_response('ok', '密钥删除成功')
                else:
                    return format_response('error', '密钥删除失败')

            except:
                return format_response('error', '密钥删除失败')

        else:
            return format_response('error', '密钥删除失败,信息不全')
Beispiel #17
0
def init_db():
    try:
        db.create_all()
        return format_response('ok', 'database init success')
    except:
        return format_response('error', 'database init failed')