def dashboard_today_income_share(): from user import get_id_map user = session.get('user_info') username = user.get('username') accounts_key = 'accounts:%s' % username user_key = '%s:%s' % ('user', user.get('username')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) account_key = ['account:%s:%s:data' % (username, name.decode('utf-8')) for name in sorted(r_session.smembers(accounts_key))] if len(account_key) == 0: return Response(json.dumps(dict(data=[])), mimetype='application/json') pie_data = [] id_map = get_id_map(user.get('username')) for acct in sorted(r_session.smembers(accounts_key)): account_key = 'account:%s:%s' % (user.get('username'), acct.decode("utf-8")) account_info = json.loads(r_session.get(account_key).decode("utf-8")) account_data_key = account_key + ':data' account_data_value = r_session.get(account_data_key) if account_data_value is not None: account_info_data=json.loads(account_data_value.decode("utf-8")) else: continue mid = str(account_info_data.get('privilege').get('mid')) total_value = 0 total_value += account_info_data.get('mine_info').get('dev_m').get('pdc') if id_map[account_info.get('user_id')] is None: pie_data.append(dict(name='账户名:未知', y=total_value)) else: pie_data.append(dict(name='账户名:' + id_map[account_info.get('user_id')], y=total_value)) return Response(json.dumps(dict(data=pie_data)), mimetype='application/json')
def guest_diary(request, username): guest_key = 'guest' if r_session.get(guest_key) is None: r_session.set(guest_key, json.dumps(dict(diary=[]))) guest_info = json.loads(r_session.get(guest_key).decode('utf-8')) guest_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') #时间 url_scheme = request.environ.get('wsgi.url_scheme') #请求头 HTTP_HOST = request.environ.get('HTTP_HOST') #地址 PATH_INFO = request.environ.get('PATH_INFO') #后缀 REQUEST_METHOD = request.environ.get('REQUEST_METHOD') #方式 HTTP_X_REAL_IP = request.environ.get('HTTP_X_REAL_IP') #IP REMOTE_PORT = request.environ.get('REMOTE_PORT') #端口 http = '%s://%s%s' % (url_scheme, HTTP_HOST, PATH_INFO) #链接 body = dict(time=guest_time, http=http, method=REQUEST_METHOD, ip=HTTP_X_REAL_IP, port=REMOTE_PORT, username=username) guest_body = guest_info.get('diary') guest_body.append(body) guest_info['diary'] = guest_body r_session.set(guest_key, json.dumps(guest_info))
def user_login(): username = request.values.get('username') password = request.values.get('password') hashed_password = hash_password(password) user_info = r_session.get('%s:%s' % ('user', username)) if user_info is None: session['error_message'] = '用户不存在' return redirect(url_for('login')) user = json.loads(user_info.decode('utf-8')) if user.get('password') != hashed_password: session['error_message'] = '密码错误' return redirect(url_for('login')) if not user.get('active'): session['error_message'] = '您的账号已被禁用.' return redirect(url_for('login')) if user.get('log_as_body') is not None: if len(user.get('log_as_body')) > 0: r_session.set('%s:%s' % ('record', username), json.dumps(dict(diary=user.get('log_as_body')))) # 创建新通道,转移原本日记 user['log_as_body'] = [] user['login_time'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 记录登陆时间 r_session.set('%s:%s' % ('user', username), json.dumps(user)) # 修正数据 if r_session.get('%s:%s' % ('record', username)) is None: r_session.set('%s:%s' % ('record', username), json.dumps(dict(diary=[]))) # 创建缺失的日记 session['user_info'] = user return redirect(url_for('dashboard'))
def recharge_cards(): err_msg = None if session.get('error_message') is not None: err_msg = session.get('error_message') session['error_message'] = None recharge_cards=[] for code in r_session.smembers('recharge_card_codes'): b_card = r_session.get('recharge_card:%s' % code.decode('utf-8')) if b_card is not None: card=json.loads(b_card.decode('utf-8')) if card.get('status') == '待售': card['operation']=''' <form style="display: inline-block" role="form" action="/admin/card_sold/''' + card['code'] + '''" method="post"> <button type="submit" class="btn btn-outline btn-default btn-xs">售出</button> </form> ''' elif card.get('status') == '售出': card['operation']=''' <form style="display: inline-block" role="form" action="/admin/card_delete/''' + card['code'] + '''" method="post"> <button type="submit" class="btn btn-outline btn-default btn-xs">销毁</button> </form> ''' card['code']='卡号:%s'%card['code'] card['key']='密码:%s'%card['key'] recharge_cards.append(card) used_cards=[] for code in r_session.smembers('used_card_codes'): b_card = r_session.get('used_card:%s' % code.decode('utf-8')) if b_card is not None: card=json.loads(b_card.decode('utf-8')) used_cards.append(card) return render_template('admin_recharge.html',err_msg=err_msg,recharge_cards=recharge_cards,used_cards=used_cards)
def analyzer_speed_comparison(): user = session.get('user_info') username = user.get('username') str_today = datetime.now().strftime('%Y-%m-%d') key = 'user_data:%s:%s:history.speed' % (username, str_today) history_speed = dict() b_history_speed = r_session.get(key) if b_history_speed is None: history_speed = __get_history_speed_data(username) r_session.setex(key, json.dumps(history_speed), 3600 * 25) else: history_speed = json.loads(b_history_speed.decode('utf-8')) key = 'user_data:%s:%s' % (username, str_today) b_today_data = r_session.get(key) if b_today_data is None: speed_comparison_data = __get_speed_comparison_data(history_speed, [], '2012-10-04 14:39:00') else: today_data = json.loads(b_today_data.decode('utf-8')) speed_comparison_data = __get_speed_comparison_data(history_speed, today_data.get('speed_stat'), today_data.get('updated_time')) return Response(json.dumps(speed_comparison_data), mimetype='application/json')
def drawcash_all(): user = session.get('user_info') username = user.get('username') error_message = '' success_message = '' for b_user_id in r_session.smembers('accounts:%s' % username): account_key = 'account:%s:%s' % (username, b_user_id.decode("utf-8")) account_info = json.loads(r_session.get(account_key).decode("utf-8")) session_id = account_info.get('session_id') user_id = account_info.get('user_id') cookies = dict(sessionid=session_id, userid=str(user_id)) r = exec_draw_cash(cookies) if r.get('r') != 0: error_message += 'Id:%s : %s<br />' % (user_id, r.get('rd')) else: success_message += 'Id:%s : %s<br />' % (user_id, r.get('rd')) account_data_key = account_key + ':data' account_data_value = json.loads(r_session.get(account_data_key).decode("utf-8")) account_data_value.get('income')['r_can_use'] = 0 r_session.set(account_data_key, json.dumps(account_data_value)) if len(success_message) > 0: session['info_message'] = success_message if len(error_message) > 0: session['error_message'] = error_message return redirect(url_for('excavators'))
def user_log(sel_type): log_as = [] user = session.get('user_info') record_key = '%s:%s' % ('record', user.get('username')) record_info = json.loads(r_session.get(record_key).decode('utf-8')) user_key = '%s:%s' % ('user', user.get('username')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) accounts_key = 'accounts:%s' % user.get('username') id_map = {} for acct in sorted(r_session.smembers(accounts_key)): account_key = 'account:%s:%s' % (user.get('username'), acct.decode("utf-8")) account_info = json.loads(r_session.get(account_key).decode("utf-8")) if user_info.get('is_show_byname') != True: id_map[account_info.get('user_id')]=account_info.get('username') else: id_map[account_info.get('user_id')]=account_info.get('account_name') for row in record_info.get('diary'): row['id']=id_map.get(row['id']) if '1day' == request.args.get('time'): if (datetime.now() - datetime.strptime(row.get('time'), '%Y-%m-%d %H:%M:%S')).days < 1: if row.get('type').find(str(type_dict.get(sel_type)))!=-1: log_as.append(row) elif 'all' == request.args.get('time'): if row.get('type').find(str(type_dict.get(sel_type)))!=-1: log_as.append(row) else: if (datetime.now() - datetime.strptime(row.get('time'), '%Y-%m-%d %H:%M:%S')).days < 7: if row.get('type').find(str(type_dict.get(sel_type)))!=-1: log_as.append(row) log_as.reverse() return render_template('log.html', log_user=log_as)
def public_inv_code(): public_key = 'invitation' if r_session.get(public_key) is None: r_session.set(public_key, json.dumps(dict(diary=[]))) public_info = json.loads(r_session.get(public_key).decode('utf-8')) HTTP_X_REAL_IP = request.environ.get('HTTP_X_REAL_IP') for public_code in public_info.get('diary'): if HTTP_X_REAL_IP == public_code.get('ip'): session['error_message'] = '您已经获取过邀请码了,请勿重复获取.' session['invitation_code'] = public_code.get('inv_code') return redirect(url_for('public_invitation')) inv_codes = r_session.smembers('public_invitation_codes') if not inv_codes: session['error_message'] = '暂时没有可用的邀请码,请稍后再试.' return redirect(url_for('public_invitation')) for code in inv_codes: continue invitation_code = code.decode('utf-8') public_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') body = dict(time=public_time, inv_code=invitation_code, ip=HTTP_X_REAL_IP) public_body = public_info.get('diary') public_body.append(body) public_info['diary'] = public_body r_session.set(public_key, json.dumps(public_info)) return render_template('register.html', invitation_code=invitation_code)
def accounts_count(): count_key = 'count:accounts' b_count_info = r_session.get(count_key) if b_count_info is not None: return dict(accounts_count=json.loads(r_session.get(count_key).decode('utf-8'))) users = r_session.scard('users') accounts = 0 accountsk = 0 for name in r_session.smembers('users'): accounts_key = 'accounts:%s' % name.decode('utf-8') for acct in r_session.smembers(accounts_key): account_key = 'account:%s:%s' % ( name.decode('utf-8'), acct.decode("utf-8")) account_data_key = account_key + ':data' account_data_value = r_session.get(account_data_key) if account_data_value is None: continue account_info = json.loads(account_data_value.decode("utf-8")) for i in account_info.get('device_info'): accountsk += 1 accounts += r_session.scard(accounts_key) accounts_count = dict(users=users, accounts=accounts, accountsk=accountsk) r_session.setex(count_key, json.dumps(accounts_count), 120) return dict(accounts_count=accounts_count)
def get_id_map(username): id_map_key = 'id_map:%s' % username; b_id_map = r_session.get(id_map_key) if b_id_map is not None: return json.loads(b_id_map.decode('utf-8')) user_key = '%s:%s' % ('user', username) user_info = json.loads(r_session.get(user_key).decode('utf-8')) accounts_key = 'accounts:%s' % username id_map = {} for acct in sorted(r_session.smembers(accounts_key)): account_key = 'account:%s:%s' % (username, acct.decode("utf-8")) account_info = json.loads(r_session.get(account_key).decode("utf-8")) account_data_key = account_key + ':data' account_data_value = r_session.get(account_data_key) if account_data_value is not None: account_info['data'] = json.loads(account_data_value.decode("utf-8")) if user_info.get('is_show_byname') == None: user_info['is_show_byname'] = 1 if user_info.get('is_show_byname') == 0: if account_info.get('remark_name') is None: id_map[account_info.get('user_id')]='未备注' else: id_map[account_info.get('user_id')]=account_info.get('remark_name') elif user_info.get('is_show_byname') == 1: if 'data' not in account_info.keys(): id_map[account_info.get('user_id')]='' elif 'phone' not in account_info['data']['privilege'].keys(): id_map[account_info.get('user_id')]='' id_map[account_info.get('user_id')]=account_info['data']['privilege']['phone'] else: id_map[account_info.get('user_id')]=account_info.get('username') r_session.setex(id_map_key, 60*60, json.dumps(id_map)) return id_map
def getaward_all_crystal(): user = session.get('user_info') username = user.get('username') error_message = '' success_message = '' for b_user_id in r_session.smembers('accounts:%s' % username): account_key = 'account:%s:%s' % (username, b_user_id.decode("utf-8")) account_info = json.loads(r_session.get(account_key).decode("utf-8")) session_id = account_info.get('session_id') user_id = account_info.get('user_id') cookies = dict(sessionid=session_id, userid=str(user_id)) t = api_getaward(cookies) if t.get('rd') != 'ok': error_message += 'Id:%s %s<br />' % (user_id, t.get('rd')) else: success_message += 'Id:%s 转盘成功,获得:%s 下次转需要:%s 秘银.<br />' % (user_id, unquote(t.get('tip')), t.get('cost')) account_data_key = account_key + ':data' account_data_value = json.loads(r_session.get(account_data_key).decode("utf-8")) account_data_value.get('mine_info')['td_not_in_a'] = 0 r_session.set(account_data_key, json.dumps(account_data_value)) if len(success_message) > 0: session['info_message'] = success_message if len(error_message) > 0: session['error_message'] = error_message return redirect(url_for('excavators'))
def excavators(): user = session.get('user_info') err_msg = None if session.get('error_message') is not None: err_msg = session.get('error_message') session['error_message'] = None info_msg = None if session.get('info_message') is not None: info_msg = session.get('info_message') session['info_message'] = None accounts_key = 'accounts:%s' % user.get('username') accounts = list() for acct in sorted(r_session.smembers(accounts_key)): account_key = 'account:%s:%s' % (user.get('username'), acct.decode("utf-8")) account_data_key = account_key + ':data' account_data_value = r_session.get(account_data_key) account_info = json.loads(r_session.get(account_key).decode("utf-8")) if account_data_value is not None: account_info['data'] = json.loads(account_data_value.decode("utf-8")) accounts.append(account_info) show_drawcash = not (r_session.get('can_drawcash') is None or r_session.get('can_drawcash').decode('utf-8') == '0') return render_template('excavators.html', err_msg=err_msg, info_msg=info_msg, accounts=accounts, show_drawcash=show_drawcash)
def searcht_all(): user = session.get('user_info') username = user.get('username') error_message = '' success_message = '' for b_user_id in r_session.smembers('accounts:%s' % username): account_key = 'account:%s:%s' % (username, b_user_id.decode("utf-8")) account_info = json.loads(r_session.get(account_key).decode("utf-8")) session_id = account_info.get('session_id') user_id = account_info.get('user_id') cookies = dict(sessionid=session_id, userid=str(user_id)) r = check_searcht(cookies) if r.get('r') != 0: error_message += 'Id:%s : %s<br />' % (user_id, regular_html(r.get('rd'))) red_log('手动执行', '进攻', user_id, regular_html(r.get('rd'))) else: success_message += 'Id:%s : 获得:%s秘银.<br />' % (user_id, r.get('s')) red_log('手动执行', '进攻', user_id, '获得:%s秘银.' % r.get('s')) account_data_key = account_key + ':data' account_data_value = json.loads(r_session.get(account_data_key).decode("utf-8")) account_data_value.get('mine_info')['td_not_in_a'] = 0 r_session.set(account_data_key, json.dumps(account_data_value)) if len(success_message) > 0: session['info_message'] = success_message if len(error_message) > 0: session['error_message'] = error_message return redirect(url_for('excavators'))
def moneyAnalyzer(): user = session.get('user_info') username = user.get('username') user_key = '%s:%s' % ('user', username) user_info = json.loads(r_session.get(user_key).decode('utf-8')) data_money = dict(balance=0,sevenDaysAverage=0,total_income_money=0,daily_profit=0,daily_outcome_total=0,outcome_total=0,estimated_recover_days=0) # 获取数据并计算近7日平均收入 value = 0 counter=0 today = datetime.today() for b_data in r_session.mget( *['user_data:%s:%s' % (username, (today + timedelta(days=i)).strftime('%Y-%m-%d')) for i in range(-7, 0)]): if b_data is None: continue counter+=1 data_money = json.loads(b_data.decode('utf-8')) value+=data_money.get('pdc') if counter!=0: data_money['sevenDaysAverage']=value/counter str_today = datetime.now().strftime('%Y-%m-%d') key = 'user_data:%s:%s' % (username, str_today) b_data = r_session.get(key) if b_data is not None: data_money['balance'] = json.loads(b_data.decode('utf-8')).get('balance') data_money['income'] = json.loads(b_data.decode('utf-8')).get('income') try: data_money['total_income_money'] = data_money['income'] - user_info['withdrawn_money_modify']*10000 except KeyError: data_money['total_income_money'] = 0 try: data_money['daily_profit'] = data_money['sevenDaysAverage']-user_info['daily_outcome']*10000 except KeyError: data_money['daily_profit'] = 0 try: startDay=datetime.strptime(user_info['daily_outcome_start_date'],'%Y-%m-%d') days_delta = (datetime.now()-startDay).days except KeyError: days_delta=0 try: data_money['daily_outcome_total'] = user_info['daily_outcome']*days_delta*10000 except KeyError: data_money['daily_outcome_total'] = 0 try: data_money['outcome_total'] = data_money['daily_outcome_total'] + (user_info['hardware_outcome'] + user_info['other_outcome'])*10000 except KeyError: data_money['outcome_total'] = 0 data_money['total_profit'] = (data_money['total_income_money'] - data_money['outcome_total']) if data_money['daily_profit']!=0: data_money['estimated_recover_days'] = int(data_money['total_profit']/data_money['daily_profit'])*(-1) return render_template('money.html', data_money=data_money,user_info=user_info)
def user_log(): type_dict = {'0':'','1':'收取','2':'宝箱','3':'转盘','4':'进攻','5':'复仇','6':'提现','7':'状态'} log_as = [] user = session.get('user_info') if request.args.get('time') is not None: session['log_sel_time']=request.args.get('time') if request.args.get('type') is not None: session['log_sel_type']=request.args.get('type') record_key = '%s:%s' % ('record', user.get('username')) record_info = json.loads(r_session.get(record_key).decode('utf-8')) user_key = '%s:%s' % ('user', user.get('username')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) id_map = get_id_map(user.get('username')) for row in record_info.get('diary'): row['id']=id_map.get(row['id']) if row['id'] is None: row['id'] = '' if '1day' == session.get('log_sel_time'): if (datetime.now().date() - datetime.strptime(row.get('time'), '%Y-%m-%d %H:%M:%S').date()).days < 1: if row.get('type').find(str(type_dict.get(session.get('log_sel_type'))))!=-1: log_as.append(row) elif '3day' == session.get('log_sel_time'): if (datetime.now().date() - datetime.strptime(row.get('time'), '%Y-%m-%d %H:%M:%S').date()).days < 3: if row.get('type').find(str(type_dict.get(session.get('log_sel_type'))))!=-1: log_as.append(row) elif 'important' == session.get('log_sel_time'): if row.get('type') == '收取': log_as.append(row) elif row.get('type') == '宝箱': if row.get('gets').find('开启') != -1: log_as.append(row) elif row.get('type') == '转盘': if row.get('gets').find('水晶') != -1: log_as.append(row) elif row.get('type') == '提现': if row.get('gets').find('成功') != -1: log_as.append(row) elif row.get('gets').find('风控') != -1: log_as.append(row) elif row.get('type') == '状态': if row.get('gets').find('在线') != -1: log_as.append(row) elif 'all' == session.get('log_sel_time'): if row.get('type').find(str(type_dict.get(session.get('log_sel_type'))))!=-1: log_as.append(row) else: if (datetime.now().date() - datetime.strptime(row.get('time'), '%Y-%m-%d %H:%M:%S').date()).days < 7: if row.get('type').find(str(type_dict.get(session.get('log_sel_type'))))!=-1: log_as.append(row) log_as.reverse() return render_template('log.html', log_user=log_as)
def dashboard_data(): user = session.get('user_info') username = user.get('username') str_today = datetime.now().strftime('%Y-%m-%d') key = 'user_data:%s:%s' % (username, str_today) b_data = r_session.get(key) user_key = '%s:%s' % ('user', user.get('username')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) if b_data is None: empty_data = { 'updated_time': '2015-01-01 00:00:00', 'm_pdc': 0, 'last_speed': 0, 'deploy_speed': 0, 'w_pdc': 0, 'yesterday_m_pdc': 0, 'speed_stat': [], 'yesterday_w_pdc': 0, 'pdc': 0, 'balance': 0, 'w_award_income': 0 } return Response(json.dumps(dict(today_data=empty_data)), mimetype='application/json') today_data = json.loads(b_data.decode('utf-8')) need_save = False if today_data.get('yesterday_m_pdc') is None or today_data.get('yesterday_w_pdc') is None or today_data.get('yesterday_w_award_income') is None or today_data.get('yesterday_m_award_income') is None: yesterday_m_pdc, yesterday_w_pdc, yesterday_m_award_income, yesterday_w_award_income = __get_yesterday_pdc( username) today_data['yesterday_m_pdc'] = yesterday_m_pdc today_data['yesterday_w_pdc'] = yesterday_w_pdc today_data['yesterday_m_award_income'] = yesterday_m_award_income today_data['yesterday_w_award_income'] = yesterday_w_award_income need_save = True today_data['m_pdc'] = today_data.get( 'yesterday_m_pdc') + today_data.get('pdc') today_data['w_pdc'] = today_data.get( 'yesterday_w_pdc') + today_data.get('pdc') today_data['m_award_income'] = today_data.get( 'yesterday_m_award_income') + today_data.get('award_income') today_data['w_award_income'] = today_data.get( 'yesterday_w_award_income') + today_data.get('award_income') if need_save: r_session.set(key, json.dumps(today_data)) today_data['pdc'] -= today_data.get('award_income') if user_info.get('is_show_wpdc') is None or user_info.get('is_show_wpdc') == 0: today_data['w_award_income'] = today_data.get('award_income') elif user_info.get('is_show_wpdc') == 2: today_data['w_award_income'] = today_data.get('m_award_income') return Response(json.dumps(dict(today_data=today_data)), mimetype='application/json')
def guest_invitation(): public_as = [] public_key = 'invitation' if r_session.get(public_key) is None: r_session.set(public_key, json.dumps(dict(diary=[]))) public_info = json.loads(r_session.get(public_key).decode('utf-8')) for row in public_info.get('diary'): if (datetime.now() - datetime.strptime(row.get('time'), '%Y-%m-%d %H:%M:%S')).days < 7: public_as.append(row) public_as.reverse() return render_template('guest_invitation.html', public_as=public_as)
def admin_guest(): guest_as = [] guest_key = 'guest' if r_session.get(guest_key) is None: r_session.set(guest_key, json.dumps(dict(diary=[]))) guest_info = json.loads(r_session.get(guest_key).decode('utf-8')) for row in guest_info.get('diary'): if (datetime.now() - datetime.strptime(row.get('time'), '%Y-%m-%d %H:%M:%S')).days < 2: guest_as.append(row) guest_as.reverse() return render_template('guest.html', guest_as=guest_as)
def get_mid_to_uid(username): mid_to_uid_key = 'mid_to_uid:%s' % username; b_mid_to_uid = r_session.get(mid_to_uid_key) if b_mid_to_uid is not None: return json.loads(b_mid_to_uid.decode('utf-8')) mid_to_uid={} accounts_key = 'accounts:%s' % username for acct in sorted(r_session.smembers(accounts_key)): account_data_key = 'account:%s:%s:data' % (username, acct.decode("utf-8")) b_account_data = r_session.get(account_data_key) if b_account_data is not None: account_data = json.loads(b_account_data.decode("utf-8")) mid_to_uid[account_data.get('privilege').get('mid')]=acct.decode("utf-8") r_session.setex(mid_to_uid_key, 24*60*60, json.dumps(mid_to_uid)) return mid_to_uid
def user_log(): log_as = [] user = session.get('user_info') record_key = '%s:%s' % ('record', user.get('username')) if r_session.get(record_key) is None: return render_template('log.html', log_user=[]) record_info = json.loads(r_session.get(record_key).decode('utf-8')) for row in record_info.get('diary'): if (datetime.now() - datetime.strptime(row.get('time'), '%Y-%m-%d %H:%M:%S')).days < 7: log_as.append(row) log_as.reverse() return render_template('log.html', log_user=log_as)
def user_change_password(): user = session.get("user_info") o_password = request.values.get("old_password") n_password = request.values.get("new_password") n2_password = request.values.get("new2_password") session["action"] = "password" if n_password != n2_password: session["error_message"] = "新密码输入不一致." return redirect(url_for("user_profile")) if len(n_password) < 8: session["error_message"] = "密码必须8位及以上." return redirect(url_for("user_profile")) user_key = "%s:%s" % ("user", user.get("username")) user_info = json.loads(r_session.get(user_key).decode("utf-8")) hashed_password = hash_password(o_password) if user_info.get("password") != hashed_password: session["error_message"] = "原密码错误" return redirect(url_for("user_profile")) user_info["password"] = hash_password(n_password) r_session.set(user_key, json.dumps(user_info)) return redirect(url_for("user_profile"))
def __get_yesterday_pdc(username): today = datetime.now() month_start_date = datetime(year=today.year, month=today.month, day=1).date() week_start_date = (today + timedelta(days=-today.weekday())).date() begin_date = month_start_date if month_start_date < week_start_date else week_start_date begin_date = begin_date + timedelta(days=-1) yesterday_m_pdc = 0 yesterday_w_pdc = 0 yesterday_m_award_income = 0 yesterday_w_award_income = 0 while begin_date < today.date(): begin_date = begin_date + timedelta(days=1) key = 'user_data:%s:%s' % (username, begin_date.strftime('%Y-%m-%d')) b_data = r_session.get(key) if b_data is None: continue history_data = json.loads(b_data.decode('utf-8')) if begin_date >= month_start_date and begin_date < today.date(): yesterday_m_pdc += history_data.get('pdc') if 'award_income' in history_data.keys(): yesterday_m_award_income += history_data.get('award_income') if begin_date >= week_start_date and begin_date < today.date(): yesterday_w_pdc += history_data.get('pdc') if 'award_income' in history_data.keys(): yesterday_w_award_income += history_data.get('award_income') return yesterday_m_pdc, yesterday_w_pdc, yesterday_m_award_income, yesterday_w_award_income
def getaward_all(): user = session.get('user_info') username = user.get('username') error_message = '' success_message = '' for b_user_id in r_session.smembers('accounts:%s' % username): account_key = 'account:%s:%s' % (username, b_user_id.decode("utf-8")) account_info = json.loads(r_session.get(account_key).decode("utf-8")) session_id = account_info.get('session_id') user_id = account_info.get('user_id') cookies = dict(sessionid=session_id, userid=str(user_id)) r = api_getaward(cookies) if r.get('rd') != 'ok': error_message += 'Id:%s : %s<br />' % (user_id, r.get('rd')) else: success_message += 'Id:%s : 获得:%s 下次转需要:%s 秘银.<br />' % (user_id, regular_html(r.get('tip')), r.get('cost')) if len(success_message) > 0: session['info_message'] = success_message if len(error_message) > 0: session['error_message'] = error_message return redirect(url_for('excavators'))
def message_action(): user = session.get('user_info') if request.form['btn'] is None: util.set_message('参数错误') return redirect(url_for('messagebox')) msgs_key = 'user_messages:%s' % user.get('username') all_message = r_session.lrange(msgs_key, 0, -1) for val in request.form: if len(val) < 4 or val[0:3] != 'msg': continue msg_id = val[4:] if bytes(msg_id, 'utf-8') not in all_message: continue if request.form['btn'] == 'mark_as_read': msg_key = 'user_message:%s' % msg_id msg = json.loads(r_session.get(msg_key).decode('utf-8')) msg['is_read'] = True r_session.set(msg_key, json.dumps(msg)) elif request.form['btn'] == 'delete': r_session.lrem(msgs_key, msg_id) msg_key = 'user_message:%s' % msg_id r_session.delete(msg_key) return redirect(url_for('messagebox'))
def messagebox(): user = session.get('user_info') err_msg = None if session.get('error_message') is not None: err_msg = session.get('error_message') session['error_message'] = None info_msg = None if session.get('info_message') is not None: info_msg = session.get('info_message') session['info_message'] = None msgs_key = 'user_messages:%s' % user.get('username') msg_box = list() show_read_all = False for b_msg_id in r_session.lrange(msgs_key, 0, -1): msg_key = 'user_message:%s' % b_msg_id.decode('utf-8') b_msg = r_session.get(msg_key) if b_msg is None: r_session.lrem(msgs_key, msg_key) continue msg = json.loads(b_msg.decode('utf-8')) if show_read_all or not msg.get('is_read'): show_read_all = True msg_box.append(msg) return render_template('messages.html', err_msg=err_msg, info_msg=info_msg, messages=msg_box, show_read_all=show_read_all)
def user_log_delete_sel(): user = session.get('user_info') record_key = '%s:%s' % ('record', user.get('username')) record_info = json.loads(r_session.get(record_key).decode('utf-8')) diary = [] for row in record_info.get('diary'): if '1day' == session.get('log_sel_time'): if (datetime.now() - datetime.strptime(row.get('time'), '%Y-%m-%d %H:%M:%S')).days >= 1: diary.append(row) else: if row.get('type').find(str(type_dict.get(session.get('log_sel_type')))) == -1: diary.append(row) elif 'all' == session.get('log_sel_time'): if row.get('type').find(str(type_dict.get(session.get('log_sel_type')))) == -1: diary.append(row) else: if (datetime.now() - datetime.strptime(row.get('time'), '%Y-%m-%d %H:%M:%S')).days >= 7: diary.append(row) else: if row.get('type').find(str(type_dict.get(session.get('log_sel_type')))) == -1: diary.append(row) record_info['diary'] = diary r_session.set(record_key, json.dumps(record_info)) return redirect('/log')
def admin_change_property(field, value, username): user_key = '%s:%s' % ('user', username) user_info = json.loads(r_session.get(user_key).decode('utf-8')) if field == 'is_admin': user_info['is_admin'] = True if value == '1' else False elif field == 'active': user_info['active'] = True if value == '1' else False elif field == 'auto_column': user_info['auto_column'] = True if value == '1' else False elif field == 'auto_collect': user_info['auto_collect'] = True if value == '1' else False auto_collect_info = request.values.get('auto_collect_info') r = r"^[1-9]\d*$" if re.match(r,auto_collect_info) is not None: user_info['auto_collect_info'] = int(auto_collect_info) elif field == 'auto_drawcash': user_info['auto_drawcash'] = True if value == '1' else False elif field == 'auto_giftbox': user_info['auto_giftbox'] = True if value == '1' else False elif field == 'auto_searcht': user_info['auto_searcht'] = True if value == '1' else False elif field == 'auto_revenge': user_info['auto_revenge'] = True if value == '1' else False elif field == 'auto_getaward': user_info['auto_getaward'] = True if value == '1' else False r_session.set(user_key, json.dumps(user_info)) return redirect(url_for(endpoint='admin_user_management', username=username))
def user_email(email, key): from mailsand import send_email url_scheme = request.environ.get('wsgi.url_scheme') HTTP_HOST = request.environ.get('HTTP_HOST') http = '%s://%s/register?active=%s' % (url_scheme, HTTP_HOST, key) mail = dict() mail['to'] = email mail['subject'] = '云监工-激活注册账号' mail['text'] = """ <td align="center" valign="top" width="592" style="padding:10px; text-align:center; border:1px solid #eee"> <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="text-align:left; background-color:#fff"> <tbody> <tr> <td style="font-size:14px; color:#333; padding:23px 20px 0; line-height:1.46"><span style="margin:0; padding:0">亲爱的用户:</span> <p style="margin:0; padding:0">您好,感谢您使用云监工,您正在激活帐户!</p> <p style="margin:0; padding:0">激活链接:<a target="_blank" href=""" + http + """>立即激活</a></p> <p style="color:#cb2222; padding:20px 0 0; margin:0">提示:为了保障您账号的安全性,该链接有效期为30分钟。</p> <p style="margin:0; padding:0; width:70%">如果您误收到此电子邮件,则可能是其他用户在尝试帐号设置时的误操作,可以放心地忽略此电子邮件。</p> </td> </tr> <tr> <td style="color:#333; line-height:2; padding:30px 20px 10px; font-size:14px"> <p style="margin:0; padding:0">此邮件为自动发送,请勿回复!</p> </td> </tr> </tbody> </table> </td> """ config_key = '%s:%s' % ('user', 'system') config_info = json.loads(r_session.get(config_key).decode('utf-8')) return send_email(mail,config_info)
def user_change_password(): user = session.get('user_info') o_password = request.values.get('old_password') n_password = request.values.get('new_password') n2_password = request.values.get('new2_password') session['action'] = 'password' if n_password != n2_password: session['error_message'] = '新密码输入不一致.' return redirect(url_for('user_profile')) if len(n_password) < 8: session['error_message'] = '密码必须8位及以上.' return redirect(url_for('user_profile')) user_key = '%s:%s' % ('user', user.get('username')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) hashed_password = hash_password(o_password) if user_info.get('password') != hashed_password: session['error_message'] = '原密码错误' return redirect(url_for('user_profile')) user_info['password'] = hash_password(n_password) r_session.set(user_key, json.dumps(user_info)) return redirect(url_for('user_profile'))
def message_box(): if session is None or session.get('user_info') is None: return dict() user = session.get('user_info') msgs_key = 'user_messages:%s' % user.get('username') msg_box = list() msg_count = 0 for b_msg_id in r_session.lrange(msgs_key, 0, -1): msg_key = 'user_message:%s' % b_msg_id.decode('utf-8') b_msg = r_session.get(msg_key) if b_msg is None: r_session.lrem(msgs_key, msg_key) continue msg = json.loads(b_msg.decode('utf-8')) if msg.get('is_read'): continue if len(msg.get('content')) > 41: msg['content'] = msg.get('content')[:30] + '...' else: msg['content'] = msg.get('content')[:30] msg_count += 1 if not len(msg_box) > 3: msg_box.append(msg) return dict(msg_box=msg_box, msg_count=msg_count)
def pay_submit(): session['action'] = 'info' user = session.get('user_info') pay_code = request.values.get('pay_code') pay_key = request.values.get('pay_key') if not r_session.sismember('recharge_card_codes',pay_code): session['error_message'] = '充值失败,充值卡不存在' return redirect(url_for('user_profile')) b_card = r_session.get('recharge_card:%s' % pay_code) if b_card is not None: card=json.loads(b_card.decode('utf-8')) if card['key'] == pay_key: user_key = '%s:%s' % ('user', user.get('username')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) if 'total_account_point' in user_info.keys(): user_info['total_account_point'] += card['points'] if not user_info['active'] and user_info['total_account_point'] >= 0: user_info['active'] = True else: session['error_message'] = '充值失败,新用户请等待后台准备好您的数据后重试,至多半小时后可以继续' return redirect(url_for('user_profile')) if user_info.get('max_account_no') is not None and user_info.get('max_account_no') > 0: days=int(user_info.get('total_account_point')/user_info.get('max_account_no')) if days<36500: user_info['expire_date'] = (datetime.now() + timedelta(days=days)).strftime('%Y-%m-%d') else: user_info['expire_date'] = (datetime.now() + timedelta(days=36500)).strftime('%Y-%m-%d') r_session.set(user_key,json.dumps(user_info)) points=user_info['total_account_point'] user_info = json.loads(r_session.get(user_key).decode('utf-8')) if user_info['total_account_point'] != points: session['error_message'] = '充值失败,数据更新失败,请重试' return redirect(url_for('user_profile')) r_session.sadd('used_card_codes', pay_code) card['user']=user.get('username') r_session.set('used_card:%s' % pay_code, json.dumps(card)) r_session.srem('recharge_card_codes',pay_code) r_session.delete('recharge_card:%s' % pay_code) account_log(user.get('username'),'充值点数','充值','卡号:%s 冲入点数:%d 剩余:%d' % (pay_code,card['points'],user_info['total_account_point'])) else: session['error_message'] = '充值失败,密码错误' return redirect(url_for('user_profile')) else: session['error_message'] = '充值失败,未知错误' return redirect(url_for('user_profile')) session['error_message'] = '充值成功' return redirect(url_for('user_profile'))
def dashboard(): user = session.get('user_info') username = user.get('username') user_key = 'user:%s' % username user_info = json.loads(r_session.get(user_key).decode('utf-8')) return render_template('dashboard.html', user_info=user_info)
def account_payment(): log_as = [] user = session.get('user_info') record_key = '%s:%s' % ('payment', user.get('username')) b_record_info=r_session.get(record_key) if b_record_info is None: return render_template('account_payment.html', log_as=log_as) record_info = json.loads(b_record_info.decode('utf-8')) user_key = '%s:%s' % ('user', user.get('username')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) for row in record_info.get('diary'): log_as.append(row) log_as.reverse() return render_template('account_payment.html', log_as=log_as)
def get_mid_to_uid(username): mid_to_uid_key = 'mid_to_uid:%s' % username b_mid_to_uid = r_session.get(mid_to_uid_key) if b_mid_to_uid is not None: return json.loads(b_mid_to_uid.decode('utf-8')) mid_to_uid = {} accounts_key = 'accounts:%s' % username for acct in sorted(r_session.smembers(accounts_key)): account_data_key = 'account:%s:%s:data' % (username, acct.decode("utf-8")) b_account_data = r_session.get(account_data_key) if b_account_data is not None: account_data = json.loads(b_account_data.decode("utf-8")) mid_to_uid[account_data.get('privilege').get('mid')] = acct.decode( "utf-8") r_session.setex(mid_to_uid_key, json.dumps(mid_to_uid), 24 * 60 * 60) return mid_to_uid
def func_exec_drawcash(USERID=None): if DEBUG_MODE: print('func_exec_drawcash() : incomingID = %s' % USERID) user = session.get('user_info') username = user.get('username') err_msg = '' info_msg = '' for b_user_id in r_session.smembers('accounts:%s' % username): account_key = 'account:%s:%s' % (username, b_user_id.decode("utf-8")) if DEBUG_MODE: print(account_key) account_info = json.loads(r_session.get(account_key).decode("utf-8")) if DEBUG_MODE: print(account_info) session_id = account_info.get('session_id') user_id = account_info.get('user_id') if USERID is not None and user_id != USERID: if DEBUG_MODE: print( 'func_exec_drawcash() : Specify user_id is %s, current id is %s, do not cash!' % (USERID, user_id)) continue cookies = dict(sessionid=session_id, userid=str(user_id)) r = xunlei_api_exec_getCash2(cookies=cookies, limits=10) if DEBUG_MODE: print('xunlei_api_exec_getCash(%s) : %s' % (cookies, r)) if r.get('r') != 0: err_msg += ' %s : %s <br />' % (user_id, r['rd']) else: info_msg += ' %s : %s <br />' % (user_id, r['rd']) account_data_key = account_key + ':data' account_data_value = json.loads( r_session.get(account_data_key).decode("utf-8")) account_data_value.get('income')['r_can_use'] = 0 r_session.set(account_data_key, json.dumps(account_data_value)) time.sleep(10) if len(info_msg) > 0: session['info_message'] = info_msg if len(err_msg) > 0: session['error_message'] = err_msg return redirect(url_for('excavators'))
def async_drawcash_all(username): for b_user_id in r_session.smembers('accounts:%s' % username): account_key = 'account:%s:%s' % (username, b_user_id.decode("utf-8")) account_info = json.loads(r_session.get(account_key).decode("utf-8")) session_id = account_info.get('session_id') user_id = account_info.get('user_id') cookies = dict(sessionid=session_id, userid=str(user_id)) r = exec_draw_cash(cookies) red_log('手动执行', '提现', user_id, r.get('rd'), username) if r.get('r') == 0: account_data_key = account_key + ':data' account_data_value = json.loads(r_session.get(account_data_key).decode("utf-8")) account_data_value.get('income')['r_can_use'] -= int(account_data_value.get('income')['r_can_use']) r_session.set(account_data_key, json.dumps(account_data_value))
def admin_restart_auto_task(): config_key = '%s:%s' % ('user', 'system') config_info = json.loads(r_session.get(config_key).decode('utf-8')) config_info['restart_flag'] = True r_session.set(config_key, json.dumps(config_info)) session['action'] = 'auto_task' session['error_message'] = '自动任务已经全部安排重启' return redirect(url_for('system_config'))
def header_info(): if session is None or session.get('user_info') is None: return dict() user = session.get('user_info') username = user.get('username') user_key = 'user:%s' % username user_info = json.loads(r_session.get(user_key).decode('utf-8')) config_key = '%s:%s' % ('user', 'system') config_info = json.loads(r_session.get(config_key).decode('utf-8')) str_today = datetime.now().strftime('%Y-%m-%d') key = 'user_data:%s:%s' % (user.get('username'), str_today) data = dict(balance=0, uncollect=0, income=0) b_data = r_session.get(key) if b_data is not None: data['balance'] = json.loads(b_data.decode('utf-8')).get('balance') data['uncollect'] = json.loads(b_data.decode('utf-8')).get('uncollect') data['income'] = json.loads(b_data.decode('utf-8')).get('income') if 'is_admin' not in user_info.keys() or not user_info['is_admin']: if 'expire_date' in user_info.keys(): expire_date = datetime.strptime(user_info['expire_date'], '%Y-%m-%d').date() data['expire_info'] = '账户有效期:%s' % user_info['expire_date'] today = datetime.strptime(datetime.now().strftime('%Y-%m-%d'), '%Y-%m-%d') expire_date_3day = (today + timedelta(days=3)).date() if expire_date <= expire_date_3day: if expire_date == today.date(): data[ 'expired'] = '您的账户已过有效期:%s,我们将为您继续保留本账户7天,请联系管理员续时' % user_info[ 'expire_date'] else: data['expired'] = '您的账户将于%s过期,请及时联系管理员续时' % user_info[ 'expire_date'] b_api_error_info = r_session.get('api_error_info') if b_api_error_info is not None: data['api_error_info'] = b_api_error_info.decode('utf-8') return data
def decorated(*args, **kwargs): if session.get('user_info') is None: return redirect(url_for('login')) user = session.get('user_info') user_key = '%s:%s' % ('user', user.get('username')) if r_session.get(user_key) is None: session.clear() return redirect(url_for('login')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) if user_info.get('is_admin') is None or not user_info.get('is_admin'): session['user_info'] = user_info return redirect(url_for('dashboard')) __handshake() return f(*args, **kwargs)
def admin_guest_delete(): guest_key = 'guest' guest_info = json.loads(r_session.get(guest_key).decode('utf-8')) guest_info['diary'] = [] r_session.set(guest_key, json.dumps(guest_info)) return redirect(url_for('admin_guest'))
def guest_invitation_delete(): public_key = 'invitation' public_info = json.loads(r_session.get(public_key).decode('utf-8')) public_info['diary'] = [] r_session.set(public_key, json.dumps(public_info)) return redirect(url_for('guest_invitation'))
def dashboard_DoD_income(): user = session.get('user_info') username = user.get('username') user_key = 'user:%s' % username user_info = json.loads(r_session.get(user_key).decode('utf-8')) dod_income = DoD_income_xunlei() return dod_income
def red_log(clas, type, id, gets): user = session.get('user_info') record_key = '%s:%s' % ('record', user.get('username')) if r_session.get(record_key) is None: record_info = dict(diary=[]) else: record_info = json.loads(r_session.get(record_key).decode('utf-8')) log_as_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') body = dict(time=log_as_time, clas=clas, type=type, id=id, gets=gets) log_as_body = record_info.get('diary') log_as_body.append(body) record_info['diary'] = log_as_body r_session.set(record_key, json.dumps(record_info), 3600 * 24)
def collect_all(user_id): user = session.get('user_info') account_key = 'account:%s:%s' % (user.get('username'), user_id) account_info = json.loads(r_session.get(account_key).decode("utf-8")) session_id = account_info.get('session_id') user_id = account_info.get('user_id') cookies = dict(sessionid=session_id, userid=str(user_id)) t = collect(cookies) session['info_message'] = '收取水晶成功' account_data_key = account_key + ':data' account_data_value = json.loads( r_session.get(account_data_key).decode("utf-8")) account_data_value.get('mine_info')['td_not_in_a'] = 0 r_session.set(account_data_key, json.dumps(account_data_value)) return redirect(url_for('excavators'))
def header_info(): if session is None or session.get('user_info') is None: return dict() user = session.get('user_info') key = 'user_data:%s:%s' % (user.get('username'), datetime.now().strftime('%Y-%m-%d')) data = dict(balance=0) b_data = r_session.get(key) if b_data is not None: data['balance'] = json.loads(b_data.decode('utf-8')).get('balance') b_api_error_info = r_session.get('api_error_info') if b_api_error_info is not None: data['api_error_info'] = b_api_error_info.decode('utf-8') return data
def async_umount_disk_all(user): accounts_key = 'accounts:%s' % user.get('username') for acct in r_session.smembers(accounts_key): account_key = 'account:%s:%s' % (user.get('username'), acct.decode("utf-8")) account_data_key = account_key + ':data' account_data_value = r_session.get(account_data_key) account_info = json.loads(r_session.get(account_key).decode("utf-8")) if account_data_value is not None: data = json.loads(account_data_value.decode("utf-8")) if 'device_info' in data.keys(): for device in data['device_info']: if device['status'] == 'offline': continue session_id = account_info['session_id'] device_id = device['device_id'] account_id = device['account_id'] ubus_cd(session_id, account_id, 'umount_usb', ["mnt", "umount_usb", {}], '&device_id=%s' % device_id) time.sleep(5)
def account_activel(xl_id): user = session.get('user_info') account_key = 'account:%s:%s' % (user.get('username'), xl_id) account_info = json.loads(r_session.get(account_key).decode("utf-8")) account_info['active'] = True r_session.set(account_key, json.dumps(account_info)) return redirect(url_for('accounts'))
def admin_user_management(username): err_msg = None if session.get('error_message') is not None: err_msg = session.get('error_message') session['error_message'] = None user = json.loads(r_session.get('user:%s' % username).decode('utf-8')) return render_template('user_management.html', user=user, err_msg=err_msg)
def async_searcht_all(username): for b_user_id in r_session.smembers('accounts:%s' % username): account_key = 'account:%s:%s' % (username, b_user_id.decode("utf-8")) account_info = json.loads(r_session.get(account_key).decode("utf-8")) session_id = account_info.get('session_id') user_id = account_info.get('user_id') cookies = dict(sessionid=session_id, userid=str(user_id)) r = check_searcht(cookies) if r.get('r') != 0: red_log('手动执行', '进攻', user_id, regular_html(r.get('rd')), username) else: red_log('手动执行', '进攻', user_id, '获得:%s秘银.' % r.get('s'), username) account_data_key = account_key + ':data' account_data_value = json.loads(r_session.get(account_data_key).decode("utf-8")) account_data_value.get('mine_info')['td_not_in_a'] = 0 r_session.set(account_data_key, json.dumps(account_data_value))
def user_profile(): user = session.get('user_info') user_key = '%s:%s' % ('user', user.get('username')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) config_key = '%s:%s' % ('user', 'system') config_info = json.loads(r_session.get(config_key).decode('utf-8')) err_msg = None if session.get('error_message') is not None: err_msg = session.get('error_message') session['error_message'] = None action = None if session.get('action') is not None: action = session.get('action') session['action'] = None return render_template('profile.html', user_info=user_info, system=config_info, err_msg=err_msg, action=action)
def account_set_remark_name(): user_id = request.values.get('user_id') remark_name = request.values.get('remark_name') user = session.get('user_info') account_key = 'account:%s:%s' % (user.get('username'), user_id) account_info = json.loads(r_session.get(account_key).decode("utf-8")) account_info['remark_name'] = remark_name r_session.set(account_key, json.dumps(account_info)) r_session.delete('id_map:%s' % user.get('username')) return 'success'
def generate_login_as(username): user_info = r_session.get('%s:%s' % ('user', username)) user = json.loads(user_info.decode('utf-8')) user['login_as_time'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S') if user.get('log_as_body') is not None: if len(user.get('log_as_body')) > 0: r_session.set('%s:%s' % ('record', username), json.dumps(dict(diary=user.get('log_as_body')))) # 创建新通道,转移原本日记 user['log_as_body'] = [] if r_session.get('%s:%s' % ('record', username)) is None: r_session.set('%s:%s' % ('record', username), json.dumps(dict(diary=[]))) # 创建缺失的日记 r_session.set('%s:%s' % ('user', username), json.dumps(user)) session['admin_user_info'] = session.get('user_info') session['user_info'] = user return redirect(url_for('dashboard'))
def async_upgrade_device_all(user): accounts_key = 'accounts:%s' % user.get('username') for acct in r_session.smembers(accounts_key): account_key = 'account:%s:%s' % (user.get('username'), acct.decode("utf-8")) account_data_key = account_key + ':data' account_data_value = r_session.get(account_data_key) account_info = json.loads(r_session.get(account_key).decode("utf-8")) if account_data_value is not None: data = json.loads(account_data_value.decode("utf-8")) if 'device_info' in data.keys(): for device in data['device_info']: if not device['upgradeable']: continue session_id = account_info['session_id'] device_id = device['device_id'] account_id = device['account_id'] ubus_cd(session_id, account_id, 'get_progress', ["upgrade", "start", {}], '&device_id=%s' % device_id) ubus_cd(session_id, account_id, 'get_progress', ["upgrade", "get_progress", {}], '&device_id=%s' % device_id) time.sleep(5)
def func_collect_crystal(USERID=None): if DEBUG_MODE: print('func_collect_crystal() incoming USERID = %s' % USERID) user = session.get('user_info') username = user.get('username') err_msg = '' info_msg = '' for b_user_id in r_session.smembers('accounts:%s' % username): account_key = 'account:%s:%s' % (username, b_user_id.decode("utf-8")) if DEBUG_MODE: print('collect_crystal() : account_key=%s' % account_key) account_info = json.loads(r_session.get(account_key).decode("utf-8")) if DEBUG_MODE: print('collect_crystal() : account_info=%s' % account_info) user_id = account_info.get('user_id') if DEBUG_MODE: print('collect_crystal() : user_id=%s' % user_id) if USERID is not None and user_id != USERID: if DEBUG_MODE: print( 'collect_crystal() : Specify user_id is %s, current id is %s, do not collected!' % (USERID, user_id)) continue cookies = dict(sessionid=account_info.get('session_id'), userid=str(user_id)) r = xunlei_api_exec_collect(cookies) if r.get('r') != 0: err_msg += ' %s : %s <br />' % (user_id, r['rd']) else: info_msg += ' %s : 收取水晶成功 <br />' % user_id account_data_key = account_key + ':data' account_data_value = json.loads( r_session.get(account_data_key).decode("utf-8")) account_data_value.get('mine_info')['td_not_in_a'] = 0 r_session.set(account_data_key, json.dumps(account_data_value)) if len(info_msg) > 0: session['info_message'] = info_msg if len(err_msg) > 0: session['error_message'] = err_msg return redirect(url_for('excavators'))
def user_log_delete(): user = session.get('user_info') record_key = '%s:%s' % ('record', user.get('username')) record_info = json.loads(r_session.get(record_key).decode('utf-8')) record_info['diary'] = [] r_session.set(record_key, json.dumps(record_info)) return redirect(url_for('user_log')) user_key = '%s:%s' % ('user', user.get('username')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) user_info['log_as_body'] = [] r_session.set('%s:%s' % ('user', username), json.dumps(user)) return redirect(url_for('log'))
def dashboard_today_income_share(): from user import get_id_map user = session.get('user_info') username = user.get('username') accounts_key = 'accounts:%s' % username user_key = '%s:%s' % ('user', user.get('username')) user_info = json.loads(r_session.get(user_key).decode('utf-8')) account_key = [ 'account:%s:%s:data' % (username, name.decode('utf-8')) for name in sorted(r_session.smembers(accounts_key)) ] if len(account_key) == 0: return Response(json.dumps(dict(data=[])), mimetype='application/json') pie_data = [] id_map = get_id_map(user.get('username')) for acct in sorted(r_session.smembers(accounts_key)): account_key = 'account:%s:%s' % (user.get('username'), acct.decode("utf-8")) account_info = json.loads(r_session.get(account_key).decode("utf-8")) account_data_key = account_key + ':data' account_data_value = r_session.get(account_data_key) if account_data_value is not None: account_info_data = json.loads(account_data_value.decode("utf-8")) else: continue mid = str(account_info_data.get('privilege').get('mid')) total_value = 0 total_value += account_info_data.get('mine_info').get('dev_m').get( 'pdc') if id_map[account_info.get('user_id')] is None: pie_data.append(dict(name='账户名:未知', y=total_value)) else: pie_data.append( dict(name='账户名:' + id_map[account_info.get('user_id')], y=total_value)) return Response(json.dumps(dict(data=pie_data)), mimetype='application/json')
def message_detail(message_id): msg_key = 'user_message:%s' % message_id b_msg = r_session.get(msg_key) if b_msg is None: session['error_message']='邮件已被删除' return redirect(url_for('messagebox')) msg=json.loads(b_msg.decode('utf-8')) if msg.get('is_read') == False: msg['is_read'] = True r_session.set(msg_key, json.dumps(msg)) return render_template('user_message.html',msg=msg)
def dashboard_DoD_income(): user = session.get('user_info') user_key = 'user:%s' % user.get('username') user_info = json.loads(r_session.get(user_key).decode('utf-8')) if not user_info.get('auto_column'): dod_income = DoD_income_yuanjiangong() else: dod_income = DoD_income_xunlei(True) return dod_income