Beispiel #1
0
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')
Beispiel #2
0
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))
Beispiel #3
0
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'))
Beispiel #4
0
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)
Beispiel #5
0
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')
Beispiel #6
0
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'))
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #10
0
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
Beispiel #11
0
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'))
Beispiel #12
0
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)
Beispiel #13
0
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'))
Beispiel #14
0
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)
Beispiel #15
0
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)
Beispiel #16
0
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')
Beispiel #17
0
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)
Beispiel #18
0
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)
Beispiel #19
0
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
Beispiel #20
0
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)
Beispiel #21
0
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"))
Beispiel #22
0
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
Beispiel #23
0
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'))
Beispiel #24
0
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'))
Beispiel #25
0
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)
Beispiel #26
0
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
Beispiel #27
0
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')
Beispiel #28
0
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))
Beispiel #29
0
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)
Beispiel #30
0
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'))
Beispiel #31
0
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)
Beispiel #32
0
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)
Beispiel #33
0
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'))
Beispiel #34
0
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)
Beispiel #35
0
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)
Beispiel #36
0
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
Beispiel #37
0
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'))
Beispiel #38
0
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))
Beispiel #39
0
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'))
Beispiel #40
0
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
Beispiel #41
0
    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)
Beispiel #42
0
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'))
Beispiel #43
0
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'))
Beispiel #44
0
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
Beispiel #45
0
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)
Beispiel #46
0
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'))
Beispiel #47
0
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
Beispiel #48
0
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)
Beispiel #49
0
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'))
Beispiel #50
0
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)
Beispiel #51
0
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))
Beispiel #52
0
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)
Beispiel #53
0
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'
Beispiel #54
0
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'))
Beispiel #55
0
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)
Beispiel #56
0
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'))
Beispiel #57
0
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'))
Beispiel #58
0
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')
Beispiel #59
0
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)
Beispiel #60
0
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