Пример #1
0
def get_all_file():
    # 1 img ,2 txt,3 audio,4 video
    form = GetGroupFile().validate_for_api()
    folder_id = int(form.folder_id.data)
    isDelete = int(form.isDelete.data)
    current_path = current_app.static_url_path
    site_domain = current_app.config.get('SITE_DOMAIN') \
        if current_app.config.get('SITE_DOMAIN') else 'http://127.0.0.1:2100'
    join_path = site_domain + current_path
    start, count = paginate()
    FileManage = FileMap[form.type.data]
    total = get_total_nums(FileManage, True)
    if (isDelete):
        FileObj = FileManage.query.filter(
            db.and_(FileManage.folder_id == folder_id, FileManage.delete_time
                    != None) if folder_id else FileManage.delete_time != None)
        paths = FileObj.order_by(
            db.desc('create_time')).offset(start).limit(count).all()
        total = get_total_nums(FileManage) - total
    else:
        FileObj = FileManage.query.filter(
            db.and_(FileManage.folder_id == folder_id, FileManage.delete_time
                    == None) if folder_id else FileManage.delete_time == None)
        paths = FileObj.order_by(
            db.desc('create_time')).offset(start).limit(count).all()
    for x in paths:
        x.path = x.path if re.search(r'http', x.path) else join_path + x.path

    total_page = math.ceil(total / count)
    page = get_page_from_query()
    return json_res(count=count,
                    items=paths,
                    page=page,
                    total=total,
                    total_page=total_page)
Пример #2
0
def get_admin_groups():
    start, count = paginate()
    groups = manager.group_model.query.filter().offset(start).limit(
        count).all()
    if groups is None:
        raise NotFound(msg='不存在任何权限组')

    for group in groups:
        auths = db.session.query(manager.auth_model.auth,
                                 manager.auth_model.module).filter_by(
                                     soft=False, group_id=group.id).all()

        auths = [{'auth': auth[0], 'module': auth[1]} for auth in auths]
        res = _split_modules(auths)
        setattr(group, 'auths', res)
        group._fields.append('auths')

    total = get_total_nums(manager.group_model)
    total_page = math.ceil(total / count)
    page = get_page_from_query()

    return json_res(count=count,
                    items=groups,
                    page=page,
                    total=total,
                    total_page=total_page)
Пример #3
0
def get_users():
    start, count = paginate()
    users = OpenVPNUser.get_all(start, count)
    total = OpenVPNUser.get_total_nums()
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    return json_res(count=count, page=page, total=total, total_page=total_page, items=users)
Пример #4
0
def get_info():
    start, count = paginate()
    info = OpenVPNLogInfo.get_all(start, count)
    total = OpenVPNLogInfo.get_total_nums()
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    return json_res(count=count, page=page, total=total, total_page=total_page, items=info)
Пример #5
0
def search_info():
    form = HistoryInfoForm().validate_for_api()
    keyword = request.args.get('keyword', default=None, type=str)
    if keyword is None or '':
        raise ParameterException(msg='搜索关键字不可为空')
    start, count = paginate()
    # logs = Log.query.filter(Log.message.like(f'%{keyword}%'))
    # res = OpenVPNLogInfo.query.filter(OpenVPNLogInfo.common_name.like((f'%{keyword}%')))
    res = OpenVPNLogInfo.query.filter(
        OpenVPNLogInfo.remote_ip.like(f"%{keyword}%"))
    if form.username.data:
        res = OpenVPNLogInfo.query.filter(
            OpenVPNLogInfo.common_name == form.username.data)
    if form.start.data and form.end.data:
        res = res.filter(
            OpenVPNLogInfo.starting_time.between(form.start.data,
                                                 form.end.data))
    total = res.count()
    res = res.order_by(
        text('starting_time desc')).offset(start).limit(count).all()
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    if not res:
        res = []
    return json_res(page=page,
                    count=count,
                    total=total,
                    items=res,
                    total_page=total_page)
Пример #6
0
def get_admin_users():
    start, count = paginate()
    group_id = request.args.get('group_id')
    condition = {
        'admin': UserAdmin.COMMON.value,
        'group_id': group_id
    } if group_id else {
        'admin': UserAdmin.COMMON.value
    }

    users = db.session.query(
        manager.user_model,
        manager.group_model.name).filter_by(soft=True, **condition).join(
            manager.group_model, manager.user_model.group_id ==
            manager.group_model.id).offset(start).limit(count).all()

    user_and_group = []
    for user, group_name in users:
        setattr(user, 'group_name', group_name)
        user._fields.append('group_name')
        user.hide('update_time')
        user_and_group.append(user)
        # 有分组的时候就加入分组条件
        # total_nums = get_total_nums(manager.user_model, is_soft=True, admin=UserAdmin.COMMON.value)
    total = get_total_nums(manager.user_model, is_soft=True, **condition)
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    return json_res(count=count,
                    items=user_and_group,
                    page=page,
                    total=total,
                    total_page=total_page)
Пример #7
0
def get_token():
    form = ClientForm().validate_for_api()
    promise = {
        ClientTypeEnum.USER_EMAIL: manager.user_model.verify,
        ClientTypeEnum.USER_MINA: manager.user_model.verify_mina
    }
    user = promise[ClientTypeEnum(form.type.data)](form.account.data,
                                                   form.secret.data)

    access_token, refresh_token = get_tokens(user)
    return json_res(access_token=access_token, refresh_token=refresh_token)
Пример #8
0
def login():
    form = LoginForm().validate_for_api()
    user = manager.user_model.verify(form.username.data, form.password.data)
    # 此处不能用装饰器记录日志
    Log.create_log(
        message=f'{user.username}登陆成功获取了令牌',
        user_id=user.id, user_name=user.username,
        status_code=200, method='post', path='/cms/user/login',
        authority='无', commit=True
    )
    access_token, refresh_token = get_tokens(user)
    return json_res(access_token=access_token, refresh_token=refresh_token)
Пример #9
0
def refresh():
    try:
        verify_jwt_refresh_token_in_request()
    except Exception:
        return RefreshException()

    identity = get_jwt_identity()
    if identity:
        access_token = create_access_token(identity=identity)
        refresh_token = create_refresh_token(identity=identity)
        return json_res(access_token=access_token, refresh_token=refresh_token)

    return NotFound(msg='refresh_token未被识别')
Пример #10
0
def get_logs():
    form = LogFindForm().validate_for_api()
    start, count = paginate()
    logs = db.session.query(Log).filter()
    if form.name.data:
        logs = logs.filter(Log.user_name == form.name.data)
    if form.start.data and form.end.data:
        logs = logs.filter(Log.time.between(form.start.data, form.end.data))
    total = logs.count()
    logs = logs.order_by(text('time desc')).offset(start).limit(count).all()
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    if not logs:
        logs = []
    return json_res(page=page, count=count, total=total, items=logs, total_page=total_page)
Пример #11
0
def get_user_logs():
    form = LogFindForm().validate_for_api()
    keyword = request.args.get('keyword', default=None, type=str)
    if keyword is None or '':
        raise ParameterException(msg='搜索关键字不可为空')
    start, count = paginate()
    logs = Log.query.filter(Log.message.like(f'%{keyword}%'))
    if form.name.data:
        logs = logs.filter(Log.user_name == form.name.data)
    if form.start.data and form.end.data:
        logs = logs.filter(Log._time.between(form.start.data, form.end.data))
    total = logs.count()
    logs = logs.order_by(text('time desc')).offset(start).limit(count).all()
    total_page = math.ceil(total / count)
    page = get_page_from_query()
    if not logs:
        logs = []
    return json_res(page=page, count=count, total=total, items=logs, total_page=total_page)
Пример #12
0
def login_mini():
    form = LoginMiniForm().validate_for_api()
    appid = current_app.config.get('APP_ID')
    secret = current_app.config.get('APP_SECRET')
    code = form.code.data
    url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + code + \
          '&grant_type=authorization_code'
    res = requests.get(url)
    if 'openid' not in res.json().keys():
        return Failed('小程序用户异常')
    openid = res.json()['openid']
    user = manager.user_model.query.filter_by(openid=openid).first_or_404()
    # 此处不能用装饰器记录日志
    Log.create_log(
        message=f'{user.username}小程序登陆成功获取了令牌',
        user_id=user.id, user_name=user.username,
        status_code=200, method='post', path='/cms/user/login/mini',
        authority='无', commit=True
    )
    access_token, refresh_token = get_tokens(user)
    return json_res(access_token=access_token, refresh_token=refresh_token)
Пример #13
0
def get_clients_connected():
    nclients = manager_info.collect_data_stats(VPN_ADDRESS, VPN_PORT)
    # print(nclients)
    return json_res(nclients=nclients)
Пример #14
0
def get_openvpn_version():
    version = manager_info.collect_data_version("192.168.149.150", 11940)
    # print(version)
    return json_res(name=version)
Пример #15
0
def get_clients_connected():
    nclients = manager_info.collect_data_stats("192.168.149.150", 11940)
    # print(nclients)
    return json_res(nclients=nclients)
Пример #16
0
def get_clientslist():
    vpn_session = manager_info.collect_data_sessions(VPN_ADDRESS, VPN_PORT)
    return json_res(items=vpn_session)
Пример #17
0
def get_token_info():
    """获取令牌信息"""
    user = get_current_user()
    return json_res(uid=user.id, is_admin=user.is_admin)
Пример #18
0
def get_openvpn_version():
    version = manager_info.collect_data_version(VPN_ADDRESS, VPN_PORT)
    # print(version)
    return json_res(name=version)
Пример #19
0
def get_clientslist():
    vpn_session = manager_info.collect_data_sessions("192.168.149.150", 11940)
    return json_res(items=vpn_session)