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)
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)
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)
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)
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)
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)
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)
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)
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未被识别')
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)
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)
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)
def get_clients_connected(): nclients = manager_info.collect_data_stats(VPN_ADDRESS, VPN_PORT) # print(nclients) return json_res(nclients=nclients)
def get_openvpn_version(): version = manager_info.collect_data_version("192.168.149.150", 11940) # print(version) return json_res(name=version)
def get_clients_connected(): nclients = manager_info.collect_data_stats("192.168.149.150", 11940) # print(nclients) return json_res(nclients=nclients)
def get_clientslist(): vpn_session = manager_info.collect_data_sessions(VPN_ADDRESS, VPN_PORT) return json_res(items=vpn_session)
def get_token_info(): """获取令牌信息""" user = get_current_user() return json_res(uid=user.id, is_admin=user.is_admin)
def get_openvpn_version(): version = manager_info.collect_data_version(VPN_ADDRESS, VPN_PORT) # print(version) return json_res(name=version)
def get_clientslist(): vpn_session = manager_info.collect_data_sessions("192.168.149.150", 11940) return json_res(items=vpn_session)